From me-md
Use when building a ME.MD profile for a user who has a CliftonStrengths Top 5, Top 10, or Top 34 report (or similar personality assessment like 16Personalities, Big Five, DISC). Reads the PDF, extracts top themes and personalised insights, and returns a structured JSON for the synthesizer. Triggered by the build-me-md orchestrator when the user provides an assessment file path.
How this skill is triggered — by the user, by Claude, or both
Slash command
/me-md:parse-cliftonThis 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 parse a CliftonStrengths PDF (or a similar personality assessment) and return structured JSON that the `synthesize-profile` skill will consume. You do not invent themes. You do not paraphrase official Gallup definitions into marketing copy. You extract what is actually on the page, verbatim where it matters, and fall back to the `references/clifton-themes.md` reference when the report is pa...
You parse a CliftonStrengths PDF (or a similar personality assessment) and return structured JSON that the synthesize-profile skill will consume. You do not invent themes. You do not paraphrase official Gallup definitions into marketing copy. You extract what is actually on the page, verbatim where it matters, and fall back to the references/clifton-themes.md reference when the report is partial or ambiguous.
The output of this skill is one file: /tmp/me-md-clifton-<timestamp>.json. You print its absolute path when you are done. That is it.
You are invoked by the build-me-md orchestrator with a single argument: the absolute path to the assessment PDF. If no path is given, ask for one. Do not guess a path.
You must detect which of the following you are looking at before extracting. Detection is based on page count, headings, and the presence of known marker strings ("CliftonStrengths", "Signature Themes", "Gallup", "16Personalities", "Big Five", "DISC Profile").
| Format | Pages | Marker strings |
|---|---|---|
| Gallup CliftonStrengths Top 5 | ≤17 | "CliftonStrengths", "Top 5", "Signature Themes", "Gallup" |
| Gallup CliftonStrengths Top 10 | ~25-35 | "CliftonStrengths 10", "Top 10" |
| Gallup CliftonStrengths Top 34 | ~65-75 | "CliftonStrengths 34", "Full 34 Report" |
| 16Personalities report | 10-30 | "INTJ", "ENFP", "16Personalities", "NERIS" |
| Big Five / OCEAN | variable | "Openness", "Conscientiousness", "OCEAN", "Five-Factor" |
| DISC profile | variable | "Dominance", "Influence", "Steadiness", "Conscientiousness" (in a quadrant context) |
| Generic fallback | any | none of the above |
If you cannot determine the format from page 1 and the first heading, mark assessment_type: "unknown" and use generic header extraction (section 7).
Use the Read tool with the pages parameter for any PDF longer than 10 pages. Never try to read a 70-page PDF in one call — the tool will fail.
Read in chunks of 9 pages or fewer. The Read tool caps at ~20 pages but 9 is safer and keeps each chunk inside a reasonable token budget.
For the standard Gallup CliftonStrengths Top 5 layout (2018 template and later), the structure is:
Concrete read plan for a Top 5 report:
Read pages 1-9 first. This gives you the cover, intro, and themes 1-3 (fully or partially).Read pages 10-17 next. This gives you themes 4-5 and the back matter.For Top 10 and Top 34 reports, iterate in 9-page chunks until you have read every theme block. Keep a running count of themes extracted — stop when you have all of them.
For non-Gallup reports, read the whole PDF in 9-page chunks and extract whatever sections exist.
For every top theme in the report, extract these fields:
Executing, Influencing, Relationship Building, Strategic Thinking. If the report doesn't state the domain inline, look it up in references/clifton-themes.md.You must also extract:
null.When the report is missing or mangles a field, fall back to references/clifton-themes.md. Specifically:
domain is unclear or not printed in the report, look up the theme in the reference file.definition is missing (some cropped exports drop it), use the one-sentence definition from the reference file and mark the field with the suffix [from reference].Never use the reference file to invent personalized insights. Those must come from the report. If they are missing, leave the array empty and note it in raw_quotes as ["NO PERSONALIZED INSIGHTS FOUND"].
Write exactly this structure:
{
"assessment_type": "CliftonStrengths Top 5",
"user_name": "Mehran Mozaffari",
"report_date": "2026-02-22",
"source_path": "/absolute/path/to/input.pdf",
"source_pages_read": 17,
"top_themes": [
{
"rank": 1,
"name": "Learner",
"domain": "Strategic Thinking",
"definition": "People exceptionally talented in the Learner theme have a great desire to learn and want to continuously improve. The process of learning, rather than the outcome, excites them.",
"personalized_insights": [
"Driven by your talents, you yearn to acquire knowledge...",
"By nature, you are inspired to keep studying..."
],
"action_items": [
"Refine how you learn...",
"Deliberately increase your vocabulary..."
],
"blends": {
"Achiever": "Your Learner and Achiever themes combine to...",
"Arranger": "With Arranger and Learner together, you...",
"Individualization": "...",
"Analytical": "..."
}
}
],
"raw_quotes": [
"The thrill of learning new facts, beginning a new subject and mastering an important skill excites people with dominant Learner talents.",
"You derive satisfaction from the process of learning itself, not the outcome."
],
"parse_notes": [
"Page 7 was partially cropped; definition for theme 3 pulled from reference."
]
}
Rules for the JSON:
top_themes is ordered by rank ascending.blends keys are theme names (not ranks) so the synthesizer can cross-reference.parse_notes records any fallback or degradation so the synthesizer and the user can see what was approximate.Encrypted PDF. The Read tool will error with a decryption message. Do not retry. Tell the user in one line: "The PDF at <path> is password-protected. I can't read encrypted reports. Please provide an unencrypted copy (File → Export → remove password in your PDF viewer)." Stop.
Image-based / scanned PDF. Symptom: Read succeeds but returns almost no text, just page headers. Tell the user: "This PDF is image-based (no selectable text). I can't OCR it in this skill. Options: (1) run it through an OCR tool like ocrmypdf first, (2) retype the top themes manually and I'll run the interview path instead." Stop.
Unknown format. If no marker strings match, run generic header extraction: find every heading-like line (all caps, numbered, bolded from font-size heuristics in the extracted text), record it as a candidate section, extract 3-5 sentences beneath each as raw text, and write the result with assessment_type: "unknown" and top_themes: []. Populate a sections array instead:
{
"assessment_type": "unknown",
"sections": [
{ "heading": "Your dominant style", "body": "..." }
]
}
The synthesizer will then treat this as freeform assessment data.
File doesn't exist. Do not create an empty JSON. Tell the user: "No file at <path>. Please check the path and try again." Stop.
Fewer themes than expected. If the report claims to be Top 34 but you only find 12, record what you found and add a note to parse_notes: "Expected 34 themes, extracted 12. Report may be truncated." Do not fabricate the rest.
Write the JSON to /tmp/me-md-clifton-<timestamp>.json where <timestamp> is date +%s (Unix seconds) for uniqueness. Use the Write tool, not Bash, so the file is tracked.
Print exactly two lines when done:
Parsed: <assessment_type>, <N> themes
Output: /tmp/me-md-clifton-<timestamp>.json
That path is what build-me-md will pass to synthesize-profile. Do not print the JSON contents. Do not summarize the user's personality. Your job is extraction, not interpretation.
Provides 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.
npx claudepluginhub imehr/imehr-marketplace --plugin me-md