writing-plans (obra/superpowers)
Transforma uma especificação ou requisitos em um plano de implementação passo a passo antes de mexer no código.
writing-plans: transforma uma spec curta de feature em um plano de TDD passo a passo (controle 1.6, skill 4.4, prompt de uma frase 4.2) por 1.35x os tokens; um prompt de uma frase com o mesmo formato pontua quase tão bem
Codex CLI · gpt-6-astra
25.3 / 30
Ganho sobre sem skill: +2.87 · Recomendado · 18 execuções
Recomendado: o total 25.3/30 é pelo menos 22, a qualidade da saída 4.4 é pelo menos 3.5 e o ganho +2.87 é pelo menos +1.0.
SOTA
AprovadoTestado com Codex.
Cobre Codex, Claude Code
Codex CLI 0.166 (nível SOTA): 18 execuções avaliadas. Uma aprovação aqui também vale para o Claude Code pela nossa regra de níveis; ela não diz nada sobre o segundo nível.
Notas
Cada dimensão vai de 0 a 5, e as seis somam o total de 30. 5 é melhor em todas as dimensões. Custo 5 significa barato e rápido. Instalação 5 significa fácil.
- Confiabilidade do acionamento
- 5.0
- Ganho sobre sem skill
- 4.9
- Qualidade da saída
- 4.4
- Custo de tokens e tempo
- 3.0
- Instalação e portabilidade
- 4.0
- Segurança
- 4.0
Revisão de segurança
SeguroVarredura estática: 0 CRÍTICO / 0 ALTO / 0 MÉDIO. Revisão manual: seguro para executar em sandbox sem rede (nenhum achado). Uma varredura limpa não prova que a skill é segura.
Instalar
npx skills@latest add obra/superpowers --skill writing-plans
Commit fixado: 2ce8aa15d05bd57213e6f746f953aafb7ded7a8b
Testado: 2026-11-02
O que testamos
- Planejar prazos para uma CLI — spec.md descreve uma feature para esta pequena CLI de tarefas. Escreva o plano de implementação em plan.md nesta pasta. Não escreva código no projeto, apenas o plano.
- Planejar uma exportação CSV — spec.md descreve uma feature para este módulo de relatórios. Escreva o plano de implementação em plan.md nesta pasta. Não escreva código no projeto, apenas o plano.
- Planejar rate limiting de API — spec.md descreve uma feature para esta API de notas. Escreva o plano de implementação em plan.md nesta pasta. Não escreva código no projeto, apenas o plano.
Prós
- Eleva a nota média de 1.56 para 4.43 em relação ao grupo sem skill (+2.87).
- A skill foi acionada sem ser nomeada: o arquivo da skill foi lido em 6/6 execuções de tratamento.
Contras
- Ressalva do teste: mudamos três checagens depois de ver as primeiras pontuações e repontuamos as 18 execuções com as novas regras: a checagem de placeholder não corresponde mais à palavra TODO, que é o nome do produto em uma tarefa; os padrões de teste-que-falha-primeiro e de saída esperada aceitam o texto 'Expect failure'; os limites de commit e de checkbox foram reduzidos. Antes da mudança, a skill marcava 2.98 e o prompt de uma frase 4.04; depois, 4.43 e 4.21. O grupo de controle ficou perto de 1.5 nos dois casos.
- n=2 por tarefa por braço; diferenças abaixo de cerca de 1 ponto são ruído.
Avaliação
Codex CLI 0.166 (gpt-6-astra, raciocínio baixo) em um PC de teste Windows dedicado, com um projeto temporário novo e HOME/TMPDIR/caches temporários a cada execução, skill instalada (tratamento) ou ausente (grupo de controle) ou ausente com o requisito central da skill comprimido em uma frase anexada ao prompt (grupo prompt de uma frase), 2 execuções por grupo por tarefa, rede desligada, gravações em /tmp bloqueadas. Os prompts nunca mencionam a skill (exceto pelo texto indicado abaixo). Três pequenos projetos Python (CLI de tarefas, módulo de relatórios, API de notas), cada um com um spec.md. O prompt só pede um plano de implementação em plan.md e proíbe escrever código. Ele não descreve o formato do plano. O prompt de uma frase descreve o formato inteiro: passos de 2 a 5 minutos, caminhos exatos, teste que falha primeiro com código completo, comando exato com saída esperada, implementação mínima, commit no git, sem placeholders.
Comparação entre os braços
| Braço | Nota média (0-5) | Tokens por execução |
|---|---|---|
| Sem a skill | 1.56 | 88k |
| Prompt de uma frase | 4.21 | 127k |
| Com a skill | 4.43 | 119k |
Medido com Codex CLI em 18 execuções, com pontuação por verificações baseadas em regras e sem juiz LLM. Total 25.3 / 30, veredito Recomendado.
Divulgação: Mudamos três verificações depois de ver as primeiras notas e reavaliamos as 18 execuções com as novas regras: a verificação de placeholder não corresponde mais à palavra TODO, que é o nome do produto em uma tarefa; os padrões de teste que falha primeiro e de saída esperada aceitam a formulação 'Expect failure'; os limites de commit e checkbox foram reduzidos. Antes da mudança, a skill pontuou 2.98 e o prompt de uma frase 4.04; depois, 4.43 e 4.21. O controle ficou perto de 1.5 nos dois casos.
Veredito: Recomendado (25.3 / 30). Fonte: obra/superpowers, skills/writing-plans, fixada no commit 2ce8aa1. Instalação: npx skills@latest add obra/superpowers --skill writing-plans. Licença: MIT (LICENSE do repositório).
O que é
A skill writing-plans (obra/superpowers): transforma uma especificação em um plano de implementação em tarefas pequenas: caminhos de arquivo exatos, um teste que falha primeiro, o comando exato de execução com o resultado esperado, implementação mínima, uma etapa de commit por tarefa, etapas com checkbox, nenhum placeholder TBD.
Como testamos
Codex CLI 0.166 (gpt-6-astra, raciocínio baixo) em um PC Windows dedicado a testes, um projeto temporário novo e HOME/TMPDIR/caches temporários a cada execução, skill instalada (grupo com skill), ausente (controle) ou ausente com o requisito central da skill comprimido em uma frase anexada ao prompt (grupo de uma frase), 2 execuções por grupo por tarefa, rede desativada, gravações em /tmp bloqueadas. Os prompts nunca mencionam a skill (exceto pela formulação indicada abaixo).
Três projetos Python pequenos (CLI de tarefas, módulo de relatório, API de notas), cada um com um spec.md. O prompt apenas pede um plano de implementação em plan.md e proíbe escrever código. Ele não descreve o formato do plano. A frase única descreve o formato inteiro: etapas de 2-5 minutos, caminhos exatos, teste que falha primeiro com código completo, comando exato com saída esperada, implementação mínima, git commit, sem placeholders.
- Planejar prazos para uma CLI — spec.md descreve um recurso para esta pequena CLI de todo. Escreva o plano de implementação em plan.md nesta pasta. Não escreva nenhum código no projeto, apenas o plano.
- Planejar uma exportação CSV — spec.md descreve um recurso para este módulo de relatório. Escreva o plano de implementação em plan.md nesta pasta. Não escreva nenhum código no projeto, apenas o plano.
- Planejar rate limiting de API — spec.md descreve um recurso para esta API de notas. Escreva o plano de implementação em plan.md nesta pasta. Não escreva nenhum código no projeto, apenas o plano.
A pontuação é programática (testes ocultos / detecção de problemas plantados / verificações de restrições / renderização+OCR quando aplicável), de 0 a 5 por execução. Nenhum juiz LLM decidiu qualquer nota.
Resultados
A frase única dada ao terceiro grupo: "Escreva o plano como tarefas pequenas (cada etapa de 2-5 minutos): caminhos de arquivo exatos, o teste que falha primeiro com código completo, o comando exato com sua saída esperada, a implementação mínima com código completo, e então uma etapa de git commit; sem placeholders como TBD ou 'add validation'."
| Tarefa | Nota do controle | Uma frase | Com a skill | Tokens do controle | Tokens da frase | Tokens com a skill | Skill lida |
|---|---|---|---|---|---|---|---|
| t1-todo-due | 1.51 | 4.21 | 4.28 | 94k | 132k | 111k | 2/2 |
| t2-csv-export | 1.71 | 4.47 | 4.8 | 84k | 129k | 122k | 2/2 |
| t3-rate-limit | 1.45 | 3.95 | 4.21 | 85k | 120k | 122k | 2/2 |
Nota média: 1.56 sem vs 4.43 com a skill (delta +2.87). Tokens por execução: 88k vs 119k (1.34x); tempo 66s vs 102s. Grupo de uma frase: 4.21 (ganho da skill sobre a frase: +0.22; ganho da própria frase sobre sem skill: +2.65); tokens da frase: 127k por execução, então a skill custa 0.93x a frase.
O que aconteceu
- Controle 1.56, skill 4.43, frase 4.21 (n=6 cada). Os planos do controle são esboços curtos em prosa (46-71 linhas): sem etapas de teste que falha primeiro, sem saída esperada e sem etapas de commit em nenhuma das 6 execuções, e apenas um comando de execução em cada.
- Os planos da skill têm 110-142 linhas em formato de checkbox com uma etapa de teste que falha, uma etapa de execução marcada 'Expect failure' ou 'Expect all tests to pass', e um commit no nível da tarefa na tarefa de CSV. Ainda têm lacunas: 4 de 6 execuções não têm etapa de git commit, e blocos de código aparecem em 2-3 etapas em vez de todas.
- Os planos da frase têm cerca de 350 linhas com código completo em cada etapa e todos os commits e comandos exigidos, mas sem checkboxes em 6/6 (um formato específico da skill) e em 3 de 6 execuções com menos de 4 comandos de execução, porque usaram formulação PowerShell.
- Tokens: skill 119k, frase 127k, controle 88k por execução (1.35x o controle). A skill foi lida em 6/6 execuções com a skill.
Notas por dimensão
| Dimensão | Nota | Por quê |
|---|---|---|
| 1_output_quality | 4.43 | Nota média 4.43/5 com a skill (verificações programáticas, veja a tabela por tarefa). |
| 2_lift_vs_no_skill | 4.87 | +2.87 pontos vs 1.56 sem a skill (n=2 por tarefa; abaixo de ~1 ponto é ruído). |
| 3_trigger | 5.0 | Arquivo da skill lido em 6/6 execuções com a skill. |
| 4_instructions_portability | 4 | SKILL.md no formato superpowers; refere-se a outras skills superpowers para execução. |
| 5_efficiency | 3 | 1.34x tokens (119k vs 88k por execução) e 1.54x tempo (102s vs 66s). |
| 6_safety_hygiene | 4 | Somente prosa; veja security.md. |
Limitações deste teste
- Verificações baseadas em regras no texto de plan.md: contagem de caminhos, comandos, commits, checkboxes e blocos de código. A qualidade do plano, se ele realmente funcionaria, não foi julgada.
- Mudei as verificações depois de ver a primeira pontuação e reavaliei cada execução sob as mesmas novas regras: (1) a verificação de 'sem placeholders' casava com a palavra TODO, que é o nome do produto na tarefa da CLI de tarefas (removi TODO do padrão); (2) os padrões de 'teste que falha primeiro' e 'saída esperada' foram ampliados para aceitar 'Expect failure' e 'Expect all tests to pass'; (3) o limite de commits caiu de 3 para 2 (os planos da skill têm duas tarefas) e o limite de checkboxes de 12 para 8. Antes dessa mudança, a skill tirava 2.98 e a frase 4.04; depois, 4.43 e 4.21. O controle ficou em 1.4-1.6 de qualquer forma.
- A verificação de checkbox conta um formato que a skill usa e a frase nunca pediu, o que favorece a skill.
- n=2 por célula; fixtures pequenas.
- n = 2 por grupo por tarefa: diferenças abaixo de cerca de 1 ponto são ruído.
- A pontuação baseada em regras mede o que as verificações conseguem ver; não avalia gosto nem se o resultado é o melhor possível.
Segurança
Veja security.md. Varredura: 0 CRITICAL / 0 HIGH / 0 MEDIUM. Veredito: seguro para executar (sandbox sem rede). Uma varredura limpa não prova que a skill é segura.
Conclusão
Sem ajuda, o Codex escreve um esboço solto; com a skill, escreve etapas reais de TDD. Um parágrafo nomeando o mesmo formato vai quase tão bem e produz código mais completo por etapa, então a skill é principalmente um pacote conveniente desse parágrafo.
Transcrição
Log de execuções: writing-plans (Codex CLI, network off, per-run temp HOME/TMPDIR, one row per graded run.) Colunas: tarefa, grupo-execução, nota (0-5), tokens, segundos, verificações aprovadas, arquivos da skill abertos pelo agente. t1-todo-due control-1: nota 1.38, tokens 102848, s 60.8, verificações 3/10, nada aberto t1-todo-due control-2: nota 1.64, tokens 86724, s 67.6, verificações 3/10, nada aberto t1-todo-due oneliner-1: nota 4.47, tokens 133771, s 130.1, verificações 9/10, nada aberto t1-todo-due oneliner-2: nota 3.95, tokens 131546, s 112.8, verificações 8/10, nada aberto t1-todo-due treatment-1: nota 4.34, tokens 123893, s 104.1, verificações 8/10, abriu writing-plans t1-todo-due treatment-2: nota 4.21, tokens 99712, s 99.6, verificações 8/10, abriu writing-plans t2-csv-export control-1: nota 1.71, tokens 85021, s 70.6, verificações 4/10, nada aberto t2-csv-export control-2: nota 1.71, tokens 84700, s 64.8, verificações 4/10, nada aberto t2-csv-export oneliner-1: nota 4.47, tokens 129967, s 119.6, verificações 9/10, nada aberto
18 execuções, 3 artefatos
Resultado de exemplo
SOTA · With the skill: plan.md (t1-todo-due, run 1, Codex)
# Todo Due Dates Implementation Plan > **For agentic workers:** REQUIRED SUB-SKILL: Use superpowers:subagent-driven-development (recommended) or superpowers:executing-plans to implement this plan task-by-task. Steps use checkbox (`- [ ]`) syntax for tracking. **Goal:** Add optional due dates, chronological listing, and an overdue-only CI check without migrating existing data. **Architecture:** Keep the existing JSON dictionary storage and implement date validation, ordering, and rendering in `todo/cli.py`. Capture the local date once per list invocation and pass it to a pure overdue predicate. Preserve the existing `main(argv=None)` entry point and argparse error handling. **Tech Stack:** Python standard library: argparse, datetime, json, unittest, unittest.mock, tempfile; no new dependencies. **Spec:** `spec.md` (read alongside this plan). ## Global Constraints - `todo add "title" --due 2026-03-01` stores an optional ISO due date with the item. - `todo list` prints overdue items first (marked `!`), then by due date, then undated items. - `todo list --overdue` prints only overdue items; exit code 1 if there are any (so CI can use it). - Invalid dates are rejected with a clear message and exit code 2. - Items already stored without a due date must keep working (no migration step for the user). ## Decisions for details not specified - Accept exactly `YYYY-MM-DD` with a real Gregorian calendar date; reject whitespace, compact dates, timestamps, and unpadded components. - An item is overdue only when unfinished and its due date is strictly before the current local date. Due today is not overdue. - Sort overdue items by ascending due date, then remaining dated items by ascending due date, then undated items. Preserve insertion order within equal keys. Completed items remain visible in ordinary listings but are never overdue. - Preserve `[ ] title` and `[x] title` for undated items. Append ` (due YYYY-MM-DD)` for dated items and prefix overdue lines with `! `, e.g. `! [ ] rent (due 2026-03-01)`. - Ordinary listing returns 0, even with overdue items. Overdue-only listing returns 0 with no output when none qualify. Listing never rewrites storage. - Store dates as strings under `due`; omit the key when not supplied. Treat an absent key or `null` as undated. Arbitrary corrupt JSON or malformed dates manually inserted into storage are outside this feature. ## Review Focus 1. Calendar boundaries: leap day is accepted only in leap years; impossible dates fail before storage changes (Task 1). 2. ISO-looking variants: compact dates, timestamps, whitespace, and unpadded dates are rejected (Task 1). 3. Midnight/today boundary: due today is not overdue; use one captured local date per listing (Task 2). 4. Completed items with past dates: remain visible without `!` and are excluded from overdue filtering (Tasks 2–3). 5. Legacy and tied items: missing/null dates work, ties retain insertion order, and listing leaves the JSON file untouched (Tasks 2–3). ## File Map - Modify `todo/cli.py`: add argument validation, optional date persistence, overdue predicate, sorting, rendering, and filter exit status. - Create `tests/test_cli.py`: isolated CLI tests u [... excerpt: first 3200 of 11517 characters]