From me-md
Use when the user asks to build a ME.MD profile, personality file, or "me-md" — orchestrates the full workflow that interviews the user, parses their CliftonStrengths report (if any), analyzes their Claude Code/Codex/OpenCode prompt history, and synthesizes a comprehensive ME.MD personality/decision-making file. Trigger phrases include "build my ME.MD", "create my personal profile", "make a me-md", "/me-md build", "analyze my prompts and build a profile", "I want a personality file like Mehran's".
How this skill is triggered — by the user, by Claude, or both
Slash command
/me-md:build-me-mdThis skill is limited to the following tools:
The summary Claude sees in its skill listing — used to decide when to auto-load this skill
You are building a comprehensive `ME.MD` profile for the user — a machine-readable specification of how they think, decide, and work, modeled on `MEHRAN.md`. The output is triangulated from three independent sources: (a) a personality assessment (CliftonStrengths PDF, or a structured interview if the user has no report), (b) analysis of their real prompt history across Claude Code / Codex / Ope...
You are building a comprehensive ME.MD profile for the user — a machine-readable specification of how they think, decide, and work, modeled on MEHRAN.md. The output is triangulated from three independent sources: (a) a personality assessment (CliftonStrengths PDF, or a structured interview if the user has no report), (b) analysis of their real prompt history across Claude Code / Codex / OpenCode, and (c) optional direct answers from the user. Every trait in the final file must trace back to at least one of these sources. You never invent traits. You never paste generic personality filler.
Execute these steps in order. One question at a time. Wait for each answer before moving on.
Print one line, no enthusiasm inflation:
"Building your ME.MD profile. I'll read your AI tool history, optionally parse a personality report, optionally interview you, then write a file to a path you choose. Proceed? (y/n)"
If the user says no or asks questions first, answer them, then re-ask. Do not continue without an explicit "y" or equivalent.
Check whether an argument was passed to the skill invocation (the argument-hint path to a CliftonStrengths PDF). If a path was provided:
test -f "$PATH").If no argument was provided, ask exactly:
"Do you have a CliftonStrengths or similar personality report? Paste a path, or say 'no' to do an interview instead."
Accept .pdf, .txt, .md, or .docx. Expand ~ using Bash before use. Any file type the parse-clifton skill cannot handle → fall through to interview.
Branch on the answer from Step 2.
If the user provided a path: invoke the parse-clifton skill via the Skill tool, passing the absolute path as its argument. Save the returned structured data (themes, domains, descriptions) to memory under assessment_data. If parse-clifton reports the file is not a CliftonStrengths report, ask the user whether to try interview mode instead.
If the user said "no": invoke the interview-strengths skill via the Skill tool. That skill will run a structured conversational interview and return a JSON path under /tmp/me-md-interview-<timestamp>.json. Save that path under assessment_data.
Either way, confirm receipt with one line: "Assessment captured." Do not summarize the contents back to the user yet — the synthesizer does that.
Use Bash to probe for these three sources in parallel where possible. Each check is a single test -d or test -f:
test -d ~/.claude/projects && echo "claude-code: yes" || echo "claude-code: no"
test -d ~/.codex/sessions && echo "codex: yes" || echo "codex: no"
test -d ~/.local/share/opencode/storage && echo "opencode: yes" || echo "opencode: no"
Also glance at ~/.claude/history.jsonl for Claude Code (primary log). If it exists but ~/.claude/projects/ does not, still count Claude Code as present.
Print one line listing what was found, then ask:
"Found: claude-code, codex, opencode. Include all? (y / skip codex / skip opencode / none)"
Only list the sources that actually exist. If none exist, skip to Step 6 and rely only on the assessment + interview. Tell the user: "No prompt history found. Building from assessment only — the profile will be lighter."
Invoke the analyze-prompts skill via the Skill tool, passing the chosen list of sources as its argument (e.g., "claude-code,codex"). That skill dispatches parallel subagents per source and returns a single combined markdown report path under /tmp/me-md-prompt-analysis-<timestamp>.md.
Save the returned path under log_analysis_report. Do not summarize the contents. Confirm in one line: "Prompt analysis complete."
Invoke the synthesize-profile skill via the Skill tool. Pass it all three inputs:
assessment_data path (parse-clifton JSON OR interview-strengths JSON)log_analysis_report path (may be absent if no agents were installed)mode: "clifton" or "interview"The synthesizer reads the template in its references folder, stitches the inputs together using the 12-section MEHRAN.md structure, and writes a draft to /tmp/me-md-draft-<timestamp>.md. Save that path under draft_path.
Read the draft file and show it to the user in a single message. Then ask exactly:
"Save this to ~/ME.MD, somewhere else, or edit first? (default / path / edit)"
Handle the three branches:
~/ME.MD using Bash (cp "$DRAFT" ~/ME.MD).~, verify parent directory exists, then copy.Never write to a path without confirming it in full. Never silently overwrite an existing file — if the target exists, ask: "That file exists. Overwrite? (y/n)".
Only after the file is saved, ask once:
"Want me to symlink this to ~/ME.MD (if you saved elsewhere) and add
@~/ME.MDto your global CLAUDE.md so every Claude session loads it? (y/n)"
Run with explicit yes only. If yes:
~/ME.MD.~/.claude/CLAUDE.md. If it does not contain @~/ME.MD, append a new line with that reference under a clearly marked section. Show the diff before saving.Skip silently on no.
After the file is saved and the optional symlink handled, delete the interim interview and analysis temp files. This honors the privacy guarantee in PRIVACY.md:
# Only delete the files you actually created in this run — match on the timestamp.
[ -n "$INTERVIEW_JSON" ] && rm -f "$INTERVIEW_JSON"
[ -n "$ANALYSIS_REPORT" ] && rm -f "$ANALYSIS_REPORT"
[ -n "$DRAFT_PATH" ] && rm -f "$DRAFT_PATH"
Never glob-delete /tmp/me-md-* — another concurrent run may be in flight. Only remove the exact paths this run produced. If any rm fails (file already gone, permission error), ignore silently; do not surface it to the user.
If the user declined to save the draft (see failure mode below), keep the draft file in /tmp/ and skip the cleanup. The user chose to retain it.
Print exactly one line with the absolute path:
"ME.MD saved: /Users//ME.MD"
Do not add follow-up questions. Do not offer further edits. The skill ends here.
~/ME.MD without confirming the exact path with the user.!!!, ALL CAPS, "wtf"), stop, reread their last request, and restate in one line what they asked before continuing.~/.claude/CLAUDE.md already contains a personal profile reference, do not duplicate it in Step 8.If the PDF is larger than 20 pages, the Read tool will refuse without a pages argument. Delegate to the parse-clifton skill, which handles chunked reads (pages: "1-10", then pages: "11-20", etc.). If parsing still fails — tell the user in one line, offer to fall through to interview mode. Do not retry indefinitely.
If Step 4 finds no sources, skip Step 5 entirely. Set log_analysis_report to null and tell the synthesizer to rely on assessment + interview only. The resulting file will be shorter but still honest.
If the interview-strengths skill returns control early (user said "stop", "later", "I'm done for now"), write the partial answers to /tmp/me-md-interview-<timestamp>.json and tell the user in one line:
"Partial interview saved. Run
/me-md build --resume /tmp/me-md-interview-<timestamp>.jsonto continue."
Do not proceed to synthesis with a half-done interview. Do not pester the user.
If the draft comes back under ~800 words, that usually means one of the inputs was empty. Check which input was thin, tell the user in one line, and offer to re-run just that stage.
If the user says "don't save", leave the draft at /tmp/me-md-draft-<timestamp>.md and print that path with one line:
"Draft kept at /tmp/me-md-draft-.md. Nothing written elsewhere."
A saved ME.MD file at the user-chosen path. Confirmed in one line with the absolute path. Nothing else.
npx claudepluginhub imehr/imehr-marketplace --plugin me-mdProvides UI/UX resources: 50+ styles, color palettes, font pairings, guidelines, charts for web/mobile across React, Next.js, Vue, Svelte, Tailwind, React Native, Flutter. Aids planning, building, reviewing interfaces.
Fetches up-to-date documentation from Context7 for libraries and frameworks like React, Next.js, Prisma. Use for setup questions, API references, and code examples.