@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.
- package/.claude-plugin/marketplace.json +1 -1
- package/.claude-plugin/plugin.json +9 -2
- package/LICENSE +21 -0
- package/README.md +174 -140
- package/{src → dist}/catalog.js +5 -12
- package/dist/cli.js +174 -0
- package/dist/comentarios/command.js +74 -0
- package/dist/comentarios/instalar.js +33 -0
- package/dist/config/config.js +98 -0
- package/dist/contratos/artefatos.js +284 -0
- package/dist/contratos/eventos.js +103 -0
- package/dist/doctor/checks.js +424 -0
- package/dist/init.js +240 -0
- package/dist/install/atomic.js +51 -0
- package/dist/install/flags.js +99 -0
- package/dist/install/hooks.js +47 -0
- package/dist/install/lock.js +39 -0
- package/dist/install/plan.js +209 -0
- package/dist/install/selection.js +77 -0
- package/dist/install/settings.js +108 -0
- package/dist/memoria/indice.js +195 -0
- package/dist/migrar/migrar.js +426 -0
- package/dist/rastro/command.js +46 -0
- package/dist/run.js +86 -0
- package/dist/types.js +1 -0
- package/dist/update/legado.js +74 -0
- package/dist/update/update.js +284 -0
- package/package.json +17 -8
- package/templates/CLAUDE.md +59 -30
- package/templates/agents/auditor-plano.md +42 -0
- package/templates/agents/investigador.md +32 -0
- package/templates/agents/qa.md +44 -0
- package/templates/agents/revisor-testes.md +40 -0
- package/templates/catalog.json +24 -61
- package/templates/commands/atualizar-deps.md +43 -9
- package/templates/commands/diagrama.md +35 -10
- package/templates/commands/gerar-env.md +39 -10
- package/templates/commands/gerar-testes.md +42 -10
- package/templates/commands/git-commit-push.md +0 -0
- package/templates/commands/onboarding.md +44 -15
- package/templates/commands/refatorar.md +50 -10
- package/templates/commands/revisar-pr.md +56 -12
- package/templates/commands/sincronizar-claude-md.md +177 -9
- package/templates/commands/versao.md +0 -0
- package/templates/hooks/comentarios/check.mjs +210 -0
- package/templates/hooks/hooks.json +34 -0
- package/templates/hooks/lembrete.mjs +29 -0
- package/templates/hooks/lib/config.mjs +40 -0
- package/templates/hooks/lib/hook.mjs +85 -0
- package/templates/hooks/lib/rastro.mjs +130 -0
- package/templates/hooks/lib/segredos.mjs +91 -0
- package/templates/hooks/lib/temas.mjs +111 -0
- package/templates/hooks/lib/trabalho.mjs +94 -0
- package/templates/hooks/proteger-contratos.mjs +56 -0
- package/templates/hooks/segredo-no-commit.mjs +76 -0
- package/templates/hooks/sem-jargao.mjs +58 -0
- package/templates/hooks/task-so-fecha-verde.mjs +33 -0
- package/templates/legado/manifesto.json +1267 -0
- package/templates/rules/comentarios.md +166 -0
- package/templates/rules/harness-projeto.md +41 -0
- package/templates/skills/auditar-performance/SKILL.md +53 -0
- package/templates/skills/auditar-performance/references/pontos-quentes.md +35 -0
- package/templates/skills/auditar-performance/templates/relatorios/CLIENTE.md +26 -0
- package/templates/skills/auditar-performance/templates/relatorios/TECNICO.md +27 -0
- package/templates/skills/auditar-seguranca/SKILL.md +67 -0
- package/templates/skills/auditar-seguranca/references/seguranca-tecnica.md +23 -0
- package/templates/skills/auditar-seguranca/templates/relatorios/CLIENTE.md +30 -0
- package/templates/skills/auditar-seguranca/templates/relatorios/TECNICO.md +38 -0
- package/templates/skills/auditar-ui/SKILL.md +64 -0
- package/templates/skills/auditar-ui/references/lentes.md +33 -0
- package/templates/skills/auditar-ui/templates/relatorios/CLIENTE.md +26 -0
- package/templates/skills/auditar-ui/templates/relatorios/TECNICO.md +31 -0
- package/templates/skills/evoluir-harness/SKILL.md +81 -0
- package/templates/skills/evoluir-harness/references/agent.md +83 -0
- package/templates/skills/evoluir-harness/references/auditoria.md +107 -0
- package/templates/skills/evoluir-harness/references/code-reviewer.md +68 -0
- package/templates/skills/evoluir-harness/references/design-system.md +56 -0
- package/templates/skills/evoluir-harness/references/hook.md +95 -0
- package/templates/skills/evoluir-harness/references/rule.md +67 -0
- package/templates/skills/evoluir-harness/references/skill.md +63 -0
- package/templates/skills/executar-plan/SKILL.md +114 -0
- package/templates/skills/executar-plan/references/delegacao.md +43 -0
- package/templates/skills/executar-plan/references/retomada.md +33 -0
- package/templates/skills/executar-plan/templates/BLOQUEIOS.md +30 -0
- package/templates/skills/harness/SKILL.md +75 -0
- package/templates/skills/harness/references/auto-tag.md +118 -0
- package/templates/skills/harness/references/ignores.md +40 -0
- package/templates/skills/harness/references/scaffold.md +29 -0
- package/templates/skills/harness/references/validar-ideia.md +42 -0
- package/templates/skills/memoria/SKILL.md +52 -0
- package/templates/skills/nova-tarefa/SKILL.md +97 -0
- package/templates/skills/nova-tarefa/references/isso-ja-existe.md +24 -0
- package/templates/skills/nova-tarefa/references/regras-do-plano.md +33 -0
- package/templates/skills/nova-tarefa/templates/DECISOES.md +20 -0
- package/templates/skills/nova-tarefa/templates/PLAN.md +58 -0
- package/templates/skills/nova-tarefa/templates/SPEC.md +37 -0
- package/templates/skills/resolver-bug/SKILL.md +104 -0
- package/templates/skills/resolver-bug/references/relatorio-para-cliente.md +26 -0
- package/templates/skills/resolver-bug/templates/PLAN.md +62 -0
- package/templates/skills/resolver-bug/templates/relatorios/CLIENTE.md +29 -0
- package/templates/skills/resolver-bug/templates/relatorios/TECNICO.md +32 -0
- package/bin/cli.js +0 -122
- package/src/init.js +0 -317
- package/src/installer.js +0 -92
- package/src/run.js +0 -99
- package/templates/commands/auditar-performance.md +0 -27
- package/templates/commands/auditar-seguranca.md +0 -64
- package/templates/commands/auditar-ui.md +0 -38
- package/templates/commands/codigo-morto.md +0 -22
- package/templates/commands/configurar-auto-tag.md +0 -185
- package/templates/commands/configurar-comentarios.md +0 -543
- package/templates/commands/configurar-orquestrador.md +0 -13
- package/templates/commands/corrigir-review.md +0 -11
- package/templates/commands/criar-agents.md +0 -42
- package/templates/commands/criar-code-reviewer.md +0 -30
- package/templates/commands/criar-hooks.md +0 -32
- package/templates/commands/criar-rag.md +0 -25
- package/templates/commands/criar-rules.md +0 -31
- package/templates/commands/criar-skill.md +0 -22
- package/templates/commands/design-system.md +0 -27
- package/templates/commands/executar-plan.md +0 -36
- package/templates/commands/gerar-claude-md.md +0 -66
- package/templates/commands/gerar-ignore.md +0 -37
- package/templates/commands/gerar-spec.md +0 -33
- package/templates/commands/harness.md +0 -34
- package/templates/commands/nova-tarefa.md +0 -60
- package/templates/commands/resolver-bug.md +0 -25
- package/templates/commands/review-por-task.md +0 -16
- package/templates/commands/scaffold.md +0 -25
- package/templates/commands/validar-commands.md +0 -24
- package/templates/commands/validar-ideia.md +0 -36
|
@@ -0,0 +1,81 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: evoluir-harness
|
|
3
|
+
description: Cria ou ajusta peças do harness no projeto — agents, skills, rules, hooks, code-reviewer e design system — ou audita a pasta .claude e sugere o que mudar. Use de vez em quando, conforme o projeto cresce.
|
|
4
|
+
argument-hint: "[agent|skill|rule|hook|code-reviewer|design-system|auditar]"
|
|
5
|
+
---
|
|
6
|
+
|
|
7
|
+
# Evoluir o harness
|
|
8
|
+
|
|
9
|
+
Pedido: $ARGUMENTS
|
|
10
|
+
|
|
11
|
+
O harness entrega os fluxos e as garantias; as peças específicas do projeto (agents de domínio, skills, rules,
|
|
12
|
+
hooks) nascem aqui, quando uma dor recorrente justifica. Cada tipo tem uma referência própria: **leia só a do tipo
|
|
13
|
+
escolhido**, quando ele for escolhido.
|
|
14
|
+
|
|
15
|
+
> **🚦 Há um GATE de aprovação** antes de gravar qualquer arquivo. Esta skill **não faz commit nem push**.
|
|
16
|
+
|
|
17
|
+
## Passo 0 — Escolher o caminho
|
|
18
|
+
|
|
19
|
+
A primeira palavra do pedido é o tipo; o resto é contexto (nome, domínio, URL de referência).
|
|
20
|
+
|
|
21
|
+
| Tipo | Referência | O que sai |
|
|
22
|
+
|---|---|---|
|
|
23
|
+
| vazio ou `auditar` | `references/auditoria.md` | Diagnóstico da pasta `.claude` e as listas manter, ajustar, remover e criar |
|
|
24
|
+
| `agent` | `references/agent.md` | Agents de domínio em `.claude/agents/` e o mapa na rule de projeto |
|
|
25
|
+
| `skill` | `references/skill.md` | Skill do projeto em `.claude/skills/<nome>/` |
|
|
26
|
+
| `rule` | `references/rule.md` | Rules incondicionais, escopadas por path e de código legado |
|
|
27
|
+
| `hook` | `references/hook.md` | Hooks por agent sobre a biblioteca do harness |
|
|
28
|
+
| `code-reviewer` | `references/code-reviewer.md` | Agent de review somente leitura e o portão extra |
|
|
29
|
+
| `design-system` | a referência `design-system.md` em `references/` | Agent, skill e rules da identidade visual |
|
|
30
|
+
|
|
31
|
+
Tipo desconhecido: mostre a tabela e pergunte. Não carregue as outras referências.
|
|
32
|
+
|
|
33
|
+
## Passo 1 — Contexto (somente leitura)
|
|
34
|
+
|
|
35
|
+
1. Leia o `CLAUDE.md` e o `SPEC.md` da raiz e `.claude/rules/harness-projeto.md`. Faltando `SPEC.md` ou
|
|
36
|
+
`CLAUDE.md`, sugira `/sincronizar-claude-md` antes; siga só se o usuário quiser usar o código como fonte.
|
|
37
|
+
2. Liste `.claude/agents/`, `.claude/skills/`, `.claude/rules/`, `.claude/hooks/` e `.claude/commands/`; leia
|
|
38
|
+
`.claude/settings.json` e `.ai-harness/config.json`.
|
|
39
|
+
3. Havendo trabalho em curso, leia o `PLAN.md`, o `DECISOES.md` e o `BLOQUEIOS.md` em `docs/trabalhos/<id>/`.
|
|
40
|
+
4. Rode `npx @fontdata/ai-harness doctor` e guarde os achados: eles alimentam a auditoria e a conferência final.
|
|
41
|
+
|
|
42
|
+
## Passo 2 — Sem tipo: auditar
|
|
43
|
+
|
|
44
|
+
Siga `references/auditoria.md`. Entregue as quatro listas (**manter / ajustar / remover / criar**), cada item com
|
|
45
|
+
o motivo, e pergunte o que aplicar. Para cada item escolhido, leia então a referência do tipo dele e siga do Passo 3.
|
|
46
|
+
|
|
47
|
+
## Passo 3 — Com tipo: desenhar (sem gravar)
|
|
48
|
+
|
|
49
|
+
Siga a referência do tipo. Rascunhe o conteúdo completo de cada arquivo e o que muda nos arquivos existentes.
|
|
50
|
+
Toda peça proposta precisa apontar a dor recorrente que resolve; sem ela, não proponha.
|
|
51
|
+
|
|
52
|
+
## Passo 4 — 🚦 GATE de aprovação
|
|
53
|
+
|
|
54
|
+
Mostre ao usuário, antes de gravar:
|
|
55
|
+
|
|
56
|
+
- os caminhos exatos a criar e a alterar;
|
|
57
|
+
- o conteúdo proposto de cada arquivo novo e o trecho de cada alteração (merge);
|
|
58
|
+
- o que fica de fora de propósito (peças do harness, arquivos já existentes).
|
|
59
|
+
|
|
60
|
+
**Não grave nada sem o "ok".** Ajuste e mostre de novo quando o usuário pedir mudança.
|
|
61
|
+
|
|
62
|
+
## Passo 5 — Gravar e conferir
|
|
63
|
+
|
|
64
|
+
1. Grave só o que foi aprovado, com **merge, não sobrescrita**, em `settings.json`, `config.json`, frontmatter
|
|
65
|
+
de agents e `.claude/rules/harness-projeto.md`.
|
|
66
|
+
2. Rode `npx @fontdata/ai-harness doctor` de novo e confirme que não surgiu achado novo.
|
|
67
|
+
3. Mostre como usar cada peça: invocar o agent, disparar a skill, demonstrar o hook com uma entrada de exemplo.
|
|
68
|
+
4. Agent novo muda a orquestração: sugira `/sincronizar-claude-md` para reconciliar o `CLAUDE.md`.
|
|
69
|
+
5. Pare aqui. Para versionar, o usuário roda `/git-commit-push` quando quiser.
|
|
70
|
+
|
|
71
|
+
## Guardrails
|
|
72
|
+
|
|
73
|
+
- **Nunca** gravar antes do GATE; **nunca** fazer commit ou push.
|
|
74
|
+
- **Não recriar, renomear nem editar** as peças do harness: os agents `revisor-testes`, `qa`, `investigador` e
|
|
75
|
+
`auditor-plano`, `.claude/hooks/ai-harness/`, `.claude/hooks/comentarios/` e `.claude/rules/comentarios.md`. O
|
|
76
|
+
`update` as mantém; o que é específico do projeto vai para `.claude/rules/harness-projeto.md`.
|
|
77
|
+
- Todo agent declara `tools:` mínimo e `model:`; hook novo nasce em `aviso`.
|
|
78
|
+
- Uma fonte por assunto: não repetir em rule, skill ou agent o que já está no `CLAUDE.md` ou em outra rule.
|
|
79
|
+
- Não criar skill ou comando que repita os fluxos `/nova-tarefa`, `/resolver-bug`, `/executar-plan` ou `/harness`.
|
|
80
|
+
- Documento de trabalho só em `docs/trabalhos/<id>/`.
|
|
81
|
+
- Conteúdo em **pt-BR**.
|
|
@@ -0,0 +1,83 @@
|
|
|
1
|
+
# Referência — agent
|
|
2
|
+
|
|
3
|
+
Cria os **agents de domínio** do projeto em `.claude/agents/`.
|
|
4
|
+
|
|
5
|
+
## Leitura
|
|
6
|
+
|
|
7
|
+
`CLAUDE.md` e `SPEC.md` da raiz, o `PLAN.md` do trabalho em curso em `docs/trabalhos/<id>/`,
|
|
8
|
+
`.claude/rules/harness-projeto.md` e os agents que já existem.
|
|
9
|
+
|
|
10
|
+
## O que já vem com o harness
|
|
11
|
+
|
|
12
|
+
`revisor-testes`, `qa`, `investigador` e `auditor-plano` são agents somente leitura do harness, instalados pelo
|
|
13
|
+
`init` ou disponíveis no plugin como `fontdata:<nome>`. **Não os recrie nem crie agent com esses nomes**: um agent
|
|
14
|
+
do projeto com o mesmo nome substitui o do harness e quebra os gates. Se o projeto precisa que o `qa` rode a suíte
|
|
15
|
+
de outro jeito, isso vai para a seção "Suíte de testes" da rule de projeto, não para um agent novo.
|
|
16
|
+
|
|
17
|
+
Crie aqui só agents de domínio: implementação por módulo, design system, parser, integração.
|
|
18
|
+
|
|
19
|
+
## Quando vale um agent
|
|
20
|
+
|
|
21
|
+
- Área com padrões próprios e tasks recorrentes (API, frontend, módulo Delphi, integração fiscal).
|
|
22
|
+
- Trabalho que precisa de contexto limpo ou de ferramentas diferentes das da sessão.
|
|
23
|
+
|
|
24
|
+
Contra-exemplos: agent por task ou por arquivo; agent "generalista" que faz tudo; agent que só repete o
|
|
25
|
+
`CLAUDE.md`.
|
|
26
|
+
|
|
27
|
+
## Para cada agent
|
|
28
|
+
|
|
29
|
+
1. **Nome e descrição:** `kebab-case`; a `description` diz quando usar, com o domínio e a pasta. O orquestrador
|
|
30
|
+
delega por ela.
|
|
31
|
+
2. **`tools:` mínimo**, sempre declarado. Sem `tools:`, o agent herda todas as ferramentas da sessão, inclusive
|
|
32
|
+
edição e `Bash`. Não dê `Write` a quem só precisa de `Read`.
|
|
33
|
+
3. **Modelo:** `haiku` para tarefa simples, `sonnet` para implementação, `opus` para arquitetura.
|
|
34
|
+
4. **Skills do projeto** que o agent deve carregar.
|
|
35
|
+
5. **System prompt** com papel e responsabilidades, escopo de pastas, restrições explícitas (o que nunca fazer),
|
|
36
|
+
padrões do projeto, como rodar os testes (o comando da rule de projeto) e o que devolver ao orquestrador.
|
|
37
|
+
|
|
38
|
+
```markdown
|
|
39
|
+
---
|
|
40
|
+
name: backend-dev
|
|
41
|
+
description: Implementa tasks de API e regras de negócio em apps/api/. Use quando a task do plano for do domínio backend.
|
|
42
|
+
tools: Read, Grep, Glob, Edit, Write, Bash
|
|
43
|
+
model: sonnet
|
|
44
|
+
---
|
|
45
|
+
```
|
|
46
|
+
|
|
47
|
+
## Obrigatório em todo agent que escreve código
|
|
48
|
+
|
|
49
|
+
Implementação, testes, refactor e design system levam no system prompt, literalmente, o bloco abaixo. A rule
|
|
50
|
+
`.claude/rules/comentarios.md` é carregada sozinha em toda sessão; o bloco repete só o orçamento e diz **onde** a
|
|
51
|
+
rastreabilidade mora — não use `@import` da rule.
|
|
52
|
+
|
|
53
|
+
```markdown
|
|
54
|
+
## Comentários
|
|
55
|
+
|
|
56
|
+
O padrão é **não comentar**; a regra completa está em `.claude/rules/comentarios.md`. Orçamento: bloco interno
|
|
57
|
+
<= 3 linhas · docstring pública <= 5 · cabeçalho de arquivo proibido · densidade <= 10%.
|
|
58
|
+
Nunca colocar no código: banner/separador de seção, task/fase/plano/spec, data, hash de commit, achado de
|
|
59
|
+
review, narração do passo a passo, código comentado.
|
|
60
|
+
Isso mora na mensagem de commit e em `docs/trabalhos/<id>/` — nunca em comentário.
|
|
61
|
+
```
|
|
62
|
+
|
|
63
|
+
> Foi aqui que o padrão falhou antes: os agents eram instruídos a rastrear plano, spec e task e despejavam essa
|
|
64
|
+
> rastreabilidade em comentário, porque nada dizia onde ela deveria morar.
|
|
65
|
+
|
|
66
|
+
Agent que toca código legado leva também uma linha sobre a precedência: na área legada tocada, vale o padrão local
|
|
67
|
+
do arquivo (ver `rule.md`).
|
|
68
|
+
|
|
69
|
+
## Mapa domínio → agent
|
|
70
|
+
|
|
71
|
+
O mapa vai para a seção "Mapa de agents por domínio" de `.claude/rules/harness-projeto.md` (merge, sem apagar
|
|
72
|
+
linhas existentes). É por ele que o `/executar-plan` e o `/resolver-bug` delegam cada task.
|
|
73
|
+
|
|
74
|
+
| Domínio ou pasta | Agent | Observação |
|
|
75
|
+
|---|---|---|
|
|
76
|
+
| `apps/api/` | `backend-dev` | mudança estrutural passa antes pelo `arquiteto` |
|
|
77
|
+
|
|
78
|
+
## Depois de gravar
|
|
79
|
+
|
|
80
|
+
- Mostre como invocar cada agent manualmente ("use o agent `backend-dev` para ...") e como o orquestrador delega
|
|
81
|
+
sozinho, pela `description` e pelo mapa.
|
|
82
|
+
- Sugira `/sincronizar-claude-md` para reconciliar a seção de orquestração do `CLAUDE.md`.
|
|
83
|
+
- Guardas por agent: `/evoluir-harness hook`. Rules do domínio: `/evoluir-harness rule`.
|
|
@@ -0,0 +1,107 @@
|
|
|
1
|
+
# Auditoria da pasta .claude
|
|
2
|
+
|
|
3
|
+
Diagnóstico de commands, agents, skills, rules e hooks do projeto. **Explique o motivo** de cada avaliação — nada
|
|
4
|
+
de veredito sem justificativa — e não altere nada antes do GATE.
|
|
5
|
+
|
|
6
|
+
## Como coletar
|
|
7
|
+
|
|
8
|
+
1. Parta dos achados de `npx @fontdata/ai-harness doctor`. Ele já aponta, entre outros, `comando-sombreia-skill`,
|
|
9
|
+
`comando-legado`, `bloco-comentarios-antigo`, hook que aponta para script inexistente e documento fora do
|
|
10
|
+
contrato. Não refaça à mão o que ele já checou; explique o achado e proponha a correção.
|
|
11
|
+
2. Leia cada arquivo de `.claude/agents/`, `.claude/commands/`, `.claude/skills/*/SKILL.md` e `.claude/rules/`, os
|
|
12
|
+
hooks registrados em `.claude/settings.json`, `.claude/settings.local.json` e no frontmatter dos agents, e o
|
|
13
|
+
lock e a config em `.ai-harness/`.
|
|
14
|
+
|
|
15
|
+
## 1. Agents — modelo e ferramentas
|
|
16
|
+
|
|
17
|
+
- **Modelo:** Haiku para trabalho mecânico (checagem por lista, renomeação, formatação); Sonnet para implementação,
|
|
18
|
+
testes e revisão; Opus para arquitetura, planejamento e investigação difícil. Aponte sub e superdimensionamento
|
|
19
|
+
(Opus numa task mecânica, Haiku desenhando arquitetura). Agent sem `model:` herda o da sessão: declare.
|
|
20
|
+
- **`tools:`:** agent sem `tools:` herda todas as ferramentas da sessão, inclusive edição e `Bash`. Revisor,
|
|
21
|
+
auditor e code-reviewer não têm `Write` nem `Edit`; `Bash` só quando precisam rodar a suíte. Implementador recebe
|
|
22
|
+
só as ferramentas do seu escopo.
|
|
23
|
+
- **Descrição:** o orquestrador delega pela `description`. Descrição vaga ("ajuda no backend") faz o agent nunca
|
|
24
|
+
ser chamado ou ser chamado para tudo.
|
|
25
|
+
- **Comentários:** agent que escreve código sem o bloco de comentários no system prompt (ver `agent.md`).
|
|
26
|
+
- **Mapa:** agent de domínio fora do mapa em `.claude/rules/harness-projeto.md` não recebe task do `/executar-plan`.
|
|
27
|
+
|
|
28
|
+
## 2. Agent do projeto com nome de agent do harness
|
|
29
|
+
|
|
30
|
+
`qa`, `investigador`, `revisor-testes` e `auditor-plano` vêm com o harness. Para cada `.claude/agents/<nome>.md`
|
|
31
|
+
com um desses nomes:
|
|
32
|
+
|
|
33
|
+
- registrado no lock e sem edição: é a cópia do harness, mantenha;
|
|
34
|
+
- personalizado ou criado pelo projeto: ele substitui o do harness, e os fluxos passam a depender de um contrato que
|
|
35
|
+
ninguém garante (por exemplo, um `qa` que não registra `suite_verde` trava o fechamento das tasks). Leve o que é
|
|
36
|
+
do projeto (comando da suíte, verificação manual, portões) para `.claude/rules/harness-projeto.md` e restaure a
|
|
37
|
+
cópia com `npx @fontdata/ai-harness update`; se o papel é outro, renomeie (ex.: `qa-mobile`).
|
|
38
|
+
|
|
39
|
+
## 3. Guardas de agent inoperantes
|
|
40
|
+
|
|
41
|
+
Hook que existe mas não protege nada é pior que hook nenhum: dá falsa segurança. Procure:
|
|
42
|
+
|
|
43
|
+
- **Lê argumentos em vez do JSON da stdin** (`$1`, `process.argv`, `$ARGUMENTS`, variável de ambiente inventada):
|
|
44
|
+
o Claude Code entrega o evento pela stdin, então a guarda nunca vê o comando. Refaça sobre `runHook` (`hook.md`).
|
|
45
|
+
- **Caminho absoluto de outra máquina** (`C:\Users\fulano\...`, `/home/fulano/...`): falha em qualquer outra
|
|
46
|
+
máquina. Use `$CLAUDE_PROJECT_DIR`.
|
|
47
|
+
- **Dependência de binário ausente** (`pwsh`, `php`, `python`, `jq`): confira com `command -v <binário>`. Sem ele,
|
|
48
|
+
o hook quebra calado ou trava tudo. Reescreva em Node, que existe onde o harness roda.
|
|
49
|
+
- **Protocolo à mão:** `exit 2` ou JSON montado no script, com efeito diferente em cada evento.
|
|
50
|
+
- **Hooks do harness em dobro:** plugin habilitado e, ao mesmo tempo, os scripts de `.claude/hooks/ai-harness/`
|
|
51
|
+
registrados no `settings.json` — cada hook roda duas vezes.
|
|
52
|
+
|
|
53
|
+
Para confirmar que uma guarda funciona, rode o script com uma entrada de exemplo (ver `hook.md`).
|
|
54
|
+
|
|
55
|
+
## 4. Commands — uso, redundância e legado
|
|
56
|
+
|
|
57
|
+
- Diga quais commands tendem a ser **mais usados** neste projeto e quais são **pouco úteis** no contexto dele.
|
|
58
|
+
- Aponte **sobreposição** entre commands e com as skills do harness (`/nova-tarefa`, `/resolver-bug`,
|
|
59
|
+
`/executar-plan`, `/harness`, `/evoluir-harness`, `/auditar-seguranca`, `/auditar-performance`, `/auditar-ui`) e
|
|
60
|
+
com `/sincronizar-claude-md`. Comando que repete um fluxo sai; a parte específica vira rule. Review a cada task
|
|
61
|
+
vira portão extra na rule de projeto.
|
|
62
|
+
- Comando com o mesmo nome de uma skill vence e o fluxo da skill nunca roda: renomeie ou apague.
|
|
63
|
+
- **Comandos `*-legado.md`:** versões personalizadas que o `update` renomeou. Para cada um, extraia o que é do
|
|
64
|
+
projeto (mapa de domínio, comando da suíte, portões, verificação manual, restrições) para
|
|
65
|
+
`.claude/rules/harness-projeto.md` ou para a rule do domínio, e só então proponha apagar o arquivo. Nunca apague
|
|
66
|
+
antes de a extração ser aprovada.
|
|
67
|
+
|
|
68
|
+
## 5. Citações ao layout anterior à 2.1
|
|
69
|
+
|
|
70
|
+
Antes da 2.1, os documentos ficavam em pastas separadas por tipo de documento (specs, planos, bugs e investigações,
|
|
71
|
+
cada tipo na sua pasta dentro de `docs/`). Hoje cada trabalho mora em `docs/trabalhos/<id>/`, com `SPEC.md`,
|
|
72
|
+
`PLAN.md`, `DECISOES.md`, `BLOQUEIOS.md` e `relatorios/`.
|
|
73
|
+
|
|
74
|
+
- Procure as citações com `grep -rnE 'docs/(specs|plans|bugs|investigacoes)' CLAUDE.md .claude`.
|
|
75
|
+
- Cada citação em `CLAUDE.md`, rule, agent, skill ou command vira ajuste para `docs/trabalhos/<id>/`.
|
|
76
|
+
- Documentos ainda nas pastas antigas: `npx @fontdata/ai-harness migrar` mostra o plano e `--yes` aplica. O
|
|
77
|
+
`migrar` reescreve os links dentro dos documentos migrados, mas só lista as citações do `.claude/` e do
|
|
78
|
+
`CLAUDE.md` — essas são desta auditoria.
|
|
79
|
+
|
|
80
|
+
## 6. Rules
|
|
81
|
+
|
|
82
|
+
- **Rule de projeto ausente:** o `init` instala o esqueleto de `.claude/rules/harness-projeto.md` quando ele falta.
|
|
83
|
+
- **Rule de projeto vazia:** só com os exemplos em itálico (`_ex.: ..._`), ou sem mapa de agents e sem comando da
|
|
84
|
+
suíte, embora o projeto tenha agents de domínio e testes. Proponha o preenchimento a partir dos agents, dos
|
|
85
|
+
scripts de teste e do CI; apague as seções que não valem.
|
|
86
|
+
- **Comentários:** `.claude/rules/comentarios.md` ausente (o `init` e o `update` a instalam); outra rule que repete
|
|
87
|
+
regra de comentário; bloco antigo de comentários no `CLAUDE.md`.
|
|
88
|
+
- Rule com mais de 30 linhas, que repete o `CLAUDE.md`, descreve o que o código já mostra ou contradiz outra rule.
|
|
89
|
+
- Projeto com código legado sem a rule de precedência do padrão local (ver `rule.md`).
|
|
90
|
+
|
|
91
|
+
## 7. Skills e hooks do projeto
|
|
92
|
+
|
|
93
|
+
- Skill sem `description` que diga quando disparar, sem exemplos ou sem critério de quando não usar.
|
|
94
|
+
- Skill que repete fluxo do harness ou que ninguém dispara.
|
|
95
|
+
- Hook em `bloqueio` sem histórico de avisos pertinentes no rastro (`docs/eventos/*.jsonl`).
|
|
96
|
+
|
|
97
|
+
## 8. O que criar
|
|
98
|
+
|
|
99
|
+
Sugira peças novas para dores recorrentes. Busque evidência em `docs/trabalhos/*/DECISOES.md`, `BLOQUEIOS.md`,
|
|
100
|
+
relatórios, achados de review repetidos e `npx @fontdata/ai-harness memoria --arquivo <arquivo>`. Para cada
|
|
101
|
+
sugestão: tipo (`agent`, `skill`, `rule`, `hook`, `code-reviewer`, `design-system`), o que faria, quando seria
|
|
102
|
+
usada e qual **dor recorrente** elimina.
|
|
103
|
+
|
|
104
|
+
## Fechamento
|
|
105
|
+
|
|
106
|
+
Consolide em quatro listas — **manter / ajustar / remover / criar** —, cada item com motivo e o tipo que o trata, e
|
|
107
|
+
**pergunte o que aplicar**. Cada item escolhido segue a referência do seu tipo e passa pelo GATE.
|
|
@@ -0,0 +1,68 @@
|
|
|
1
|
+
# Referência — code-reviewer
|
|
2
|
+
|
|
3
|
+
Cria o agent de review **somente leitura** em `.claude/agents/code-reviewer.md` e o declara como portão extra.
|
|
4
|
+
|
|
5
|
+
## Leitura
|
|
6
|
+
|
|
7
|
+
`CLAUDE.md`, `SPEC.md`, as rules em `.claude/rules/` e `.claude/rules/harness-projeto.md`. Se já existe um
|
|
8
|
+
`code-reviewer`, ajuste-o em vez de criar outro.
|
|
9
|
+
|
|
10
|
+
## O agent
|
|
11
|
+
|
|
12
|
+
- `tools: Read, Grep, Glob` — nunca escrita nem execução. Sem `tools:`, o agent herda todas as ferramentas da
|
|
13
|
+
sessão, inclusive edição e `Bash`.
|
|
14
|
+
- `model: sonnet`; `opus` quando o domínio tem regra de negócio densa ou isolamento de dados crítico.
|
|
15
|
+
- System prompt focado em revisar a task contra o `SPEC.md` e o `PLAN.md` do trabalho em `docs/trabalhos/<id>/`,
|
|
16
|
+
olhando só o diff da task.
|
|
17
|
+
- Classificação: **BLOQUEANTE**, **IMPORTANTE**, **SUGESTÃO**. Com BLOQUEANTE, o veredito é `REPROVADO`;
|
|
18
|
+
IMPORTANTE é corrigido antes de a task fechar, salvo decisão registrada em `DECISOES.md`; SUGESTÃO não segura.
|
|
19
|
+
- Saída: veredito e achados com `arquivo:linha`, severidade, problema e correção sugerida.
|
|
20
|
+
- O agent não corrige nada: identifica e reporta.
|
|
21
|
+
|
|
22
|
+
## Checklist no system prompt
|
|
23
|
+
|
|
24
|
+
Sem checklist explícito, o agent revisa o que lhe parecer relevante e ignora o resto.
|
|
25
|
+
|
|
26
|
+
1. **Correção** — bugs, casos de borda, erros silenciados.
|
|
27
|
+
2. **Aderência** ao `SPEC.md` e ao `PLAN.md` do trabalho.
|
|
28
|
+
3. **Testes** — existem e cobrem o crítico da task?
|
|
29
|
+
4. **Segurança e isolamento de dados** — multi-tenant, autorização, segredos.
|
|
30
|
+
5. **Rules do projeto** em `.claude/rules/`.
|
|
31
|
+
6. **Código legado** — na área antiga tocada, o padrão local do arquivo foi preservado?
|
|
32
|
+
7. **Comentários** — classificar como **IMPORTANTE** (nunca SUGESTÃO): bloco interno acima de 3 linhas, docstring
|
|
33
|
+
pública acima de 5, cabeçalho de arquivo, banner ou separador de seção, task/fase/plano/data/hash de
|
|
34
|
+
commit/achado de review dentro do código, narração do passo a passo, código comentado. Ver
|
|
35
|
+
`.claude/rules/comentarios.md`.
|
|
36
|
+
8. **Legibilidade e simplicidade.**
|
|
37
|
+
|
|
38
|
+
## Guarda extra
|
|
39
|
+
|
|
40
|
+
Hook `PreToolUse` com `matcher: Edit|Write|MultiEdit|NotebookEdit` que bloqueia qualquer modificação, criado sobre a
|
|
41
|
+
biblioteca do harness conforme `hook.md`. O handler devolve sempre `{ motivo: 'o code-reviewer é somente leitura' }`.
|
|
42
|
+
Por pedido explícito, este nasce em `bloqueio` em `.ai-harness/config.json`. O `tools:` já impede a edição; o hook
|
|
43
|
+
cobre um `tools:` alterado por engano.
|
|
44
|
+
|
|
45
|
+
## Portão extra na rule de projeto
|
|
46
|
+
|
|
47
|
+
O code-reviewer só entra no fluxo quando declarado na seção "Portões extras" de `.claude/rules/harness-projeto.md`
|
|
48
|
+
(merge). Ele roda **depois de `revisor-testes` e `qa`**:
|
|
49
|
+
|
|
50
|
+
```markdown
|
|
51
|
+
- `code-reviewer` em contexto limpo ao fim de cada task, depois de `revisor-testes` e `qa`
|
|
52
|
+
```
|
|
53
|
+
|
|
54
|
+
O `/executar-plan` lê essa seção e aplica o portão. Como o agent não tem `Bash`, quem registra o veredito no rastro é
|
|
55
|
+
o orquestrador:
|
|
56
|
+
|
|
57
|
+
```bash
|
|
58
|
+
npx @fontdata/ai-harness evento agent_veredito --trabalho <id> --task <T-SS.NN> --nome code-reviewer \
|
|
59
|
+
--dados '{"veredito":"aprovado","motivo":"<resumo em uma linha>"}'
|
|
60
|
+
```
|
|
61
|
+
|
|
62
|
+
Reprovado, a task volta ao implementador com os achados, dentro do limite de voltas do `/executar-plan`.
|
|
63
|
+
|
|
64
|
+
## Contra-exemplos
|
|
65
|
+
|
|
66
|
+
- Reviewer com `Edit` "para corrigir o óbvio": quem implementa não aprova, e quem aprova não implementa.
|
|
67
|
+
- Portão declarado antes do `qa`: o review gasta tempo em código que ainda não passa na suíte.
|
|
68
|
+
- Checklist genérico copiado de outro projeto, sem as rules e os riscos deste.
|
|
@@ -0,0 +1,56 @@
|
|
|
1
|
+
# Referência — design system
|
|
2
|
+
|
|
3
|
+
Cria o **agent responsável pelo design system**, que trabalha principalmente com o agent de frontend, e as skills e
|
|
4
|
+
rules que guardam a conformidade da identidade visual. O agent vai em `.claude/agents/`, as skills em
|
|
5
|
+
`.claude/skills/` e as rules em `.claude/rules/`.
|
|
6
|
+
|
|
7
|
+
Nomes sugeridos: agent `identidade-visual`, skill `conformidade-visual`, rule `visual.md` escopada nos arquivos de
|
|
8
|
+
interface. Ajuste aos nomes que o projeto já usa.
|
|
9
|
+
|
|
10
|
+
## Origem da identidade visual
|
|
11
|
+
|
|
12
|
+
O contexto que veio depois do tipo decide a fonte:
|
|
13
|
+
|
|
14
|
+
- **Com URL:** trate-a como referência externa. Acesse o site e extraia cores, fontes e padrões visuais —
|
|
15
|
+
principalmente do CSS; quando a página só traz o texto, busque as folhas de estilo que ela referencia.
|
|
16
|
+
- **Sem URL:** **não acesse a internet.** Extraia o design system que já existe no projeto, pelo código: CSS e SCSS,
|
|
17
|
+
variáveis CSS, tokens de tema, `tailwind.config`, bibliotecas de UI e componentes.
|
|
18
|
+
|
|
19
|
+
Em qualquer caso, o que o código já usa tem precedência: referência externa orienta o que falta, não apaga o que
|
|
20
|
+
existe sem decisão registrada.
|
|
21
|
+
|
|
22
|
+
## O que extrair
|
|
23
|
+
|
|
24
|
+
| Grupo | O que registrar |
|
|
25
|
+
|---|---|
|
|
26
|
+
| Cores | primária, secundária, neutros, estados (sucesso, alerta, erro, info), contraste mínimo AA |
|
|
27
|
+
| Tipografia | famílias com fallback, escala de tamanhos, pesos, altura de linha |
|
|
28
|
+
| Espaçamento | escala (ex.: 4, 8, 12, 16, 24, 32) e onde cada passo se aplica |
|
|
29
|
+
| Forma | raios, bordas, sombras, camadas (`z-index`) |
|
|
30
|
+
| Layout | breakpoints, larguras máximas, grid |
|
|
31
|
+
| Componentes | botões, campos, cards, tabelas, modais: variantes e estados (hover, foco, desabilitado) |
|
|
32
|
+
| Movimento e ícones | durações, curvas, biblioteca de ícones |
|
|
33
|
+
|
|
34
|
+
Aponte as divergências encontradas (três azuis parecidos, tamanhos soltos) como decisões a tomar, não como
|
|
35
|
+
correção automática.
|
|
36
|
+
|
|
37
|
+
## As peças
|
|
38
|
+
|
|
39
|
+
- **Agent:** `tools:` com edição só nas pastas de interface e de tokens; `model: sonnet`. System prompt com os
|
|
40
|
+
tokens, os componentes base, as restrições e o bloco de comentários obrigatório (ver `agent.md`).
|
|
41
|
+
- **Skill:** passo a passo para criar ou alterar tela conforme o sistema — usar token, reaproveitar componente,
|
|
42
|
+
conferir estados e contraste —, com exemplos de entrada e saída e quando não usar.
|
|
43
|
+
- **Rule escopada** nos arquivos de interface, em até 30 linhas: nada de cor, tamanho ou espaçamento literal fora
|
|
44
|
+
dos tokens; componente existente antes de componente novo; foco visível e contraste AA.
|
|
45
|
+
- **Mapa:** acrescente o domínio de interface e o agent em `.claude/rules/harness-projeto.md`.
|
|
46
|
+
|
|
47
|
+
## Contra-exemplos
|
|
48
|
+
|
|
49
|
+
- Copiar logotipo, imagem ou fonte licenciada da referência externa: ela orienta estilo, não fornece assets.
|
|
50
|
+
- Tokens soltos no prompt do agent, sem arquivo de tokens no código: o sistema diverge na primeira tela.
|
|
51
|
+
- Rule que repete o design system inteiro: ela aponta para os tokens, não os transcreve.
|
|
52
|
+
|
|
53
|
+
## Depois de gravar
|
|
54
|
+
|
|
55
|
+
Mostre onde ficaram os tokens e como o agent de frontend delega ao de design system. Para conferir telas existentes
|
|
56
|
+
contra o sistema, sugira `/auditar-ui`.
|
|
@@ -0,0 +1,95 @@
|
|
|
1
|
+
# Referência — hook
|
|
2
|
+
|
|
3
|
+
Cria hooks por agent em `.claude/hooks/<agent>/` sobre a biblioteca comum do harness. A biblioteca já cuida do
|
|
4
|
+
protocolo do Claude Code, dos **modos** (`aviso`, `bloqueio`, `desligado`), da **falha aberta** e do **registro no
|
|
5
|
+
rastro** de eventos.
|
|
6
|
+
|
|
7
|
+
## Pré-checagem (somente leitura)
|
|
8
|
+
|
|
9
|
+
1. Liste os agents em `.claude/agents/` e leia o `PLAN.md` do trabalho em curso em `docs/trabalhos/<id>/`, se houver.
|
|
10
|
+
2. Confira a biblioteca em `.claude/hooks/ai-harness/lib/hook.mjs`. O `init` a copia junto com os hooks do harness.
|
|
11
|
+
Faltando, `npx @fontdata/ai-harness init --claude-md manter` mostra o que instalaria (`--yes` aplica). Com o
|
|
12
|
+
plugin habilitado, o `init` não copia os hooks para o projeto, para não rodarem duas vezes: leve essa pendência
|
|
13
|
+
ao GATE e decida com o usuário antes de escrever o hook.
|
|
14
|
+
3. Leia `.ai-harness/config.json` e `.claude/settings.json` para saber os modos e os hooks já registrados.
|
|
15
|
+
4. **Hooks existentes não são recriados nem removidos:** `.claude/hooks/ai-harness/` (`lembrete`,
|
|
16
|
+
`segredo-no-commit`, `proteger-contratos`, `task-so-fecha-verde`, `sem-jargao`) e
|
|
17
|
+
`.claude/hooks/comentarios/check.mjs` (catraca em `baseline.json`).
|
|
18
|
+
|
|
19
|
+
## Desenhar por tipo de agent
|
|
20
|
+
|
|
21
|
+
**Antes de qualquer hook, restrinja o agent pelo `tools:` do frontmatter.** É a garantia estrutural; o hook é
|
|
22
|
+
proteção a mais, não substituto.
|
|
23
|
+
|
|
24
|
+
| Tipo de agent | `tools:` sugerido | Hooks que fazem sentido |
|
|
25
|
+
|---|---|---|
|
|
26
|
+
| Somente leitura (revisor, auditor) | `Read, Grep, Glob` (+ `Bash` só para rodar testes) | `PreToolUse` em `Bash` que avisa sobre comando que altera estado (`git commit`, `rm`, `npm install`) |
|
|
27
|
+
| Implementação (backend, frontend, parser) | as ferramentas de edição do seu escopo | `PreToolUse` que avisa sobre arquivo fora do escopo; `PostToolUse` que lembra de rodar os testes do módulo |
|
|
28
|
+
| Testes | `Read, Grep, Glob, Bash` | `PreToolUse` em `Bash` que avisa sobre comando que não é de teste |
|
|
29
|
+
|
|
30
|
+
Para cada hook: nome (`kebab-case`), evento, `matcher`, o que verifica e a mensagem de motivo.
|
|
31
|
+
**Todo hook novo nasce em `aviso`**; hook de segurança pode nascer em `bloqueio` se o usuário pedir.
|
|
32
|
+
|
|
33
|
+
## Script
|
|
34
|
+
|
|
35
|
+
`.claude/hooks/<agent>/<hook>.mjs`:
|
|
36
|
+
|
|
37
|
+
```js
|
|
38
|
+
// @ts-check
|
|
39
|
+
import { runHook } from '../ai-harness/lib/hook.mjs';
|
|
40
|
+
|
|
41
|
+
await runHook('<hook>', (input) => {
|
|
42
|
+
const command = String(input.tool_input?.command ?? '');
|
|
43
|
+
if (!/\bgit\s+push\b/.test(command)) return null;
|
|
44
|
+
return { motivo: 'o agent de backend não publica código; deixe o push para o fechamento do trabalho.' };
|
|
45
|
+
});
|
|
46
|
+
```
|
|
47
|
+
|
|
48
|
+
- O `runHook` **lê o JSON do evento pela stdin**: `tool_name`, `tool_input`, `prompt`, `cwd`, `hook_event_name`.
|
|
49
|
+
Nunca leia `$1`, `process.argv` ou variável de ambiente para obter o comando — a guarda fica cega.
|
|
50
|
+
- O handler devolve `null` quando está tudo certo, ou `{ motivo }` para avisar ou bloquear.
|
|
51
|
+
- **Não** use `exit 2` nem escreva JSON à mão: o `runHook` responde no formato de cada evento e modo, falha aberta
|
|
52
|
+
em erro interno e registra `hook_aviso` ou `hook_bloqueio` no rastro.
|
|
53
|
+
- Só Node e módulos nativos: nada de `pwsh`, `php`, `python` ou `jq`, que podem não existir na outra máquina.
|
|
54
|
+
- Caminho sempre relativo ao projeto, pelo `root` que o `runHook` entrega; nunca caminho absoluto.
|
|
55
|
+
|
|
56
|
+
Registro no frontmatter do agent, com `$CLAUDE_PROJECT_DIR`:
|
|
57
|
+
|
|
58
|
+
```yaml
|
|
59
|
+
hooks:
|
|
60
|
+
PreToolUse:
|
|
61
|
+
- matcher: Bash
|
|
62
|
+
hooks:
|
|
63
|
+
- type: command
|
|
64
|
+
command: node "$CLAUDE_PROJECT_DIR/.claude/hooks/<agent>/<hook>.mjs"
|
|
65
|
+
```
|
|
66
|
+
|
|
67
|
+
Modo em `.ai-harness/config.json` (merge): `{ "hooks": { "<hook>": "aviso" } }`.
|
|
68
|
+
|
|
69
|
+
## GATE
|
|
70
|
+
|
|
71
|
+
Mostre a tabela (agent, hook, evento, matcher, o que verifica, modo inicial), o `tools:` proposto para cada agent e
|
|
72
|
+
os caminhos exatos a criar ou alterar.
|
|
73
|
+
|
|
74
|
+
## Depois de gravar
|
|
75
|
+
|
|
76
|
+
1. Demonstre cada hook sem abrir uma sessão:
|
|
77
|
+
|
|
78
|
+
```bash
|
|
79
|
+
echo '{"hook_event_name":"PreToolUse","tool_name":"Bash","tool_input":{"command":"git push"},"cwd":"'"$PWD"'"}' \
|
|
80
|
+
| CLAUDE_PROJECT_DIR="$PWD" node .claude/hooks/<agent>/<hook>.mjs
|
|
81
|
+
```
|
|
82
|
+
|
|
83
|
+
A saída mostra o aviso ou o bloqueio exatamente como o Claude Code o recebe. Sem saída, a guarda não disparou.
|
|
84
|
+
2. Rode `npx @fontdata/ai-harness doctor` e confirme que nenhum hook aponta para script inexistente.
|
|
85
|
+
|
|
86
|
+
## Promoção de aviso para bloqueio
|
|
87
|
+
|
|
88
|
+
Só quando o rastro mostra avisos pertinentes e nenhum falso positivo:
|
|
89
|
+
|
|
90
|
+
```bash
|
|
91
|
+
grep -h '"nome":"<hook>"' docs/eventos/*.jsonl
|
|
92
|
+
```
|
|
93
|
+
|
|
94
|
+
Se o usuário decidir promover, troque o modo em `.ai-harness/config.json` e registre a decisão no `DECISOES.md` do
|
|
95
|
+
trabalho em curso.
|
|
@@ -0,0 +1,67 @@
|
|
|
1
|
+
# Referência — rule
|
|
2
|
+
|
|
3
|
+
Cria rules em `.claude/rules/` que complementam o system prompt dos agents.
|
|
4
|
+
|
|
5
|
+
`.claude/rules/` é **carregada automaticamente** em toda sessão, com subpastas: não importe rule no `CLAUDE.md`
|
|
6
|
+
nem no agent. Rule com `paths:` no frontmatter só entra quando o trabalho toca arquivos que casam com o padrão.
|
|
7
|
+
|
|
8
|
+
## O que já vem com o harness
|
|
9
|
+
|
|
10
|
+
- **`comentarios.md`** — padrão de comentários, instalado e atualizado pelo `init` e pelo `update`, junto com o hook
|
|
11
|
+
e a catraca do legado. **Não crie rule de comentários** nem repita regra de comentário em outra rule: duas fontes
|
|
12
|
+
divergentes é pior que uma. Se ela faltar, rode `npx @fontdata/ai-harness update`.
|
|
13
|
+
- **`harness-projeto.md`** — convenção lida pelos fluxos e pelos agents `qa` e `revisor-testes`: mapa de agents,
|
|
14
|
+
portões extras, suíte de testes e verificação manual. O que é disso vai lá, não numa rule paralela.
|
|
15
|
+
|
|
16
|
+
## Leitura
|
|
17
|
+
|
|
18
|
+
Os agents em `.claude/agents/`, o `CLAUDE.md`, o `SPEC.md` e as rules que já existem.
|
|
19
|
+
|
|
20
|
+
## O que criar
|
|
21
|
+
|
|
22
|
+
1. **Rules incondicionais**, que valem para qualquer agent:
|
|
23
|
+
- `seguranca.md` — o que nunca fazer;
|
|
24
|
+
- `convencoes-gerais.md` — padrões universais do projeto.
|
|
25
|
+
|
|
26
|
+
2. **Rules escopadas por path**, uma por domínio coberto pelos agents:
|
|
27
|
+
|
|
28
|
+
```markdown
|
|
29
|
+
---
|
|
30
|
+
paths:
|
|
31
|
+
- "apps/api/**/*.ts"
|
|
32
|
+
---
|
|
33
|
+
|
|
34
|
+
# Backend
|
|
35
|
+
```
|
|
36
|
+
|
|
37
|
+
Exemplos: `backend.md` com `backend/**/*.py`, `frontend.md` com `frontend/src/**`, `testes.md` com `tests/**`.
|
|
38
|
+
|
|
39
|
+
3. **Rule de precedência em código legado** (`legado.md`, incondicional), quando o projeto tem código antigo com
|
|
40
|
+
padrões próprios:
|
|
41
|
+
- na área de código legado tocada, vale o **padrão local** do arquivo — nomenclatura, estrutura e estilo de
|
|
42
|
+
tratamento de erro —, mesmo que difira das convenções novas;
|
|
43
|
+
- as convenções novas valem para arquivo novo;
|
|
44
|
+
- não "modernizar" arquivo antigo fora do escopo da task.
|
|
45
|
+
|
|
46
|
+
Identifique as áreas legadas (pastas, extensões como `.pas` e `.dfm`, módulos antigos) e cite-as na rule.
|
|
47
|
+
|
|
48
|
+
4. **Rule que teria evitado um bug**, quando o `/resolver-bug` sugerir: padrão proibido, validação obrigatória ou
|
|
49
|
+
teste exigido.
|
|
50
|
+
|
|
51
|
+
## Cada rule deve
|
|
52
|
+
|
|
53
|
+
- Ser concisa — máximo de 30 linhas.
|
|
54
|
+
- Conter apenas o que o agent não descobriria sozinho lendo o código.
|
|
55
|
+
- Complementar o system prompt do agent, não repetir o que já está lá nem no `CLAUDE.md`.
|
|
56
|
+
- Focar em restrições e padrões específicos do domínio, não em comportamento geral.
|
|
57
|
+
|
|
58
|
+
## Contra-exemplos
|
|
59
|
+
|
|
60
|
+
- "Escreva código limpo e bem testado": genérico, não muda nada.
|
|
61
|
+
- Rule que copia a configuração do linter, que já é aplicada pela ferramenta.
|
|
62
|
+
- Duas rules que dizem coisas diferentes sobre o mesmo assunto.
|
|
63
|
+
- Rule que manda gravar documento fora de `docs/trabalhos/<id>/`.
|
|
64
|
+
|
|
65
|
+
## Depois de gravar
|
|
66
|
+
|
|
67
|
+
Confirme que nenhuma rule nova contradiz outra e, para rule escopada, cite um arquivo real que casa com o `paths:`.
|
|
@@ -0,0 +1,63 @@
|
|
|
1
|
+
# Referência — skill
|
|
2
|
+
|
|
3
|
+
Cria uma skill do projeto em `.claude/skills/<nome>/` para um problema **recorrente** que os agents enfrentam.
|
|
4
|
+
|
|
5
|
+
## Leitura
|
|
6
|
+
|
|
7
|
+
`CLAUDE.md` e `SPEC.md` da raiz, as skills que já existem (do projeto e do harness) e, como evidência de
|
|
8
|
+
recorrência, `DECISOES.md`, `BLOQUEIOS.md` e relatórios em `docs/trabalhos/*/`.
|
|
9
|
+
|
|
10
|
+
## Skill, rule, agent ou hook?
|
|
11
|
+
|
|
12
|
+
| Peça | Serve para | Carregada |
|
|
13
|
+
|---|---|---|
|
|
14
|
+
| Rule | Restrição curta que vale sempre ou num conjunto de paths | Automaticamente |
|
|
15
|
+
| Skill | Procedimento com passos, exemplos e material de apoio | Sob demanda, quando a `description` casa com o pedido |
|
|
16
|
+
| Agent | Papel com ferramentas e contexto próprios | Quando o orquestrador delega |
|
|
17
|
+
| Hook | Garantia que não depende de o modelo lembrar | Em todo evento do matcher |
|
|
18
|
+
|
|
19
|
+
Se a necessidade é "nunca faça X", é rule. Se é "quando precisar de Y, siga estes passos", é skill.
|
|
20
|
+
|
|
21
|
+
## Sugerir antes de criar
|
|
22
|
+
|
|
23
|
+
Apresente opções de skills úteis para este projeto, cada uma com:
|
|
24
|
+
|
|
25
|
+
- o que a skill faria;
|
|
26
|
+
- quando dispararia automaticamente (as palavras e situações que casam com a `description`);
|
|
27
|
+
- que tarefa resolveria sem precisar repetir instruções no prompt;
|
|
28
|
+
- a evidência da recorrência (pedido repetido, achado de review que volta, bloqueio parecido).
|
|
29
|
+
|
|
30
|
+
Espere a escolha do usuário.
|
|
31
|
+
|
|
32
|
+
## Estrutura
|
|
33
|
+
|
|
34
|
+
```
|
|
35
|
+
.claude/skills/<nome>/
|
|
36
|
+
├── SKILL.md # enxuto: quando usar, passos, guardrails
|
|
37
|
+
├── references/ # detalhe lido só quando o passo pede
|
|
38
|
+
└── templates/ # documentos que a skill gera, quando houver
|
|
39
|
+
```
|
|
40
|
+
|
|
41
|
+
A skill deve ter:
|
|
42
|
+
|
|
43
|
+
1. **Frontmatter** com `name` (igual ao nome da pasta, `kebab-case`) e `description` que diz o que faz e quando
|
|
44
|
+
usar, com gatilhos concretos, em até ~250 caracteres; `argument-hint` quando aceitar argumento.
|
|
45
|
+
2. **Instruções claras** baseadas nas convenções do `CLAUDE.md`, sem copiá-lo.
|
|
46
|
+
3. **Exemplos de input e output** esperados.
|
|
47
|
+
4. **Critério de quando NÃO usar** a skill.
|
|
48
|
+
5. **GATE com 🚦** antes de gravar algo relevante, e guardrails no fim.
|
|
49
|
+
|
|
50
|
+
Mantenha o `SKILL.md` curto e leve o detalhe para `references/`, citado no passo em que é necessário.
|
|
51
|
+
|
|
52
|
+
## Contra-exemplos
|
|
53
|
+
|
|
54
|
+
- `description` genérica ("ajuda com o backend"): dispara em tudo ou em nada.
|
|
55
|
+
- Skill que repete um fluxo do harness (`/nova-tarefa`, `/resolver-bug`, `/executar-plan`, `/harness`) ou o texto
|
|
56
|
+
do `CLAUDE.md`.
|
|
57
|
+
- Skill com o mesmo nome de um arquivo em `.claude/commands/`: o comando vence e a skill nunca roda.
|
|
58
|
+
- Skill que grava documento de trabalho fora de `docs/trabalhos/<id>/`.
|
|
59
|
+
|
|
60
|
+
## Depois de gravar
|
|
61
|
+
|
|
62
|
+
Mostre como disparar (`/<nome>` ou por um pedido que casa com a `description`) e sugira testar com um pedido real
|
|
63
|
+
do projeto. Se algum agent deve carregá-la, ajuste o agent com `/evoluir-harness agent`.
|