@fontdata/ai-harness 2.5.0 → 2.6.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.
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "fontdata",
3
- "version": "2.5.0",
3
+ "version": "2.6.0",
4
4
  "description": "Harness de engenharia com IA da Fontdata para Claude Code",
5
5
  "author": { "name": "Fontdata" },
6
6
  "commands": ["./templates/commands"],
package/README.md CHANGED
@@ -109,7 +109,8 @@ O `init` e o `update` gravam em `.claude/settings.json` as permissões que os fl
109
109
  aprovação, inclusive no modo auto do Claude Code:
110
110
 
111
111
  - `permissions.allow`: o rastro, a checagem de conflitos, o `doctor` e a `memoria` do harness; `git add`,
112
- `git commit` e `git push` (o `/git-commit-push`); a abertura de sub-agents (`Agent`); e consultas só de leitura
112
+ `git commit` e `git push` (o `/git-commit-push`); a abertura de sub-agents (`Agent`); as ferramentas `Read`,
113
+ `Grep`, `Glob` e `Skill`; e consultas só de leitura
113
114
  (`git status`, `diff`, `log`, `show`, `blame`, `gh pr view`, `gh pr diff`, `npm outdated`...);
114
115
  - `permissions.deny`: o push forçado (`--force`, `-f`, `--force-with-lease` e refspec com `+`), que vence o `allow`.
115
116
 
@@ -9,6 +9,8 @@ export const CONFLICTS_PERMISSION = 'Bash(npx @fontdata/ai-harness conflitos:*)'
9
9
  export const GIT_PERMISSIONS = ['Bash(git add:*)', 'Bash(git commit:*)', 'Bash(git push:*)'];
10
10
  /** O /executar-plan e as skills de fluxo delegam a sub-agents a cada task e gate. */
11
11
  export const AGENT_PERMISSION = 'Agent';
12
+ /** Leitura e busca de arquivos e a invocação das skills, que todos os fluxos usam o tempo todo. */
13
+ export const TOOL_PERMISSIONS = ['Read', 'Grep', 'Glob', 'Skill'];
12
14
  /**
13
15
  * Comandos só de leitura que as skills, os comandos e os agents rodam. Ficam de fora os que regravam a instalação
14
16
  * (`init`, `update`, `migrar`), os de teste e build, que variam por projeto, e o `npm audit`, cujo prefixo
@@ -32,7 +34,14 @@ export const READ_PERMISSIONS = [
32
34
  'Bash(npm outdated:*)',
33
35
  ];
34
36
  /** Regras de `permissions.allow` que o init e o update gravam para as skills e os agents do harness. */
35
- export const HARNESS_PERMISSIONS = [EVENT_PERMISSION, CONFLICTS_PERMISSION, ...GIT_PERMISSIONS, AGENT_PERMISSION, ...READ_PERMISSIONS];
37
+ export const HARNESS_PERMISSIONS = [
38
+ EVENT_PERMISSION,
39
+ CONFLICTS_PERMISSION,
40
+ ...GIT_PERMISSIONS,
41
+ AGENT_PERMISSION,
42
+ ...TOOL_PERMISSIONS,
43
+ ...READ_PERMISSIONS,
44
+ ];
36
45
  /** O push liberado não vale para reescrever o histórico remoto: `deny` vence o `allow`. */
37
46
  export const HARNESS_DENY = [
38
47
  'Bash(git push --force:*)',
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@fontdata/ai-harness",
3
- "version": "2.5.0",
3
+ "version": "2.6.0",
4
4
  "description": "Harness de engenharia com IA da Fontdata para Claude Code: roda os slash commands direto na pasta do projeto via npx, sem instalar nada — ou instala-os em .claude/commands.",
5
5
  "type": "module",
6
6
  "bin": {
@@ -25,14 +25,33 @@ No repositório atual, execute commit e push conforme o uso abaixo.
25
25
  - tipos aceitos: `feat`, `fix`, `refactor`, `docs`, `chore`, `style`, `test`
26
26
  - corpo detalhado com descrição completa do que foi feito no commit (itens objetivos)
27
27
  - Se o usuário **passou** texto após o comando: use esse texto como mensagem do commit (multilinha permitida).
28
- 3. Execute **imediatamente** (sem etapa de confirmação):
29
- - `git add -A`
28
+ 3. Execute **imediatamente** (sem etapa de confirmação), deixando de fora a configuração do Claude Code:
29
+ - `git add -A -- . ':(exclude,glob).claude/settings*.json' ':(exclude,glob).claude/hooks/**'` — o padrão glob
30
+ cobre `.claude/settings.json` e `.claude/settings.local.json`; com o nome exato, um arquivo que está no
31
+ `.gitignore` faz o `git add` falhar inteiro
32
+ - se algum desses caminhos já estava no stage (`git diff --cached --name-only`), tire-o com
33
+ `git restore --staged -- <caminho>`
30
34
  - `git commit` com a mensagem definida no passo 2 (título + corpo quando aplicável)
31
35
  - `git push`
36
+
37
+ Se as únicas mudanças forem nesses caminhos, não faça commit nem push: vá direto ao passo 4.
32
38
  4. Retorne um resumo final com branch, hash e status do push.
39
+ 5. **Configuração do Claude Code alterada.** Se `git status` mostrou mudança em `.claude/settings.json` ou em
40
+ `.claude/hooks/`, avise que ela ficou fora do commit: no modo auto, o agente versionar as próprias permissões e
41
+ hooks é bloqueado como `[Self-Modification]`, e quem aprova essa mudança é o usuário. Entregue o comando pronto
42
+ para ele rodar com `!` no prompt, que executa como o próprio usuário:
43
+
44
+ ```
45
+ ! git add .claude/settings.json .claude/hooks/ && git commit -m "chore: Atualiza a configuração do Claude Code" && git push
46
+ ```
47
+
48
+ Liste só os caminhos que mudaram. `.claude/settings.local.json` é pessoal e nunca vai para o repositório: se ele
49
+ aparecer no `git status`, sugira incluí-lo no `.gitignore`.
33
50
 
34
51
  ## Guardrails
35
52
 
36
53
  - Se não houver alterações, interrompa com aviso.
37
54
  - Não execute push forçado.
55
+ - Não tente versionar a configuração do Claude Code por outro caminho quando o modo auto bloquear: o passo 5 é
56
+ do usuário.
38
57
  - Em caso de erro, pare e explique o próximo passo recomendado.