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.
npx claudepluginhub automattic/design-skills --plugin a8c-designThis skill uses the workspace's default tool permissions.
Rewrite UI copy so every element reflects the user's job, not the feature's structure.
Mandates invoking relevant skills via tools before any response in coding sessions. Covers access, priorities, and adaptations for Claude Code, Copilot CLI, Gemini CLI.
Share bugs, ideas, or general feedback.
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