@fontdata/ai-harness 2.0.0 → 2.1.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 (131) hide show
  1. package/.claude-plugin/marketplace.json +1 -1
  2. package/.claude-plugin/plugin.json +9 -2
  3. package/LICENSE +21 -0
  4. package/README.md +174 -140
  5. package/{src → dist}/catalog.js +5 -12
  6. package/dist/cli.js +174 -0
  7. package/dist/comentarios/command.js +74 -0
  8. package/dist/comentarios/instalar.js +33 -0
  9. package/dist/config/config.js +98 -0
  10. package/dist/contratos/artefatos.js +284 -0
  11. package/dist/contratos/eventos.js +103 -0
  12. package/dist/doctor/checks.js +424 -0
  13. package/dist/init.js +240 -0
  14. package/dist/install/atomic.js +51 -0
  15. package/dist/install/flags.js +99 -0
  16. package/dist/install/hooks.js +47 -0
  17. package/dist/install/lock.js +39 -0
  18. package/dist/install/plan.js +209 -0
  19. package/dist/install/selection.js +77 -0
  20. package/dist/install/settings.js +108 -0
  21. package/dist/memoria/indice.js +195 -0
  22. package/dist/migrar/migrar.js +426 -0
  23. package/dist/rastro/command.js +46 -0
  24. package/dist/run.js +86 -0
  25. package/dist/types.js +1 -0
  26. package/dist/update/legado.js +74 -0
  27. package/dist/update/update.js +284 -0
  28. package/package.json +17 -8
  29. package/templates/CLAUDE.md +59 -30
  30. package/templates/agents/auditor-plano.md +42 -0
  31. package/templates/agents/investigador.md +32 -0
  32. package/templates/agents/qa.md +44 -0
  33. package/templates/agents/revisor-testes.md +40 -0
  34. package/templates/catalog.json +24 -61
  35. package/templates/commands/atualizar-deps.md +43 -9
  36. package/templates/commands/diagrama.md +35 -10
  37. package/templates/commands/gerar-env.md +39 -10
  38. package/templates/commands/gerar-testes.md +42 -10
  39. package/templates/commands/git-commit-push.md +0 -0
  40. package/templates/commands/onboarding.md +44 -15
  41. package/templates/commands/refatorar.md +50 -10
  42. package/templates/commands/revisar-pr.md +56 -12
  43. package/templates/commands/sincronizar-claude-md.md +177 -9
  44. package/templates/commands/versao.md +0 -0
  45. package/templates/hooks/comentarios/check.mjs +210 -0
  46. package/templates/hooks/hooks.json +34 -0
  47. package/templates/hooks/lembrete.mjs +29 -0
  48. package/templates/hooks/lib/config.mjs +40 -0
  49. package/templates/hooks/lib/hook.mjs +85 -0
  50. package/templates/hooks/lib/rastro.mjs +130 -0
  51. package/templates/hooks/lib/segredos.mjs +91 -0
  52. package/templates/hooks/lib/temas.mjs +111 -0
  53. package/templates/hooks/lib/trabalho.mjs +94 -0
  54. package/templates/hooks/proteger-contratos.mjs +56 -0
  55. package/templates/hooks/segredo-no-commit.mjs +76 -0
  56. package/templates/hooks/sem-jargao.mjs +58 -0
  57. package/templates/hooks/task-so-fecha-verde.mjs +33 -0
  58. package/templates/legado/manifesto.json +1267 -0
  59. package/templates/rules/comentarios.md +166 -0
  60. package/templates/rules/harness-projeto.md +41 -0
  61. package/templates/skills/auditar-performance/SKILL.md +53 -0
  62. package/templates/skills/auditar-performance/references/pontos-quentes.md +35 -0
  63. package/templates/skills/auditar-performance/templates/relatorios/CLIENTE.md +26 -0
  64. package/templates/skills/auditar-performance/templates/relatorios/TECNICO.md +27 -0
  65. package/templates/skills/auditar-seguranca/SKILL.md +67 -0
  66. package/templates/skills/auditar-seguranca/references/seguranca-tecnica.md +23 -0
  67. package/templates/skills/auditar-seguranca/templates/relatorios/CLIENTE.md +30 -0
  68. package/templates/skills/auditar-seguranca/templates/relatorios/TECNICO.md +38 -0
  69. package/templates/skills/auditar-ui/SKILL.md +64 -0
  70. package/templates/skills/auditar-ui/references/lentes.md +33 -0
  71. package/templates/skills/auditar-ui/templates/relatorios/CLIENTE.md +26 -0
  72. package/templates/skills/auditar-ui/templates/relatorios/TECNICO.md +31 -0
  73. package/templates/skills/evoluir-harness/SKILL.md +81 -0
  74. package/templates/skills/evoluir-harness/references/agent.md +83 -0
  75. package/templates/skills/evoluir-harness/references/auditoria.md +107 -0
  76. package/templates/skills/evoluir-harness/references/code-reviewer.md +68 -0
  77. package/templates/skills/evoluir-harness/references/design-system.md +56 -0
  78. package/templates/skills/evoluir-harness/references/hook.md +95 -0
  79. package/templates/skills/evoluir-harness/references/rule.md +67 -0
  80. package/templates/skills/evoluir-harness/references/skill.md +63 -0
  81. package/templates/skills/executar-plan/SKILL.md +114 -0
  82. package/templates/skills/executar-plan/references/delegacao.md +43 -0
  83. package/templates/skills/executar-plan/references/retomada.md +33 -0
  84. package/templates/skills/executar-plan/templates/BLOQUEIOS.md +30 -0
  85. package/templates/skills/harness/SKILL.md +75 -0
  86. package/templates/skills/harness/references/auto-tag.md +118 -0
  87. package/templates/skills/harness/references/ignores.md +40 -0
  88. package/templates/skills/harness/references/scaffold.md +29 -0
  89. package/templates/skills/harness/references/validar-ideia.md +42 -0
  90. package/templates/skills/memoria/SKILL.md +52 -0
  91. package/templates/skills/nova-tarefa/SKILL.md +97 -0
  92. package/templates/skills/nova-tarefa/references/isso-ja-existe.md +24 -0
  93. package/templates/skills/nova-tarefa/references/regras-do-plano.md +33 -0
  94. package/templates/skills/nova-tarefa/templates/DECISOES.md +20 -0
  95. package/templates/skills/nova-tarefa/templates/PLAN.md +58 -0
  96. package/templates/skills/nova-tarefa/templates/SPEC.md +37 -0
  97. package/templates/skills/resolver-bug/SKILL.md +104 -0
  98. package/templates/skills/resolver-bug/references/relatorio-para-cliente.md +26 -0
  99. package/templates/skills/resolver-bug/templates/PLAN.md +62 -0
  100. package/templates/skills/resolver-bug/templates/relatorios/CLIENTE.md +29 -0
  101. package/templates/skills/resolver-bug/templates/relatorios/TECNICO.md +32 -0
  102. package/bin/cli.js +0 -122
  103. package/src/init.js +0 -317
  104. package/src/installer.js +0 -92
  105. package/src/run.js +0 -99
  106. package/templates/commands/auditar-performance.md +0 -27
  107. package/templates/commands/auditar-seguranca.md +0 -64
  108. package/templates/commands/auditar-ui.md +0 -38
  109. package/templates/commands/codigo-morto.md +0 -22
  110. package/templates/commands/configurar-auto-tag.md +0 -185
  111. package/templates/commands/configurar-comentarios.md +0 -543
  112. package/templates/commands/configurar-orquestrador.md +0 -13
  113. package/templates/commands/corrigir-review.md +0 -11
  114. package/templates/commands/criar-agents.md +0 -42
  115. package/templates/commands/criar-code-reviewer.md +0 -30
  116. package/templates/commands/criar-hooks.md +0 -32
  117. package/templates/commands/criar-rag.md +0 -25
  118. package/templates/commands/criar-rules.md +0 -31
  119. package/templates/commands/criar-skill.md +0 -22
  120. package/templates/commands/design-system.md +0 -27
  121. package/templates/commands/executar-plan.md +0 -36
  122. package/templates/commands/gerar-claude-md.md +0 -66
  123. package/templates/commands/gerar-ignore.md +0 -37
  124. package/templates/commands/gerar-spec.md +0 -33
  125. package/templates/commands/harness.md +0 -34
  126. package/templates/commands/nova-tarefa.md +0 -60
  127. package/templates/commands/resolver-bug.md +0 -25
  128. package/templates/commands/review-por-task.md +0 -16
  129. package/templates/commands/scaffold.md +0 -25
  130. package/templates/commands/validar-commands.md +0 -24
  131. package/templates/commands/validar-ideia.md +0 -36
@@ -11,7 +11,7 @@
11
11
  {
12
12
  "name": "fontdata",
13
13
  "source": "./",
14
- "description": "36 slash commands para conduzir spec, scaffold, harness, revisão e manutenção de projetos com Claude Code."
14
+ "description": "19 slash commands para conduzir spec, contexto, harness, revisão e manutenção de projetos com Claude Code."
15
15
  }
16
16
  ]
17
17
  }
@@ -1,8 +1,15 @@
1
1
  {
2
2
  "name": "fontdata",
3
- "version": "2.0.0",
3
+ "version": "2.1.0",
4
4
  "description": "Harness de engenharia com IA da Fontdata para Claude Code",
5
5
  "author": { "name": "Fontdata" },
6
6
  "commands": ["./templates/commands"],
7
- "skills": ["./templates/skills"]
7
+ "skills": ["./templates/skills"],
8
+ "hooks": "./templates/hooks/hooks.json",
9
+ "agents": [
10
+ "./templates/agents/auditor-plano.md",
11
+ "./templates/agents/investigador.md",
12
+ "./templates/agents/qa.md",
13
+ "./templates/agents/revisor-testes.md"
14
+ ]
8
15
  }
package/LICENSE ADDED
@@ -0,0 +1,21 @@
1
+ MIT License
2
+
3
+ Copyright (c) 2026 Fontdata Tecnologia
4
+
5
+ Permission is hereby granted, free of charge, to any person obtaining a copy
6
+ of this software and associated documentation files (the "Software"), to deal
7
+ in the Software without restriction, including without limitation the rights
8
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9
+ copies of the Software, and to permit persons to whom the Software is
10
+ furnished to do so, subject to the following conditions:
11
+
12
+ The above copyright notice and this permission notice shall be included in all
13
+ copies or substantial portions of the Software.
14
+
15
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21
+ SOFTWARE.
package/README.md CHANGED
@@ -1,12 +1,32 @@
1
1
  # @fontdata/ai-harness
2
2
 
3
- O **harness de engenharia com IA da Fontdata** (slash commands do Claude Code) para qualquer projeto — novo ou existente. Você pode **rodar os comandos direto na pasta do projeto, sem instalar nada**, ou instalá-los em `.claude/commands/` quando quiser versioná-los junto com o código.
3
+ O **harness de engenharia com IA da Fontdata** para o [Claude Code](https://claude.com/claude-code): fluxos de
4
+ trabalho, agents, hooks e contratos de documentação que fazem o agente planejar antes de implementar, provar com
5
+ testes o que entregou e deixar rastro do que fez — em qualquer stack, inclusive Delphi/Pascal e .NET.
4
6
 
5
7
  > Foco exclusivo em **Claude Code**.
6
8
 
9
+ ## Por que um harness
10
+
11
+ Um agente de IA sem restrições toma decisões sozinho no meio da implementação, entrega diffs grandes fora do padrão
12
+ do projeto e escreve testes que passariam com o código errado. As regras escritas num prompt ajudam, mas nada
13
+ garante que sejam seguidas. O harness se apoia em cinco apostas:
14
+
15
+ 1. **Planejar antes de executar.** Uma pergunta durante a execução é falha do plano: dúvida vira bloqueio
16
+ registrado, não improviso.
17
+ 2. **Nada avança sem critério verificável.** TDD com pelo menos 2 testes críticos por task; a task só fecha com a
18
+ suíte verde registrada.
19
+ 3. **Documentação como contrato.** Cada trabalho tem a sua pasta, com spec, plano, decisões, bloqueios e relatórios
20
+ num formato que ferramentas conseguem ler e validar.
21
+ 4. **Quem implementa não aprova.** Agents somente leitura revisam os testes, validam os critérios de aceite e
22
+ auditam o plano.
23
+ 5. **Garantias fora do prompt.** Hooks avisam ou bloqueiam de forma determinística, e o rastro de eventos mostra o
24
+ que aconteceu — inclusive quando um aviso já pode virar bloqueio.
25
+
7
26
  ## Modo 1 — rodar sem instalar (recomendado)
8
27
 
9
- Na pasta do projeto, chame o comando pelo nome. O Claude Code abre já executando aquele prompt, e o pacote é carregado como plugin **só daquela sessão** — nenhum arquivo é escrito no repositório.
28
+ Na pasta do projeto, chame o comando pelo nome. O Claude Code abre já executando aquele fluxo, com o pacote
29
+ carregado como plugin **só daquela sessão** — nenhum arquivo do harness é escrito no repositório.
10
30
 
11
31
  ```bash
12
32
  # npm / npx
@@ -21,219 +41,233 @@ yarn dlx @fontdata/ai-harness harness
21
41
  pnpm dlx @fontdata/ai-harness harness
22
42
  ```
23
43
 
24
- Durante a sessão, todos os 36 comandos ficam disponíveis com o prefixo do plugin — `/fontdata:gerar-spec`, `/fontdata:criar-agents` etc. — assim como a skill `lgpd-checker`. É isso que faz o `/harness`, que encadeia 14 comandos, funcionar sem instalação prévia.
44
+ Durante a sessão, todos os 19 comandos ficam disponíveis com o prefixo do plugin — `/fontdata:nova-tarefa`,
45
+ `/fontdata:resolver-bug` etc. —, junto com os hooks e os agents do harness.
46
+ É isso que faz o `/harness`, que encadeia 4 comandos, funcionar sem instalação prévia.
25
47
 
26
- O texto depois do nome do comando vira o `$ARGUMENTS` daquele prompt. Tudo depois de `--` é repassado ao Claude Code:
48
+ O texto depois do nome do comando vira o argumento do fluxo. Tudo depois de `--` é repassado ao Claude Code:
27
49
 
28
50
  ```bash
29
51
  npx @fontdata/ai-harness harness -- --model claude-opus-5
30
52
  npx @fontdata/ai-harness auditar-seguranca -- -p # headless, para CI
31
53
  ```
32
54
 
33
- Use `run <comando>` quando o nome puder colidir com uma palavra reservada do CLI:
55
+ Use `run <comando>` quando o nome colidir com um subcomando do CLI:
34
56
 
35
57
  ```bash
36
58
  npx @fontdata/ai-harness run git-commit-push
37
59
  ```
38
60
 
39
- **Requisito:** o [Claude Code](https://claude.com/claude-code) precisa estar no `PATH` (`npm i -g @anthropic-ai/claude-code`).
61
+ **Requisito:** o Claude Code no `PATH` (`npm i -g @anthropic-ai/claude-code`) e Node.js 22 ou superior.
40
62
 
41
63
  ## Modo 2 — instalar como plugin global
42
64
 
43
- Se você usa os comandos com frequência e não quer o `npx` a cada vez, registre o marketplace uma vez:
44
-
45
65
  ```bash
46
66
  claude plugin marketplace add fontdata-tecnologia/ai-harness
47
67
  claude plugin install fontdata@ai-harness
48
68
  ```
49
69
 
50
- Os comandos passam a existir em qualquer sessão do Claude Code como `/fontdata:<comando>`.
70
+ Os comandos passam a existir em qualquer sessão como `/fontdata:<comando>`, os agents como `fontdata:<agent>` e os
71
+ hooks ficam ativos em todos os projetos.
51
72
 
52
73
  ## Modo 3 — instalar no projeto (`init`)
53
74
 
54
- Quando você quer os comandos versionados junto com o repositório, em `.claude/commands/`:
75
+ Para versionar comandos, skills, agents e hooks junto com o código:
55
76
 
56
77
  ```bash
57
- # npm / npx
58
78
  npx @fontdata/ai-harness init
59
-
60
- # yarn
61
- yarn dlx @fontdata/ai-harness init
62
-
63
- # pnpm
64
- pnpm dlx @fontdata/ai-harness init
65
- ```
66
-
67
- Ou instale o CLI globalmente uma vez:
68
-
69
- ```bash
70
- npm i -g @fontdata/ai-harness
71
- fontdata-ai-harness init
72
79
  ```
73
80
 
74
- Instalados assim, os comandos são invocados sem prefixo: `/harness`, `/gerar-spec`, etc.
81
+ O `init` interativo detecta se o projeto é novo ou existente, pergunta o que instalar e grava um lock com o hash de
82
+ cada arquivo em `.ai-harness/lock.json`. Instalados assim, os comandos são invocados sem prefixo: `/harness`,
83
+ `/resolver-bug`...
75
84
 
76
- ## Outros comandos do CLI
85
+ Sem terminal interativo (em CI, por exemplo), o `init` só simula; `--yes` aplica:
77
86
 
78
87
  ```bash
79
- npx @fontdata/ai-harness list # lista todos os comandos do catálogo
80
- npx @fontdata/ai-harness --help # ajuda
88
+ npx @fontdata/ai-harness init --escopo recomendado --yes
89
+ npx @fontdata/ai-harness init --comandos resolver-bug,nova-tarefa --sem-harness --yes
81
90
  ```
82
91
 
83
- ## Migrando do `@fontdata/ai-commands`
84
-
85
- O pacote foi renomeado de `@fontdata/ai-commands` para `@fontdata/ai-harness` na versão 2.0.0. Os comandos continuam os mesmos; muda o nome do pacote, o nome do plugin e o prefixo.
86
-
87
- | Você usava | Passe a usar |
92
+ | Flag | Efeito |
88
93
  |---|---|
89
- | `npx @fontdata/ai-commands <comando>` | `npx @fontdata/ai-harness <comando>` |
90
- | `/ai-commands:<comando>` | `/fontdata:<comando>` |
91
- | Plugin `ai-commands@fontdata` | Plugin `fontdata@ai-harness` (veja abaixo) |
92
- | `npm i -g @fontdata/ai-commands` + `fontdata-ai-commands init` | `npm uninstall -g @fontdata/ai-commands && npm i -g @fontdata/ai-harness` + `fontdata-ai-harness init` |
93
- | Comandos instalados via `init` | Nada muda — os arquivos em `.claude/commands/` não têm prefixo |
94
-
95
- Para trocar o plugin global:
96
-
97
- ```bash
98
- claude plugin uninstall ai-commands@fontdata
99
- claude plugin marketplace remove fontdata
100
- claude plugin marketplace add fontdata-tecnologia/ai-harness
101
- claude plugin install fontdata@ai-harness
102
- ```
94
+ | `--escopo recomendado\|tudo` | Conjunto de comandos |
95
+ | `--comandos a,b,c` | Seleção manual |
96
+ | `--sem-harness` | Não inclui o comando-mestre `/harness` |
97
+ | `--sem-hooks` / `--sem-agents` | Não instala hooks / agents |
98
+ | `--sem-comentarios` | Não instala a rule de comentários, o hook e a catraca do legado |
99
+ | `--claude-md criar\|manter\|backup\|sobrescrever` | O que fazer com o `CLAUDE.md` (padrão: `criar`) |
100
+ | `--conflito sobrescrever\|pular` | Arquivos que já existem (padrão: `pular`) |
101
+ | `--yes` | Aplica; sem ele, só simula |
103
102
 
104
- Os binários `ai-commands` e `fontdata-ai-commands` foram removidos: use `ai-harness` e `fontdata-ai-harness`.
103
+ Com o plugin `fontdata@ai-harness` habilitado, o `init` não instala os hooks no projeto, para eles não rodarem
104
+ duas vezes.
105
105
 
106
- ## O que o `init` faz
106
+ ## Subcomandos do CLI
107
107
 
108
- Fluxo interativo:
108
+ | Subcomando | O que faz |
109
+ |---|---|
110
+ | `init [caminho]` | Instala comandos, skills, agents e hooks no projeto |
111
+ | `doctor [caminho]` | Diagnostica instalação, contrato dos documentos, rastro, bloqueios antigos e versão do Node |
112
+ | `update [caminho]` | Atualiza o que foi instalado sem sobrescrever alterações locais (`--check`, `--yes`, `--forcar`) |
113
+ | `migrar [caminho]` | Move os documentos do layout anterior para `docs/trabalhos/<id>/` (`--yes`) |
114
+ | `memoria [caminho]` | Índice de quem mexeu em cada arquivo (`--arquivo <caminho>`, `--regressao <id>`) |
115
+ | `evento <evento>` | Grava no rastro do trabalho (usado por fluxos e agents) |
116
+ | `comentarios [caminho]` | Instala o hook do padrão de comentários com a catraca do legado (`--yes`) |
117
+ | `list` | Lista o catálogo |
118
+
119
+ ## Modelo de arquivos
120
+
121
+ | Arquivo | Papel |
122
+ |---|---|
123
+ | `SPEC.md` (raiz) | Definição **principal** do projeto |
124
+ | `CLAUDE.md` (raiz) | Context file lido em toda sessão |
125
+ | `docs/trabalhos/AAAA-MM-DD-<slug>/SPEC.md` | Spec do trabalho |
126
+ | `docs/trabalhos/<id>/PLAN.md` | Plano: sprints, fases e tasks (as tasks também no frontmatter) |
127
+ | `docs/trabalhos/<id>/DECISOES.md` | Decisões tomadas no planejamento e na execução |
128
+ | `docs/trabalhos/<id>/BLOQUEIOS.md` | Dúvidas que pararam uma task |
129
+ | `docs/trabalhos/<id>/relatorios/TECNICO.md` e `CLIENTE.md` | Relatório para engenharia e para cliente ou gestão |
130
+ | `docs/eventos/<id>.jsonl` | Rastro de eventos (não versionado por padrão) |
131
+ | `.ai-harness/lock.json` e `config.json` | Lock da instalação e configuração dos hooks (versionar) |
109
132
 
110
- 1. Pergunta a **pasta do projeto** (padrão: pasta atual).
111
- 2. **Detecta se o projeto é novo ou existente** (manifestos de stack, arquivos `.sln/.csproj`, pastas de código com conteúdo) e avisa o que isso muda na seleção manual.
112
- 3. Pergunta **o que instalar**: _Conjunto recomendado_, _Tudo_ ou _Escolher manualmente_ (seleção por categoria).
113
- - Em _Escolher manualmente_, **projeto novo** já vem com os comandos recomendados marcados; **projeto existente** vem vazio (ideal para cadastrar comandos avulsos).
114
- 4. Pergunta se quer o **comando-mestre `/harness`** (conduz a sequência de setup em ordem). Se escolhido, o init **inclui automaticamente** os comandos que o `/harness` depende, mesmo que não tenham sido marcados. O mesmo vale para **dependências entre comandos** (campo `requires` no catálogo): ao instalar um comando que depende de outro, o dependente entra junto automaticamente.
115
- 5. Pergunta se deve criar/atualizar o **`CLAUDE.md` base** na raiz (com opção de `.bak` se já existir).
116
- 6. Copia os comandos para `.claude/commands/` e mostra um resumo. Em caso de conflito, pergunta se sobrescreve ou pula.
117
- 7. Instala em `.claude/skills/` as **skills exigidas** pelos comandos escolhidos (campo `requiresSkills` no catálogo) — hoje, `/auditar-seguranca` puxa a skill `lgpd-checker`.
133
+ Os formatos estão em [`docs/contratos/ARTEFATOS.md`](docs/contratos/ARTEFATOS.md) e
134
+ [`docs/contratos/EVENTOS.md`](docs/contratos/EVENTOS.md); o `doctor` valida os dois.
118
135
 
119
- ## Skills instaláveis
136
+ ## Garantias
120
137
 
121
- Algumas skills acompanham comandos e são instaladas junto com eles, em `.claude/skills/<id>/`.
138
+ ### Hooks
122
139
 
123
- | Skill | Vem com | O que faz |
140
+ | Hook | Quando | Modo inicial |
124
141
  |---|---|---|
125
- | `lgpd-checker` | `/auditar-seguranca` | Analisa conformidade com a LGPD (Lei nº 13.709/2018) em 11 categorias, com checklist, artigos de referência e template de relatório. |
142
+ | `lembrete` | O pedido parece bug, funcionalidade nova, risco de segurança ou problema de performance: sugere o fluxo certo | aviso |
143
+ | `segredo-no-commit` | `git commit` com chave de acesso, token, chave privada ou senha no diff | **bloqueio** |
144
+ | `proteger-contratos` | SPEC, PLAN ou CLAUDE.md reescritos durante a execução de um trabalho | aviso |
145
+ | `task-so-fecha-verde` | Task marcada como concluída sem suíte verde no rastro | aviso |
146
+ | `sem-jargao` | Termo técnico no relatório para o cliente | aviso |
126
147
 
127
- A skill `lgpd-checker` é uma cópia vendorizada de
128
- [bittencourtthulio/lgpd-checker](https://github.com/bittencourtthulio/lgpd-checker); veja
129
- `templates/skills/lgpd-checker/ORIGEM.md` para créditos e instruções de atualização.
130
-
131
- ## Modelo de arquivos do harness
148
+ O modo de cada hook (`aviso`, `bloqueio` ou `desligado`) fica em `.ai-harness/config.json`. Hook que falha
149
+ internamente não atrapalha o trabalho — exceto o de segurança em modo bloqueio.
132
150
 
133
- | Arquivo | Local | Papel |
134
- |--------|-------|-------|
135
- | `SPEC.md` | raiz | Definição **principal** e completa do projeto (única). |
136
- | `CLAUDE.md` | raiz | Context file lido em toda sessão. |
137
- | `docs/specs/AAAA-MM-DD-*.md` | `docs/specs/` | Specs **complementares**: o start inicial e cada nova tarefa. |
138
- | `docs/plans/AAAA-MM-DD-*.md` | `docs/plans/` | Plano de implementação de cada spec complementar. |
139
- | `docs/bugs/AAAA-MM-DD-<slug>.md` | `docs/bugs/` | Plano de correção de bugs (via `/resolver-bug`). |
151
+ ### Agents somente leitura
140
152
 
141
- ## Comandos instaláveis
153
+ | Agent | Papel |
154
+ |---|---|
155
+ | `revisor-testes` | Os testes da task falhariam com a implementação errada? |
156
+ | `qa` | Critérios de aceite com evidência e suíte completa antes do gate |
157
+ | `investigador` | Causa raiz de um bug, comprovada ou marcada como hipótese |
158
+ | `auditor-plano` | O plano pode ser executado sem ninguém perguntar nada no meio? |
142
159
 
143
- `⭐` = incluído no _Conjunto recomendado_.
160
+ ## Catálogo
144
161
 
145
- ### Setup inicial
146
- - `/validar-ideia` ⭐ — valida se a ideia cabe em ~4h com multi-agents
147
- - `/gerar-spec` ⭐ — entrevista e gera o `SPEC.md` principal na raiz
148
- - `/gerar-claude-md` ⭐ — gera o `CLAUDE.md` a partir do SPEC
149
- - `/gerar-ignore` — gera `.claudeignore` e `.gitignore`
150
- - `/scaffold` ⭐ — estrutura inicial, rota `/health` e testes de smoke
162
+ `⭐` = incluído no conjunto recomendado. **(skill)** = fluxo publicado como skill: invocado pelo mesmo nome e
163
+ também acionado pelo modelo quando o pedido combina.
151
164
 
152
- > O plano do start inicial é gerado pelo `/nova-tarefa` (veja _Slash commands & dia a dia_).
165
+ ### Setup e contexto
166
+ - `/sincronizar-claude-md` ⭐ — gera o `SPEC.md` e o `CLAUDE.md` que faltam e reconcilia os existentes com o código e os agents, inclusive a seção de orquestração
167
+ - `/evoluir-harness` ⭐ **(skill)** — audita a pasta `.claude` e cria agents, skills, rules, hooks, code-reviewer e design system do projeto
153
168
 
154
169
  ### Orquestração & implementação
155
- - `/executar-plan` ⭐ — orquestra a execução do plano com sub-agents em paralelo
156
- - `/configurar-orquestrador` — configura o agente orquestrador no `CLAUDE.md`
157
- - `/corrigir-review` — organiza correções em sprints/fases/tasks com TDD
158
- - `/review-por-task` — enforça implementação → review isolado → correção
159
-
160
- ### Harness (agents/skills/hooks/rules)
161
- - `/criar-skill` — cria skills do projeto em `.claude/skills/`
162
- - `/criar-agents` — cria agents especializados em `.claude/agents/`
163
- - `/criar-hooks` — cria hooks por agent em `.claude/hooks/`
164
- - `/criar-rules` — cria rules em `.claude/rules/`
165
- - `/configurar-comentarios` ⭐ — instala o padrão de comentários em três camadas: a rule `.claude/rules/comentarios.md` (orçamento duro e contra-exemplos), o bloco autossuficiente no `CLAUDE.md` e o hook `PostToolUse` bloqueante com **catraca** sobre o código legado — em qualquer linguagem, inclusive Delphi/Pascal
166
- - `/criar-code-reviewer` ⭐ — cria o agent `code-reviewer` (somente leitura)
167
-
168
- ### Slash commands & dia a dia
169
- - `/resolver-bug` ⭐ — investiga, planeja em `docs/bugs` e corrige um bug
170
- - `/nova-tarefa` ⭐ — gera spec+plano em `docs/` (start inicial ou nova tarefa) e, se confirmado, dispara o orquestrador
170
+ - `/executar-plan` ⭐ **(skill)** — executa o plano com sub-agents, gates de `revisor-testes` e `qa`, portões extras do projeto, bloqueios e retomada
171
+
172
+ ### Dia a dia
173
+ - `/resolver-bug` ⭐ **(skill)** — investiga a causa raiz, corrige com teste de regressão e entrega relatório técnico e para o cliente
174
+ - `/nova-tarefa` ⭐ **(skill)** — verifica se já existe, gera SPEC e PLAN do trabalho, audita o plano e dispara a execução
171
175
 
172
176
  ### Qualidade & manutenção de código
173
- - `/gerar-testes` — detecta cobertura faltante e escreve testes seguindo TDD (RED→GREEN)
174
- - `/refatorar` — refatora usando os testes como rede de segurança, sem mudar comportamento
175
- - `/codigo-morto` — varre o projeto em busca de código morto e propõe remoção segura
177
+ - `/gerar-testes` — escreve testes para o que não está coberto, sem alterar o código de produção
178
+ - `/refatorar` — refatora em passos pequenos com os testes como rede de segurança, inclusive a remoção de código morto
176
179
  - `/atualizar-deps` — atualiza dependências em lotes, testando a cada passo
177
180
 
178
181
  ### Documentação & onboarding
179
- - `/sincronizar-claude-md` — aponta onde o `CLAUDE.md`/`SPEC.md` divergiu do código
180
- - `/diagrama` — gera diagramas Mermaid de arquitetura/fluxo a partir do código
181
- - `/onboarding` — gera um guia de onboarding (rodar, entender e contribuir) em `docs/`
182
+ - `/diagrama` — gera diagramas Mermaid fiéis ao código
183
+ - `/onboarding` — gera um guia verificado para quem chega no projeto
182
184
  - `/gerar-env` — monta o `.env.example` a partir das variáveis lidas no código
183
185
 
184
186
  ### Avançado
185
- - `/criar-rag` — sistema de RAG (SQLite + sqlite-vec) para capturar aprendizados
186
- - `/auditar-ui` — navega a app via Playwright MCP e audita UX/UI e/ou acessibilidade (a11y)
187
- - `/design-system` — cria o agent de design system com skills e rules
188
- - `/auditar-performance` — audita gargalos de performance (queries, bundle, renders)
189
- - `/auditar-seguranca` — auditoria defensiva (segredos, deps, inputs, configs) **+ conformidade LGPD** via skill `lgpd-checker`
190
-
191
- ### Manutenção & validação
192
- - `/validar-commands` — audita `.claude`: valida models dos agents, aponta redundâncias e sugere novos commands
187
+ - `/memoria` **(skill)** — mostra quem já mexeu num arquivo e por quê e aponta regressões candidatas de um bug
188
+ - `/auditar-ui` **(skill)** — navega a aplicação via Playwright MCP e audita UX/UI e acessibilidade
189
+ - `/auditar-performance` **(skill)** — mede e audita gargalos de performance
190
+ - `/auditar-seguranca` **(skill)** — auditoria defensiva de segurança e conformidade com a LGPD
193
191
 
194
192
  ### Utilitário
195
- - `/git-commit-push` ⭐ — gera mensagem (PT-BR, Conventional Commits) e faz add/commit/push
196
- - `/versao` ⭐ — detecta o versionamento da stack atual (React+Vite/Next, Node, Delphi, .NET, Flutter…) e aplica o bump de versão + changelog + commit de release (gate de aprovação, sem push). **Autossuficiente**: gera o changelog amigável dos commits internamente, sem depender de outros comandos.
197
- - `/configurar-auto-tag` ⭐ — detecta o padrão de versionamento (qualquer stack, inclusive Delphi) e gera a GitHub Action que cria a tag automaticamente quando a versão chega na `main`. Separa **versionar** (`/versao`, humano) de **taguear/deployar** (automático). Documenta a pegadinha `GITHUB_TOKEN` × `RELEASE_PAT`.
198
- - `/revisar-pr` — revisa um PR ou o diff atual, classificando os achados
193
+ - `/git-commit-push` ⭐ — gera a mensagem (PT-BR, Conventional Commits) e faz add, commit e push
194
+ - `/versao` ⭐ — detecta o versionamento da stack e aplica bump e changelog, com aprovação e sem push
195
+ - `/revisar-pr` — revisa um PR ou o diff atual, classifica os achados e, se pedido, organiza as correções num trabalho
199
196
 
200
- ### Comando-mestre
201
- - `/harness` — conduz a sequência de setup em ordem, validando entre etapas
197
+ ### Setup guiado
198
+ - `/harness` **(skill)** — conduz o setup em etapas (ideia, contexto, ignores, plano do start, scaffold, peças do harness, auto-tag e execução); `/harness <etapa>` roda uma etapa isolada
202
199
 
203
- ## Fluxo recomendado
200
+ O padrão de comentários não é um comando: a rule, o hook e a catraca do legado vêm do `init` e do `update`.
201
+
202
+ A skill `lgpd-checker`, usada pela auditoria de segurança, é uma cópia vendorizada de
203
+ [bittencourtthulio/lgpd-checker](https://github.com/bittencourtthulio/lgpd-checker); veja
204
+ `templates/skills/lgpd-checker/ORIGEM.md`.
204
205
 
205
- A forma mais simples é rodar o comando-mestre **`/harness`**, que conduz toda a sequência abaixo em ordem, parando para validar entre as etapas. Ele pergunta logo no início se o projeto é **novo** ou **existente** e ajusta o fluxo.
206
+ ## Fluxo recomendado
206
207
 
207
- **Projeto novo** — sequência completa:
208
+ O jeito mais simples é rodar **`/harness`**, que pergunta se o projeto é novo ou existente e conduz as etapas:
208
209
 
209
210
  ```
210
- /validar-ideia → /gerar-spec → /gerar-claude-md → /gerar-ignore
211
- → /nova-tarefa (plano do start) → /scaffold
212
- → /configurar-comentarios → /criar-skill → /criar-agents → /criar-code-reviewer → /criar-rules → /criar-hooks → /configurar-orquestrador
211
+ ideia → /sincronizar-claude-md → ignores → /nova-tarefa (start) → scaffold
212
+ → /evoluir-harness (skills, agents, code-reviewer, rules, hooks e rule de projeto) → auto-tag
213
213
  → /executar-plan
214
214
  ```
215
215
 
216
- > As skills vêm **antes** dos agents (os agents dependem delas).
216
+ Em projeto existente, o `/harness` pula a ideia, o scaffold e a execução, e começa pelo `npx @fontdata/ai-harness doctor`.
217
217
 
218
- **Projeto existente** — documenta e monta o harness sobre o código que já existe, pulando validação de ideia, plano do start, scaffold e execução:
218
+ No dia a dia: `/nova-tarefa` → `/executar-plan` para funcionalidades, `/resolver-bug` para defeitos,
219
+ `/git-commit-push` e `/versao`. De vez em quando: `/sincronizar-claude-md` e `/evoluir-harness`.
219
220
 
220
- ```
221
- /gerar-spec → /gerar-claude-md → /gerar-ignore
222
- → /configurar-comentarios → /criar-skill → /criar-agents → /criar-code-reviewer → /criar-rules → /criar-hooks → /configurar-orquestrador
223
- ```
221
+ ## Exemplos
222
+
223
+ A pasta [`exemplos/`](exemplos/) traz trabalhos gerados em sessões reais do Claude Code sobre um projeto demo: uma
224
+ funcionalidade nova, uma correção de bug e uma auditoria de segurança, com os documentos de cada um.
225
+
226
+ ## Migrando da 2.0 (ou da 1.x) para a 2.1
227
+
228
+ **Node.js 22** ou superior passa a ser exigido. Num branch do projeto, siga esta ordem:
229
+
230
+ 1. `npx @fontdata/ai-harness update --check` e depois `update --yes`. O `update` faz o seguinte:
231
+ - reconhece a instalação de qualquer versão anterior, mesmo sem lock;
232
+ - troca os comandos que viraram skill ou saíram do catálogo, e renomeia para `<id>-legado.md` os que você editou;
233
+ - instala agents, hooks, o padrão de comentários e a rule de projeto.
234
+ 2. Leve o que for do projeto nos arquivos `-legado` para `.claude/rules/harness-projeto.md`, ou para skills do projeto
235
+ com `/evoluir-harness`, e apague os arquivos.
236
+ 3. `npx @fontdata/ai-harness migrar`, que só simula, e depois `migrar --yes`: move os documentos do layout anterior
237
+ para `docs/trabalhos/<id>/`.
238
+ 4. `npx @fontdata/ai-harness doctor` até não sobrar erro.
239
+
240
+ O que quebra: os fluxos viraram **skills**, o `/criar-rag` foi substituído pela `/memoria`, o catálogo passou de 36
241
+ para 19 comandos e o `/configurar-comentarios` saiu (veja o `CHANGELOG.md`). O
242
+ [guia de migração](docs/guias/migracao-2.1.md) explica cada aviso do `doctor` e a ordem sugerida para vários
243
+ projetos.
224
244
 
225
- No dia a dia: `/nova-tarefa`, `/resolver-bug`, `/git-commit-push` e `/versao` (para publicar uma nova versão).
245
+ ## Migrando do `@fontdata/ai-commands`
246
+
247
+ O pacote foi renomeado de `@fontdata/ai-commands` para `@fontdata/ai-harness` na versão 2.0.0.
248
+
249
+ | Você usava | Passe a usar |
250
+ |---|---|
251
+ | `npx @fontdata/ai-commands <comando>` | `npx @fontdata/ai-harness <comando>` |
252
+ | `/ai-commands:<comando>` | `/fontdata:<comando>` |
253
+ | Plugin `ai-commands@fontdata` | Plugin `fontdata@ai-harness` (veja abaixo) |
254
+ | `npm i -g @fontdata/ai-commands` + `fontdata-ai-commands init` | `npm uninstall -g @fontdata/ai-commands && npm i -g @fontdata/ai-harness` + `fontdata-ai-harness init` |
255
+ | Comandos instalados via `init` | Nada muda no nome — rode `update` para receber a 2.1 |
226
256
 
227
- ## Desenvolvimento
257
+ Para trocar o plugin global:
228
258
 
229
259
  ```bash
230
- npm install
231
- node bin/cli.js list
232
- node bin/cli.js harness # roda na pasta atual, com o plugin local
233
- node bin/cli.js init ./caminho-de-teste
234
- claude plugin validate . # valida o manifesto do plugin
260
+ claude plugin uninstall ai-commands@fontdata
261
+ claude plugin marketplace remove fontdata
262
+ claude plugin marketplace add fontdata-tecnologia/ai-harness
263
+ claude plugin install fontdata@ai-harness
235
264
  ```
236
265
 
237
- Os templates ficam em `templates/` (`commands/*.md` + `skills/` + `CLAUDE.md` + `catalog.json`). Para adicionar um comando: crie o `.md` em `templates/commands/` e registre-o em `templates/catalog.json`.
266
+ ## Contribuindo
267
+
268
+ Veja o [`CONTRIBUTING.md`](CONTRIBUTING.md): ambiente, estrutura do repositório e como criar comando, skill, hook e
269
+ agent. As mudanças de cada versão estão no [`CHANGELOG.md`](CHANGELOG.md).
270
+
271
+ ## Licença
238
272
 
239
- A raiz do pacote também é um plugin do Claude Code: `.claude-plugin/plugin.json` aponta `commands` e `skills` para dentro de `templates/`, então **não há duplicação de arquivos** — a mesma pasta serve o `init` (cópia) e o modo sem instalação (`--plugin-dir`). O `npm version` sincroniza a `version` do `plugin.json` automaticamente (script `version` → `scripts/sync-plugin-version.mjs`).
273
+ MIT — veja [`LICENSE`](LICENSE).
@@ -1,26 +1,19 @@
1
1
  import { readFileSync } from 'node:fs';
2
- import { fileURLToPath } from 'node:url';
3
2
  import { dirname, join } from 'node:path';
4
-
3
+ import { fileURLToPath } from 'node:url';
5
4
  const __dirname = dirname(fileURLToPath(import.meta.url));
6
-
7
5
  /** Raiz da pasta de templates do pacote. */
8
6
  export const templatesDir = join(__dirname, '..', 'templates');
9
-
10
7
  /** Carrega e retorna o catálogo de comandos (templates/catalog.json). */
11
8
  export function loadCatalog() {
12
- const raw = readFileSync(join(templatesDir, 'catalog.json'), 'utf8');
13
- return JSON.parse(raw);
9
+ const raw = readFileSync(join(templatesDir, 'catalog.json'), 'utf8');
10
+ return JSON.parse(raw);
14
11
  }
15
-
16
12
  /** Lista achatada de todos os comandos do catálogo, com o grupo anexado. */
17
13
  export function allCommands(catalog) {
18
- return catalog.groups.flatMap((group) =>
19
- group.commands.map((cmd) => ({ ...cmd, group: group.title }))
20
- );
14
+ return catalog.groups.flatMap((group) => group.commands.map((cmd) => ({ ...cmd, group: group.title })));
21
15
  }
22
-
23
16
  /** Apenas os comandos marcados como recomendados (conjunto núcleo). */
24
17
  export function recommendedCommands(catalog) {
25
- return allCommands(catalog).filter((cmd) => cmd.recommended);
18
+ return allCommands(catalog).filter((cmd) => cmd.recommended);
26
19
  }