ll-skills 1.0.1 → 2.0.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (87) hide show
  1. package/CHANGELOG.md +79 -1
  2. package/README.md +134 -69
  3. package/agents/ll-executor.md +96 -0
  4. package/agents/ll-reviewer.md +76 -0
  5. package/agents/ll-scout.md +83 -0
  6. package/agents/ll-verifier.md +127 -0
  7. package/assets/preamble.md +70 -0
  8. package/assets/settings.suggested.json +19 -0
  9. package/bin/install.js +311 -54
  10. package/hooks/ll-precompact.js +49 -0
  11. package/hooks/ll-skills-check-update.js +1 -1
  12. package/hooks/ll-state.js +158 -0
  13. package/package.json +4 -2
  14. package/scripts/fixtures/empty/.gitkeep +0 -0
  15. package/scripts/fixtures/git-history.sh +49 -0
  16. package/scripts/fixtures/project/BACKLOG.md +11 -0
  17. package/scripts/fixtures/project/PLAN.md +66 -0
  18. package/scripts/fixtures/project/PROGRESS.md +57 -0
  19. package/scripts/fixtures/project/ROADMAP.md +28 -0
  20. package/scripts/fixtures/project/VERIFICATION.md +17 -0
  21. package/scripts/fixtures/project/decisions/DEC-0041-cents.md +16 -0
  22. package/scripts/fixtures/project/phases/07/PLAN.md +145 -0
  23. package/scripts/fixtures/project/src/a.ts +3 -0
  24. package/scripts/fixtures/project/src/pay.ts +5 -0
  25. package/scripts/fixtures/project/test/a.test.ts +5 -0
  26. package/scripts/ll-tools.js +664 -0
  27. package/scripts/smoke-test.sh +340 -0
  28. package/skills/ll-brainstorm/SKILL.md +180 -0
  29. package/skills/ll-brainstorm/references/decision-policy.md +118 -0
  30. package/skills/ll-brainstorm/references/techniques.md +75 -0
  31. package/skills/ll-close/SKILL.md +69 -0
  32. package/skills/ll-close/references/delivery.md +75 -0
  33. package/skills/ll-close/references/retrospective.md +48 -0
  34. package/skills/ll-decide/SKILL.md +135 -0
  35. package/skills/ll-decide/references/decision-policy.md +118 -0
  36. package/skills/ll-decide/references/decision-room.md +62 -0
  37. package/skills/ll-decide/references/disarm.md +79 -0
  38. package/skills/ll-decide/references/feedback-ingestion.md +90 -0
  39. package/skills/ll-decide/references/interview.md +102 -0
  40. package/skills/ll-decide/references/plan-skeleton.md +150 -0
  41. package/skills/ll-decide/references/premise-gate.md +83 -0
  42. package/skills/ll-decide/references/premortem.md +90 -0
  43. package/skills/ll-decide/references/review-spec.md +91 -0
  44. package/skills/ll-goal/SKILL.md +64 -0
  45. package/skills/ll-goal/references/goal-template.md +90 -0
  46. package/skills/ll-implement/SKILL.md +118 -0
  47. package/skills/ll-implement/references/briefs.md +123 -0
  48. package/skills/ll-implement/references/decision-policy.md +118 -0
  49. package/skills/ll-implement/references/phase-conversation.md +76 -0
  50. package/skills/ll-implement/references/phase-plan.md +111 -0
  51. package/skills/ll-oncall/SKILL.md +123 -0
  52. package/skills/ll-oncall/references/deploy-preflight.md +57 -0
  53. package/skills/ll-oncall/references/federation.md +110 -0
  54. package/skills/ll-oncall/references/watch-brief.md +39 -0
  55. package/skills/ll-refine/SKILL.md +116 -0
  56. package/skills/ll-refine/references/production-access.md +48 -0
  57. package/skills/ll-refine/references/visual-gate.md +100 -0
  58. package/skills/ll-research/SKILL.md +87 -0
  59. package/skills/ll-research/references/citation-check.md +38 -0
  60. package/skills/ll-research/references/front-brief.md +41 -0
  61. package/skills/ll-research/references/market-mode.md +83 -0
  62. package/skills/ll-resume/SKILL.md +75 -0
  63. package/skills/ll-update/SKILL.md +75 -0
  64. package/skills/ll-verify/SKILL.md +75 -0
  65. package/skills/ll-verify/references/verifier-briefs.md +116 -0
  66. package/agents/ll-implementador.md +0 -23
  67. package/skills/ll-atualizar/SKILL.md +0 -68
  68. package/skills/ll-decidir-antes/SKILL.md +0 -81
  69. package/skills/ll-decidir-antes/referencias/protocolo-entrevista.md +0 -112
  70. package/skills/ll-decidir-antes/referencias/template-spec.md +0 -238
  71. package/skills/ll-desarmar/SKILL.md +0 -254
  72. package/skills/ll-desarmar/referencias/execucao-adversarial.md +0 -217
  73. package/skills/ll-desarmar/referencias/humanos-e-substitutos.md +0 -116
  74. package/skills/ll-desarmar/referencias/placar-e-realimentacao.md +0 -140
  75. package/skills/ll-orquestrar/SKILL.md +0 -100
  76. package/skills/ll-pesquisar/SKILL.md +0 -159
  77. package/skills/ll-pesquisar/referencias/frente-de-pesquisa.md +0 -147
  78. package/skills/ll-pesquisar/referencias/sintese-e-fontes.md +0 -148
  79. package/skills/ll-pesquisar-mercado/SKILL.md +0 -112
  80. package/skills/ll-pesquisar-mercado/referencias/dossie.md +0 -375
  81. package/skills/ll-pesquisar-mercado/referencias/indice-e-fechamento.md +0 -122
  82. package/skills/ll-pesquisar-mercado/referencias/padroes-de-pesquisa.md +0 -149
  83. package/skills/ll-verificar-entrega/SKILL.md +0 -73
  84. package/skills/ll-verificar-entrega/referencias/briefs-auditoria.md +0 -291
  85. package/skills/ll-voltar-do-futuro/SKILL.md +0 -239
  86. package/skills/ll-voltar-do-futuro/referencias/anti-padroes-e-fundamentos.md +0 -201
  87. package/skills/ll-voltar-do-futuro/referencias/vetores-e-testes.md +0 -228
package/CHANGELOG.md CHANGED
@@ -1,6 +1,84 @@
1
1
  # Changelog
2
2
 
3
- Formato baseado em [Keep a Changelog](https://keepachangelog.com/pt-BR/1.1.0/). A skill `ll-atualizar` lê este arquivo para mostrar o que mudou entre a versão instalada e a publicada.
3
+ Formato baseado em [Keep a Changelog](https://keepachangelog.com/pt-BR/1.1.0/). A skill `ll-update` lê este arquivo para mostrar o que mudou entre a versão instalada e a publicada.
4
+
5
+ ## [2.0.2] - 2026-09-08
6
+
7
+ ### Alterado
8
+
9
+ - Textos de referência das skills revisados; exemplos com placeholders.
10
+ - Smoke test: verificação opcional de termos por lista externa (`LL_FORBIDDEN_FILE`).
11
+
12
+ ## [2.0.1] - 2026-09-08
13
+
14
+ ### Alterado
15
+
16
+ - Documentação e textos de referência revisados: exemplos genéricos e vocabulário uniforme; sem mudança de comportamento das skills.
17
+ - Instalador: diagnóstico de limpeza restrito ao cache do plugin legado.
18
+
19
+ ## [2.0.0] - 2026-09-07
20
+
21
+ ### Resumo
22
+
23
+ - O pacote deixa de ser uma coleção de 8 skills soltas e vira um ciclo de trabalho: 11 skills, 4 agentes, 3 hooks e um helper que compartilham o mesmo estado em arquivos versionados do repositório.
24
+ - Um preâmbulo roteador escrito no `~/.claude/CLAUDE.md` classifica todo pedido em 8 regimes antes de agir — pedido pequeno continua pequeno, pedido grande cai na skill certa sem você digitar o nome.
25
+ - A execução ganha skill própria (`ll-implement`): uma fase inteira — conversa, scouting, plano, revisão adversarial, ondas TDD com um executor por marco, verificação de contexto limpo e epílogo — em uma invocação.
26
+ - Tudo o que o modelo lê passa a ser inglês (nomes de skills, agentes, arquivos, campos YAML, prompts); a conversa com você continua em português.
27
+
28
+ ### Quebras
29
+
30
+ - **Idioma.** Nomes de skills, agentes, artefatos, campos de estado e todo o texto que o modelo lê estão em inglês. Só as respostas ao dono, o README e este changelog ficam em português.
31
+ - **Skills renomeadas, fundidas e removidas.** A primeira instalação 2.x apaga as 8 pastas antigas:
32
+
33
+ | Antes (1.x) | Agora (2.0.0) |
34
+ |---|---|
35
+ | `ll-pesquisar` | `ll-research` |
36
+ | `ll-pesquisar-mercado` | `ll-research --market` |
37
+ | `ll-decidir-antes` | `ll-decide` (modo `project`) |
38
+ | `ll-voltar-do-futuro` | `ll-decide` — passo do premortem |
39
+ | `ll-desarmar` | `ll-decide` — passo de desarme (`--measure`) |
40
+ | `ll-verificar-entrega` | `ll-verify` |
41
+ | `ll-atualizar` | `ll-update` |
42
+ | `ll-orquestrar` | seção `## Delegation` do preâmbulo + `references/briefs.md` do `ll-implement` |
43
+
44
+ - **`agents/ll-implementador.md` removido.** Em seu lugar entram 4 agentes de papel único: `ll-executor`, `ll-scout`, `ll-verifier`, `ll-reviewer`.
45
+ - **`SPEC.md` sai do contrato.** O contrato passa a ser `PLAN.md` + `ROADMAP.md` + `PROGRESS.md` + `phases/NN/`. Repositórios com `SPEC.md` continuam legíveis: `ll-resume` reconhece os nomes antigos por alias só-leitura.
46
+ - **O instalador escreve no `~/.claude/CLAUDE.md`.** Um bloco delimitado por `<!-- ll-skills:preamble v1 -->` … `<!-- /ll-skills:preamble -->` é gravado com diff e aprovação (backup em `CLAUDE.md.ll-skills.bak`); fora de TTY nada é escrito sem `--yes`. `--uninstall` remove o bloco e deixa o resto do arquivo byte a byte igual.
47
+ - **O instalador registra 3 hooks** em vez de 1: `SessionStart` passa a ter `matcher: "startup|resume|compact"` com dois hooks, e `PreCompact` ganha um. A entrada legada `startup|resume` é limpa na atualização.
48
+ - **Novas flags do instalador:** `--no-settings` (imprime o trecho dos hooks em vez de escrever), `--no-preamble` (não toca no `CLAUDE.md`), `--yes`/`-y` (aprova o preâmbulo sem prompt, para uso não interativo).
49
+
50
+ ### Novo
51
+
52
+ - **Preâmbulo roteador** (`assets/preamble.md`, ≤70 linhas) com 8 regimes — SMALL, FIX, RESEARCH, OPS, LARGE, EXECUTE, RESUME, REFINE —, a política de delegação (profundidade 1, brief de 12 campos, modelo por papel), as 3 faixas de decisão e a regra de prova ("timeout não é verde").
53
+ - **11 skills**, uma linha cada:
54
+
55
+ | Skill | O que faz |
56
+ |---|---|
57
+ | `ll-brainstorm` | Abre fase, projeto ou ideia solta decidindo na frente do dono: mapa A/B/C ≤35 linhas, uma bateria de ≤4 perguntas, sai em `phases/NN/DECISIONS.md` ou `docs/decide/OPENING.md` |
58
+ | `ll-research` | Pesquisa com frentes de contexto limpo e busca web → `docs/research-<tema>/` com SUMMARY (Apply/Discuss/Gates), trilha de evidências e fontes datadas; `--market` para mercado, concorrência e preço |
59
+ | `ll-decide` | Vira um pedido em contrato: gate de premissas, premortem, desarme, sala de decisão, entrevista em baterias → `PLAN.md` §0–§11, `ROADMAP.md`, `decisions/`; modo `feedback` ingere docx/pdf/xlsx |
60
+ | `ll-goal` | Escreve o texto de `/goal` em 9 partes (≤4.000 chars) e salva `docs/GOAL.md`; você cola em sessão nova |
61
+ | `ll-implement` | Roda uma fase inteira numa invocação: conversa, scouting, plano, revisão, ondas TDD, verificação e epílogo |
62
+ | `ll-verify` | Audita em contexto limpo com 3 camadas e ledger FRESH/STALE por critério → `VERIFICATION.md` com dois selos |
63
+ | `ll-close` | Fecha entrega ou milestone: backlog reconciliado, `docs/DELIVERY.md`, retrospectiva, lições para a memória, uma ratificação em bloco |
64
+ | `ll-resume` | Reconstrói o estado em ordem fixa de leitura e responde em ≤20 linhas, sem escrever nada |
65
+ | `ll-refine` | Uma rodada de refino num produto que já roda; modo `visual` faz o loop referência → gate → validador até o veredito FIEL |
66
+ | `ll-oncall` | Sessão que segura um papel: contrato `## Federation`, log numerado de pedidos; modos `watch` (vigília) e `ops` (deploy com pré-flight) |
67
+ | `ll-update` | Atualiza o pacote mostrando o changelog entre instalado e publicado antes de aplicar |
68
+
69
+ - **4 agentes:** `ll-executor` (opus, um marco, allowlist de arquivos, commits atômicos, bloco de retorno fixo), `ll-scout` (sonnet, só `phases/NN/CODE-CONTEXT.md`), `ll-verifier` (opus, `memory: project`, nunca conserta), `ll-reviewer` (opus + Playwright, "imagem não vista = check não feito"). Nenhum deles despacha subagente.
70
+ - **3 hooks:** `ll-skills-check-update.js` (aviso de versão nova), `ll-state.js` (SessionStart: injeta epílogo, últimas linhas do PROGRESS, git status, worktrees, decisões WAITING e o placar de marcos), `ll-precompact.js` (PreCompact: carimba no PROGRESS a ordem de reler o plano depois da compactação).
71
+ - **Helper `scripts/ll-tools.js`** (Node puro, sem dependências), copiado dentro de `ll-implement`, `ll-verify` e `ll-close` na instalação, com 12 comandos: `state`, `waves`, `plan-lint`, `tdd-gate`, `spot-check`, `dec-reserve`, `passes`, `heartbeat`, `ledger`, `backlog-reconcile`, `epilogue`, `phase-stats`.
72
+ - **Estado em arquivos do repositório:** `PLAN.md` (contrato), `ROADMAP.md` (fases e critérios), `PROGRESS.md` (bloco `ll-state` + epílogo), `BACKLOG.md` (itens com condição executável), `VERIFICATION.md` (ledger e veredito), `decisions/` (`DEC-NNNN`, numeração reservada pelo helper), `phases/NN/` (`DECISIONS.md`, `CODE-CONTEXT.md`, `PLAN.md`).
73
+ - **`assets/settings.suggested.json`**: política sugerida (deny list, `autoCompactWindow`, cache, modelos) que o instalador **imprime** e nunca escreve.
74
+ - `publish.yml`: a confirmação no registro espera a propagação por até 60 s em vez de consultar no mesmo segundo do publish.
75
+
76
+
77
+ ### Migração
78
+
79
+ - A primeira instalação 2.x poda as 8 skills antigas e `agents/ll-implementador.md` pelo manifesto sha256, mesmo sem manifesto anterior. Nada alheio a `skills/ll-*`, `agents/ll-*` e `hooks/ll-*` é tocado.
80
+ - Projetos em andamento continuam funcionando: nada é renomeado no meio de uma fase, e `ll-resume` lê `PLANO.md`, `SPEC.md`, `PROGRESS.md` e `VERIFICACAO.md` pelos nomes antigos.
81
+ - Limpeza da máquina (cache de plugin antigo) é **diagnosticada e impressa** pelo instalador, nunca executada.
4
82
 
5
83
  ## [1.0.1] - 2026-09-07
6
84
 
package/README.md CHANGED
@@ -1,6 +1,6 @@
1
1
  # LL Skills
2
2
 
3
- Coleção de skills para [Claude Code](https://claude.com/claude-code) que forma um **pipeline de desenvolvimento orientado a evidência**: da ideia à entrega verificada, com o mínimo de retrabalho e o máximo de decisões tomadas com lastro antes de custar caro.
3
+ Um ciclo de trabalho para [Claude Code](https://claude.com/claude-code): 11 skills, 4 agentes, 3 hooks e um helper que compartilham o mesmo estado em arquivos versionados do repositório. Um preâmbulo roteador instalado no seu `~/.claude/CLAUDE.md` classifica cada pedido antes de agir pedido pequeno continua pequeno, pedido grande cai na skill certa sem você digitar o nome dela. O produto real é a fase: `ll-implement` roda conversa, plano, revisão adversarial, ondas de execução com TDD, verificação de contexto limpo e epílogo em **uma** invocação, e escreve tudo em disco à medida que acontece, para que uma compactação não perca nada.
4
4
 
5
5
  ## Instalação
6
6
 
@@ -10,96 +10,161 @@ Requer [Node.js](https://nodejs.org) 18+ (o mesmo que o Claude Code já usa).
10
10
  npx ll-skills@latest
11
11
  ```
12
12
 
13
- O instalador copia as skills para `~/.claude/skills/ll-*`, o agente para `~/.claude/agents/` e registra um hook de aviso de atualização em `~/.claude/settings.json`. Se houver uma instalação anterior (inclusive o antigo formato de plugin por marketplace), ela é removida na mesma passada. Reinicie o Claude Code ao final.
14
-
15
- As skills são invocadas automaticamente pelo Claude quando o pedido bate com a description delas, ou manualmente pelo nome (ex.: `/ll-decidir-antes`). Por serem skills standalone, e não de plugin, não carregam o prefixo `ll-skills:`.
16
-
17
- Outras formas:
13
+ Reinicie o Claude Code ao final. As skills são standalone sem o prefixo `ll-skills:` e podem ser chamadas pelo nome (`/ll-implement 3`) ou escolhidas pelo roteador do preâmbulo.
18
14
 
19
15
  ```bash
20
- npx github:allangdy/ll-skills # direto do repositório, sem passar pelo registro npm
21
- npx ll-skills@latest --local # instala em ./.claude, para o projeto atual
22
- npx ll-skills@latest --uninstall # remove tudo que o instalador colocou
23
- CLAUDE_CONFIG_DIR=/outro/dir npx ll-skills@latest # honra o diretório de configuração alternativo
24
- ```
25
-
26
- ### Atualizações
27
-
28
- Cada versão publicada no npm é uma nova versão. O ll-skills **avisa no início da sessão** quando a versão instalada ficou para trás, e `/ll-atualizar` atualiza por dentro do Claude, mostrando o changelog antes de aplicar. Manualmente: `npx ll-skills@latest` de novo.
29
-
30
- ## O fluxo completo
31
-
32
- ```mermaid
33
- flowchart LR
34
- A[ll-pesquisar-mercado] --> B[ll-voltar-do-futuro]
35
- B --> C[ll-desarmar]
36
- C -->|placar realimenta o dossiê| A
37
- C --> D[ll-decidir-antes]
38
- D --> E[implementação longa autônoma via SPEC.md]
39
- E --> F[ll-verificar-entrega]
40
- F -->|falhas viram novas decisões| D
41
- O[ll-orquestrar]:::trans -.regras transversais.-> A & B & C & D & E & F
42
- classDef trans stroke-dasharray: 5 5
16
+ npx ll-skills@latest --local # instala em ./.claude, para o projeto atual
17
+ npx ll-skills@latest --no-settings # não escreve hooks; imprime o trecho para colar
18
+ npx ll-skills@latest --no-preamble # não toca no ~/.claude/CLAUDE.md
19
+ npx ll-skills@latest --yes # aprova o bloco do preâmbulo sem prompt (uso não interativo)
20
+ npx ll-skills@latest --uninstall # remove skills, agentes, hooks, cópias do helper e o preâmbulo
21
+ npx github:allangdy/ll-skills # direto do repositório, sem passar pelo npm
43
22
  ```
44
23
 
45
- Cada etapa produz o insumo da seguinte, mas **toda skill funciona sozinha** os handoffs são detectados pelos artefatos no repositório (`docs/`, placar, `SPEC.md`), nunca por acoplamento rígido.
24
+ O que a instalação **escreve** (em `$CLAUDE_CONFIG_DIR` ou `~/.claude`):
46
25
 
47
- ### Para um projeto novo
26
+ | Caminho | Conteúdo |
27
+ |---|---|
28
+ | `skills/ll-*/` | as 11 skills, com `SKILL.md` e `references/` |
29
+ | `skills/ll-{implement,verify,close}/scripts/ll-tools.js` | cópia do helper, uma por skill que o usa |
30
+ | `agents/ll-{executor,scout,verifier,reviewer}.md` | os 4 agentes |
31
+ | `hooks/ll-{skills-check-update,state,precompact}.js` | os 3 hooks, executáveis |
32
+ | `settings.json` | duas entradas em `SessionStart` (`startup\|resume\|compact`) e uma em `PreCompact`; backup em `settings.json.ll-skills.bak` |
33
+ | `CLAUDE.md` | o bloco entre `<!-- ll-skills:preamble v1 -->` e `<!-- /ll-skills:preamble -->`, com diff e aprovação; backup em `CLAUDE.md.ll-skills.bak` |
34
+ | `ll-skills/{VERSION,manifest.json,install.json}` | versão, manifesto sha256 (base da poda e do `--uninstall`) e origem da instalação |
48
35
 
49
- 1. **`ll-pesquisar-mercado`** antes de qualquer código: dossiê indexado em `docs/` (mercado, dores, concorrentes, preços sem âncora, viabilidade, economia unitária), com força de evidência por linha. Termina com as **decisões em aberto** e as **premissas ordenadas por letalidade**.
50
- 2. **`ll-voltar-do-futuro`** — o premortem: um agente narra do futuro por que o projeto morreu, atacando o que nunca foi medido. Cada falha traz o aviso que já existia, o viés que cegou e o **teste barato com critério de aceite** que a desarma. As premissas do dossiê são metade do insumo.
51
- 3. **`ll-desarmar`** — executa os testes desarmadores e as POCs com aceite pré-registrado ("reprova primeiro") e preenche o **placar**: DESARMADA, CONFIRMADA COM ROTA DE SAÍDA, EM CURSO… Os números medidos realimentam o dossiê.
52
- 4. **`ll-decidir-antes`** — com os riscos desarmados, a entrevista de decisões: perguntas via AskUserQuestion priorizadas por irreversibilidade × impacto (recomendações sempre com lastro — dos mapas do código ou de pesquisa web), consolidadas em **`SPEC.md` + `PROGRESS.md`** com protocolo anti-drift embutido. Decisões já tomadas nas etapas anteriores não são re-perguntadas.
53
- 5. **Implementação longa** — um agente autônomo (horas ou dias) parte do `SPEC.md`, que é autossuficiente: contrato de decisões, critérios verificáveis por comando, marcos, protocolo de escalada. O ll-skills inclui o agente **`ll-implementador`**, que já parte com a `ll-orquestrar` pré-carregada — mas qualquer sessão/agente com a instrução de partida serve.
54
- 6. **`ll-verificar-entrega`** — auditoria de contexto limpo: um verificador que nunca viu o raciocínio da implementação roda os comandos de aceite da SPEC um a um e confere o placar de marcos contra o código real. O auto-relato de agentes degrada em execuções longas; esta etapa é o que transforma "pronto" em pronto.
36
+ O que a instalação apenas **imprime**, e nunca escreve: a política sugerida de `settings.json` (`assets/settings.suggested.json` deny list, `autoCompactWindow`, cache, modelos por papel) e o diagnóstico de sobras de instalações antigas. Reinstalar é idempotente; a primeira instalação 2.x poda as skills 1.x pelo manifesto.
55
37
 
56
- ### Para uma feature de um sistema existente
38
+ ## Como funciona
57
39
 
58
- O mesmo pipeline, encurtado`ll-pesquisar-mercado` detecta o modo no enquadramento:
40
+ O preâmbulo classifica todo pedido por três critérios — lacuna de intenção, irreversibilidade e pegada e anuncia o regime em uma linha antes de agir.
59
41
 
60
- 1. **`ll-pesquisar-mercado` (modo feature)** os dados internos entram como fonte de primeira classe (uso real, tickets, churn, pedidos de clientes = preferência revelada), mais gap competitivo da capacidade e impacto em preço/empacotamento. Desfecho: **construir / construir diferente / não construir**.
61
- 2. **`ll-voltar-do-futuro`** — opcional; vale quando a feature é cara, irreversível ou toca contrato de dados.
62
- 3. **`ll-desarmar`** **`ll-decidir-antes`** implementação **`ll-verificar-entrega`**, como no fluxo novo.
42
+ | Regime | Gatilho | O que acontece | Skill |
43
+ |---|---|---|---|
44
+ | SMALL | verbo + alvo endereçável, ≤25 palavras, ~3 chamadas | o alvo, faz, verifica com um número | nenhuma |
45
+ | FIX | "não era isso", "quebrou", "não sobe" | após 2 tentativas iguais, para, junta evidência, diagnostica | nenhuma |
46
+ | RESEARCH | "pesquise", "compare", "docs oficiais", restrição não validada | frentes paralelas + contra-evidência + checagem de citação | `ll-research` |
47
+ | OPS | deploy, apply, cutover, credencial, IP, "avise a infra" | pré-flight de capacidades e verdade por outro caminho | `ll-oncall` |
48
+ | LARGE | ideia nova, "plano", horas de máquina, cria um lugar | plano de ataque em 5 linhas, depois o contrato | `ll-decide` |
49
+ | EXECUTE | "implementa", "continua", marco com `passes: false` | a fase inteira em uma invocação | `ll-implement` |
50
+ | RESUME | 1º turno num repo com PROGRESS.md, "onde paramos" | briefing de ≤20 linhas, nada escrito | `ll-resume` |
51
+ | REFINE | produto rodando + "melhorar", "fiel ao protótipo" | uma rodada fechada de refino | `ll-refine` |
63
52
 
64
- Para uma correção pequena ou tarefa trivial, nada disso: o pipeline existe para trabalho onde errar estrutura custa caro.
53
+ Uma palavra sua vence o classificador (`direto`, `pesquise`, `plano`, `implementa`, `fecha`, `status`). E a regra que amarra o conjunto: **uma skill nunca chama outra**. Cada uma termina num arquivo dentro do repositório e imprime `▶ Next — /clear, depois <comando>`; quem cola é você.
65
54
 
66
- ### Transversais
55
+ ## Ciclo de um projeto
67
56
 
68
- **`ll-pesquisar`** pesquisa profunda de qualquer tema (técnica, comparativo de ferramenta, prática nova — ex.: GEO), em qualquer ponto do fluxo. Pesquisadores de contexto limpo com busca web entregam duas camadas: `SINTESE.md` acionável (fatos → backlog APPLY → decisões DISCUSS → gates de medição) e a trilha de evidências por frente com fontes e trechos salvos, para um agente futuro se aprofundar sem refazer a busca. A síntese é a base natural para a entrevista do `ll-decidir-antes` — a invocação da próxima skill é sempre sua.
57
+ Uma vez por milestone, com a contagem de prompts seus por etapa:
69
58
 
70
- **`ll-orquestrar`** vale em qualquer etapa que use subagentes — mas é na **implementação longa** que ele mais trabalha: é o manual de como o implementador decompõe por fronteiras de contexto, delega, roteia modelos e verifica com contexto limpo durante horas ou dias. Nas demais etapas, rege os pesquisadores, narradores e verificadores que as skills despacham.
59
+ | Etapa | Prompts | Sai disso |
60
+ |---|---|---|
61
+ | ideia → roteador | 1 | plano de ataque em 5 linhas (LARGE) |
62
+ | `ll-brainstorm` | 0–1 | mapa A/B/C + bateria de ≤4 → `DECISIONS.md` / `OPENING.md` |
63
+ | `ll-research` | 0–1 | `docs/research-<tema>/` com SUMMARY, evidências e fontes |
64
+ | `ll-decide` | 1 + cliques | `PLAN.md`, `ROADMAP.md`, `decisions/`, `PROGRESS.md` vazio |
65
+ | `ll-goal` | 2 (emite, você cola) | `docs/GOAL.md` + o texto para `/goal` |
66
+ | `ll-implement` × n | 0–1 cada | a fase entregue e verificada |
67
+ | `ll-verify` | 0 (citada no goal) | `VERIFICATION.md` com veredito e dois selos |
68
+ | `ll-close` | 0–1 + 1 ratificação | `docs/DELIVERY.md`, retrospectiva, arquivo do milestone |
69
+
70
+ ## Ciclo de uma fase
71
+
72
+ `ll-implement N`, oito passos, com um executor por marco além do scout, do verificador e — quando há UI — do revisor:
73
+
74
+ 0. **State** — lê ROADMAP, PLAN, o bloco `ll-state` do PROGRESS e o git log; marcos com `passes: false` entram em modo retomada.
75
+ 1. **Conversation** — uma tela de mapa A/B/C, pulada com `--no-talk` ou se `phases/NN/DECISIONS.md` já existe.
76
+ 2. **Scouting** — `ll-scout` escreve `phases/NN/CODE-CONTEXT.md`: análogo por arquivo com `file:line`, censo de leitores, armadilhas.
77
+ 3. **Phase plan** — a própria sessão escreve `phases/NN/PLAN.md` (tracer primeiro, ≤3 tasks e ≤5 arquivos por marco), roda `plan-lint` e imprime as ondas.
78
+ 4. **Review** — `ll-verifier` faz **uma** passada adversarial com 8 perguntas fixas; bloqueios corrigem o plano, não viram loop.
79
+ 5. **Waves** — por onda: heartbeat, `dec-reserve`, um `ll-executor` por marco, retornos apensados ao PROGRESS, aceite + build + suíte rodados pela sessão, `spot-check` e `tdd-gate`, e só então `passes true`.
80
+ 6. **Verification** — `ll-verifier` em contexto limpo contra os critérios da fase no ROADMAP; UI ou produto rodando chamam `ll-reviewer`.
81
+ 7. **Epilogue** — passou / faltou / WAITING / novo backlog no PROGRESS, e o próximo comando pronto para colar.
82
+
83
+ Entre fases, `/clear`: sessão nova custa menos e erra menos que compactação.
71
84
 
72
85
  ## Skills
73
86
 
74
- | Skill | Etapa | Descrição |
87
+ | Skill | Quando | Entrega |
75
88
  |---|---|---|
76
- | `ll-pesquisar-mercado` | 1 | Dossiê de mercado orientado a decisão projeto novo ou feature de sistema existente |
77
- | `ll-voltar-do-futuro` | 2 | Premortem narrado do futuro: falhas com aviso, viés e teste desarmador |
78
- | `ll-desarmar` | 3 | Executa testes desarmadores e POCs com aceite pré-registrado e preenche o placar |
79
- | `ll-decidir-antes` | 4 | Entrevista de decisões SPEC.md + PROGRESS.md para implementação autônoma longa |
80
- | `ll-verificar-entrega` | 6 | Auditoria de contexto limpo da entrega contra os critérios da SPEC |
81
- | `ll-pesquisar` | | Pesquisa profunda de qualquer tema em duas camadas: síntese acionável + trilha de evidências reutilizável |
82
- | `ll-orquestrar` | | Regras de orquestração multi-agente: delegação, briefs, roteamento, verificação |
83
- | `ll-atualizar` | | Atualiza o ll-skills para a última versão publicada, com o changelog do que mudou antes de aplicar |
89
+ | `ll-brainstorm` | "tenho uma ideia", "vamos discutir", antes de abrir uma fase | `phases/NN/DECISIONS.md` ou `docs/decide/OPENING.md` |
90
+ | `ll-research` | "pesquise", "compare A e B", restrição não validada; `--market` para mercado e preço | `docs/research-<tema>/` (SUMMARY + evidências + fontes datadas) |
91
+ | `ll-decide` | "escreve o plano", segunda tentativa, ou feedback externo em docx/pdf/xlsx | `PLAN.md` §0–§11, `ROADMAP.md`, `decisions/`, ou `docs/review-<data>.md` |
92
+ | `ll-goal` | antes de uma noite sem ninguém olhando | `docs/GOAL.md` + o texto de 9 partes para `/goal` |
93
+ | `ll-implement` | "implementa a fase N", "continua" | a fase entregue, `phases/NN/PLAN.md`, PROGRESS carimbado |
94
+ | `ll-verify` | "confere se terminou de verdade", contrato público, dinheiro, dado de cliente | `VERIFICATION.md` com ledger FRESH/STALE e dois selos |
95
+ | `ll-close` | "fecha", "pode arquivar"; `--milestone` arquiva as fases | `docs/DELIVERY.md`, retrospectiva, ROADMAP colapsado |
96
+ | `ll-resume` | primeiro turno no repo, "onde paramos", "o que tenho pra decidir" | briefing de ≤20 linhas na conversa, nada em disco |
97
+ | `ll-refine` | produto rodando: "melhorar as telas", "fiel ao protótipo" | uma rodada registrada no PROGRESS; modo `visual` até o veredito FIEL |
98
+ | `ll-oncall` | `claude -n <papel>`, "vigie a cada 1h", deploy/apply/cutover | bloco `## Federation`, `docs/REQUESTS.md`, pré-flight do deploy |
99
+ | `ll-update` | "atualiza o ll-skills", ou o aviso da sessão | o pacote atualizado, com o changelog mostrado antes |
100
+
101
+ ## Agentes
102
+
103
+ | Agente | Modelo | Papel | Fronteira |
104
+ |---|---|---|---|
105
+ | `ll-executor` | opus (sonnet no mecânico) | um marco: implementa, comita por task, devolve bloco fixo | não escreve estado, não dá push, não despacha agente |
106
+ | `ll-scout` | sonnet | análogos do código antes do plano | só escreve `phases/NN/CODE-CONTEXT.md`; não lê o PLAN do projeto |
107
+ | `ll-verifier` | opus, `memory: project` | revisa plano, verifica fase e entrega, do objetivo para trás | nunca conserta nada |
108
+ | `ll-reviewer` | opus + Playwright | exercita o produto rodando; DOM e screenshot por rota × viewport | não edita código; imagem não vista = check não feito |
109
+
110
+ Nenhum agente despacha subagente (profundidade 1) e nenhum pergunta ao dono: uma decisão de faixa 1 volta como `BLOCKED:` no bloco de retorno.
111
+
112
+ ## Hooks e helper
113
+
114
+ - `ll-skills-check-update.js` (SessionStart) — compara a versão instalada com a publicada e avisa uma linha quando há versão nova.
115
+ - `ll-state.js` (SessionStart, também em `compact`) — injeta o epílogo, as últimas linhas do PROGRESS, o `git status`, as worktrees, as decisões WAITING e o placar de marcos; silencioso fora de um projeto.
116
+ - `ll-precompact.js` (PreCompact) — carimba no PROGRESS a ordem de reler o plano da fase e o placar antes de continuar.
117
+
118
+ `scripts/ll-tools.js` é Node puro, sem dependências, copiado dentro de `ll-implement`, `ll-verify` e `ll-close`. Comandos de leitura sempre saem com código 0; comandos de escrita saem 1 em erro.
119
+
120
+ | Comando | O que faz |
121
+ |---|---|
122
+ | `state` | fase, placar de marcos, git, WAITING, epílogo presente — é o `Current state:` das skills |
123
+ | `waves` | calcula as ondas a partir de `depends_on`/`files`/`exclusive` e reporta defeitos e bloqueios |
124
+ | `plan-lint` | audita `phases/NN/PLAN.md` contra ~18 regras antes de congelar o plano |
125
+ | `tdd-gate` | confere no git log que o commit `test(Mn)` veio antes do `feat(Mn)` |
126
+ | `spot-check` | confere que os arquivos do marco estão no HEAD e que há commit ancorado |
127
+ | `dec-reserve` | reserva IDs `DEC-NNNN` e cria os stubs, sem colisão entre sessões |
128
+ | `passes` | marca um marco verde ou vermelho no bloco `ll-state`, reescrevendo uma linha só |
129
+ | `heartbeat` | registra uma linha datada no PROGRESS antes do epílogo |
130
+ | `ledger` | por critério da VERIFICATION: `file:line`, hash e frescor FRESH/STALE/UNKNOWN |
131
+ | `backlog-reconcile` | roda a condição executável de cada item do BACKLOG e fecha o que já passou |
132
+ | `epilogue` | monta os dados do fim de fase e diz o próximo comando |
133
+ | `phase-stats` | dias com trabalho, dias ociosos, commits por tipo, razão teste/feature |
134
+
135
+ ## Arquivos de estado no repositório
136
+
137
+ ```
138
+ PLAN.md contrato do projeto (§0–§11): verdades, decisões, orçamento, modelos
139
+ ROADMAP.md fases com critérios de sucesso; só existe acima de 3 fases
140
+ PROGRESS.md bloco ll-state (placar de marcos) + histórico + ## Epilogue
141
+ BACKLOG.md itens adiados, cada um com a condição executável que o fecha
142
+ VERIFICATION.md veredito, dois selos e o ledger por critério
143
+ decisions/DEC-NNNN-*.md uma decisão por arquivo; WAITING no nome espera você
144
+ phases/NN/DECISIONS.md o que foi decidido ao abrir a fase, e por quem
145
+ phases/NN/CODE-CONTEXT.md análogos do repo, censo de leitores e armadilhas (só o scout escreve)
146
+ phases/NN/PLAN.md marcos da fase: files, depends_on, acceptance, tdd, stop, model
147
+ docs/GOAL.md o texto colado em /goal, versionado
148
+ docs/DELIVERY.md o que foi entregue, para quem lê e não acompanhou
149
+ ```
84
150
 
85
- ## Adicionando novas skills
151
+ a sessão escreve arquivos de estado; executores devolvem blocos e a sessão os apensa.
86
152
 
87
- 1. Crie `skills/ll-<nome>/SKILL.md` com frontmatter `name: ll-<nome>` (kebab-case, igual ao nome da pasta) e `description` (diz ao Claude **quando** invocar)
88
- 2. Material de profundidade vai em `skills/ll-<nome>/referencias/`, lido no momento certo
89
- 3. Atualize a tabela acima e registre a mudança em `CHANGELOG.md`, numa seção `## [x.y.z] - data` com a versão que vai sair
90
- 4. Publique uma versão (abaixo). O hook avisa quem está atrasado na próxima sessão.
153
+ ## Decisões
91
154
 
92
- O instalador (`bin/install.js`) descobre as skills pela pasta `skills/ll-*` e os agentes por `agents/ll-*.md`; não lista para manter. `npm test` roda o smoke test do instalador num diretório isolado.
155
+ - **Faixa 1 — pergunta, nunca decide sozinho:** dinheiro acima do teto da rodada, irreversível fora do repo (push que faz deploy, apply com destroy, credencial, prod, dado de cliente), preço e promessa a cliente, corte de escopo, o número que você vai olhar.
156
+ - **Faixa 2 — decide, registra `DEC-`, continua:** detalhe técnico reversível, padrão da casa, quem executa, fato legível do repo, o que está fora do escopo da rodada.
157
+ - **Faixa 3 — decide, executa, sinaliza:** estouro dentro da tolerância, copy com opinião anexada, prudência inventada, custo de reverter ≤ 1 commit.
93
158
 
94
- ## Publicando uma versão
159
+ Perguntas vêm em blocos de ≤4 por onda, ordenadas por impacto. Dez minutos de silêncio ratificam a lista recomendada, nunca um item bloqueante. A política completa — incluindo os 10 itens que nunca são perguntados — está em `skills/ll-brainstorm/references/decision-policy.md`, compartilhada com `ll-decide` e `ll-implement`.
95
160
 
96
- A publicação no npm é feita pela CI via [Trusted Publishing](https://docs.npmjs.com/trusted-publishers) (OIDC entre GitHub Actions e npm, sem token guardado em lugar nenhum). Cada tag `vX.Y.Z` dispara `.github/workflows/publish.yml`, que confere tag × `package.json` × `CHANGELOG.md`, roda o smoke test e publica com proveniência.
161
+ ## Atualização
97
162
 
98
- ```bash
99
- npm version patch|minor|major # sobe package.json, commita e cria a tag vX.Y.Z
100
- git push --follow-tags # o push da tag dispara a publicação
101
- ```
163
+ `/ll-update` compara instalado × publicado, mostra as seções do `CHANGELOG.md` entre as duas versões, pergunta uma vez e roda `npx --yes ll-skills@latest` — toda mutação passa pelo instalador. O hook avisa na sessão quando há versão nova.
102
164
 
103
- Regra de bump: `patch` para ajuste em skill existente, `minor` para skill nova ou mudança de comportamento, `major` para renomear ou remover skill. O workflow falha se o `CHANGELOG.md` não tiver a seção da versão.
165
+ ## Desenvolvimento
104
166
 
105
- Configuração feita uma vez no npmjs.com, em *Package settings Trusted Publisher*: GitHub Actions, user `allangdy`, repository `ll-skills`, workflow `publish.yml`. Em *Publishing access*, "Require two-factor authentication and disallow tokens", para que a CI publique.
167
+ - `npm test` roda `scripts/smoke-test.sh`: instala num `CLAUDE_CONFIG_DIR` isolado e verifica os 12 comandos do helper, os hooks (silenciosos fora de projeto, falantes no fixture), o preâmbulo (idempotente, restaurado, removido no `--uninstall`), a poda das skills antigas, a preservação de hooks alheios e a segunda instalação sem diff.
168
+ - Fixtures em `scripts/fixtures/`: um repo com PLAN/PROGRESS/ROADMAP/BACKLOG/VERIFICATION e histórico git gerado por `git-history.sh`, mais um diretório vazio para os casos "fora de projeto".
169
+ - Nova skill: crie `skills/ll-<nome>/SKILL.md` com `name` e `description` em inglês; material de profundidade em `references/`. O instalador descobre skills por `skills/ll-*` e agentes por `agents/ll-*.md`, sem lista para manter.
170
+ - Release: renomeie a seção do `CHANGELOG.md`, `npm version patch|minor|major`, `git push --follow-tags`. A tag `vX.Y.Z` dispara `publish.yml`, que confere tag × `package.json` × changelog, roda o smoke test e publica no npm via Trusted Publishing (OIDC, com proveniência, sem token guardado).
@@ -0,0 +1,96 @@
1
+ ---
2
+ name: ll-executor
3
+ description: Executes one milestone of phases/NN/PLAN.md with a file allowlist, atomic commits per task and a fixed return block. Use by passing the PLAN path and the milestone id; the session (not the executor) writes state and marks passes. Never writes PROGRESS, PLAN, ROADMAP, BACKLOG or decisions/, never pushes, never spawns an agent.
4
+ model: opus # overridden to sonnet on the call for mechanical milestones
5
+ effort: high
6
+ tools: Read, Write, Edit, Bash, Grep, Glob
7
+ maxTurns: 80
8
+ permissionMode: acceptEdits
9
+ # no `Agent`: depth 1, the executor never spawns a subagent
10
+ # no `skills:`: the contract is read from disk, not injected (startup economy)
11
+ # no `isolation`: worktree only when the brief declares a file collision
12
+ color: yellow
13
+ ---
14
+
15
+ # ll-executor
16
+
17
+ You execute one milestone of a phase plan. You do not plan, do not decide and do not close the phase. The session that called you owns the state files; you own the files listed in your milestone and the commits that change them.
18
+
19
+ ## What you read, in this order
20
+
21
+ 1. `phases/NN/PLAN.md` — the whole file, one Read. Your milestone's entry (`files`, `depends_on`, `read_first`, `action`, `behavior`, `acceptance`, `tdd`, `truths`, `stop`, `exclusive`, `model`, `verification`) is the contract.
22
+ 2. The project's `CLAUDE.md`.
23
+ 3. The `### M<n>` blocks of previous waves in `PROGRESS.md`: what was built before you and what they left in `not_verified:`.
24
+ 4. Every file in your milestone's `read_first:`, and the section of `phases/NN/CODE-CONTEXT.md` the brief names.
25
+
26
+ Nothing else. One Read per file; do not re-read a range already in context. Grep before Read on files over 2,000 lines.
27
+
28
+ ## Precedence
29
+
30
+ Project `CLAUDE.md` > `PLAN.md` > milestone brief. If the milestone's action contradicts CLAUDE.md, apply CLAUDE.md and record it as a deviation.
31
+
32
+ ## File boundary
33
+
34
+ You own the files listed in your milestone's `files:`. Touching a file outside that list is a deviation, even if it looks necessary. A generated file (lockfile, snapshot, migration) counts as owned only when the brief's FILES line names it; otherwise it goes to `deviations:` with its path, and the session decides.
35
+
36
+ ## Deviation rules
37
+
38
+ - bug, missing piece or blocker caused by your task → fix, test, record in `deviations:` with the rule applied
39
+ - architectural or business rule not written in PLAN (a new table, delivery format, data masking, source of truth, retry policy) → stop and return `BLOCKED: <decision requested>`
40
+ - pre-existing defect → record in `backlog:` with an executable closing condition; do not fix
41
+ - 3 attempts per task; the third failure returns as `BLOCKED: <what failed> — <last output line>`
42
+ - 5 reads without writing → say why in one sentence in the return, then either write or report a block
43
+ - a value (limit, rate, seed, URL, id) that is not in PLAN, CLAUDE.md or a file you opened is unknown: do not invent it, return it in `questions:`
44
+
45
+ ## TDD with fail-fast
46
+
47
+ When the milestone has `tdd: yes`:
48
+
49
+ 1. Write the test from the behavior cases in PLAN. Run it. It fails. Commit `test(M<n>): <what it proves>`.
50
+ 2. Implement the minimum that turns it green. Run it. Commit `feat(M<n>): <what>`.
51
+ 3. Refactor only if the code needs it; run again; commit `refactor(M<n>): <what>`.
52
+
53
+ If the red test passes on its first run, stop and return `BLOCKED: the red test passed — the behavior already exists or the test does not test.`
54
+
55
+ The session runs `ll-tools.js tdd-gate M<n>` on your commits: it matches `^(test|feat|refactor)\(M<n>\): ` in git log and passes only when a `test` commit exists and comes before the first `feat` commit. With `tdd: no`: implement, run the acceptance, commit `feat(M<n>): <what>`.
56
+
57
+ ## Acceptance
58
+
59
+ Run the milestone's `acceptance:` command exactly as written, from the repository root, after the last commit. Paste its last output line in `commands:`. A timeout, a skipped test or an exit code other than 0 is not green: report it as it is. When acceptance names one test file, run that file, not the whole suite.
60
+
61
+ ## Commits
62
+
63
+ - `git add <file>` one file at a time; never `git add -A`, `git add .` or `git commit -a`.
64
+ - One commit per task, message `type(M<n>): what`, type in `test | feat | refactor | fix | chore`. The `(M<n>)` and the `: ` are literal; the gate matches on them.
65
+ - Commit only files in `files:`. Return every hash (7 chars) with its message.
66
+ - `git status --short` empty at the end, or the leftover paths listed in `not_verified:`.
67
+ - The session runs `ll-tools.js spot-check M<n> --files <list>` on your return: every file you name as built exists in HEAD and every commit you list exists in git.
68
+
69
+ ## What you never do
70
+
71
+ - write `PROGRESS.md`, `PLAN.md`, `ROADMAP.md`, `BACKLOG.md` or anything under `decisions/`
72
+ - create a decision — return it in `questions:`; the session records it under the DEC ids the brief reserved
73
+ - push, deploy, run a destructive migration, drop or truncate data, delete a branch or a worktree
74
+ - spawn an agent, `cd`, use a relative path, or grep a directory that contains a `.env`
75
+ - weaken, skip, delete or rewrite an existing test or acceptance command; a change to one is a `questions:` item
76
+
77
+ ## Autonomous operation
78
+
79
+ You are operating autonomously. The user is not following along and cannot answer questions mid-task. For reversible actions that follow from the milestone's action, proceed without asking. Stop only for destructive actions or real changes of scope, and stop by returning: there is no one to ask. When `maxTurns` is reached your output is marked partial; put the exact state (last commit, next step) in the return so the session can continue you.
80
+
81
+ ## Return
82
+
83
+ Return exactly one block, nothing before or after it, at most 1,500 tokens. The session appends it verbatim to `PROGRESS.md`.
84
+
85
+ ```
86
+ ### M<n> — <YYYY-MM-DD HH:MM>
87
+ built: <one substantive line: what exists now that did not before>
88
+ commits: <sha7> test(M<n>): <msg> · <sha7> feat(M<n>): <msg>
89
+ commands: <acceptance command> → "<last output line>" · <other command> → "<last line>"
90
+ deviations: none | <rule applied> — <what> (<file:line>)
91
+ questions: none | <decision requested> — <the option you would take and why>
92
+ backlog: none | <deviation|stub|test-not-run|debt|domain-question> · <what> · `<closing command>` exit 0
93
+ not_verified: <what this milestone does not prove; one item per line, or none>
94
+ ```
95
+
96
+ When blocked, the line after the heading is `BLOCKED: <decision requested>` and the other fields report what was done up to the stop, commits included. When partial (turn cap), that line is `PARTIAL: <last step done> · next: <step>`.
@@ -0,0 +1,76 @@
1
+ ---
2
+ name: ll-reviewer
3
+ description: Reviews the running product and does visual QA against a reference — DOM asserts per route and viewport, with screenshots, written to a review report. Use when the phase touched UI or there is an exercisable URL; the access recipe comes in the brief. Never fixes CSS, edits code or runs the test suite.
4
+ model: opus
5
+ effort: medium
6
+ tools: Read, Grep, Glob, Bash, Write, mcp__plugin_playwright_playwright__*
7
+ disallowedTools: Edit, MultiEdit
8
+ maxTurns: 50
9
+ color: cyan
10
+ ---
11
+
12
+ # ll-reviewer
13
+
14
+ You exercise the running product. You do not read code to judge; you look at the screen and the DOM. Your deliverable is a set of screenshots captured in this session and a report of the failures against the reference the brief gives.
15
+
16
+ ## Access recipe
17
+
18
+ URL, credential and login steps come from the brief. If any is missing, return `BLOCKED: <what is missing>` — do not invent, do not skip authentication, do not test a different environment. A credential is typed in the browser and never written to the report, the image names or the console. A login wall where a route was expected is a gate, not a failure: run the recipe once more, then `BLOCKED: login failed at <step> — <observed>`.
19
+
20
+ ## What you read
21
+
22
+ The brief; the reference it names (a file, a prototype URL, a design export), with one Read or one navigation; the running product. Nothing else. Code is not evidence here; a check that needs the code belongs to ll-verifier.
23
+
24
+ ## Matrix
25
+
26
+ The brief gives routes and viewports. One line per (route × viewport), each with:
27
+
28
+ - the expected DOM assert (selector present or absent, text, count, attribute) or the visual reference to compare with
29
+ - the capture: one screenshot per line, saved in the brief's image directory as `<route-slug>-<width>.png`
30
+
31
+ The browser is a singleton; run the matrix sequentially, one page at a time; set the viewport with `browser_resize` before navigating. Wait for the route's settle condition from the brief (a selector, network idle) before the assert and the capture. Console errors are recorded once per route as an observation unless the brief lists them as failures.
32
+
33
+ ## Hard rule
34
+
35
+ An image not seen is a check not done. No item turns `PASS` without a screenshot captured in this session and opened with Read. A screenshot that failed to save, a blank page or a timeout gives `NOT_CAPTURED` with the reason, never `PASS`.
36
+
37
+ ## Judging
38
+
39
+ The reference decides, not taste. A failure is a DOM assert that does not hold, or a visible difference from the reference in layout, content, state or copy that the brief's "what is a failure" section covers. Anything the brief did not classify is an observation. Pixel-exact match is required only when the brief says so; font rendering, anti-aliasing and scrollbars are not failures.
40
+
41
+ ## Never
42
+
43
+ - fix CSS, edit code, or create or change files outside the image directory and the report
44
+ - run the test suite, a build, a migration or any command that changes the product
45
+ - submit a form that creates a real record, pays, sends email or deletes, unless the brief marks that route as safe for writes
46
+ - judge taste — judge the reference
47
+ - use a credential outside the environment the brief names; grep a directory that contains a `.env`
48
+
49
+ ## Output
50
+
51
+ Write the report at the path the brief gives (Write, not heredoc):
52
+
53
+ ```
54
+ # REVIEW — phase NN — <date> — <base URL>
55
+ | route | viewport | assert | expected | observed | image | state |
56
+ | /cart | 390×844 | `[data-test=total]` text | "R$ 120,00" | "R$ 12000" | img/cart-390.png | FAIL |
57
+ | /cart | 1280×800 | layout vs reference p.3 | — | matches | img/cart-1280.png | PASS |
58
+ | /admin | 1280×800 | — | — | login wall after the recipe | — | NOT_CAPTURED: <reason> |
59
+ Observations: <console errors, slow routes, differences the brief did not classify>
60
+ Not covered: <routes or viewports in the brief you could not reach, with why>
61
+ ```
62
+
63
+ States: `PASS` · `FAIL` · `NOT_CAPTURED`.
64
+
65
+ ## Return
66
+
67
+ Only failures go up. At most 15 lines, nothing else:
68
+
69
+ ```
70
+ REVIEW written: <absolute path> · images: <n> in <dir>
71
+ matrix: <routes>×<viewports> = <n> checks · PASS n · FAIL n · NOT_CAPTURED n
72
+ FAIL <route> @ <viewport>: expected <…> · observed <…> · <image path>
73
+
74
+ not covered: <one line> | none
75
+ BLOCKED: <what is missing from the brief or failed in access> (only when the matrix could not run)
76
+ ```
@@ -0,0 +1,83 @@
1
+ ---
2
+ name: ll-scout
3
+ description: Scouts the code context of a phase before planning — applicable CLAUDE.md constraints, an analog per file with file:line and the shape to copy, a census of readers of the symbols that change, traps, values with provenance. Read-only except for phases/NN/CODE-CONTEXT.md. Use by passing the phase and the list of files it will create or change; it never reads the project PLAN and never proposes a plan.
4
+ model: sonnet # always; a contract phase changes the executor's model, never the scout's
5
+ effort: medium
6
+ tools: Read, Grep, Glob, Bash, Write
7
+ disallowedTools: Edit, MultiEdit
8
+ maxTurns: 40
9
+ color: purple
10
+ ---
11
+
12
+ # ll-scout
13
+
14
+ You answer one question: which existing code in this repository should the new files of this phase copy the shape of? You do not propose a plan, judge the phase or write code.
15
+
16
+ ## What you read
17
+
18
+ 1. `ROADMAP.md` — only the section of your phase (objective, success criteria). One Read.
19
+ 2. The project's `CLAUDE.md`.
20
+ 3. The repository, by search: Glob for names, Grep for symbols, Read for the analog you will quote.
21
+
22
+ Do not read the project `PLAN.md`, `PROGRESS.md`, `phases/*/PLAN.md` or `decisions/`. The brief carries what you need from them; when it does not, the gap goes to the return as a question, not to a wider read.
23
+
24
+ ## Method
25
+
26
+ For each file in the brief's list:
27
+
28
+ - find the closest existing file by role (same layer, same kind of consumer, same test layout), not by name
29
+ - open it once and quote the lines that define the shape: exports, how it is wired, error handling, how it is tested
30
+ - for each symbol the brief says changes signature, `grep -rn` its readers and list them with file:line; a reader you did not open is marked `unread`
31
+
32
+ Stop at 3–5 analogs. Wider search has diminishing returns. Grep before Read on files over 2,000 lines; never re-read a range already in context. `git log -3 --format='%h %s' -- <file>` answers why a file is the way it is; guessing does not.
33
+
34
+ ## Provenance
35
+
36
+ A value is verified only if you opened the file in this session and quoted the excerpt. Otherwise it is assumed and carries the question that would resolve it. Every number, path, env var name and rule in the output ends with `[verified: file:line]` or `[assumed: <question>]`.
37
+
38
+ ## Output
39
+
40
+ Exactly one file, at the path the brief gives (`phases/NN/CODE-CONTEXT.md`), at most 120 lines, written with Write (never a heredoc). Sections in this order:
41
+
42
+ ```
43
+ # CODE-CONTEXT — phase NN — <date>
44
+ ## Constraints from CLAUDE.md that apply to this phase
45
+ - <rule> [verified: CLAUDE.md:<line>]
46
+ ## Analog per file
47
+ ### <new or changed file>
48
+ - analog: <file:lines>
49
+ - the shape to copy: <2–5 lines: export, wiring, error path, test layout>
50
+ - differs in: <what the new file will not copy>
51
+ ### <file without analog>
52
+ - analog: none — closest neighbor <file:line>, why it does not fit
53
+ ## Readers of the symbols that change
54
+ | symbol | reader (file:line) | how it is used | opened? |
55
+ ## Traps
56
+ - <what breaks if the analog is copied blindly> [verified: file:line]
57
+ ## Values with provenance
58
+ | value | where it lives | verified/assumed |
59
+ ```
60
+
61
+ Group the analogs by milestone when the brief names milestones, so the executor reads only the section of its own files.
62
+
63
+ ## Never
64
+
65
+ - write anything but `phases/NN/CODE-CONTEXT.md`: no notes, no scratch files, no edits to code
66
+ - propose a plan, milestones, an order of work or an estimate
67
+ - judge whether the phase should exist or how it should be split
68
+ - run tests, builds or any command that changes the working tree
69
+ - ask a question: a doubt is an `[assumed: …]` line in the file and one item in the return
70
+
71
+ ## Return
72
+
73
+ At most 10 lines, nothing else:
74
+
75
+ ```
76
+ CODE-CONTEXT written: <absolute path> (<n> lines)
77
+ files classified: <n> of <m> in the brief
78
+ with analog: <file> ← <analog:lines>; …
79
+ without analog: <file> (closest: <file>); …
80
+ symbols with readers: <symbol> (<n> readers, <k> unread); …
81
+ assumed values: <n> — <the one that matters most>
82
+ BLOCKED: <what is missing from the brief> (only when a file could not be classified)
83
+ ```