Skip to content
cccskills
FreePublished on GitHub

skill-user-stories

Write and refine high-quality user stories — INVEST criteria, "As a X, I want Y, so that Z" format, Gherkin acceptance criteria when applicable, definition of ready, anti-patterns, and a review checklist. Use when creating or reviewing user stories, PRD section 6, backlog items, or acceptance criteria. Do NOT use for technical specs, architecture decisions, or task decomposition.

The English summary is being prepared. Showing the original description.

See how to install

Files included (1)

  • SKILL.md6.1 KB

SKILL.md (original)

Review the instructions the agent will receive before you install.

User Stories Skill

Standard of quality for every user story produced by the PWDEV-CODE framework (/pwdev-code:product prd §6, /pwdev-code:product stories) and for reviewing stories brought by the human.


1. Canonical Format

PT-BR: Como {persona}, quero {ação}, para {valor/resultado}. EN: As a {persona}, I want {action}, so that {value/outcome}.

  • Persona — a real user type with a name from the PRD/requirements (never "o sistema"/"the system"; never "usuário" genérico if personas exist).
  • Ação — one capability, observable from the user's perspective.
  • Valor — the reason; if you can't state it, the story probably isn't one.

2. INVEST — quick test per letter

LetterQuestionFails when...
IndependentCan it ship without waiting on another story?hidden dependency on an unwritten story
NegotiableIs it an intent, not a frozen spec?prescribes UI pixel/implementation detail
ValuableDoes the persona gain something?value only for developers ("refactor X")
EstimableCan the team size it?too vague or research-shaped
SmallFits in one iteration?it's an epic wearing a story costume
TestableCan each AC be verified objectively?"should be fast/easy/intuitive"

A story that fails 2+ letters must be rewritten or split before entering .planning/product/stories/.

3. Acceptance Criteria

Use Gherkin when behavior has state + trigger + observable result:

# PT-BR                                  # EN
Dado que estou logado como cliente       Given I am logged in as a customer
Quando adiciono um item esgotado         When I add an out-of-stock item
Então vejo a mensagem "indisponível"     Then I see the "unavailable" message
E o item não entra no carrinho           And the item is not added to the cart

Use a simple checklist for cross-cutting or static criteria (e.g. "- [ ] lista pagina de 20 em 20", "- [ ] AA contrast on all states").

Rules: every AC is objectively verifiable; cover the happy path AND at least one error/edge path; 3-8 ACs per story (more → split the story).

4. Definition of Ready

A story is status: ready only when:

  • Canonical format with a named persona
  • Passes all 6 INVEST letters
  • 3-8 verifiable ACs (happy + error path)
  • Priority assigned (MoSCoW)
  • Dependencies declared (or "none")
  • Out-of-scope noted when the title invites scope creep

5. Anti-Patterns

Never writeWhyInstead
"Como sistema, quero..."systems don't want thingsname the persona who benefits
Technical story disguised ("Como dev, quero migrar o banco")no user value statedattach it to the user outcome, or make it a task in a plan
AC "deve ser rápido/fácil/intuitivo"not testablenumber it ("responde em <500ms", "máx 2 cliques")
Story-epic ("Como cliente, quero gerenciar meu pedido")not Smallsplit per capability (ver, cancelar, alterar)
Hidden dependency ("...igual à tela de admin")not Independentdeclare the dependency or inline the requirement
UI prescription ("quero um dropdown azul...")not Negotiablestate the need; design decides the control

6. Review Checklist (10 items)

  1. Persona named and real (exists in PRD/requirements)?
  2. One capability per story?
  3. Value clause non-circular ("para que eu possa fazer X" ≠ repetir a ação)?
  4. INVEST: all 6 pass?
  5. ACs: happy path covered?
  6. ACs: at least one error/edge path?
  7. ACs: all objectively verifiable (numbers, observable states)?
  8. Priority MoSCoW assigned?
  9. Dependencies explicit?
  10. Language consistent with project lang (terms técnicos em inglês)?

7. Examples

✅ Good (PT-BR)

US-03 — Cancelar pedido não enviado Como cliente, quero cancelar um pedido que ainda não foi enviado, para não pagar por algo que não quero mais. ACs: Dado pedido "processando" / Quando clico Cancelar e confirmo / Então status vira "cancelado" E estorno é criado E recebo e-mail. + Dado pedido "enviado" / Quando abro o pedido / Então Cancelar não é exibido.

✅ Good (EN)

US-07 — Export report as CSV As an operations analyst, I want to export the monthly report as CSV, so that I can cross it with the ERP spreadsheet. ACs: Given a report with data / When I click Export / Then a CSV downloads with the visible columns and filters applied. Given an empty report / Then Export is disabled with a tooltip.

❌ Bad → fixed

"Como usuário, quero uma tela de pedidos melhor." — persona genérica, não testável, não estimável. → "Como cliente recorrente, quero filtrar meus pedidos por status e período, para encontrar uma compra antiga sem rolar a lista inteira."

"As a system, I want to validate tokens." — system persona, technical. → "As a logged-in user, I want my session to stay valid while I work, so that I don't lose a form to a silent logout." (token validation becomes a task under this story's plan)

8. Integration with PWDEV-CODE

  • /pwdev-code:product prd §6 (User Stories with ACs) MUST follow this skill.
  • /pwdev-code:product stories uses this skill as the quality bar and persists stories to .planning/product/stories/US-{NN}-{slug}.md.
  • discover/design consult existing stories as requirement sources.
  • Story files carry frontmatter: id, epic (roadmap ref, if any), priority (MoSCoW), status: draft|ready.

Reviews

No reviews yet. Tell others what you thought.

Comments

No login needed. Share how it worked for you, ask a question, or note where it did not run.

No comments yet. Be the first to write one.

Comments are published right away. Do not include personal information such as email addresses or phone numbers. Up to 2 URLs.

0 / 1,000 characters

This form is protected by reCAPTCHA, and the Google Privacy Policy and Terms of Service apply.

More skills from this repository

Accessibility auditing and remediation skill for Vue 3 + Reka UI. Use when reviewing components, verifying WCAG 2.1 AA, fixing ARIA issues, or validating keyboard navigation in Reka UI components.

The English summary is being prepared. Showing the original description.

pwdev-solucoes/pwdev-claude-marketplace3Updated Oct 15, 2026

Infraestrutura para IA — GPU, servidores MCP, gateway de LLM, pipeline de inferência, custo de token, cache semântico e observabilidade de modelo. Use quando o usuário disser "GPU", "MCP server", "LLM", "inferência", "modelo", "gateway de IA", "custo de token", "rate limit da API de IA", "self-host de modelo".

The English summary is being prepared. Showing the original description.

pwdev-solucoes/pwdev-claude-marketplace3Updated Oct 15, 2026

Escreve texto alternativo e descrição de imagem para peças de rede social. Use quando o usuário disser "alt text", "texto alternativo", "descrição da imagem", "acessibilidade da peça", "descrever para leitor de tela", ou automaticamente antes de qualquer publicação. Obrigatório em todas as peças — em carrossel, um por slide.

The English summary is being prepared. Showing the original description.

pwdev-solucoes/pwdev-claude-marketplace3Updated Oct 15, 2026

Organiza, compara e seleciona entre as variações geradas, e publica a grade de comparação como Artifact para aprovação do time. Use quando o usuário disser "qual dessas", "comparar as variações", "escolher a melhor", "mostrar as opções", "montar grade de aprovação", ou após qualquer lote de geração. Selecionar é trabalho, não detalhe.

The English summary is being prepared. Showing the original description.

pwdev-solucoes/pwdev-claude-marketplace3Updated Oct 15, 2026

Aumenta resolução e qualidade de imagem via Freepik/Magnific, ou orienta o processo manual quando não há chave. Use quando o usuário disser "upscale", "melhorar a resolução", "a imagem está pixelada", "Magnific", "Freepik", "aumentar a imagem", "imagem pequena demais". Gasta crédito — exige confirmação.

The English summary is being prepared. Showing the original description.

pwdev-solucoes/pwdev-claude-marketplace3Updated Oct 15, 2026

CI/CD e automação — GitHub Actions, Terraform, OpenTofu, Ansible, n8n. Use quando o usuário disser "pipeline", "CI/CD", "GitHub Actions", "workflow", "terraform", "ansible", "n8n", "automatizar", "deploy automático", "IaC".

The English summary is being prepared. Showing the original description.

pwdev-solucoes/pwdev-claude-marketplace3Updated Oct 15, 2026

See all skills by pwdev-solucoes

Report a problem with this skill