ll-skills 1.0.1 → 3.0.0

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 (171) hide show
  1. package/CHANGELOG.md +100 -1
  2. package/README.md +158 -71
  3. package/agents/ll-executor.md +97 -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 +64 -0
  8. package/assets/settings.suggested.json +19 -0
  9. package/bin/install.js +315 -55
  10. package/hooks/ll-precompact.js +77 -0
  11. package/hooks/ll-skills-check-update.js +7 -7
  12. package/hooks/ll-state.js +186 -0
  13. package/package.json +5 -2
  14. package/scripts/evals/README.md +57 -0
  15. package/scripts/evals/cases/auto-dry-run/assert.sh +35 -0
  16. package/scripts/evals/cases/auto-dry-run/case.json +8 -0
  17. package/scripts/evals/cases/auto-dry-run/prompt.txt +1 -0
  18. package/scripts/evals/cases/auto-empty-repo/assert.sh +25 -0
  19. package/scripts/evals/cases/auto-empty-repo/case.json +8 -0
  20. package/scripts/evals/cases/auto-empty-repo/fixture/.gitkeep +0 -0
  21. package/scripts/evals/cases/auto-empty-repo/prompt.txt +1 -0
  22. package/scripts/evals/cases/decide-final-round/assert.sh +32 -0
  23. package/scripts/evals/cases/decide-final-round/case.json +8 -0
  24. package/scripts/evals/cases/decide-final-round/fixture/README.md +3 -0
  25. package/scripts/evals/cases/decide-final-round/prompt.txt +1 -0
  26. package/scripts/evals/cases/executor-block/assert.sh +33 -0
  27. package/scripts/evals/cases/executor-block/case.json +8 -0
  28. package/scripts/evals/cases/executor-block/prompt.txt +14 -0
  29. package/scripts/evals/cases/goal-autonomous/assert.sh +35 -0
  30. package/scripts/evals/cases/goal-autonomous/case.json +8 -0
  31. package/scripts/evals/cases/goal-autonomous/fixture/PLAN.md +42 -0
  32. package/scripts/evals/cases/goal-autonomous/fixture/PROGRESS.md +20 -0
  33. package/scripts/evals/cases/goal-autonomous/fixture/ROADMAP.md +29 -0
  34. package/scripts/evals/cases/goal-autonomous/fixture/package.json +8 -0
  35. package/scripts/evals/cases/goal-autonomous/fixture/src/money.js +6 -0
  36. package/scripts/evals/cases/goal-autonomous/fixture/test/reconcile.test.js +8 -0
  37. package/scripts/evals/cases/goal-autonomous/prompt.txt +1 -0
  38. package/scripts/evals/cases/implement-review-gate/assert.sh +35 -0
  39. package/scripts/evals/cases/implement-review-gate/case.json +8 -0
  40. package/scripts/evals/cases/implement-review-gate/prompt.txt +1 -0
  41. package/scripts/evals/cases/implement-stops-at-next/assert.sh +39 -0
  42. package/scripts/evals/cases/implement-stops-at-next/case.json +9 -0
  43. package/scripts/evals/cases/implement-stops-at-next/prompt.txt +1 -0
  44. package/scripts/evals/cases/preamble-no-ritual/assert.sh +17 -0
  45. package/scripts/evals/cases/preamble-no-ritual/case.json +8 -0
  46. package/scripts/evals/cases/preamble-no-ritual/fixture/README.md +3 -0
  47. package/scripts/evals/cases/preamble-no-ritual/fixture/src/a.ts +3 -0
  48. package/scripts/evals/cases/preamble-no-ritual/prompt.txt +1 -0
  49. package/scripts/evals/cases/router-execute/assert.sh +12 -0
  50. package/scripts/evals/cases/router-execute/case.json +8 -0
  51. package/scripts/evals/cases/router-execute/prompt.txt +1 -0
  52. package/scripts/evals/cases/router-research/assert.sh +11 -0
  53. package/scripts/evals/cases/router-research/case.json +8 -0
  54. package/scripts/evals/cases/router-research/fixture/README.md +3 -0
  55. package/scripts/evals/cases/router-research/prompt.txt +1 -0
  56. package/scripts/evals/cases/router-small/assert.sh +21 -0
  57. package/scripts/evals/cases/router-small/case.json +8 -0
  58. package/scripts/evals/cases/router-small/fixture/README.md +17 -0
  59. package/scripts/evals/cases/router-small/prompt.txt +1 -0
  60. package/scripts/evals/cases/scout-no-plan/assert.sh +41 -0
  61. package/scripts/evals/cases/scout-no-plan/case.json +8 -0
  62. package/scripts/evals/cases/scout-no-plan/prompt.txt +8 -0
  63. package/scripts/evals/cases/verifier-weakened-test/assert.sh +19 -0
  64. package/scripts/evals/cases/verifier-weakened-test/case.json +8 -0
  65. package/scripts/evals/cases/verifier-weakened-test/prompt.txt +13 -0
  66. package/scripts/evals/cases/verifier-weakened-test/setup.sh +19 -0
  67. package/scripts/evals/fixtures/manual-contract/out.json +29 -0
  68. package/scripts/evals/fixtures/manual-contract/out.txt +5 -0
  69. package/scripts/evals/fixtures/manual-contract/with-skill.json +46 -0
  70. package/scripts/evals/lib/assert.sh +107 -0
  71. package/scripts/evals/lib/extract.js +73 -0
  72. package/scripts/evals/run.sh +369 -0
  73. package/scripts/fixtures/auto-closed/PLAN.md +5 -0
  74. package/scripts/fixtures/auto-closed/PROGRESS.md +20 -0
  75. package/scripts/fixtures/auto-closed/ROADMAP.md +6 -0
  76. package/scripts/fixtures/auto-closed/docs/DELIVERY.md +3 -0
  77. package/scripts/fixtures/auto-decisions/decisions/DEC-0001-taken-alone.md +13 -0
  78. package/scripts/fixtures/auto-decisions/decisions/DEC-0002-owner.md +13 -0
  79. package/scripts/fixtures/auto-noroadmap/PLAN.md +20 -0
  80. package/scripts/fixtures/auto-noroadmap/PROGRESS.md +11 -0
  81. package/scripts/fixtures/auto-verify-next/PLAN.md +5 -0
  82. package/scripts/fixtures/auto-verify-next/PROGRESS.md +18 -0
  83. package/scripts/fixtures/auto-verify-next/ROADMAP.md +5 -0
  84. package/scripts/fixtures/auto-verify-next/phases/01/PLAN.md +6 -0
  85. package/scripts/fixtures/empty/.gitkeep +0 -0
  86. package/scripts/fixtures/evals-auto/auto-dry-run/pass.txt +18 -0
  87. package/scripts/fixtures/evals-auto/auto-empty-repo/pass.txt +2 -0
  88. package/scripts/fixtures/evals-auto/goal-autonomous/pass.txt +29 -0
  89. package/scripts/fixtures/git-history.sh +49 -0
  90. package/scripts/fixtures/lint-bad/folded-description/SKILL.md +13 -0
  91. package/scripts/fixtures/lint-bad/model-invocation-false/SKILL.md +10 -0
  92. package/scripts/fixtures/next-bad/skills/ll-bad/SKILL.md +30 -0
  93. package/scripts/fixtures/next-good/skills/ll-good/SKILL.md +26 -0
  94. package/scripts/fixtures/project/BACKLOG.md +11 -0
  95. package/scripts/fixtures/project/PLAN.md +66 -0
  96. package/scripts/fixtures/project/PROGRESS.md +61 -0
  97. package/scripts/fixtures/project/ROADMAP.md +28 -0
  98. package/scripts/fixtures/project/VERIFICATION.md +17 -0
  99. package/scripts/fixtures/project/decisions/DEC-0041-cents.md +16 -0
  100. package/scripts/fixtures/project/phases/07/PLAN.md +145 -0
  101. package/scripts/fixtures/project/src/a.ts +3 -0
  102. package/scripts/fixtures/project/src/pay.ts +5 -0
  103. package/scripts/fixtures/project/test/a.test.ts +5 -0
  104. package/scripts/lint-contract.cjs +495 -0
  105. package/scripts/lint-prompts.sh +396 -0
  106. package/scripts/ll-tools.js +682 -0
  107. package/scripts/smoke-test.sh +719 -0
  108. package/skills/ll-auto/SKILL.md +74 -0
  109. package/skills/ll-auto/references/run.md +75 -0
  110. package/skills/ll-auto/references/stages.md +66 -0
  111. package/skills/ll-auto/scripts/ll-auto.js +345 -0
  112. package/skills/ll-brainstorm/SKILL.md +181 -0
  113. package/skills/ll-brainstorm/references/decision-policy.md +121 -0
  114. package/skills/ll-brainstorm/references/techniques.md +75 -0
  115. package/skills/ll-close/SKILL.md +69 -0
  116. package/skills/ll-close/references/delivery.md +77 -0
  117. package/skills/ll-close/references/retrospective.md +48 -0
  118. package/skills/ll-decide/SKILL.md +137 -0
  119. package/skills/ll-decide/references/decision-policy.md +121 -0
  120. package/skills/ll-decide/references/decision-room.md +62 -0
  121. package/skills/ll-decide/references/disarm.md +79 -0
  122. package/skills/ll-decide/references/feedback-ingestion.md +90 -0
  123. package/skills/ll-decide/references/interview.md +112 -0
  124. package/skills/ll-decide/references/plan-skeleton.md +150 -0
  125. package/skills/ll-decide/references/premise-gate.md +90 -0
  126. package/skills/ll-decide/references/premortem.md +90 -0
  127. package/skills/ll-decide/references/review-spec.md +91 -0
  128. package/skills/ll-goal/SKILL.md +82 -0
  129. package/skills/ll-goal/references/goal-template.md +147 -0
  130. package/skills/ll-implement/SKILL.md +120 -0
  131. package/skills/ll-implement/references/briefs.md +123 -0
  132. package/skills/ll-implement/references/decision-policy.md +121 -0
  133. package/skills/ll-implement/references/phase-conversation.md +76 -0
  134. package/skills/ll-implement/references/phase-plan.md +111 -0
  135. package/skills/ll-oncall/SKILL.md +124 -0
  136. package/skills/ll-oncall/references/deploy-preflight.md +57 -0
  137. package/skills/ll-oncall/references/federation.md +110 -0
  138. package/skills/ll-oncall/references/watch-brief.md +39 -0
  139. package/skills/ll-refine/SKILL.md +117 -0
  140. package/skills/ll-refine/references/production-access.md +48 -0
  141. package/skills/ll-refine/references/visual-gate.md +100 -0
  142. package/skills/ll-research/SKILL.md +88 -0
  143. package/skills/ll-research/references/citation-check.md +38 -0
  144. package/skills/ll-research/references/front-brief.md +41 -0
  145. package/skills/ll-research/references/market-mode.md +83 -0
  146. package/skills/ll-resume/SKILL.md +76 -0
  147. package/skills/ll-update/SKILL.md +80 -0
  148. package/skills/ll-verify/SKILL.md +76 -0
  149. package/skills/ll-verify/references/verifier-briefs.md +116 -0
  150. package/agents/ll-implementador.md +0 -23
  151. package/skills/ll-atualizar/SKILL.md +0 -68
  152. package/skills/ll-decidir-antes/SKILL.md +0 -81
  153. package/skills/ll-decidir-antes/referencias/protocolo-entrevista.md +0 -112
  154. package/skills/ll-decidir-antes/referencias/template-spec.md +0 -238
  155. package/skills/ll-desarmar/SKILL.md +0 -254
  156. package/skills/ll-desarmar/referencias/execucao-adversarial.md +0 -217
  157. package/skills/ll-desarmar/referencias/humanos-e-substitutos.md +0 -116
  158. package/skills/ll-desarmar/referencias/placar-e-realimentacao.md +0 -140
  159. package/skills/ll-orquestrar/SKILL.md +0 -100
  160. package/skills/ll-pesquisar/SKILL.md +0 -159
  161. package/skills/ll-pesquisar/referencias/frente-de-pesquisa.md +0 -147
  162. package/skills/ll-pesquisar/referencias/sintese-e-fontes.md +0 -148
  163. package/skills/ll-pesquisar-mercado/SKILL.md +0 -112
  164. package/skills/ll-pesquisar-mercado/referencias/dossie.md +0 -375
  165. package/skills/ll-pesquisar-mercado/referencias/indice-e-fechamento.md +0 -122
  166. package/skills/ll-pesquisar-mercado/referencias/padroes-de-pesquisa.md +0 -149
  167. package/skills/ll-verificar-entrega/SKILL.md +0 -73
  168. package/skills/ll-verificar-entrega/referencias/briefs-auditoria.md +0 -291
  169. package/skills/ll-voltar-do-futuro/SKILL.md +0 -239
  170. package/skills/ll-voltar-do-futuro/referencias/anti-padroes-e-fundamentos.md +0 -201
  171. package/skills/ll-voltar-do-futuro/referencias/vetores-e-testes.md +0 -228
package/CHANGELOG.md CHANGED
@@ -1,6 +1,105 @@
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
+ ## [3.0.0] - 2026-09-10
6
+
7
+ ### Adicionado
8
+
9
+ - **`ll-auto`**: skill que roda o ciclo inteiro a partir do estado em disco — research, brainstorm, decide, fases, verificações, close — seguindo o `SKILL.md` de cada etapa em vigor, com as flags `"<objetivo>"`, `--research`, `--brainstorm`, `--interactive`, `--auto-decision`, `--pause-at <stage|N>`, `--from N`, `--to N`, `--only N`, `--verify all`, `--redo <stage>`, `--dry-run` e `--resume`; escreve `docs/AUTO.md` (objetivo, flags, roteiro, status por etapa) e lista no final toda decisão tomada sozinha, marcada `[decided by absence — revisable]`.
10
+ - Helper `skills/ll-auto/scripts/ll-auto.js` (Node puro, sem dependências, próprio da skill): `detect`, `roteiro`, `next-cmd`, `report`, `auto-md`.
11
+ - `--no-talk` em `ll-decide` e `ll-close`: nenhum bloco de pergunta é enviado; itens de faixa 2/3 tomam a recomendação como `ASM-n [decided by absence — revisable]`, itens de faixa 1 viram decisão `WAITING`.
12
+ - **`ll-goal --autonomous`**: modo que aponta o texto do `/goal` para `ll-auto --auto-decision` até a entrega inteira fechar, em vez de uma fase; sem a parte BUDGET, frontmatter com `mode: autonomous` em vez de `ceiling_usd`.
13
+ - Casos de eval `auto-dry-run` e `auto-empty-repo` (`scripts/evals/cases/`), a seção offline `evals-auto` do `scripts/smoke-test.sh` e uma repetição real de ambos via `scripts/evals/run.sh`.
14
+
15
+ ### Quebras
16
+
17
+ - As skills não são mais invocadas pelo modelo — todas com `disable-model-invocation: true`.
18
+ - Preâmbulo sem roteador de pedidos.
19
+ - Descrições das skills reescritas em uma linha.
20
+
21
+ ### Alterado
22
+
23
+ - Lint rule 1 e 3 do `lint-prompts.sh`.
24
+ - Casos de eval `router-*` e `preamble-no-ritual` passam a exigir o comando nomeado e nenhuma chamada da ferramenta Skill; helper `no_tool_use` em `scripts/evals/lib/assert.sh`.
25
+
26
+ ## [2.0.2] - 2026-09-08
27
+
28
+ ### Alterado
29
+
30
+ - Textos de referência das skills revisados; exemplos com placeholders.
31
+ - Smoke test: verificação opcional de termos por lista externa (`LL_FORBIDDEN_FILE`).
32
+
33
+ ## [2.0.1] - 2026-09-08
34
+
35
+ ### Alterado
36
+
37
+ - Documentação e textos de referência revisados: exemplos genéricos e vocabulário uniforme; sem mudança de comportamento das skills.
38
+ - Instalador: diagnóstico de limpeza restrito ao cache do plugin legado.
39
+
40
+ ## [2.0.0] - 2026-09-07
41
+
42
+ ### Resumo
43
+
44
+ - 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.
45
+ - 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.
46
+ - 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.
47
+ - 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.
48
+
49
+ ### Quebras
50
+
51
+ - **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.
52
+ - **Skills renomeadas, fundidas e removidas.** A primeira instalação 2.x apaga as 8 pastas antigas:
53
+
54
+ | Antes (1.x) | Agora (2.0.0) |
55
+ |---|---|
56
+ | `ll-pesquisar` | `ll-research` |
57
+ | `ll-pesquisar-mercado` | `ll-research --market` |
58
+ | `ll-decidir-antes` | `ll-decide` (modo `project`) |
59
+ | `ll-voltar-do-futuro` | `ll-decide` — passo do premortem |
60
+ | `ll-desarmar` | `ll-decide` — passo de desarme (`--measure`) |
61
+ | `ll-verificar-entrega` | `ll-verify` |
62
+ | `ll-atualizar` | `ll-update` |
63
+ | `ll-orquestrar` | seção `## Delegation` do preâmbulo + `references/briefs.md` do `ll-implement` |
64
+
65
+ - **`agents/ll-implementador.md` removido.** Em seu lugar entram 4 agentes de papel único: `ll-executor`, `ll-scout`, `ll-verifier`, `ll-reviewer`.
66
+ - **`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.
67
+ - **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.
68
+ - **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.
69
+ - **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).
70
+
71
+ ### Novo
72
+
73
+ - **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").
74
+ - **11 skills**, uma linha cada:
75
+
76
+ | Skill | O que faz |
77
+ |---|---|
78
+ | `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` |
79
+ | `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 |
80
+ | `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 |
81
+ | `ll-goal` | Escreve o texto de `/goal` em 9 partes (≤4.000 chars) e salva `docs/GOAL.md`; você cola em sessão nova |
82
+ | `ll-implement` | Roda uma fase inteira numa invocação: conversa, scouting, plano, revisão, ondas TDD, verificação e epílogo |
83
+ | `ll-verify` | Audita em contexto limpo com 3 camadas e ledger FRESH/STALE por critério → `VERIFICATION.md` com dois selos |
84
+ | `ll-close` | Fecha entrega ou milestone: backlog reconciliado, `docs/DELIVERY.md`, retrospectiva, lições para a memória, uma ratificação em bloco |
85
+ | `ll-resume` | Reconstrói o estado em ordem fixa de leitura e responde em ≤20 linhas, sem escrever nada |
86
+ | `ll-refine` | Uma rodada de refino num produto que já roda; modo `visual` faz o loop referência → gate → validador até o veredito FIEL |
87
+ | `ll-oncall` | Sessão que segura um papel: contrato `## Federation`, log numerado de pedidos; modos `watch` (vigília) e `ops` (deploy com pré-flight) |
88
+ | `ll-update` | Atualiza o pacote mostrando o changelog entre instalado e publicado antes de aplicar |
89
+
90
+ - **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.
91
+ - **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).
92
+ - **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`.
93
+ - **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`).
94
+ - **`assets/settings.suggested.json`**: política sugerida (deny list, `autoCompactWindow`, cache, modelos) que o instalador **imprime** e nunca escreve.
95
+ - `publish.yml`: a confirmação no registro espera a propagação por até 60 s em vez de consultar no mesmo segundo do publish.
96
+
97
+
98
+ ### Migração
99
+
100
+ - 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.
101
+ - 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.
102
+ - Limpeza da máquina (cache de plugin antigo) é **diagnosticada e impressa** pelo instalador, nunca executada.
4
103
 
5
104
  ## [1.0.1] - 2026-09-07
6
105
 
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): 12 skills, 4 agentes, 3 hooks e dois helpers que compartilham o mesmo estado em arquivos versionados do repositório. Um preâmbulo instalado no seu `~/.claude/CLAUDE.md` carrega o bloco de regras da casa — delegação, decisões, prova — que vale para qualquer skill que você chamar. 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,183 @@ 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 são chamadas pelo nome (`/ll-implement 3`).
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.
46
-
47
- ### Para um projeto novo
24
+ O que a instalação **escreve** (em `$CLAUDE_CONFIG_DIR` ou `~/.claude`):
48
25
 
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 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.
26
+ | Caminho | Conteúdo |
27
+ |---|---|
28
+ | `skills/ll-*/` | as 12 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
+ | `skills/ll-auto/scripts/ll-auto.js` | o helper da própria skill, executável |
31
+ | `agents/ll-{executor,scout,verifier,reviewer}.md` | os 4 agentes |
32
+ | `hooks/ll-{skills-check-update,state,precompact}.js` | os 3 hooks, executáveis |
33
+ | `settings.json` | duas entradas em `SessionStart` (`startup\|resume\|compact`) e uma em `PreCompact`; backup em `settings.json.ll-skills.bak` |
34
+ | `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` |
35
+ | `ll-skills/{VERSION,manifest.json,install.json}` | versão, manifesto sha256 (base da poda e do `--uninstall`) e origem da instalação |
55
36
 
56
- ### Para uma feature de um sistema existente
37
+ 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.
57
38
 
58
- O mesmo pipeline, encurtado `ll-pesquisar-mercado` detecta o modo no enquadramento:
39
+ ## Como as skills são chamadas
59
40
 
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.
41
+ Uma skill roda só quando você digita `/ll-<nome>`. A sessão nunca inicia uma skill sozinha: quando o pedido parece o trabalho de uma delas, ela responde com o comando exato para você colar e para aí. Uma skill por turno — nenhuma chama outra. Cada uma termina num arquivo dentro do repositório e imprime `▶ Next — /clear, depois <comando>`; quem cola é você. `ll-auto` é a única exceção: o único lugar que segue as instruções de outra skill, e só quando você digita `/ll-auto`.
63
42
 
64
- Para uma correção pequena ou tarefa trivial, nada disso: o pipeline existe para trabalho onde errar estrutura custa caro.
43
+ ## Ciclo de um projeto
65
44
 
66
- ### Transversais
45
+ Uma vez por milestone, com a contagem de prompts seus por etapa:
67
46
 
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.
69
-
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.
47
+ | Etapa | Prompts | Sai disso |
48
+ |---|---|---|
49
+ | ideia `/ll-brainstorm` ou `/ll-research` | 1 | plano de ataque em 5 linhas (LARGE) |
50
+ | `ll-brainstorm` | 0–1 | mapa A/B/C + bateria de ≤4 → `DECISIONS.md` / `OPENING.md` |
51
+ | `ll-research` | 0–1 | `docs/research-<tema>/` com SUMMARY, evidências e fontes |
52
+ | `ll-decide` | 1 + cliques | `PLAN.md`, `ROADMAP.md`, `decisions/`, `PROGRESS.md` vazio |
53
+ | `ll-goal` | 2 (emite, você cola) | `docs/GOAL.md` + o texto para `/goal` |
54
+ | `ll-implement` × n | 0–1 cada | a fase entregue e verificada |
55
+ | `ll-verify` | 0 (citada no goal) | `VERIFICATION.md` com veredito e dois selos |
56
+ | `ll-close` | 0–1 + 1 ratificação | `docs/DELIVERY.md`, retrospectiva, arquivo do milestone |
57
+
58
+ ## Ciclo de uma fase
59
+
60
+ `ll-implement N`, oito passos, com um executor por marco além do scout, do verificador e — quando há UI — do revisor:
61
+
62
+ 0. **State** — lê ROADMAP, PLAN, o bloco `ll-state` do PROGRESS e o git log; marcos com `passes: false` entram em modo retomada.
63
+ 1. **Conversation** — uma tela de mapa A/B/C, pulada com `--no-talk` ou se `phases/NN/DECISIONS.md` já existe.
64
+ 2. **Scouting** — `ll-scout` escreve `phases/NN/CODE-CONTEXT.md`: análogo por arquivo com `file:line`, censo de leitores, armadilhas.
65
+ 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.
66
+ 4. **Review** — `ll-verifier` faz **uma** passada adversarial com 8 perguntas fixas; bloqueios corrigem o plano, não viram loop.
67
+ 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`.
68
+ 6. **Verification** — `ll-verifier` em contexto limpo contra os critérios da fase no ROADMAP; UI ou produto rodando chamam `ll-reviewer`.
69
+ 7. **Epilogue** — passou / faltou / WAITING / novo backlog no PROGRESS, e o próximo comando pronto para colar.
70
+
71
+ Entre fases, `/clear`: sessão nova custa menos e erra menos que compactação.
71
72
 
72
73
  ## Skills
73
74
 
74
- | Skill | Etapa | Descrição |
75
+ | Skill | Quando | Entrega |
75
76
  |---|---|---|
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 |
77
+ | `ll-brainstorm` | "tenho uma ideia", "vamos discutir", antes de abrir uma fase | `phases/NN/DECISIONS.md` ou `docs/decide/OPENING.md` |
78
+ | `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) |
79
+ | `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` |
80
+ | `ll-goal` | antes de uma noite sem ninguém olhando; `ll-goal --autonomous ["<objetivo>"]` cobre a entrega inteira | `docs/GOAL.md` + o texto de 9 partes para `/goal`; no modo autônomo, o texto mantém `ll-auto --auto-decision` rodando até a entrega fechar |
81
+ | `ll-implement` | "implementa a fase N", "continua" | a fase entregue, `phases/NN/PLAN.md`, PROGRESS carimbado |
82
+ | `ll-verify` | "confere se terminou de verdade", contrato público, dinheiro, dado de cliente | `VERIFICATION.md` com ledger FRESH/STALE e dois selos |
83
+ | `ll-close` | "fecha", "pode arquivar"; `--milestone` arquiva as fases | `docs/DELIVERY.md`, retrospectiva, ROADMAP colapsado |
84
+ | `ll-resume` | primeiro turno no repo, "onde paramos", "o que tenho pra decidir" | briefing de ≤20 linhas na conversa, nada em disco |
85
+ | `ll-refine` | produto rodando: "melhorar as telas", "fiel ao protótipo" | uma rodada registrada no PROGRESS; modo `visual` até o veredito FIEL |
86
+ | `ll-oncall` | `claude -n <papel>`, "vigie a cada 1h", deploy/apply/cutover | bloco `## Federation`, `docs/REQUESTS.md`, pré-flight do deploy |
87
+ | `ll-update` | "atualiza o ll-skills", ou o aviso da sessão | o pacote atualizado, com o changelog mostrado antes |
88
+ | `ll-auto` | `/ll-auto "<objetivo>" [flags]` | `docs/AUTO.md` e o ciclo inteiro |
89
+
90
+ ### Fluxo autônomo
91
+
92
+ `ll-auto` lê o estado em disco (`detect`), corta a lista de etapas com as flags (`roteiro`) e segue cada etapa lendo o `SKILL.md` dela — a única skill que faz isso, e só porque você digitou o comando.
93
+
94
+ | Flag | Efeito |
95
+ |---|---|
96
+ | `--research` | entra `research` no roteiro, se não estiver `done` |
97
+ | `--brainstorm` | entra `brainstorm` no roteiro, se não estiver `done` |
98
+ | `--interactive` | tira o `--no-talk` de `ll-brainstorm`/`ll-implement`: essas etapas falam com você |
99
+ | `--auto-decision` | resolve toda decisão de dono para a opção recomendada e segue |
100
+ | `--pause-at <stage\|N>` | para depois daquela etapa ou fase, com `▶ Next — /clear, then ll-auto --resume` |
101
+ | `--from N` / `--to N` / `--only N` | corta as fases por número (`--only N` corta o `close`) |
102
+ | `--verify all` | roda `ll-verify NN` depois de cada fase, mesmo sem o epílogo pedir |
103
+ | `--redo <stage>` | força uma etapa `done` de volta para `todo` |
104
+ | `--dry-run` | imprime a tabela do roteiro e para, antes de escrever `docs/AUTO.md` |
105
+ | `--resume` | retoma as flags gravadas em `docs/AUTO.md`, a partir da primeira linha que não é `done` |
106
+
107
+ Num repositório vazio (sem pesquisa, sem `OPENING.md`, sem `PLAN.md`) e sem objetivo, `ll-auto` não pergunta nada: imprime o comando que completa (`/ll-auto "<objetivo>" [--research] [--brainstorm]`) e para. Toda decisão de dono tomada sozinha ao longo do run (com `--auto-decision`) entra listada no fim, cada uma marcada `[decided by absence — revisable]`.
108
+
109
+ #### Para rodar sem parar
110
+
111
+ `ll-goal --autonomous` escreve o texto, você cola em `/goal <texto>`, e o loop do `/goal` reinicia `ll-auto --auto-decision` sempre que a sessão parar antes da entrega; decisões tomadas sozinhas ficam listadas no fim (`[decided by absence — revisable]`); só dinheiro, produção ou dados de cliente param a corrida.
112
+
113
+ ## Agentes
114
+
115
+ | Agente | Modelo | Papel | Fronteira |
116
+ |---|---|---|---|
117
+ | `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 |
118
+ | `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 |
119
+ | `ll-verifier` | opus, `memory: project` | revisa plano, verifica fase e entrega, do objetivo para trás | nunca conserta nada |
120
+ | `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 |
121
+
122
+ Nenhum agente despacha subagente (profundidade 1) e nenhum pergunta ao dono: uma decisão de faixa 1 volta como `BLOCKED:` no bloco de retorno.
123
+
124
+ ## Hooks e helper
125
+
126
+ - `ll-skills-check-update.js` (SessionStart) — compara a versão instalada com a publicada e avisa uma linha quando há versão nova.
127
+ - `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.
128
+ - `ll-precompact.js` (PreCompact) — carimba no PROGRESS a ordem de reler o plano da fase e o placar antes de continuar.
129
+
130
+ `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.
131
+
132
+ | Comando | O que faz |
133
+ |---|---|
134
+ | `state` | fase, placar de marcos, git, WAITING, epílogo presente — é o `Current state:` das skills |
135
+ | `waves` | calcula as ondas a partir de `depends_on`/`files`/`exclusive` e reporta defeitos e bloqueios |
136
+ | `plan-lint` | audita `phases/NN/PLAN.md` contra ~18 regras antes de congelar o plano |
137
+ | `tdd-gate` | confere no git log que o commit `test(Mn)` veio antes do `feat(Mn)` |
138
+ | `spot-check` | confere que os arquivos do marco estão no HEAD e que há commit ancorado |
139
+ | `dec-reserve` | reserva IDs `DEC-NNNN` e cria os stubs, sem colisão entre sessões |
140
+ | `passes` | marca um marco verde ou vermelho no bloco `ll-state`, reescrevendo uma linha só |
141
+ | `heartbeat` | registra uma linha datada no PROGRESS antes do epílogo |
142
+ | `ledger` | por critério da VERIFICATION: `file:line`, hash e frescor FRESH/STALE/UNKNOWN |
143
+ | `backlog-reconcile` | roda a condição executável de cada item do BACKLOG e fecha o que já passou |
144
+ | `epilogue` | monta os dados do fim de fase e diz o próximo comando |
145
+ | `phase-stats` | dias com trabalho, dias ociosos, commits por tipo, razão teste/feature |
146
+
147
+ `skills/ll-auto/scripts/ll-auto.js` é o helper próprio da skill `ll-auto` — Node puro, sem dependências, nunca uma cópia de `ll-tools.js`.
148
+
149
+ | Comando | O que faz |
150
+ |---|---|
151
+ | `detect` | lê o estado em disco e devolve a tabela de etapas (`research` … `close`) com status `todo`/`half`/`done` |
152
+ | `roteiro` | corta a tabela do `detect` pelas flags e devolve a lista ordenada de etapas a rodar |
153
+ | `next-cmd` | lê o comando da última linha `▶ Next` de um arquivo |
154
+ | `report` | lista os `decisions/*.md` marcados `[decided by absence — revisable]` |
155
+ | `auto-md` | monta o corpo de `docs/AUTO.md` (objetivo, flags, roteiro, decisões, log) |
156
+
157
+ ## Arquivos de estado no repositório
84
158
 
85
- ## Adicionando novas skills
159
+ ```
160
+ PLAN.md contrato do projeto (§0–§11): verdades, decisões, orçamento, modelos
161
+ ROADMAP.md fases com critérios de sucesso; só existe acima de 3 fases
162
+ PROGRESS.md bloco ll-state (placar de marcos) + histórico + ## Epilogue
163
+ BACKLOG.md itens adiados, cada um com a condição executável que o fecha
164
+ VERIFICATION.md veredito, dois selos e o ledger por critério
165
+ decisions/DEC-NNNN-*.md uma decisão por arquivo; WAITING no nome espera você
166
+ phases/NN/DECISIONS.md o que foi decidido ao abrir a fase, e por quem
167
+ phases/NN/CODE-CONTEXT.md análogos do repo, censo de leitores e armadilhas (só o scout escreve)
168
+ phases/NN/PLAN.md marcos da fase: files, depends_on, acceptance, tdd, stop, model
169
+ docs/GOAL.md o texto colado em /goal, versionado
170
+ docs/DELIVERY.md o que foi entregue, para quem lê e não acompanhou
171
+ ```
86
172
 
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.
173
+ a sessão escreve arquivos de estado; executores devolvem blocos e a sessão os apensa.
91
174
 
92
- O instalador (`bin/install.js`) descobre as skills pela pasta `skills/ll-*` e os agentes por `agents/ll-*.md`; não há lista para manter. `npm test` roda o smoke test do instalador num diretório isolado.
175
+ ## Decisões
93
176
 
94
- ## Publicando uma versão
177
+ - **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.
178
+ - **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.
179
+ - **Faixa 3 — decide, executa, sinaliza:** estouro dentro da tolerância, copy com opinião anexada, prudência inventada, custo de reverter ≤ 1 commit.
95
180
 
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.
181
+ 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`.
97
182
 
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
- ```
183
+ ## Atualização
184
+
185
+ `/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
186
 
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.
187
+ ## Desenvolvimento
104
188
 
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.
189
+ - `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.
190
+ - 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".
191
+ - 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.
192
+ - 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,97 @@
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
+ 5. The brief itself, field by field: MILESTONE, PLAN, CONTEXT, FILES, WAVE (your wave and the milestones running in parallel — their files are not yours), TDD, ACCEPTANCE, MODEL, DEC RESERVED (the only ids you may cite in `questions:`), INPUTS (paths that already exist), DO NOT, RETURN.
26
+
27
+ Nothing else. One Read per file; do not re-read a range already in context. Grep before Read on files over 2,000 lines.
28
+
29
+ ## Precedence
30
+
31
+ Project `CLAUDE.md` > `PLAN.md` > milestone brief. If the milestone's action contradicts CLAUDE.md, apply CLAUDE.md and record it as a deviation.
32
+
33
+ ## File boundary
34
+
35
+ 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.
36
+
37
+ ## Deviation rules
38
+
39
+ - bug, missing piece or blocker caused by your task → fix, test, record in `deviations:` with the rule applied
40
+ - 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>`
41
+ - pre-existing defect → record in `backlog:` with an executable closing condition; do not fix
42
+ - 3 attempts per task; the third failure returns as `BLOCKED: <what failed> — <last output line>`
43
+ - 5 reads without writing → say why in one sentence in the return, then either write or report a block
44
+ - 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:`
45
+
46
+ ## TDD with fail-fast
47
+
48
+ When the milestone has `tdd: yes`:
49
+
50
+ 1. Write the test from the behavior cases in PLAN. Run it. It fails. Commit `test(M<n>): <what it proves>`.
51
+ 2. Implement the minimum that turns it green. Run it. Commit `feat(M<n>): <what>`.
52
+ 3. Refactor only if the code needs it; run again; commit `refactor(M<n>): <what>`.
53
+
54
+ 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.`
55
+
56
+ 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>`.
57
+
58
+ ## Acceptance
59
+
60
+ 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.
61
+
62
+ ## Commits
63
+
64
+ - `git add <file>` one file at a time; never `git add -A`, `git add .` or `git commit -a`.
65
+ - 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.
66
+ - Commit only files in `files:`. Return every hash (7 chars) with its message.
67
+ - `git status --short` empty at the end, or the leftover paths listed in `not_verified:`.
68
+ - 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.
69
+
70
+ ## What you never do
71
+
72
+ - write `PROGRESS.md`, `PLAN.md`, `ROADMAP.md`, `BACKLOG.md` or anything under `decisions/`
73
+ - create a decision — return it in `questions:`; the session records it under the DEC ids the brief reserved
74
+ - push, deploy, run a destructive migration, drop or truncate data, delete a branch or a worktree
75
+ - spawn an agent, `cd`, use a relative path, or grep a directory that contains a `.env`
76
+ - weaken, skip, delete or rewrite an existing test or acceptance command; a change to one is a `questions:` item
77
+
78
+ ## Autonomous operation
79
+
80
+ 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.
81
+
82
+ ## Return
83
+
84
+ Return exactly one block, nothing before or after it, at most 1,500 tokens. The session appends it verbatim to `PROGRESS.md`.
85
+
86
+ ```
87
+ ### M<n> — <YYYY-MM-DD HH:MM>
88
+ built: <one substantive line: what exists now that did not before>
89
+ commits: <sha7> test(M<n>): <msg> · <sha7> feat(M<n>): <msg>
90
+ commands: <acceptance command> → "<last output line>" · <other command> → "<last line>"
91
+ deviations: none | <rule applied> — <what> (<file:line>)
92
+ questions: none | <decision requested> — <the option you would take and why>
93
+ backlog: none | <deviation|stub|test-not-run|debt|domain-question> · <what> · `<closing command>` exit 0
94
+ not_verified: <what this milestone does not prove; one item per line, or none>
95
+ ```
96
+
97
+ 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
+ ```