From a8c-design
Use when writing or reviewing UI copy - rewrites labels, CTAs, helpers, and placeholders through a Jobs to Be Done lens so every element reflects the user's actual goal, not the system's internal model.
How this skill is triggered — by the user, by Claude, or both
Slash command
/a8c-design:jtbd-copyThe summary Claude sees in its skill listing — used to decide when to auto-load this skill
Rewrite UI copy so every element reflects the user's job, not the feature's structure.
Rewrite UI copy so every element reflects the user's job, not the feature's structure.
For designers who think: "This form says 'Custom message'... but what is the user actually doing here?"
UI copy that mirrors the system's model ("Submit form", "Custom message field") forces users to translate. Copy that mirrors the user's job ("Send this to your client", "Personal note") makes the next step feel obvious.
Before touching any copy, write one sentence: "The user is trying to [job]."
Example: "The user is trying to get their client set up on a product so they can earn their commission."
This sentence becomes the filter for every word on the screen.
Walk through each UI element and ask: "Does this reflect the job, or the system?"
| Element type | System-framed | Job-framed |
|---|---|---|
| Header | (none) or feature name | What the user is doing: "Send this to your client" |
| Field label | Database column: "Custom message" | User's action: "Personal note" |
| Placeholder | Prescribed copy | Helpful prompt: "Add a message to include..." |
| Helper text | (none) | Why it matters: "Builds trust and shows this comes from you" |
| Info text | Dense legal, buried | Simplified, surfaced: "Your client will create an account and complete checkout." |
| Primary CTA | Generic: "Submit" | Job completion: "Send to client" |
| Secondary CTA | Equal visual weight | Demoted: "Copy link instead" (text link) |
Not all elements need the same treatment:
A cognitive gap is where the user's mental context shifts without warning. Common gaps:
| Gap | Symptom | Fix |
|---|---|---|
| Context switch | Pricing summary → blank form | Add a header framing the next step |
| Missing "why" | Field with no helper text | Add helper explaining why this matters to the job |
| Equal-weight CTAs | Two buttons, unclear priority | Demote the secondary path visually |
| Legal dump | Dense terms at the bottom | Simplify and move up, or progressive disclosure |
Output format for reviews:
Job: "[user's job statement]"
| Element | Current | Proposed | Why |
|---------|---------|----------|-----|
| Header | (none) | "Send this to your client" | Frames the job |
| Field | "Custom message" | "Personal note" | User's language |
| Helper | (none) | "Builds trust and shows this comes from you" | Connects to job |
| CTA | "Submit" | "Send to client" | Names the outcome |
| Mistake | Fix |
|---|---|
| Job is too vague ("use the product") | Narrow to the specific flow: "get my client set up" |
| Rewrite is longer than original | JTBD copy should be clearer, not wordier. Cut ruthlessly. |
| Helper text explains the field format | Explain why the field matters to the job instead |
| Every CTA is outcome-framed | Some actions are just actions. "Cancel" is fine as "Cancel." |
| Forgot to demote secondary paths | If there are two equal buttons, one is lying about its importance |
$ARGUMENTS
npx claudepluginhub automattic/design-skills --plugin a8c-designGuides creation, editing, and verification of skills for AI coding agents using test-driven development with subagent scenarios. Use when authoring or debugging skills.