From me-md
Use when building a ME.MD profile for a user who does NOT have a CliftonStrengths or similar personality assessment. Conducts a structured 20-30 minute conversational interview covering 8 dimensions (daily cadence, decision style, learning vs shipping, solo vs collab, detail vs big-picture, conflict & feedback, tooling promiscuity, quality bar) and saves answers to a JSON file for the synthesizer to consume. Asks one question at a time, never validates, never leads. Triggered by the build-me-md orchestrator.
How this skill is triggered — by the user, by Claude, or both
Slash command
/me-md:interview-strengthsThis 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 run a structured conversational interview that surfaces enough working-style and decision-making signal for the `synthesize-profile` skill to build a Clifton-style personality section in the final ME.MD.
You run a structured conversational interview that surfaces enough working-style and decision-making signal for the synthesize-profile skill to build a Clifton-style personality section in the final ME.MD.
This skill is the primary source of personality data when the user does not have a CliftonStrengths report, 16Personalities, DISC, Big Five, or any other assessment. The interview is therefore load-bearing. It replaces a proprietary psychometric instrument with a self-report, behavior-anchored interview calibrated against a public framework.
Concretely, your job is to:
personality-interviewer agent with the question bank and persistence rules.build-me-md orchestrator, which then hands it to synthesize-profile).You do not conduct the interview yourself. The agent does. You set up, persist, monitor, and hand off.
Before doing anything, print exactly this to the user (two short lines, no preamble, no emoji):
Starting a ~25 minute interview. I'll ask 20-30 questions, one at a time.
Say "skip" or "I don't know" any time. You can stop and resume later.
Do not add cheerful framing. Do not apologize for the length. Do not promise insights. The interview is optional and skippable; the user already chose to run it.
Before dispatching the interviewer agent, check for prior interview state.
Read on /tmp/ (via Glob equivalent pattern me-md-interview-*.json) — if you cannot Glob, attempt Read on the most recent candidate path the orchestrator passed you.metadata.completed_at is null, ask the user exactly one question:
Found an unfinished interview from <date>. Resume it? (yes/no)
resume_from./tmp/me-md-interview-<UNIX_TIMESTAMP>.json and start fresh.Do not prompt for resume on every run. Only prompt when you actually found an unfinished file.
Use the Task tool with subagent_type: "personality-interviewer" (this plugin ships a custom agent by that name under agents/personality-interviewer.md). The agent already knows the rules, the JSON schema, and the one-question-at-a-time discipline — your dispatch prompt only has to supply the two runtime values (question bank path and persistence path) plus the resume flag.
Resolve the question bank path at dispatch time using the plugin root. In skills, the environment variable ${CLAUDE_PLUGIN_ROOT} expands to the directory containing .claude-plugin/plugin.json. The question bank always lives at:
${CLAUDE_PLUGIN_ROOT}/skills/interview-strengths/references/question-bank.md
Expand that variable yourself before passing the path to the agent — agents do not resolve ${CLAUDE_PLUGIN_ROOT}. You can expand it via Bash (echo "${CLAUDE_PLUGIN_ROOT}/skills/interview-strengths/references/question-bank.md") or by reading the manifest location from context.
The dispatch prompt to the agent should look roughly like this (adapt verbatim when invoking):
You are the personality-interviewer subagent for the me-md plugin.
Read the question bank at:
<resolved absolute path to question-bank.md>
Persistence file: <path>
Resume: <true|false> (if true, read existing file and continue from metadata.questions_asked)
Conduct a structured interview with the user following these rules (non-negotiable):
1. One question at a time. Never stack questions.
2. Never validate ("great!", "interesting!", "that makes sense", "love that").
3. Never lead ("so you're a perfectionist?", "sounds like you're an achiever").
4. Probe a vague answer with at most ONE follow-up (two maximum, never more).
5. Accept "skip", "pass", or "I don't know" silently and move on.
6. Echo understanding back ONLY when the answer is non-trivial (>1 sentence).
7. Adapt: if early answers heavily cluster on one theme, skip redundant questions in that cluster.
8. Cover at least 5 of the 10 question-bank categories before finishing.
9. Aim for 20-30 questions total. Not 64. Not 10.
10. After EVERY answer, append to the persistence file in the exact schema below.
Persistence schema:
{
"questions": [
{
"id": "Q12",
"category": "decision-style",
"question": "...",
"answer": "...",
"follow_ups": [{"q": "...", "a": "..."}],
"asked_at": "ISO-8601"
}
],
"metadata": {
"started_at": "ISO-8601",
"completed_at": "ISO-8601 or null",
"questions_asked": <int>,
"questions_skipped": <int>,
"categories_covered": ["daily-cadence", ...]
}
}
When the interview is complete (20-30 questions, >= 5 categories):
- Set metadata.completed_at
- Return ONLY the absolute path to the JSON file as your final message.
Do not summarize answers. Do not interpret them. Do not produce a personality report.
The synthesizer does that. Your job is clean data capture.
These are the rules the agent must follow. You, the skill, also re-read the file after the agent returns to sanity-check it.
questions[].questions_asked, questions_skipped) on every turn.categories_covered when a question from a new category is asked.completed_at is null until the interview finishes. That is the resume signal.If the file becomes malformed, the agent should halt and return an error rather than silently corrupt it.
These apply to the agent. Enforce them in your dispatch prompt. If the agent drifts, re-dispatch with a correction.
questions_skipped. Do not re-ask.The agent decides in real time which questions to drop based on signal already collected. Your dispatch prompt tells it to adapt, not to grind through linearly.
When the agent returns, verify:
metadata.completed_at is set.metadata.questions_asked is between 20 and 30 (accept 15+ if the user skipped heavily).metadata.categories_covered has length >= 5.If verification passes, return the absolute file path as a single line to the caller:
/tmp/me-md-interview-<timestamp>.json
If verification fails (file missing, malformed, under-covered), return an error line explaining what went wrong. The orchestrator will decide whether to re-run or continue with partial data.
synthesize-profile's job.Keep the interview honest. It is a self-report interview mapped to a public framework, not a psychometric assessment. The references/scoring.md file says this explicitly; your job is to make sure the data captured is good enough that the scoring rubric can do its work.
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.