Dev coding
Solo-dev Claude Code skills: brainstorm → plan → code. No ceremony, no vibes. Fusion of Matt Pocock, OpenSpec, get-shit-done.
npx -y skills add calneymgp/solodev --skill dev-codingAssembled from the repository path, not quoted from the project. Check it against their README if it does not work.
One thing to look at
- 2 stars2 stars. Stars are a popularity signal and not a quality one, but at this level it is likely that nobody has read this closely except its author, and you would be relying on your own review.
What its author says it does
Copied from the file, not written here
Executa um PLAN.md task por task — lê read_first, aplica a action, verifica acceptance, marca [x], faz commit atômico com referência à task. Mostra progresso (X/N), guarda de escopo quando a task infla, protocolo de drift quando a implementação diverge do plano. Suporta TDD vertical (tracer bullet red-green-refactor), checkpoints HITL. Use quando o usuário disser "/dev-coding", "executa o plano", "implementa o PLAN.md", "next task", "continua do task-XX", ou pedir para começar/continuar implementação a partir de um PLAN.md existente.
SKILL.md
7.7 KB, as published. Nobody here has run it
/dev-coding — Executar PLAN.md task por task
Esta skill assume que existe .plans/<feature>/PLAN.md produzido por /dev-plan (ou compatível). Executa uma task por vez, com verificação dura no fim de cada uma.
Pré-condições
- Existe
<workspace>/.plans/<feature>/PLAN.md(ou usuário aponta o path) - Você pode escrever e executar comandos no projeto
Se não houver PLAN.md, pare e sugira /dev-plan antes. Se for bug isolado sem plano, sugira /dev-fix.
Ritual de início de sessão
Na primeira execução da sessão (e após cada reset de contexto):
PLAN: <feature> — [████████░░░░] 4/9 tasks ✅
Próxima: task-05 (<tipo>, effort <S/M/L>) — <título>
1 mensagem, depois execute. O usuário sempre sabe onde está sem perguntar.
Processo por task
1. Carregue o contexto mínimo
- Read
.plans/<feature>/PLAN.mdintegralmente - Read
CLAUDE.mddo projeto + sub-CLAUDEs citados em## Affected Areas - Identifique a próxima task com
status: [ ]cuja dependência (depends_on) já está[x] - Read todos os
read_firstda task escolhida ANTES de qualquer edit
2. Despache pelo tipo
type: auto (execução direta)
- Anuncie em 1 frase: "task-XX: <título> — vou tocar <files>."
- Execute as subtasks da
actionem ordem - Rode o
must_pass(typecheck, build, test, lint conforme aplicável) - Cheque cada
acceptance— grep / curl / output esperado - Marque
[x]em cada acceptance no PLAN.md - Atualize
## Status Logcom timestamp + identificador (commit hash se for committar) - Reporte ao usuário em 2-3 linhas: o que mudou, o que verificou, próxima task
type: tdd (red-green-refactor vertical)
Princípio: tracer bullets, NÃO horizontal slicing. UM teste → UMA implementação → REPETE. Nunca escrever todos os testes primeiro.
Por subtask:
RED: escreva 1 teste para 1 behavior — rode → vê falhar
GREEN: código mínimo para passar — rode → vê passar
(não antecipe próximos testes; não adicione features especulativas)
[Após todas as subtasks GREEN: REFACTOR — só quando GREEN, nunca quando RED]
Regras de teste:
- Testar behavior via interface pública, não implementação interna
- Sem mocks de colaboradores internos (mock só boundary externo — DB, HTTP)
- Teste deve sobreviver a refactor que não muda behavior
- Se renomear função interna quebra o teste, o teste estava errado
type: checkpoint:decision
- Pare a execução
- Apresente ao usuário (1 mensagem): o que decidir (
decision), por que importa, opções com pros/cons - Espere resposta. Não escolha sozinho.
- Após escolha, registre no PLAN.md → seção
## Decisionse siga para próxima task.
type: checkpoint:human-verify
- Execute o setup (start dev server, run command, etc.)
- Confirme que o ambiente está pronto (HTTP 200, port aberta, build ok)
- Apresente: URL/comando para verificar + 2-4 checks visuais/funcionais específicos
- Espere "approved" ou descrição do problema.
- Se aprovado → marque
[x], mate o server se for o caso - Se reprovado → mude para
/dev-fix(diagnose loop) com o problema descrito
3. Guarda de escopo (a task inflou)
Pare e re-planeje quando, no meio de uma task:
- Os arquivos tocados passam de 2× o
files_modifieddeclarado - Aparece decisão de design que o plano não previu
- A "correção rápida no caminho" está virando uma sub-feature
Protocolo: pare, escreva no PLAN.md o que descobriu, proponha: dividir a task / criar task nova / decisão de checkpoint. Não engula escopo em silêncio — é assim que plano vira ficção.
4. Protocolo de drift (implementação divergiu do plano)
Quando a realidade do código contradiz o plano (API não existe como descrito, lib não suporta o approach, schema diferente):
- Não improvise em silêncio. Pare a task.
- Registre em
## Decisionsdo PLAN.md: o que o plano dizia → o que a realidade é → o novo approach (1-3 linhas). - Se a mudança afeta tasks futuras, ajuste-as agora (títulos/acceptance), não depois.
- Continue. O PLAN.md deve sempre contar a verdade — uma sessão nova que ler o plano não pode herdar a mentira.
5. Commits atômicos
Ao fim de cada task verde (se o repo usa git e o usuário não disse o contrário):
- 1 task = 1 commit. Mensagem:
<tipo>(<área>): <o que mudou> [task-XX] - Tipos convencionais:
feat,fix,refactor,test,chore,docs - Nunca
git add .cego — adicione os arquivos da task - Hash vai para o
## Status Log
6. Atualize o PLAN.md ao vivo
Cada task completed → mark [x] em cada acceptance + entrada no ## Status Log. Não acumule pra escrever no fim.
7. Ao terminar a última task
Não declare "pronto" aqui. Anuncie:
"Todas as tasks executadas. Rodando
/dev-shippara verificação final, Must-Haves e fechamento?"
/dev-ship roda Must-Haves, demo script, revisão de diff e fechamento. Se o usuário recusar, rode ao menos os Must-Haves do PLAN.md você mesmo (Truths, Artifacts, Key Links) antes de declarar done — falhou algo, crie fix-task, não mascare.
Princípios de execução (Karpathy)
- Cirurgia, não reforma. Toque só o que a task pede. Não refatore código adjacente, não "melhore" formatação, não adicione tipos onde não havia. Se notar algo, mencione — não delete.
- Mínimo necessário. Resolva a task. Não adicione abstração para uso único. Não preveja features futuras.
- Critério de sucesso primeiro. Antes de codar, releia
acceptanceemust_pass. Sua execução tem como meta acender esses verdes. - Verify before done. Rode o
must_pass. Cheque cadaacceptance. Não declare done com base em vibes. - Sem error handling especulativo. Só valide em boundary (input externo). Confie em garantias internas.
Anti-padrões
- ❌ Pular
read_first("é rápido, sei o que tem ali") - ❌ Escrever todos os testes TDD juntos antes de qualquer implementação
- ❌ Refatorar enquanto está RED
- ❌ Marcar
[x]sem rodar a verificação - ❌ Reescrever arquivo inteiro quando 5 linhas resolvem
- ❌ Skip de hooks/lint/typecheck para "ir mais rápido"
- ❌ Esconder falha mudando o teste em vez de corrigir o código
- ❌ Mockar colaborador interno (vai dar verde com behavior quebrado)
- ❌ Auto-aprovar checkpoint HITL ("não vou perguntar, já sei a resposta")
- ❌ Engolir drift/escopo em silêncio (o plano precisa contar a verdade)
Comunicação com o usuário
Antes de cada task: 1 frase — "task-XX: vou tocar X, Y."
Durante: silêncio relativo. Não narre tool calls. Comunique só obstáculo ou descoberta surpreendente.
Depois de cada task: 2-3 linhas — o que mudou, o que verificou, próxima task ID.
Quando parar e perguntar (mesmo em modo auto)
- A task tem
acceptanceambíguo na prática - A mudança implica decisão de design não prevista no plano
- O
must_passfalha de forma que sugere problema arquitetural (não bug local) - Vai tocar arquivo sensível não listado em
files_modified - Vai rodar comando destrutivo (force push, drop table, rm -rf)
Não improvise nessas. Pare, reporte, pergunte.