executing-plans
executing-plans
Use when executing an implementation plan in the current session as the implementer yourself — your human partner chose inline execution, or no subagent tool is available
spec-to-repoUse quando o usuário diz 'crie um app para mim', 'crie um projeto a partir desta especificação', 'scaffolde um novo repo', 'gere um starter', 'transforme esta ideia em código', 'faça bootstrap de um projeto', 'tenho requisitos e preciso de uma base de código', ou fornece uma especificação de projeto em linguagem natural e espera um repositório completo e ex…
Independent GitHub snapshot · Automated classification · Original documentation governs
name: spec-to-repo description: "Use quando o usuário diz 'crie um app para mim', 'crie um projeto a partir desta especificação', 'scaffolde um novo repo', 'gere um starter', 'transforme esta ideia em código', 'faça bootstrap de um projeto', 'tenho requisitos e preciso de uma base de código', ou fornece uma especificação de projeto em linguagem natural e espera um repositório completo e executável. Agnóstico de stack: Next.js, FastAPI, Rails, Go, Rust, Flutter e mais." agents:
Transforme uma especificação de projeto em linguagem natural em um repositório starter completo e executável. Não é um preenchedor de template — é um interpretador de spec que gera código real e funcional para qualquer stack.
Não é esta skill quando o usuário quer um app SaaS com Stripe + Auth especificamente — use product-team/saas-scaffolder em vez disso.
Leia a spec. Extraia estes campos silenciosamente:
| Campo | Fonte | Obrigatório |
|---|---|---|
| Nome do app | Explícito ou inferido da descrição | sim |
| Descrição | Primeira frase da spec | sim |
| Funcionalidades | Bullet points ou frases descrevendo comportamento | sim |
| Stack tecnológica | Explícita ("use FastAPI") ou inferida do contexto | sim |
| Auth | "login", "usuários", "contas", "papéis" | se mencionado |
| Banco de dados | "armazenar", "salvar", "persistir", "registros", "schema" | se mencionado |
| Superfície de API | "endpoint", "API", "REST", "GraphQL" | se mencionado |
| Alvo de implantação | "Vercel", "Docker", "AWS", "Railway" | se mencionado |
Regras de inferência de stack (quando o usuário não especifica):
| Sinal | Stack inferida |
|---|---|
| "web app", "dashboard", "SaaS" | Next.js + TypeScript |
| "API", "backend", "microservice" | FastAPI (Python) ou Express (Node) |
| "app mobile" | Flutter ou React Native |
| "ferramenta CLI" | Go ou Python |
| "pipeline de dados" | Python |
| "alto desempenho", "sistemas" | Rust ou Go |
Após fazer o parsing, apresente uma interpretação estruturada de volta ao usuário:
## Interpretação da Spec
**App:** [nome]
**Stack:** [framework + linguagem]
**Funcionalidades:**
1. [funcionalidade]
2. [funcionalidade]
**Banco de dados:** [sim/não — engine]
**Auth:** [sim/não — método]
**Deploy:** [alvo]
Isso corresponde à sua intenção? Alguma correção antes de gerar?
Sinalize ambiguidades. Faça no máximo 3 perguntas de esclarecimento. Se o usuário disser "só construa", prossiga com os melhores padrões.
Projete o projeto antes de escrever qualquer arquivo:
references/stack-templates.mdApresente a árvore de arquivos ao usuário antes de gerar:
project-name/
├── README.md
├── .env.example
├── .gitignore
├── .github/workflows/ci.yml
├── package.json / requirements.txt / go.mod
├── src/
│ ├── ...
├── tests/
│ ├── ...
└── ...
Escreva cada arquivo. Regras:
// TODO: implementar ou placeholders pass..env.example com cada variável necessária, comentada com propósito..github/workflows/ci.yml com: install, lint (se linter nas deps), test, build.Ordem de geração de arquivos:
Após a geração, passe por esta lista de verificação:
.env.example lista cada variável de env usada no código.gitignore cobre artefatos de build e segredosExecute scripts/validate_project.py contra o diretório gerado para detectar problemas comuns.
Spec de entrada:
"Construa uma API de gerenciamento de tarefas. Usuários podem criar, listar, atualizar e excluir tarefas. Tarefas têm título, descrição, status (todo/em-progresso/concluído) e data de vencimento. Use FastAPI com SQLite. Adicione auth básica com chaves de API."
Árvore de arquivos de saída:
task-api/
├── README.md
├── .env.example # API_KEY, DATABASE_URL
├── .gitignore
├── .github/workflows/ci.yml
├── requirements.txt # fastapi, uvicorn, sqlalchemy, pytest
├── main.py # app FastAPI, CORS, lifespan
├── models.py # modelo SQLAlchemy Task
├── schemas.py # schemas Pydantic request/response
├── database.py # engine SQLite + sessão
├── auth.py # middleware de chave de API
├── routers/
│ └── tasks.py # endpoints CRUD
└── tests/
└── test_tasks.py # testes de smoke para cada endpoint
Spec de entrada:
"Quero um website de compartilhamento de receitas. Usuários se cadastram, postam receitas com ingredientes e etapas, navegam por outras receitas e salvam favoritos. Use Next.js com Tailwind. Armazene dados em PostgreSQL."
Árvore de arquivos de saída:
recipe-share/
├── README.md
├── .env.example # DATABASE_URL, NEXTAUTH_SECRET, NEXTAUTH_URL
├── .gitignore
├── .github/workflows/ci.yml
├── package.json # next, react, tailwindcss, prisma, next-auth
├── tailwind.config.ts
├── tsconfig.json
├── next.config.ts
├── prisma/
│ └── schema.prisma # modelos User, Recipe, Ingredient, Favorite
├── src/
│ ├── app/
│ │ ├── layout.tsx
│ │ ├── page.tsx # Homepage — feed de receitas
│ │ ├── recipes/
│ │ │ ├── page.tsx # Navegar por receitas
│ │ │ ├── [id]/page.tsx # Detalhe da receita
│ │ │ └── new/page.tsx # Formulário de criação de receita
│ │ └── api/
│ │ ├── auth/[...nextauth]/route.ts
│ │ └── recipes/route.ts
│ ├── components/
│ │ ├── RecipeCard.tsx
│ │ ├── RecipeForm.tsx
│ │ └── Navbar.tsx
│ └── lib/
│ ├── prisma.ts
│ └── auth.ts
└── tests/
└── recipes.test.ts
Spec de entrada:
"Ferramenta CLI Python para rastrear despesas. Comandos: add, list, summary, export-csv. Armazene em um arquivo SQLite local. Sem API externa."
Árvore de arquivos de saída:
expense-tracker/
├── README.md
├── .gitignore
├── .github/workflows/ci.yml
├── pyproject.toml
├── src/
│ └── expense_tracker/
│ ├── __init__.py
│ ├── cli.py # comandos argparse
│ ├── database.py # operações SQLite
│ ├── models.py # dataclass Expense
│ └── formatters.py # saída em tabela + CSV
└── tests/
└── test_cli.py
| Antipadrão | Correção |
|---|---|
Código placeholder — // TODO: implementar, pass, corpos de função vazios | Cada função tem uma implementação real. Se complexo, implemente uma versão simplificada funcional. |
| Override de stack — escolher Next.js quando o usuário disse Flask | Sempre respeite preferências tecnológicas explícitas. Infira apenas quando o usuário não especifica. |
| Falta de .gitignore — fazer commit de node_modules ou .env | Gere .gitignore apropriado para a stack como um dos primeiros arquivos. |
| Imports fantasmas — importar pacotes não listados no manifesto | Verifique cada import no package.json / requirements.txt antes de terminar. |
| Over-engineering do MVP — adicionar cache Redis, limitação de taxa, WebSockets a um v1 | Construa o mínimo que funciona. O usuário pode iterar. |
| Ignorar preferências declaradas — usuário diz "PostgreSQL" e você gera MongoDB | Analise a spec cuidadosamente. Preferências explícitas são inegociáveis. |
Variáveis de env ausentes — código lê process.env.X mas .env.example não lista | Cada variável de env usada no código deve aparecer em .env.example com um comentário. |
| Sem testes — entregar um repo com zero arquivos de teste | No mínimo: um teste de smoke por endpoint de API ou um teste por função principal. |
| APIs alucinadas — gerar código que chama métodos de biblioteca que não existem | Siga APIs bem documentadas e estáveis. Quando incerto, use a abordagem mais simples. |
scripts/validate_project.pyVerifica um diretório de projeto gerado em busca de problemas comuns:
# Validar um projeto gerado
python3 scripts/validate_project.py /path/to/generated-project
# Saída JSON
python3 scripts/validate_project.py /path/to/generated-project --format json
Verificações realizadas:
Para specs complexas, gere em etapas:
Pergunte ao usuário após o MVP: "O núcleo está funcionando. Quer que eu adicione auth/polimento/deploy a seguir, ou itere no que está aqui?"
product-team/saas-scaffolder — Scaffolding específico para SaaS (Next.js + Stripe + Auth)engineering/spec-driven-workflow — Metodologia de desenvolvimento spec-firstengineering/database-designer — Padrões de design de schema de banco de dadosengineering-team/senior-fullstack — Padrões de implementação full-stack