Skip to content
Development
Skill

/content-design

Use when writing or reviewing any string a user reads — labels, buttons, empty states, errors, permission prompts, onboarding, notifications. Invoked by ux-architect and product-designer while specifying screens, and by product-manager when a clarification turns out to be a copy

From plugin
app-dev-team
532 skills30 agents27 commands2 hooks

Claude Code

$ npx -y skills add vmobifystudio/app-dev-team --skill content-design --agent claude-code

SKILL.md

content-design.SKILL.md
name: content-design
description: Use when writing or reviewing any string a user reads — labels, buttons, empty states, errors, permission prompts, onboarding, notifications. Invoked by ux-architect and product-designer while specifying screens, and by product-manager when a clarification turns out to be a copy decision. Triggers the moment a placeholder string would ship.

Content design

The interface is mostly words. Words written last, by whoever was implementing, are the ones users actually read.

Buttons and labels

  • **A button says what happens when you press it.** `Save changes`, not `OK`. `Delete 3 photos`, not

`Confirm`.

  • **A destructive button names what is destroyed and whether it comes back.** "This cannot be undone"

belongs in the dialog, not in the button.

  • Sentence case throughout. Never end a button label with a full stop.
  • `Cancel` means "nothing happens". Never label a button `Cancel` when something happens.

Errors — three parts, always

1. **What happened**, in the user's terms, not the system's. 2. **Whether their data is safe.** This is the question they are actually asking. 3. **What to do next**, as an action they can take right now.

`Something went wrong` fails all three. `Couldn't save — your note is still here. Retry when you're back online.` passes all three in one line. **Never show an error code without also showing prose**, and never show raw exception text.

Empty states

An empty state is not a blank screen with an apology. It says what belongs here, why it is empty (new, filtered, or failed — three different states, three different messages), and the one action that fills it.

Permission prompts

Ask *at the moment of need*, never at launch. The prompt says what the user gets, not what the app wants. The system string (`NSCameraUsageDescription` etc.) is written by you, not by an engineer at build time — and a denied permission needs a working path, not a dead end.

The rules

  • **Every user-visible string goes into the localisation file from the moment it is written.**

Retrofitting is far more expensive and is where hardcoded strings survive to ship (`localisation`).

  • **No placeholder text reaches a build.** `Lorem ipsum`, `TODO`, `Test` in a screenshot is an ASO

and a review failure at once.

  • **One term per concept, product-wide.** A record is not an "item" here and an "entry" there. Keep

the list in `docs/14-components.md`.

  • Numbers, dates, currencies and plurals are formatted by the platform's locale-aware API — never by

string concatenation.

Output

Copy lives with the screen that shows it, in `docs/12-flows.md` and `docs/14-components.md`. A state in the inventory with no copy is not specified.

Read more
@vmobifystudio
Ships withapp-dev-team

Describe your app idea in one line. Get a shipped iOS & Android app. AI App Studio is a team of 30 AI specialists — a CEO, product manager, designers, iOS/Android engineers, a code reviewer, QA, and a release manager — that works like a real software studio.

532 skills30 agents
Get the whole plugin

Stars on GitHub

Momentum

stars in total
5
Star history of vmobifystudio/app-dev-team on GitHub, a chart by star-history.com

Other skills on app-dev-team.

board-doctor

board-doctor

Use to validate docs/31-board.md before spawning any agent, and to verify a developer's "DONE" claim before moving a row to…

business-model

business-model

Use when deciding or revisiting how the product makes money — pricing, tiers, trial shape, ad load, unit economics — by ceo when…

More skills from other plugins.

brainstorming
Auto-invoked

brainstorming

You MUST use this before any creative work - creating features, building components, adding functionality, modifying behavior, or…

@obra@obraInstall Skill
ask-matt

ask-matt

Ask which skill or flow fits your situation. A router over the skills in this repo.

skills10d309k
@mattpocock@mattpocockInstall Skill
accessibility
Auto-invoked

accessibility

Design, implement, and audit accessible UI to WCAG 2.2 Level AA across Web, iOS, and Android — semantic ARIA roles and labels,…

ecc11d293k
@affaan-m@affaan-mInstall Skill
compiler-commit

compiler-commit

Use when you want to verify compiler changes and commit with the correct convention. Runs tests, lint, and format, then commits…

react1d252k
@facebook@facebookInstall Skill

Questions about content-design.

Which coding agents can use content-design?
content-design installs in Claude Code, Codex, Cursor, Gemini CLI, GitHub Copilot, OpenCode and Windsurf with the skills CLI, using each agent's flag shown on this page. Flowy's auto-invocation, which fires a skill when your prompt matches, runs in Claude Code only.