to-prd
Compare original and translation side by side
🇺🇸
Original
English🇨🇳
Translation
ChineseSkill: to-prd
Skill: to-prd
Você é responsável por criar o do projeto. Este documento é a fonte da verdade dos requisitos — arquitetura, specs e implementação derivam dele. Um PRD ruim contamina tudo que vem depois.
docs/prd.md你负责创建项目的 。该文档是需求的 source of truth(唯一事实来源)——架构、specs 和实现都由它派生。糟糕的 PRD 会污染后续的一切。
docs/prd.mdPré-condições
前置条件
Antes de começar, verifique:
- Output do grill-me: há entendimento do projeto na conversa atual ou em arquivos? Esse é seu ponto de partida — extraia tudo que já foi discutido antes de perguntar ao usuário.
- PRD existente: se já existe, pergunte se quer revisar seções específicas ou refazer do zero.
docs/prd.md - Diretório : crie se não existir.
docs/
开始前,请确认:
- grill-me 输出:当前对话或文件中是否有对项目的理解?这是你的起点——在询问用户之前,先提取已经讨论过的所有内容。
- 现有 PRD:如果 已存在,询问用户希望审查特定章节还是从头重做。
docs/prd.md - 目录:如果不存在则创建。
docs/
Processo
流程
Trabalhe seção por seção de forma interativa. Para cada seção:
- Proponha uma versão inicial baseada no contexto disponível (não pergunte o que você pode inferir)
- Apresente ao usuário com as suposições claramente sinalizadas
- Colete feedback e refine
- Só avance com aprovação explícita
Nunca produza o documento inteiro de uma vez sem validação intermediária.
逐节以交互方式推进。对于每一节:
- 根据可用上下文提出一个初始版本(不要询问你本可推断的信息)
- 向用户展示,并清楚标出其中的假设
- 收集反馈并完善内容
- 只有在得到明确批准后才继续
绝不要在没有中间验证的情况下一次性生成整份文档。
Estrutura do PRD
PRD 结构
Seção 1 — Goals and Background Context
第 1 节——Goals 与 Background Context(目标与背景上下文)
Goals (bullet list): outcomes concretos que o projeto precisa entregar. Foco em resultado, não em funcionalidade.
Background Context (1-2 parágrafos): o que este projeto resolve e por que agora. Não repita os goals.
Change Log (tabela):
Date | Version | Description | AuthorGoals(目标)(项目必须交付的具体成果的 bullet list):聚焦结果,而非功能。
Background Context(背景上下文)(1–2 个段落):说明该项目要解决什么问题,以及为什么现在要做。不要重复 goals。
Change Log(变更日志)(表格):
Date | Version | Description | AuthorSeção 2 — Requirements
第 2 节——Requirements(需求)
Functional Requirements: o que o sistema faz. Prefixo , numerados sequencialmente.
FRFR1: [descrição da capacidade funcional]
FR2: ...Non-Functional Requirements: qualidade, performance, segurança, escala. Prefixo .
NFRNFR1: [critério mensurável — ex: "p95 < 200ms para todas as rotas de API"]
NFR2: ...Cada NFR deve ter um critério mensurável. "O sistema deve ser rápido" não é um NFR.
Functional Requirements(功能需求):系统做什么。使用 前缀并按顺序编号。
FRFR1: [descrição da capacidade funcional]
FR2: ...Non-Functional Requirements(非功能需求):质量、性能、安全性和扩展性。使用 前缀。
NFRNFR1: [critério mensurável — ex: "p95 < 200ms para todas as rotas de API"]
NFR2: ...每项 NFR 都必须包含可衡量的标准。“系统应该够快”不属于 NFR。
Seção 3 — User Interface Design Goals (somente se houver UX/UI)
第 3 节——User Interface Design Goals(仅当存在 UX/UI 时)
- Overall UX Vision: 2-3 frases sobre a experiência que o produto deve transmitir
- Key Interaction Paradigms: padrões de interação centrais (ex: drag-and-drop, inline editing, wizard steps)
- Core Screens and Views: lista conceitual das telas principais para entregar o valor do produto — não é spec técnica, é perspectiva de produto
- Accessibility:
None | WCAG AA | WCAG AAA - Branding: guia de cores, tipografia, tokens existentes (se houver)
- Target Platforms:
Web Responsive | Mobile Only | Desktop Only | Cross-Platform
- Overall UX Vision(整体 UX 愿景):用 2–3 句话说明产品应传达的体验
- Key Interaction Paradigms(关键交互范式):核心交互模式(例如 drag-and-drop、inline editing、wizard steps)
- Core Screens and Views(核心界面与视图):用于交付产品价值的主要界面的概念性清单——它不是技术 spec,而是产品视角
- Accessibility(无障碍):
None | WCAG AA | WCAG AAA - Branding(品牌):颜色、字体和现有 tokens 的规范(如果已有)
- Target Platforms(目标平台):
Web Responsive | Mobile Only | Desktop Only | Cross-Platform
Seção 4 — Technical Assumptions
第 4 节——Technical Assumptions(技术假设)
Decisões técnicas que vão guiar a arquitetura. Registre com rationale, não só a escolha.
- Repository Structure:
Monorepo | Polyrepo - Service Architecture:
Monolith | Microservices | Serverless - Testing Requirements: nível de cobertura esperado (unit, integration, E2E, manual)
- Additional Assumptions: qualquer outra premissa técnica relevante que surgir durante a elicitação
用于指导架构的技术决策。记录时需附上 rationale,而不只是选择结果。
- Repository Structure(仓库结构):
Monorepo | Polyrepo - Service Architecture(服务架构):
Monolith | Microservices | Serverless - Testing Requirements(测试要求):预期覆盖级别(unit、integration、E2E、manual)
- Additional Assumptions(其他假设):需求引出过程中出现的任何其他相关技术假设
Integrações e Serviços Externos
外部集成与服务
Para cada serviço externo (APIs de terceiros, provedores de infra, SDKs externos) que o projeto vai usar:
Serviço: [nome da categoria — ex: "Envio de mensagens WhatsApp"]
Escolha definitiva: [nome do serviço/biblioteca — ex: "Evolution API (self-hosted)"]
Alternativas descartadas: [ex: "Z-API (custo variável por tenant), Meta API oficial (complexidade de aprovação)"]
Rationale: [por que esta escolha — ex: "custo fixo independente do número de tenants, controle total do servidor"]
Como validar: [critério concreto de que está funcionando — ex: "webhook recebe mensagem real e resposta é entregue no WhatsApp"]Regras:
- Cada categoria tem exatamente uma escolha — nunca "X ou Y"
- Se há dúvida real entre duas opções, resolva aqui com uma pergunta ao usuário antes de avançar
- A coluna "Como validar" é obrigatória — define o que "funcionando" significa para aquele serviço
- Os campos "Como validar" de todos os serviços, somados, são o checklist de cutover do projeto: a lista do que precisa ser conferido com dado real em produção antes de abrir para usuários. Escreva cada um como um critério executável por uma pessoa na virada — não como intenção vaga
对于项目将使用的每个外部服务(第三方 API、基础设施提供商、外部 SDK):
Serviço: [nome da categoria — ex: "Envio de mensagens WhatsApp"]
Escolha definitiva: [nome do serviço/biblioteca — ex: "Evolution API (self-hosted)"]
Alternativas descartadas: [ex: "Z-API (custo variável por tenant), Meta API oficial (complexidade de aprovação)"]
Rationale: [por que esta escolha — ex: "custo fixo independente do número de tenants, controle total do servidor"]
Como validar: [critério concreto de que está funcionando — ex: "webhook recebe mensagem real e resposta é entregue no WhatsApp"]规则:
- 每个类别必须恰好有一个选择——绝不能写成“X 或 Y”
- 如果确实在两个选项之间存在疑问,在继续之前通过向用户提问解决
- “Como validar”字段为必填——它定义了该服务“正常运行”的含义
- 所有服务的“Como validar”字段汇总后,就是项目的 cutover checklist:在向用户开放之前,必须使用生产环境真实数据核查的清单。将每一项写成切换上线时可由人员直接执行的标准,而不要写成模糊的意向
Stack Técnico
技术 Stack
| Camada | Tecnologia | Diretório |
|---|---|---|
| [ex: Backend] | [ex: Python + FastAPI] | [ex: backend/] |
| [ex: Frontend] | [ex: Next.js + TypeScript] | [ex: frontend/] |
Regras:
- Uma linha por camada executável independente
- Diretório é o path relativo à raiz do repositório
- Se for monolito (sem subdivisões): uma linha apenas
- Esta tabela informa a escolha de stack. Ela não alimenta a seção do arquivo de instruções: o
## Commandsderiva os comandos do manifesto do projeto (/setup-project,package.json,Cargo.toml) e mede cada um antes de gravar. O manifesto é a realidade; esta tabela é plano, e plano não é executável.pyproject.toml
| 层级 | 技术 | 目录 |
|---|---|---|
| [例如:后端(Backend)] | [例如:Python + FastAPI] | [例如:backend/] |
| [例如:前端(Frontend)] | [例如:Next.js + TypeScript] | [例如:frontend/] |
规则:
- 每个可独立执行的层占一行
- 目录是相对于仓库根目录的 path
- 如果是单体应用(没有进一步划分):只写一行
- 此表记录的是 stack 选择。它不会为指令文件的 章节提供内容:
## Commands根据项目的 manifest(/setup-project、package.json、Cargo.toml)生成命令,并在写入前逐一测量。Manifest 才是现实;此表只是计划,而计划不可执行。pyproject.toml
Seção 5 — Lista de SPECs (alto nível)
第 5 节——SPEC 清单(高层级)
Liste todas as SPECs com título + 1 frase de goal. Apresente ao usuário para aprovação antes de avançar.
Regras críticas de sequenciamento:
- SPEC 1 SEMPRE estabelece a infraestrutura base: setup do projeto, Git, CI/CD, serviços core, e ao menos uma peça de funcionalidade mínima deployável (ex: health-check, canary page). Sem exceções.
- Cada SPEC entrega um incremento completo, testável e deployável
- Cada SPEC posterior constrói sobre a anterior — sem gaps ou dependências reversas
- Cross-cutting concerns (auth, logging, monitoring, error handling) fluem através dos specs desde o início, nunca são a última SPEC
- Erro para o lado de menos SPECs: se algo parece grande demais, questione antes de dividir
Não crie uma SPEC de Go-Live. Validar integração em produção é teste, não implementação — não há fatia vertical para cortar, e um ticket de "conferir se o Stripe funciona" não tem o que construir. Cada SPEC entrega um incremento deployável e validado quando entra; a validação é distribuída ao longo do caminho, não concentrada no fim. O que precisa ser conferido na virada está na Seção 4 e vira checklist de cutover, não SPEC.
Se um item do lançamento envolve trabalho real de construção (migrar conteúdo, escrever um seed, criar um painel de operação), ele é uma SPEC normal como qualquer outra — pelo que constrói, não por ser "do go-live".
Formato:
SPEC 1: [Nome] — [goal em 1 frase]
SPEC 2: [Nome] — [goal em 1 frase]A Lista de SPECs é o backlog do MVP. Cada SPEC é detalhada depois por ; se não couber numa janela de contexto, a quebra em fatias. Uma por vez — não vá além da lista aqui.
to-specto-tickets列出所有 SPEC,包括标题和一句话 goal。在继续之前,先向用户展示并请求批准。
关键排序规则:
- SPEC 1 始终负责建立基础基础设施:项目 setup、Git、CI/CD、core 服务,以及至少一项可部署的最小功能(例如 health-check、canary page)。没有例外。
- 每项 SPEC 都应交付一个完整、可测试且可部署的增量
- 后续每项 SPEC 都建立在前一项之上——不得存在缺口或反向依赖
- Cross-cutting concerns(auth、logging、monitoring、error handling)应从一开始就贯穿所有 specs,绝不能留到最后一项
- 遇到疑问时,应倾向于使用更少的 SPEC:如果某项内容看起来过大,应先询问用户再拆分
不要创建 Go-Live SPEC。 验证生产集成属于测试,而不是实现——不存在可切割的纵向工作块,而“检查 Stripe 是否工作”的 ticket 也没有可构建的内容。每项 SPEC 都应交付一个可部署且纳入时即经过验证的增量;验证应分散在整个过程中,而不是集中在最后。上线切换时需要核查的内容位于第 4 节,并会形成 cutover checklist,而不是 SPEC。
如果某个上线事项涉及实际构建工作(迁移内容、编写 seed、创建运营面板),它就是一项普通 SPEC,与其他 SPEC 没有区别——判断依据是它构建了什么,而不是它是否属于 go-live。
格式:
SPEC 1: [Nome] — [goal em 1 frase]
SPEC 2: [Nome] — [goal em 1 frase]SPEC 清单就是 MVP backlog。每项 SPEC 之后由 详细展开;如果内容无法装入 context window,则由 将其拆分为切片。一次只处理一项——不要在此清单之外继续展开。
to-specto-ticketsSeção 6 — Next Steps
第 6 节——Next Steps(后续步骤)
- UX Expert Prompt: instrução curta para iniciar criação do documento de UI/UX com este PRD como input (somente se o projeto tiver UX/UI)
- Checklist de Cutover: consolide aqui, em lista de checkbox, os campos "Como validar" de cada serviço externo da Seção 4. É o que precisa ser conferido com dado real em produção antes de abrir para usuários. Fecha com um smoke de ponta a ponta do fluxo principal do produto, executado por uma pessoa real.
markdown
undefined- UX Expert Prompt(UX 专家提示词):一段简短指令,用于以本 PRD 为输入启动 UI/UX 文档的创建(仅当项目存在 UX/UI)
- Cutover Checklist(上线切换检查清单):在此以 checkbox 列表汇总第 4 节中每个外部服务的“如何验证”字段。这是在向用户开放之前,必须使用生产环境真实数据核查的内容。最后应由一名真实用户执行主要产品流程的端到端 smoke test。
markdown
undefinedChecklist de Cutover
Checklist de Cutover
- [Serviço]: [critério "Como validar" da Seção 4]
- [Serviço]: [critério "Como validar" da Seção 4]
- Smoke end-to-end: [o fluxo principal, do cadastro ao valor entregue]
Este checklist **não é uma SPEC** e não vira SPEC nem tickets — é executado à mão na virada.
---- [Serviço]: [critério "Como validar" da Seção 4]
- [Serviço]: [critério "Como validar" da Seção 4]
- Smoke end-to-end: [o fluxo principal, do cadastro ao valor entregue]
此 checklist **不是 SPEC**,不会变成 SPEC 或 tickets——它需要在切换上线时手动执行。
---Validação Final
最终验证
Antes de salvar, faça uma passagem verificando:
- Todos os FRs têm correspondência rastreável nas SPECs?
- Os NFRs têm critérios mensuráveis?
- A sequência de SPECs é lógica e sem gaps?
- A SPEC 1 estabelece infraestrutura E entrega algo deployável?
- Cross-cutting concerns estão distribuídos, não concentrados no final?
- Cada serviço externo na Seção 4 tem escolha única, rationale e critério de validação?
- Não há nenhuma categoria de integração com duas opções em aberto ("X ou Y")?
- Nenhuma SPEC é uma SPEC de "go-live" ou de validação pura — o que é conferência está no Checklist de Cutover, não na Lista de SPECs?
- O Checklist de Cutover cobre todos os serviços da Seção 4 e fecha com um smoke end-to-end?
- Stack Técnico tem uma linha por camada com Tecnologia e Diretório preenchidos?
Se qualquer item falhar, corrija antes de salvar.
保存前,请逐项检查:
- 所有 FR 是否都能在 SPECs 中找到可追溯的对应项?
- 所有 NFR 是否都有可衡量的标准?
- SPEC 顺序是否合理且没有缺口?
- SPEC 1 是否建立了基础设施,并且交付了可部署的内容?
- Cross-cutting concerns 是否已分散到各阶段,而不是集中在最后?
- 第 4 节中的每个外部服务是否都有唯一选择、rationale 和验证标准?
- 是否不存在任何同时保留两个开放选项的集成类别(“X 或 Y”)?
- 是否不存在任何“go-live”SPEC 或纯验证型 SPEC——需要核查的内容应位于 Cutover Checklist,而不是 SPEC 清单?
- Cutover Checklist 是否覆盖第 4 节的所有服务,并以端到端 smoke test 收尾?
- 技术 Stack 是否为每一层填写了技术和目录,并且每层仅占一行?
如果有任何一项未通过,请在保存前修正。
Bootstrap do Repositório
仓库 Bootstrap
Após salvar o PRD, verifique se o repositório remoto está configurado:
bash
git remote -vSe não houver remote, crie agora — o remote precisa existir antes de configurar o tracker e detalhar a primeira SPEC:
bash
gh repo create [nome-do-projeto] --private --source=. --pushUse o nome do projeto em kebab-case. O usa o diretório atual e faz o push inicial.
--source=.--pushSe já houver remote configurado: pule esta etapa.
保存 PRD 后,检查是否已配置远程仓库:
bash
git remote -v如果没有 remote,则立即创建——必须在配置 tracker 并详细展开第一项 SPEC 之前准备好 remote:
bash
gh repo create [nome-do-projeto] --private --source=. --push项目名称使用 kebab-case。 使用当前目录, 则执行初始 push。
--source=.--push如果已经配置了 remote:跳过此步骤。
Saída
输出
Salve em .
docs/prd.mdAo finalizar, informe:
✅ PRD salvo em. Repositório remoto: [configurado | criado agora em github.com/user/repo]docs/prd.mdPróximo passo:para configurar tracker, comandos e fluxo, depois/setup-projectna SPEC 1./to-specA Lista de SPECs é o backlog do MVP. Trabalhe uma por vez:→ (/to-spec, se não couber numa janela) →/to-tickets./implement
保存到 。
docs/prd.md完成后,请告知:
✅ PRD 已保存到。 远程仓库:[已配置 | 已在 github.com/user/repo 创建]docs/prd.md下一步:运行配置 tracker、commands 和流程,然后对 SPEC 1 运行/setup-project。/to-specSPEC 清单就是 MVP backlog。逐项推进:→(如果无法装入 context window,则运行/to-spec)→/to-tickets。/implement