@seedgrid/ai-toolkit 0.0.0-stage → 0.3.1
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/LICENSE +21 -0
- package/README.md +162 -2
- package/dist/adapters/claude.js +114 -0
- package/dist/adapters/codex.js +108 -0
- package/dist/adapters/index.js +17 -0
- package/dist/adapters/shared.js +142 -0
- package/dist/adapters/types.js +1 -0
- package/dist/cli.js +209 -0
- package/dist/commands/common.js +98 -0
- package/dist/commands/doctor.js +290 -0
- package/dist/commands/init.js +9 -0
- package/dist/commands/install.js +107 -0
- package/dist/commands/remove.js +54 -0
- package/dist/commands/review.js +127 -0
- package/dist/commands/selfinstall.js +63 -0
- package/dist/commands/status.js +73 -0
- package/dist/commands/update.js +8 -0
- package/dist/commands/validate.js +27 -0
- package/dist/core/apply.js +181 -0
- package/dist/core/blocks.js +64 -0
- package/dist/core/content.js +528 -0
- package/dist/core/env.js +40 -0
- package/dist/core/frontmatter.js +29 -0
- package/dist/core/hash.js +14 -0
- package/dist/core/inspect.js +51 -0
- package/dist/core/lock.js +124 -0
- package/dist/core/paths.js +65 -0
- package/dist/core/plan.js +242 -0
- package/dist/core/tools.js +62 -0
- package/dist/core/types.js +11 -0
- package/dist/core/updates.js +121 -0
- package/docs/arquitetura.md +80 -0
- package/docs/compatibilidade.md +50 -0
- package/docs/formato.md +155 -0
- package/docs/instalacao.md +105 -0
- package/docs/manutencao.md +115 -0
- package/package.json +43 -4
- package/seedgridKB/SeedGrid/Extensions/Catalogo-de-enums.md +161 -0
- package/seedgridKB/SeedGrid/Extensions/Catalogo-de-propriedades.md +971 -0
- package/seedgridKB/SeedGrid/Extensions/Indice.md +63 -0
- package/seedgridKB/SeedGrid/Extensions/ai-pricing/Configuracao.md +124 -0
- package/seedgridKB/SeedGrid/Extensions/ai-pricing/Enums.md +40 -0
- package/seedgridKB/SeedGrid/Extensions/ai-pricing/Exemplos.md +97 -0
- package/seedgridKB/SeedGrid/Extensions/ai-pricing/Visao-geral.md +114 -0
- package/seedgridKB/SeedGrid/Extensions/apikeys/Configuracao-Rust.md +69 -0
- package/seedgridKB/SeedGrid/Extensions/apikeys/Configuracao.md +88 -0
- package/seedgridKB/SeedGrid/Extensions/apikeys/Enums.md +33 -0
- package/seedgridKB/SeedGrid/Extensions/apikeys/Exemplos.md +121 -0
- package/seedgridKB/SeedGrid/Extensions/apikeys/Rust.md +126 -0
- package/seedgridKB/SeedGrid/Extensions/apikeys/Visao-geral.md +111 -0
- package/seedgridKB/SeedGrid/Extensions/audit/Configuracao-Rust.md +93 -0
- package/seedgridKB/SeedGrid/Extensions/audit/Configuracao.md +127 -0
- package/seedgridKB/SeedGrid/Extensions/audit/Enums.md +66 -0
- package/seedgridKB/SeedGrid/Extensions/audit/Exemplos.md +151 -0
- package/seedgridKB/SeedGrid/Extensions/audit/Rust.md +120 -0
- package/seedgridKB/SeedGrid/Extensions/audit/Visao-geral.md +114 -0
- package/seedgridKB/SeedGrid/Extensions/backup/Configuracao-Rust.md +136 -0
- package/seedgridKB/SeedGrid/Extensions/backup/Configuracao.md +319 -0
- package/seedgridKB/SeedGrid/Extensions/backup/Enums.md +131 -0
- package/seedgridKB/SeedGrid/Extensions/backup/Exemplos.md +210 -0
- package/seedgridKB/SeedGrid/Extensions/backup/Rust.md +135 -0
- package/seedgridKB/SeedGrid/Extensions/backup/Visao-geral.md +150 -0
- package/seedgridKB/SeedGrid/Extensions/billing/Configuracao-Rust.md +86 -0
- package/seedgridKB/SeedGrid/Extensions/billing/Configuracao.md +243 -0
- package/seedgridKB/SeedGrid/Extensions/billing/Enums.md +165 -0
- package/seedgridKB/SeedGrid/Extensions/billing/Exemplos.md +205 -0
- package/seedgridKB/SeedGrid/Extensions/billing/Rust.md +109 -0
- package/seedgridKB/SeedGrid/Extensions/billing/Visao-geral.md +181 -0
- package/seedgridKB/SeedGrid/Extensions/broker/Configuracao-Rust.md +40 -0
- package/seedgridKB/SeedGrid/Extensions/broker/Visao-geral.md +114 -0
- package/seedgridKB/SeedGrid/Extensions/cache/Configuracao-Rust.md +73 -0
- package/seedgridKB/SeedGrid/Extensions/cache/Configuracao.md +112 -0
- package/seedgridKB/SeedGrid/Extensions/cache/Enums.md +36 -0
- package/seedgridKB/SeedGrid/Extensions/cache/Exemplos.md +149 -0
- package/seedgridKB/SeedGrid/Extensions/cache/Rust.md +81 -0
- package/seedgridKB/SeedGrid/Extensions/cache/Visao-geral.md +90 -0
- package/seedgridKB/SeedGrid/Extensions/commons/Configuracao.md +107 -0
- package/seedgridKB/SeedGrid/Extensions/commons/Enums.md +105 -0
- package/seedgridKB/SeedGrid/Extensions/commons/Exemplos.md +141 -0
- package/seedgridKB/SeedGrid/Extensions/commons/Visao-geral.md +99 -0
- package/seedgridKB/SeedGrid/Extensions/exchange/Configuracao.md +122 -0
- package/seedgridKB/SeedGrid/Extensions/exchange/Enums.md +29 -0
- package/seedgridKB/SeedGrid/Extensions/exchange/Exemplos.md +82 -0
- package/seedgridKB/SeedGrid/Extensions/exchange/Visao-geral.md +118 -0
- package/seedgridKB/SeedGrid/Extensions/filemanagement/Configuracao-Rust.md +110 -0
- package/seedgridKB/SeedGrid/Extensions/filemanagement/Configuracao.md +157 -0
- package/seedgridKB/SeedGrid/Extensions/filemanagement/Exemplos.md +157 -0
- package/seedgridKB/SeedGrid/Extensions/filemanagement/Rust.md +70 -0
- package/seedgridKB/SeedGrid/Extensions/filemanagement/Visao-geral.md +88 -0
- package/seedgridKB/SeedGrid/Extensions/login-tenancy/Configuracao-Rust.md +124 -0
- package/seedgridKB/SeedGrid/Extensions/login-tenancy/Configuracao.md +195 -0
- package/seedgridKB/SeedGrid/Extensions/login-tenancy/Enums.md +71 -0
- package/seedgridKB/SeedGrid/Extensions/login-tenancy/Exemplos.md +149 -0
- package/seedgridKB/SeedGrid/Extensions/login-tenancy/Rust.md +139 -0
- package/seedgridKB/SeedGrid/Extensions/login-tenancy/Visao-geral.md +130 -0
- package/seedgridKB/SeedGrid/Extensions/notification/Configuracao.md +141 -0
- package/seedgridKB/SeedGrid/Extensions/notification/Enums.md +52 -0
- package/seedgridKB/SeedGrid/Extensions/notification/Exemplos.md +141 -0
- package/seedgridKB/SeedGrid/Extensions/notification/Visao-geral.md +113 -0
- package/seedgridKB/SeedGrid/Extensions/privacy/Configuracao-Rust.md +67 -0
- package/seedgridKB/SeedGrid/Extensions/privacy/Configuracao.md +94 -0
- package/seedgridKB/SeedGrid/Extensions/privacy/Enums.md +79 -0
- package/seedgridKB/SeedGrid/Extensions/privacy/Exemplos.md +172 -0
- package/seedgridKB/SeedGrid/Extensions/privacy/Rust.md +107 -0
- package/seedgridKB/SeedGrid/Extensions/privacy/Visao-geral.md +90 -0
- package/seedgridKB/SeedGrid/Extensions/realtime/Configuracao-Rust.md +72 -0
- package/seedgridKB/SeedGrid/Extensions/realtime/Configuracao.md +104 -0
- package/seedgridKB/SeedGrid/Extensions/realtime/Exemplos.md +104 -0
- package/seedgridKB/SeedGrid/Extensions/realtime/Rust.md +69 -0
- package/seedgridKB/SeedGrid/Extensions/realtime/Visao-geral.md +105 -0
- package/seedgridKB/SeedGrid/Extensions/resilience/Configuracao-Rust.md +68 -0
- package/seedgridKB/SeedGrid/Extensions/resilience/Configuracao.md +186 -0
- package/seedgridKB/SeedGrid/Extensions/resilience/Enums.md +96 -0
- package/seedgridKB/SeedGrid/Extensions/resilience/Exemplos.md +229 -0
- package/seedgridKB/SeedGrid/Extensions/resilience/Rust.md +80 -0
- package/seedgridKB/SeedGrid/Extensions/resilience/Visao-geral.md +112 -0
- package/seedgridKB/SeedGrid/Extensions/runtime/Configuracao-Rust.md +90 -0
- package/seedgridKB/SeedGrid/Extensions/runtime/Visao-geral.md +114 -0
- package/seedgridKB/SeedGrid/Extensions/security/Configuracao-Rust.md +327 -0
- package/seedgridKB/SeedGrid/Extensions/security/Configuracao.md +510 -0
- package/seedgridKB/SeedGrid/Extensions/security/Enums.md +95 -0
- package/seedgridKB/SeedGrid/Extensions/security/Exemplos.md +218 -0
- package/seedgridKB/SeedGrid/Extensions/security/Rust.md +203 -0
- package/seedgridKB/SeedGrid/Extensions/security/Visao-geral.md +131 -0
- package/seedgridKB/SeedGrid/Extensions/subdomain-tenancy/Configuracao-Rust.md +188 -0
- package/seedgridKB/SeedGrid/Extensions/subdomain-tenancy/Configuracao.md +345 -0
- package/seedgridKB/SeedGrid/Extensions/subdomain-tenancy/Enums.md +117 -0
- package/seedgridKB/SeedGrid/Extensions/subdomain-tenancy/Exemplos.md +205 -0
- package/seedgridKB/SeedGrid/Extensions/subdomain-tenancy/Rust.md +161 -0
- package/seedgridKB/SeedGrid/Extensions/subdomain-tenancy/Visao-geral.md +142 -0
- package/seedgridKB/SeedGrid/Extensions/whatsapp/Configuracao-Rust.md +75 -0
- package/seedgridKB/SeedGrid/Extensions/whatsapp/Configuracao.md +152 -0
- package/seedgridKB/SeedGrid/Extensions/whatsapp/Enums.md +198 -0
- package/seedgridKB/SeedGrid/Extensions/whatsapp/Exemplos.md +173 -0
- package/seedgridKB/SeedGrid/Extensions/whatsapp/Rust.md +83 -0
- package/seedgridKB/SeedGrid/Extensions/whatsapp/Visao-geral.md +99 -0
- package/seedgridKB/SeedGrid/Mapa-dos-repositorios.md +112 -0
- package/seedgridKB/SeedGrid/SeedGrid-components/Indice.md +323 -0
- package/seedgridKB/SeedGrid/SeedGrid-components/buttons/API.md +257 -0
- package/seedgridKB/SeedGrid/SeedGrid-components/buttons/Exemplos.md +307 -0
- package/seedgridKB/SeedGrid/SeedGrid-components/buttons/Visao-geral.md +51 -0
- package/seedgridKB/SeedGrid/SeedGrid-components/datatable/API.md +174 -0
- package/seedgridKB/SeedGrid/SeedGrid-components/datatable/Exemplos.md +236 -0
- package/seedgridKB/SeedGrid/SeedGrid-components/datatable/Visao-geral.md +76 -0
- package/seedgridKB/SeedGrid/SeedGrid-components/digits/API.md +339 -0
- package/seedgridKB/SeedGrid/SeedGrid-components/digits/Exemplos.md +311 -0
- package/seedgridKB/SeedGrid/SeedGrid-components/digits/Visao-geral.md +57 -0
- package/seedgridKB/SeedGrid/SeedGrid-components/editor/API.md +125 -0
- package/seedgridKB/SeedGrid/SeedGrid-components/editor/Exemplos.md +116 -0
- package/seedgridKB/SeedGrid/SeedGrid-components/editor/Visao-geral.md +86 -0
- package/seedgridKB/SeedGrid/SeedGrid-components/feedback-e-exibicao/API.md +490 -0
- package/seedgridKB/SeedGrid/SeedGrid-components/feedback-e-exibicao/Exemplos.md +544 -0
- package/seedgridKB/SeedGrid/SeedGrid-components/feedback-e-exibicao/Visao-geral.md +69 -0
- package/seedgridKB/SeedGrid/SeedGrid-components/fundamentos/API.md +113 -0
- package/seedgridKB/SeedGrid/SeedGrid-components/fundamentos/Exemplos.md +159 -0
- package/seedgridKB/SeedGrid/SeedGrid-components/fundamentos/Visao-geral.md +92 -0
- package/seedgridKB/SeedGrid/SeedGrid-components/gadgets/API.md +516 -0
- package/seedgridKB/SeedGrid/SeedGrid-components/gadgets/Exemplos.md +629 -0
- package/seedgridKB/SeedGrid/SeedGrid-components/gadgets/Visao-geral.md +80 -0
- package/seedgridKB/SeedGrid/SeedGrid-components/inputs-selecao/API.md +615 -0
- package/seedgridKB/SeedGrid/SeedGrid-components/inputs-selecao/Exemplos.md +384 -0
- package/seedgridKB/SeedGrid/SeedGrid-components/inputs-selecao/Visao-geral.md +111 -0
- package/seedgridKB/SeedGrid/SeedGrid-components/inputs-texto/API.md +661 -0
- package/seedgridKB/SeedGrid/SeedGrid-components/inputs-texto/Exemplos.md +312 -0
- package/seedgridKB/SeedGrid/SeedGrid-components/inputs-texto/Visao-geral.md +123 -0
- package/seedgridKB/SeedGrid/SeedGrid-components/layout/API.md +1090 -0
- package/seedgridKB/SeedGrid/SeedGrid-components/layout/Exemplos.md +1172 -0
- package/seedgridKB/SeedGrid/SeedGrid-components/layout/Visao-geral.md +98 -0
- package/seedgridKB/SeedGrid/SeedGrid-components/modulos/Visao-geral.md +98 -0
- package/seedgridKB/SeedGrid/SeedGrid-components/modulos/fe-apikeys.md +118 -0
- package/seedgridKB/SeedGrid/SeedGrid-components/modulos/fe-audit.md +88 -0
- package/seedgridKB/SeedGrid/SeedGrid-components/modulos/fe-backup.md +131 -0
- package/seedgridKB/SeedGrid/SeedGrid-components/modulos/fe-billing-platform.md +132 -0
- package/seedgridKB/SeedGrid/SeedGrid-components/modulos/fe-billing-user.md +120 -0
- package/seedgridKB/SeedGrid/SeedGrid-components/modulos/fe-login-tenancy.md +119 -0
- package/seedgridKB/SeedGrid/SeedGrid-components/modulos/fe-security.md +427 -0
- package/seedgridKB/SeedGrid/SeedGrid-components/modulos/fe-self-enter.md +104 -0
- package/seedgridKB/SeedGrid/SeedGrid-components/modulos/fe-subdomain-tenancy.md +110 -0
- package/seedgridKB/SeedGrid/SeedGrid-components/navegacao-e-overlay/API.md +490 -0
- package/seedgridKB/SeedGrid/SeedGrid-components/navegacao-e-overlay/Exemplos.md +561 -0
- package/seedgridKB/SeedGrid/SeedGrid-components/navegacao-e-overlay/Visao-geral.md +82 -0
- package/seedgridKB/SeedGrid/SeedGrid-components/pacotes/Visao-geral.md +68 -0
- package/seedgridKB/SeedGrid/SeedGrid-components/pacotes/fe-commons.md +61 -0
- package/seedgridKB/SeedGrid/SeedGrid-components/pacotes/fe-core.md +140 -0
- package/seedgridKB/SeedGrid/SeedGrid-components/pacotes/fe-playground.md +112 -0
- package/seedgridKB/SeedGrid/SeedGrid-components/pacotes/fe-theme.md +97 -0
- package/seedgridKB/SeedGrid/SeedGrid-components/providers/API.md +177 -0
- package/seedgridKB/SeedGrid/SeedGrid-components/providers/Exemplos.md +332 -0
- package/seedgridKB/SeedGrid/SeedGrid-components/providers/Visao-geral.md +106 -0
- package/seedgridKB/SeedGrid/SeedGrid-components/showcase.md +70 -0
- package/seedgridKB/SeedGrid/Toolkit/agents/arquiteto.md +53 -0
- package/seedgridKB/SeedGrid/Toolkit/agents/backend-java.md +45 -0
- package/seedgridKB/SeedGrid/Toolkit/agents/backend-rust.md +43 -0
- package/seedgridKB/SeedGrid/Toolkit/agents/frontend-react.md +41 -0
- package/seedgridKB/SeedGrid/Toolkit/agents/qa.md +44 -0
- package/seedgridKB/SeedGrid/Toolkit/agents/revisor.md +40 -0
- package/seedgridKB/SeedGrid/Toolkit/references/fluxo-de-trabalho.md +78 -0
- package/seedgridKB/SeedGrid/Toolkit/references/glossario.md +15 -0
- package/seedgridKB/SeedGrid/Toolkit/references/modos-shared-native.md +27 -0
- package/seedgridKB/SeedGrid/Toolkit/rules/backend-java-seedgrid.md +54 -0
- package/seedgridKB/SeedGrid/Toolkit/rules/coordenacao.md +39 -0
- package/seedgridKB/SeedGrid/Toolkit/rules/formato-entrega.md +29 -0
- package/seedgridKB/SeedGrid/Toolkit/rules/frontend-seedgrid.md +47 -0
- package/seedgridKB/SeedGrid/Toolkit/rules/personalizacao-local.md +22 -0
- package/seedgridKB/SeedGrid/Toolkit/skills/planejar-mudanca/SKILL.md +38 -0
- package/seedgridKB/SeedGrid/Toolkit/skills/revisar-codigo/SKILL.md +33 -0
- package/seedgridKB/SeedGrid/Toolkit/skills/revisar-codigo/references/checklist.md +25 -0
- package/seedgridKB/SeedGrid/Toolkit/skills/seedgrid-backend-crud/SKILL.md +29 -0
- package/seedgridKB/SeedGrid/Toolkit/skills/seedgrid-bump/SKILL.md +26 -0
- package/seedgridKB/SeedGrid/Toolkit/skills/seedgrid-crud/SKILL.md +221 -0
- package/seedgridKB/SeedGrid/Toolkit/skills/seedgrid-crud/agents/openai.yaml +4 -0
- package/seedgridKB/SeedGrid/Toolkit/skills/seedgrid-crud/references/checklist.md +31 -0
- package/seedgridKB/SeedGrid/Toolkit/skills/seedgrid-crud/references/patterns.md +185 -0
- package/seedgridKB/SeedGrid/Toolkit/skills/seedgrid-crud/references/routing.md +66 -0
- package/seedgridKB/SeedGrid/Toolkit/skills/seedgrid-new-screen/SKILL.md +56 -0
- package/seedgridKB/SeedGrid/Toolkit/skills/seedgrid-new-screen/agents/openai.yaml +4 -0
- package/seedgridKB/SeedGrid/Toolkit/skills/seedgrid-new-screen/references/checklist.md +32 -0
- package/seedgridKB/SeedGrid/Toolkit/skills/seedgrid-new-screen/references/steps.md +114 -0
- package/seedgridKB/SeedGrid/Toolkit/skills/seedgrid-review/SKILL.md +61 -0
- package/seedgridKB/SeedGrid/Toolkit/skills/validar-mudanca/SKILL.md +29 -0
- package/seedgridKB/SeedGrid/Toolkit/templates/decisao-arquitetura.md +29 -0
- package/seedgridKB/SeedGrid/Toolkit/templates/especificacao-tarefa.md +32 -0
- package/seedgridKB/SeedGrid/Toolkit/templates/relatorio-validacao.md +30 -0
- package/seedgridKB/SeedGrid/Versoes.md +64 -0
- package/seedgridKB/SeedGrid/Visao-geral.md +35 -0
- package/seedgridKB/manifest.json +142 -0
|
@@ -0,0 +1,80 @@
|
|
|
1
|
+
# Arquitetura
|
|
2
|
+
|
|
3
|
+
## Visão geral
|
|
4
|
+
|
|
5
|
+
```text
|
|
6
|
+
seedgridKB/ (vault) ──loadContent──► ContentBundle (validado)
|
|
7
|
+
│
|
|
8
|
+
adapters/ (shared, claude, codex)
|
|
9
|
+
▼
|
|
10
|
+
DesiredState (arquivos + blocos)
|
|
11
|
+
│
|
|
12
|
+
lock + disco ──planInstall/planRemove──► Plan (ops, conflitos)
|
|
13
|
+
│ sem conflitos e sem --dry-run
|
|
14
|
+
▼
|
|
15
|
+
applyPlan (backup → escrita → rollback)
|
|
16
|
+
```
|
|
17
|
+
|
|
18
|
+
Cada etapa é pura até `applyPlan`: carregar, validar e planejar só leem o disco. Por isso `--dry-run` é garantidamente sem escrita.
|
|
19
|
+
|
|
20
|
+
## Módulos
|
|
21
|
+
|
|
22
|
+
| Caminho | Responsabilidade |
|
|
23
|
+
| --- | --- |
|
|
24
|
+
| `src/cli.ts` | Parsing de argumentos (`node:util.parseArgs`), saída texto/JSON, códigos de saída |
|
|
25
|
+
| `src/commands/` | `init`, `update` (fluxo comum em `install.ts`), `status`, `doctor`, `remove`, `validate`, `review` (única que chama o modelo: executa a skill `seedgrid-review` via `claude -p` ou `codex exec`, somente leitura) |
|
|
26
|
+
| `src/core/content.ts` | Leitura do manifesto (vault) e validação de schema, nomes, IDs, arquivos, links, referências e da KB (wikilinks, caminhos locais, segredos) |
|
|
27
|
+
| `src/core/plan.ts` | Comparação entre estado desejado, lock e disco; classifica cada item e detecta conflitos |
|
|
28
|
+
| `src/core/apply.ts` | Revalidação, backup, escrita via temporário + renomeação, rollback, limpeza de pastas vazias |
|
|
29
|
+
| `src/core/blocks.ts` | Localização, inserção, substituição e remoção do bloco gerenciado |
|
|
30
|
+
| `src/core/lock.ts` | Schema, leitura defensiva e serialização do lock |
|
|
31
|
+
| `src/core/paths.ts` | Caminhos relativos seguros e verificação de links simbólicos |
|
|
32
|
+
| `src/core/inspect.ts` | Comparação disco × lock para `status` e `doctor` |
|
|
33
|
+
| `src/core/tools.ts` | Detecção de versões instaladas e sondas locais |
|
|
34
|
+
| `src/adapters/shared.ts` | Arquivos `.ai/`, índices gerados (papéis, rules, skills, templates e references) e bloco do `AGENTS.md` |
|
|
35
|
+
| `src/adapters/claude.ts` | Skills em `.claude/skills/`, bloco do `CLAUDE.md`, subagentes `.claude/agents/*.md` |
|
|
36
|
+
| `src/adapters/codex.ts` | Skills em `.agents/skills/`, agentes `.codex/agents/*.toml` |
|
|
37
|
+
|
|
38
|
+
Dependências de execução: `yaml` (frontmatter) e `smol-toml` (validação de TOML). Sem dependências nativas.
|
|
39
|
+
|
|
40
|
+
## Classificação do plano
|
|
41
|
+
|
|
42
|
+
Para cada arquivo desejado:
|
|
43
|
+
|
|
44
|
+
| Disco | Lock | Resultado |
|
|
45
|
+
| --- | --- | --- |
|
|
46
|
+
| ausente | qualquer | criar |
|
|
47
|
+
| igual ao desejado | presente / ausente | sem mudança / adotar |
|
|
48
|
+
| igual ao hash do lock | presente | atualizar |
|
|
49
|
+
| diferente de ambos | presente | **conflito** (modificado localmente) |
|
|
50
|
+
| diferente do desejado | ausente | **conflito** (arquivo não gerenciado) |
|
|
51
|
+
|
|
52
|
+
Arquivos no lock que saíram do estado desejado (troca de target/modo, item removido do conteúdo) são apagados se intactos; se modificados, geram conflito.
|
|
53
|
+
|
|
54
|
+
Blocos seguem a mesma lógica sobre o **conteúdo interno** dos marcadores. Marcadores duplicados ou incompletos geram conflito. Se o usuário removeu o bloco inteiro, ele é reinserido no final com aviso.
|
|
55
|
+
|
|
56
|
+
Hashes são SHA-256 do texto com finais de linha normalizados para LF, para que checkouts com `core.autocrlf` não pareçam customizações.
|
|
57
|
+
|
|
58
|
+
## Escrita
|
|
59
|
+
|
|
60
|
+
1. **Revalidação**: o hash de cada alvo é relido; se mudou desde o planejamento, nada é escrito.
|
|
61
|
+
2. **Backup**: arquivos existentes que serão modificados ou apagados são copiados para `.ai/backups/<operação>/`, com `operation.json`.
|
|
62
|
+
3. **Execução**: cada escrita vai para `<arquivo>.seedgrid-tmp-<operação>` e é renomeada sobre o destino (atômico por arquivo onde o sistema suporta). O lock é sempre o último passo.
|
|
63
|
+
4. **Rollback**: em falha, os passos executados são desfeitos em ordem reversa (restauração do backup ou remoção do arquivo criado). Falhas no rollback são relatadas individualmente.
|
|
64
|
+
|
|
65
|
+
Não há atomicidade global entre vários arquivos.
|
|
66
|
+
|
|
67
|
+
## Lock
|
|
68
|
+
|
|
69
|
+
`.ai/toolkit-lock.json` registra `cliVersion`, `contentVersion`, `contentSchemaVersion`, `targets`, `mode`, `source` (`bundled` ou `local`, com caminho apenas se a fonte estiver dentro do projeto), a última operação, e listas de arquivos (`path`, `sha256`, `component`) e blocos (`file`, `sha256`, `createdFile`). Só há caminhos relativos com `/`.
|
|
70
|
+
|
|
71
|
+
Ao ler, o lock é validado como dado não confiável: caminhos devem ser relativos, sem `..`, e estar sob `.ai/` (exceto `.ai/local/` e `.ai/backups/`), `.claude/skills/`, `.claude/agents/`, `.agents/skills/` ou `.codex/agents/`. Blocos só podem estar em `AGENTS.md` ou `CLAUDE.md`.
|
|
72
|
+
|
|
73
|
+
O lock só é reescrito quando seu conteúdo muda (a última operação e a versão do CLI não contam), o que mantém a reinstalação sem alterações.
|
|
74
|
+
|
|
75
|
+
## Shared x native nos adaptadores
|
|
76
|
+
|
|
77
|
+
O modo shared é o núcleo; native apenas acrescenta arquivos gerados a partir dos mesmos papéis:
|
|
78
|
+
|
|
79
|
+
- Claude Code: frontmatter `name`, `description` e `tools` (traduzido de `capabilities`: `read-files` → Read, Grep, Glob; `edit-files` → Edit, Write; `run-checks` → Bash; `Skill` quando há `preferred_skills`). Sem `capabilities`, o subagente herda as ferramentas da sessão.
|
|
80
|
+
- Codex: `name`, `description` e `developer_instructions`. `capabilities` não são traduzidas (veja [compatibilidade](compatibilidade.md)). `.codex/config.toml` nunca é alterado.
|
|
@@ -0,0 +1,50 @@
|
|
|
1
|
+
# Compatibilidade e limitações
|
|
2
|
+
|
|
3
|
+
Validação feita em 2026-10-14 (KB incluída em 2026-10-14), Windows 11, Node.js 22.16.0.
|
|
4
|
+
|
|
5
|
+
## Versões testadas
|
|
6
|
+
|
|
7
|
+
| Ferramenta | Versão | shared | native |
|
|
8
|
+
| --- | --- | --- | --- |
|
|
9
|
+
| Claude Code | 2.1.299 | validado em sessão real | validado em sessão real |
|
|
10
|
+
| Codex CLI | 0.160.1 | validado em sessão real e com `doctor --probe` | validado em sessão real, **somente com projeto confiável** |
|
|
11
|
+
|
|
12
|
+
As listas de versões validadas ficam em `src/adapters/claude.ts` e `src/adapters/codex.ts` (`validatedVersions`). O `doctor` avisa quando a versão instalada não consta da lista. Repita o smoke test a cada nova versão das ferramentas antes de ampliar a lista.
|
|
13
|
+
|
|
14
|
+
## Caminhos validados
|
|
15
|
+
|
|
16
|
+
| Recurso | Claude Code | Codex |
|
|
17
|
+
| --- | --- | --- |
|
|
18
|
+
| Instruções | `CLAUDE.md` com `@AGENTS.md` | `AGENTS.md` |
|
|
19
|
+
| Skills de projeto | `.claude/skills/<nome>/SKILL.md` | `.agents/skills/<nome>/SKILL.md` |
|
|
20
|
+
| Agentes nativos | `.claude/agents/<id>.md` (frontmatter `name`, `description`, `tools`) | `.codex/agents/<id>.toml` (`name`, `description`, `developer_instructions`) |
|
|
21
|
+
|
|
22
|
+
Fontes consultadas: [Claude Code skills](https://code.claude.com/docs/en/skills), [Claude Code subagentes](https://code.claude.com/docs/en/sub-agents), [Codex skills](https://developers.openai.com/codex/skills), [Codex subagentes](https://developers.openai.com/codex/multi-agent) (as duas últimas redirecionam para learn.chatgpt.com), [Agent Skills](https://agentskills.io/specification).
|
|
23
|
+
|
|
24
|
+
## Resultado do smoke test (pasta descartável `proj teste ção`, modo native)
|
|
25
|
+
|
|
26
|
+
- **Claude Code 2.1.299** (`claude -p`): listou as 3 skills de projeto, os 5 subagentes (`arquiteto`, `backend-java`, `frontend-react`, `revisor`, `validador`) e citou o bloco do `AGENTS.md` recebido via `@AGENTS.md` no `CLAUDE.md`.
|
|
27
|
+
- **Codex 0.160.1** (`codex exec`, sandbox somente leitura):
|
|
28
|
+
- sem confiança no projeto: listou as 3 skills e o bloco do `AGENTS.md`; **nenhum** agente personalizado;
|
|
29
|
+
- com `-c "projects={'<caminho>'={trust_level=\"trusted\"}}"`: listou os 5 agentes como `agent_type` e um subagente `revisor` iniciado respondeu.
|
|
30
|
+
- `codex debug prompt-input` (usado por `doctor --probe`) confirmou `AGENTS.md` e skills sem chamar o modelo.
|
|
31
|
+
|
|
32
|
+
- **Base de conhecimento** (Claude Code 2.1.299, `claude -p`, projeto vazio com `.ai/brain/` instalada): perguntado pelo valor padrão, tipo e classe de `seedgrid.app.ai-pricing.timezone`, respondeu `America/Sao_Paulo`, `String`, `AiPricingScheduler`, citando as notas consultadas; perguntado por uma propriedade inexistente, respondeu que não a encontrou e se recusou a inventar o padrão.
|
|
33
|
+
|
|
34
|
+
- **`seedgrid-ai review`** (Claude Code 2.1.300 via `claude -p`; Codex 0.160.1 via `codex exec --sandbox read-only`): em projeto descartável com violações plantadas (telefone e CPF em `SgInputText`, `<input>` cru, `window.confirm`, `@Inject` em atributo, `RuntimeException`, pacote no singular), as duas ferramentas executaram a skill `seedgrid-review`, apontaram essas violações com arquivo e linha e fecharam com o bloco `seedgrid-review-json`; o CLI saiu com código 3. Tempos: cerca de 27 s (Claude Code) e 80 s (Codex). Os itens de julgamento divergiram entre as duas ferramentas.
|
|
35
|
+
|
|
36
|
+
Nenhuma tarefa publicou ou modificou serviços externos.
|
|
37
|
+
|
|
38
|
+
## Limitações conhecidas
|
|
39
|
+
|
|
40
|
+
- **Descoberta real**: o `doctor` valida sintaxe e consistência. Só o Codex oferece uma sonda local (`doctor --probe`, para instruções e skills; agentes não aparecem nessa saída). Para o Claude Code e para os agentes do Codex, a confirmação exige abrir uma sessão (veja o smoke test em [manutencao.md](manutencao.md#smoke-test-manual)).
|
|
41
|
+
- **`doctor --probe`** inicia o Codex com a configuração do usuário (por exemplo, servidores MCP configurados podem ser iniciados), embora não chame o modelo.
|
|
42
|
+
- **Codex native exige projeto confiável**: em projeto não confiável, `.codex/agents/` é ignorado silenciosamente e o modo shared continua valendo.
|
|
43
|
+
- **capabilities no Codex não são traduzidas**: a leitura de arquivos no Codex usa o shell, e `sandbox_mode`/`approval_policy` em arquivos de agente não sobrescrevem a sessão principal. Os limites do papel ficam apenas como instrução.
|
|
44
|
+
- **`tools` no Claude Code** limita as ferramentas do subagente, mas não substitui permissões nem sandbox.
|
|
45
|
+
- **Recarga**: o Claude Code observa `.claude/skills/` e `.claude/agents/` apenas se a pasta existia no início da sessão; o Codex detecta skills novas, mas mudanças de configuração exigem reinício. Recomende sempre uma nova sessão.
|
|
46
|
+
- **Escopo de descoberta**: ambas as ferramentas procuram a partir da pasta atual até a raiz do repositório. Sessões abertas fora do projeto não veem a instalação.
|
|
47
|
+
- **Outros produtos**: Claude Desktop, Cowork, Claude web e ChatGPT usam mecanismos próprios. Escrever arquivos no projeto **não** registra skills ou agentes nesses produtos.
|
|
48
|
+
- **Atomicidade**: cada arquivo é escrito por renomeação; não há transação entre vários arquivos. Em falha, há rollback com relato de qualquer item não restaurado.
|
|
49
|
+
- **Instalação global** (`~/.claude`, `~/.agents`, `~/.codex`) não é suportada no MVP.
|
|
50
|
+
- **Seleção e delegação** dependem do modelo seguir as instruções; não são garantias do instalador.
|
package/docs/formato.md
ADDED
|
@@ -0,0 +1,155 @@
|
|
|
1
|
+
# Formato do conteúdo (autoria)
|
|
2
|
+
|
|
3
|
+
Todo conteúdo distribuído vive no **vault Obsidian `seedgridKB/`** (abra essa pasta no Obsidian) e é descrito por `seedgridKB/manifest.json`. Valide sempre com:
|
|
4
|
+
|
|
5
|
+
```bash
|
|
6
|
+
npm run build
|
|
7
|
+
node dist/cli.js validate # conteúdo empacotado
|
|
8
|
+
node dist/cli.js validate --source ./seedgridKB # o vault em edição
|
|
9
|
+
```
|
|
10
|
+
|
|
11
|
+
A validação acumula todos os problemas e nada é instalado a partir de conteúdo inválido.
|
|
12
|
+
|
|
13
|
+
## O vault
|
|
14
|
+
|
|
15
|
+
```text
|
|
16
|
+
seedgridKB/
|
|
17
|
+
├── manifest.json ← lista o que é distribuído (não aparece no Obsidian)
|
|
18
|
+
├── AGENTS.md, CLAUDE.md ← instruções para quem MANTÉM o vault; não são distribuídos
|
|
19
|
+
├── Bem-vindo.md, .obsidian/ ← não distribuídos
|
|
20
|
+
└── SeedGrid/
|
|
21
|
+
├── Visao-geral.md, Extensions/, SeedGrid-components/, ... ← base de conhecimento (KB)
|
|
22
|
+
└── Toolkit/ ← agents/, rules/, templates/, references/, skills/
|
|
23
|
+
```
|
|
24
|
+
|
|
25
|
+
| Origem no vault | Destino no projeto |
|
|
26
|
+
| --- | --- |
|
|
27
|
+
| `SeedGrid/**` (exceto `Toolkit/`) | `.ai/brain/SeedGrid/**` (somente leitura) |
|
|
28
|
+
| `SeedGrid/Toolkit/agents`, `rules`, `templates`, `references` | `.ai/agents`, `.ai/rules`, `.ai/templates`, `.ai/references` |
|
|
29
|
+
| `SeedGrid/Toolkit/skills/<nome>/` | `.claude/skills/<nome>/` e `.agents/skills/<nome>/` |
|
|
30
|
+
|
|
31
|
+
O `AGENTS.md` do vault orienta quem **mantém** a documentação (atualizar notas, não inventar comportamento) e é diferente do bloco que o CLI grava nos projetos, que orienta quem **consome** a KB. Por isso o do vault nunca é distribuído.
|
|
32
|
+
|
|
33
|
+
### Por que `Toolkit/` e não `.ai/`
|
|
34
|
+
|
|
35
|
+
O Obsidian ignora pastas que começam com ponto: notas dentro de uma pasta `.ai/` ficariam invisíveis no explorador, na busca e no grafo. O instalador faz a tradução para `.ai/` nos projetos.
|
|
36
|
+
|
|
37
|
+
### Regras de escrita
|
|
38
|
+
|
|
39
|
+
- **Notas da KB** (`SeedGrid/` fora de `Toolkit/`): wikilinks do Obsidian com **caminho completo a partir da raiz do vault** (`[[SeedGrid/Extensions/security/Configuracao|texto]]`). Nos projetos, o caminho continua válido a partir de `.ai/brain/`.
|
|
40
|
+
- **Conteúdo do Toolkit** (agents, rules, skills...): links **Markdown relativos** (`[texto](../templates/x.md)`), porque skills precisam funcionar fora do Obsidian. Em *Configurações → Arquivos e links*, mantenha "Usar [[Wikilinks]]" desligado ao editar esses arquivos.
|
|
41
|
+
- Pastas de skill precisam manter o nome igual ao campo `name` do `SKILL.md`; o Obsidian atualiza links ao renomear, mas não o `name`.
|
|
42
|
+
|
|
43
|
+
### Validações da KB
|
|
44
|
+
|
|
45
|
+
Falham o `validate`, o CI e a publicação:
|
|
46
|
+
|
|
47
|
+
- wikilink sem destino na base instalada (links dentro de `` `código` `` e de blocos de código são ignorados; `\|` em tabelas é entendido);
|
|
48
|
+
- caminho local de máquina (`C:\Users\...`, `D:\empreendedorismo\...`, `/c/Users/...`);
|
|
49
|
+
- possível segredo (chaves Stripe `sk_live_`/`whsec_`, AWS `AKIA...`, tokens do GitHub, corpo de chave privada). Use placeholders como `<SEGREDO:nome>`;
|
|
50
|
+
- arquivo que não seja `.md` dentro de `SeedGrid/` (imagens ainda não são suportadas);
|
|
51
|
+
- `entrypoints` do manifesto apontando para nota inexistente.
|
|
52
|
+
|
|
53
|
+
Arquivos e pastas que começam com ponto são ignorados.
|
|
54
|
+
|
|
55
|
+
## Manifesto
|
|
56
|
+
|
|
57
|
+
```json
|
|
58
|
+
{
|
|
59
|
+
"schemaVersion": 2,
|
|
60
|
+
"contentVersion": "0.3.1",
|
|
61
|
+
"toolkitBase": "SeedGrid/Toolkit",
|
|
62
|
+
"components": [
|
|
63
|
+
{ "id": "agents", "type": "agents", "files": ["agents/arquiteto.md"] },
|
|
64
|
+
{ "id": "rules", "type": "rules", "files": ["rules/coordenacao.md"] },
|
|
65
|
+
{ "id": "templates", "type": "templates", "files": ["templates/especificacao-tarefa.md"] },
|
|
66
|
+
{ "id": "references", "type": "references", "files": ["references/glossario.md"] },
|
|
67
|
+
{
|
|
68
|
+
"id": "skill:planejar-mudanca",
|
|
69
|
+
"type": "skill",
|
|
70
|
+
"name": "planejar-mudanca",
|
|
71
|
+
"files": [
|
|
72
|
+
"SKILL.md",
|
|
73
|
+
{ "path": "assets/especificacao-tarefa.md", "from": "templates/especificacao-tarefa.md" }
|
|
74
|
+
]
|
|
75
|
+
},
|
|
76
|
+
{
|
|
77
|
+
"id": "brain",
|
|
78
|
+
"type": "brain",
|
|
79
|
+
"base": "SeedGrid",
|
|
80
|
+
"entrypoints": ["Visao-geral.md", "Extensions/Catalogo-de-propriedades.md"]
|
|
81
|
+
}
|
|
82
|
+
]
|
|
83
|
+
}
|
|
84
|
+
```
|
|
85
|
+
|
|
86
|
+
| Campo | Regra |
|
|
87
|
+
| --- | --- |
|
|
88
|
+
| `schemaVersion` | `2` (versão do formato do manifesto) |
|
|
89
|
+
| `contentVersion` | semver; deve ser **igual** à versão do pacote (`package.json`); aumente a cada mudança de conteúdo |
|
|
90
|
+
| `toolkitBase` | pasta do vault onde ficam `agents/`, `rules/`, `templates/`, `references/` e `skills/` (aqui, `SeedGrid/Toolkit`) |
|
|
91
|
+
| `components[].id` | único; para skills, `skill:<name>` |
|
|
92
|
+
| `components[].type` | `agents`, `rules`, `templates`, `references`, `skill` ou `brain` |
|
|
93
|
+
| `files` (tipos compartilhados) | caminhos relativos a `toolkitBase`, dentro da pasta do tipo; instalados em `.ai/<caminho>` |
|
|
94
|
+
| `files` (skill) | caminhos relativos a `<toolkitBase>/skills/<name>/`; ou `{ "path", "from" }` para copiar um arquivo de outro lugar do toolkit sem duplicar a autoria |
|
|
95
|
+
| `brain.base` | pasta do vault cujas notas `.md` formam a KB (todas, recursivamente); instaladas em `.ai/brain/<base>/` |
|
|
96
|
+
| `brain.exclude` | (opcional) caminhos relativos a `base` a deixar de fora; terminar em `/` exclui uma pasta. `toolkitBase` dentro de `base` é excluído automaticamente |
|
|
97
|
+
| `brain.entrypoints` | notas (relativas a `base`) que o bloco do `AGENTS.md` indica como ponto de partida; precisam existir |
|
|
98
|
+
|
|
99
|
+
Só pode haver um componente `brain`. Ele é opcional: sem ele, o bloco do `AGENTS.md` não menciona a KB.
|
|
100
|
+
|
|
101
|
+
Regras verificadas: caminhos relativos sem `..`, sem links simbólicos e em UTF-8; todo arquivo das pastas do toolkit deve constar no manifesto; IDs e nomes únicos; links Markdown relativos devem apontar para arquivos existentes no layout instalado.
|
|
102
|
+
|
|
103
|
+
Não há sistema de dependências nem perfis no MVP.
|
|
104
|
+
|
|
105
|
+
## Papéis (`SeedGrid/Toolkit/agents/<id>.md`)
|
|
106
|
+
|
|
107
|
+
Schema próprio do toolkit, em frontmatter YAML:
|
|
108
|
+
|
|
109
|
+
```yaml
|
|
110
|
+
---
|
|
111
|
+
id: backend-java
|
|
112
|
+
description: Implementa APIs Java e persistência quando a tarefa altera o backend.
|
|
113
|
+
capabilities: [read-files, edit-files, run-checks]
|
|
114
|
+
preferred_skills: [validar-mudanca]
|
|
115
|
+
---
|
|
116
|
+
```
|
|
117
|
+
|
|
118
|
+
| Campo | Obrigatório | Regra |
|
|
119
|
+
| --- | --- | --- |
|
|
120
|
+
| `id` | sim | minúsculas, números e hífens (até 64); igual ao nome do arquivo |
|
|
121
|
+
| `description` | sim | até 300 caracteres; vai para o catálogo — diga **quando** usar |
|
|
122
|
+
| `capabilities` | não | lista de `read-files`, `edit-files`, `run-checks` (intenções portáveis) |
|
|
123
|
+
| `preferred_skills` | não | nomes de skills existentes no manifesto |
|
|
124
|
+
|
|
125
|
+
Outros campos são rejeitados. Em especial, **não fixe modelos** (`model`) no conteúdo compartilhado.
|
|
126
|
+
|
|
127
|
+
O corpo deve ter as seções `## Objetivo`, `## Quando usar`, `## Entradas necessárias`, `## Responsabilidades`, `## Limites` e `## Formato da entrega`. Restrições escritas no corpo são instruções, não mecanismos de segurança; não afirme que uma instrução impede tecnicamente uma ação.
|
|
128
|
+
|
|
129
|
+
`agents/index.md` é **gerado** a partir do frontmatter e não pode ser escrito à mão.
|
|
130
|
+
|
|
131
|
+
## Skills (`SeedGrid/Toolkit/skills/<name>/`)
|
|
132
|
+
|
|
133
|
+
Padrão aberto [Agent Skills](https://agentskills.io/specification):
|
|
134
|
+
|
|
135
|
+
- `SKILL.md` obrigatório, com frontmatter na primeira linha.
|
|
136
|
+
- `name`: 1 a 64 caracteres, `[a-z0-9-]`, sem hífen no início/fim nem `--`, igual ao nome da pasta.
|
|
137
|
+
- `description`: 1 a 1024 caracteres, dizendo o que faz **e quando usar**.
|
|
138
|
+
- Campos aceitos: `name`, `description`, `license`, `compatibility`, `metadata` (mapa texto→texto), `allowed-tools`. Extensões específicas de ferramenta (como `context`, `paths`, `disable-model-invocation` do Claude Code ou `agents/openai.yaml` do Codex) são rejeitadas no conteúdo compartilhado; se forem necessárias, devem ser implementadas no adaptador.
|
|
139
|
+
- Recursos opcionais em `scripts/`, `references/` e `assets/`, referenciados por caminhos relativos a partir do `SKILL.md`. Cada skill deve ser autocontida.
|
|
140
|
+
- Extensão opcional do Codex: `agents/openai.yaml` (nome de exibição, descrição curta, prompt padrão). É copiado para os dois destinos; o Claude Code o ignora. Liste-o em `files` como qualquer outro arquivo.
|
|
141
|
+
- Mantenha o `SKILL.md` curto (menos de 500 linhas); detalhes vão para `references/`.
|
|
142
|
+
|
|
143
|
+
Scripts de skills nunca são executados pelo instalador.
|
|
144
|
+
|
|
145
|
+
## Regras, templates e referências
|
|
146
|
+
|
|
147
|
+
- `rules/`: instruções de coordenação lidas pela sessão principal. Links relativos entre arquivos `.ai/` são permitidos (por exemplo, `../agents/index.md`).
|
|
148
|
+
- `templates/`: modelos distribuídos. Produtos de tarefas reais (planos, ADRs, relatórios) pertencem a cada projeto e **não** voltam para o toolkit automaticamente.
|
|
149
|
+
- `references/`: conhecimento estático.
|
|
150
|
+
|
|
151
|
+
Cada arquivo de `rules/`, `templates/` e `references/` precisa de frontmatter com `description` (até 300 caracteres, dizendo o que é e **quando** usar; coloque entre aspas se tiver `:`). É ela que vai para o `index.md` da pasta, gerado na instalação. `index.md` é nome reservado em `agents/`, `rules/`, `templates/` e `references/` e não pode constar no manifesto.
|
|
152
|
+
|
|
153
|
+
## Blocos gerenciados
|
|
154
|
+
|
|
155
|
+
O texto dos blocos de `AGENTS.md` e `CLAUDE.md` é gerado pelos adaptadores (`src/adapters/shared.ts` e `src/adapters/claude.ts`), não pelo manifesto. Mantenha-os curtos: eles apontam para `.ai/`, não repetem o conteúdo.
|
|
@@ -0,0 +1,105 @@
|
|
|
1
|
+
# Instalação em projetos
|
|
2
|
+
|
|
3
|
+
Os exemplos usam o comando `seedgrid-ai`. Para tê-lo na máquina: `npx @seedgrid/ai-toolkit@latest install` (executa `npm install -g`, uma vez; repita para atualizar o comando). Sem instalar, troque `seedgrid-ai` por `npx @seedgrid/ai-toolkit`; em desenvolvimento do toolkit, por `node <pasta-do-toolkit>/dist/cli.js`.
|
|
4
|
+
|
|
5
|
+
## Primeira instalação
|
|
6
|
+
|
|
7
|
+
```bash
|
|
8
|
+
cd /caminho/do/projeto
|
|
9
|
+
seedgrid-ai init --dry-run # revise o plano
|
|
10
|
+
seedgrid-ai init --target both --mode shared
|
|
11
|
+
seedgrid-ai doctor
|
|
12
|
+
```
|
|
13
|
+
|
|
14
|
+
Depois, abra uma **nova sessão** do Claude Code ou do Codex na pasta do projeto.
|
|
15
|
+
|
|
16
|
+
Versione no Git: `.ai/` (inclusive `.ai/brain/`, cerca de 2 MB de Markdown; exceto `.ai/backups/`, que já se auto-ignora), `.claude/skills/`, `.agents/skills/`, os agentes nativos (se usados), `AGENTS.md`, `CLAUDE.md` e `.ai/toolkit-lock.json`. Assim toda a equipe recebe a mesma versão.
|
|
17
|
+
|
|
18
|
+
## A base de conhecimento (`.ai/brain/`)
|
|
19
|
+
|
|
20
|
+
Toda instalação traz as notas de documentação das extensions e dos componentes SeedGrid em `.ai/brain/SeedGrid/`. O bloco do `AGENTS.md` manda a IA consultá-las pelos índices antes de usar ou configurar qualquer extension ou componente, e responder "não encontrei" em vez de inventar. A pasta é gerenciada: edições locais geram conflito no `update`. Anotações do projeto vão em `.ai/local/`.
|
|
21
|
+
|
|
22
|
+
As notas indicam, no frontmatter, o `commit` e a data (`analisado-em`) do código que descrevem. Se o projeto usa uma versão diferente das extensions, a IA é instruída a confirmar no código, no jar ou no pacote e a avisar.
|
|
23
|
+
|
|
24
|
+
## Escolhendo target e modo
|
|
25
|
+
|
|
26
|
+
- `--target claude`: instala skills só para o Claude Code e cria o bloco do `CLAUDE.md`. O `AGENTS.md` sempre recebe o bloco, porque é a fonte comum das instruções.
|
|
27
|
+
- `--target codex`: instala skills em `.agents/skills/`; não cria `CLAUDE.md`.
|
|
28
|
+
- `--mode native`: também gera subagentes nativos. No Codex, marque o projeto como confiável (o Codex pergunta ao abrir o projeto, ou configure `[projects.'<caminho>'] trust_level = "trusted"` em `~/.codex/config.toml`).
|
|
29
|
+
|
|
30
|
+
`init` repetido sem opções reaproveita as opções do lock. Com opções diferentes, reconfigura a instalação: por exemplo, `init --mode shared` numa instalação native apaga os agentes nativos intactos.
|
|
31
|
+
|
|
32
|
+
## Personalizando
|
|
33
|
+
|
|
34
|
+
Não edite arquivos gerenciados. Use `.ai/local/` (veja `.ai/rules/personalizacao-local.md` no projeto):
|
|
35
|
+
|
|
36
|
+
- `.ai/local/projeto.md`: stack, comandos de build e teste, convenções.
|
|
37
|
+
- `.ai/local/fluxos.md`: fluxos obrigatórios.
|
|
38
|
+
- `.ai/local/papeis/<id>.md`: complementos a um papel.
|
|
39
|
+
|
|
40
|
+
Texto fora dos marcadores em `AGENTS.md` e `CLAUDE.md` é seu e é preservado em todas as operações.
|
|
41
|
+
|
|
42
|
+
## Atualizando
|
|
43
|
+
|
|
44
|
+
```bash
|
|
45
|
+
seedgrid-ai status # mostra se o CLI traz conteúdo mais novo
|
|
46
|
+
seedgrid-ai update --dry-run
|
|
47
|
+
seedgrid-ai update
|
|
48
|
+
```
|
|
49
|
+
|
|
50
|
+
`update` aplica o conteúdo empacotado no CLI **em execução** (ou `--source`). O jeito mais simples de sempre pegar o conteúdo mais recente é `npx @seedgrid/ai-toolkit@latest update`.
|
|
51
|
+
|
|
52
|
+
### Aviso de versão nova
|
|
53
|
+
|
|
54
|
+
`init`, `update`, `status` e `doctor` consultam o npm (somente leitura) para saber se existe uma versão publicada mais nova que o CLI em execução:
|
|
55
|
+
|
|
56
|
+
- **Em terminal interativo**, `init`/`update` perguntam `Usar a X.Y.Z neste update? [Y/n]` e `status` pergunta `Atualizar este projeto agora? [Y/n]`. Com "Y", o comando é repassado para `npx @seedgrid/ai-toolkit@X.Y.Z ...` (versão exata). Com "n", segue com o CLI atual.
|
|
57
|
+
- **Fora do terminal** (pipes, scripts, `--json`), só aparece um aviso com o comando a rodar; nunca há pergunta nem download.
|
|
58
|
+
- Com `CI` definido, `--source`, `--no-update-check` ou `SEEDGRID_AI_NO_UPDATE_CHECK=1`, não há consulta.
|
|
59
|
+
- A consulta usa `npm view` (respeita registry, proxy e `.npmrc`), fica em cache por 12 h em `~/.cache/seedgrid-ai/update-check.json` e, se falhar (sem rede, pacote inexistente), é ignorada em silêncio.
|
|
60
|
+
|
|
61
|
+
A versão nova planeja de novo e continua abortando em conflitos: aceitar a atualização nunca sobrescreve customizações.
|
|
62
|
+
|
|
63
|
+
## Conflitos
|
|
64
|
+
|
|
65
|
+
Exemplo:
|
|
66
|
+
|
|
67
|
+
```text
|
|
68
|
+
Conflitos (1):
|
|
69
|
+
! .ai/rules/coordenacao.md: modificado localmente desde a última instalação
|
|
70
|
+
|
|
71
|
+
Operação abortada: nada foi alterado.
|
|
72
|
+
```
|
|
73
|
+
|
|
74
|
+
Opções:
|
|
75
|
+
|
|
76
|
+
1. Mover a personalização para `.ai/local/` e restaurar o arquivo original (`git checkout -- <arquivo>` ou cópia do backup).
|
|
77
|
+
2. Se o arquivo preexistente não era do toolkit, renomeá-lo ou removê-lo após conferir o conteúdo.
|
|
78
|
+
3. Para blocos editados, devolver o interior dos marcadores ao texto original e levar as mudanças para fora deles.
|
|
79
|
+
|
|
80
|
+
## Removendo
|
|
81
|
+
|
|
82
|
+
```bash
|
|
83
|
+
seedgrid-ai remove --dry-run
|
|
84
|
+
seedgrid-ai remove
|
|
85
|
+
```
|
|
86
|
+
|
|
87
|
+
Remove arquivos gerenciados intactos, os blocos intactos (e `CLAUDE.md`/`AGENTS.md` se o toolkit os criou e ficaram vazios) e o lock. Mantém `.ai/local/`, `.ai/backups/` e qualquer arquivo de terceiros. Pastas só são apagadas se ficarem vazias.
|
|
88
|
+
|
|
89
|
+
## Recuperação
|
|
90
|
+
|
|
91
|
+
Cada operação que altera ou apaga arquivos existentes cria `.ai/backups/<operação>/` com:
|
|
92
|
+
|
|
93
|
+
- cópias dos arquivos, nos mesmos caminhos relativos ao projeto;
|
|
94
|
+
- `operation.json` com o tipo de operação e a lista de arquivos.
|
|
95
|
+
|
|
96
|
+
Para restaurar manualmente, copie de volta para a raiz do projeto os arquivos listados em `operation.json` (não copie o próprio `operation.json`). Exemplo com Git Bash, Linux ou macOS:
|
|
97
|
+
|
|
98
|
+
```bash
|
|
99
|
+
B=.ai/backups/20261014T103812Z-22cd26
|
|
100
|
+
(cd "$B" && find . -type f ! -name operation.json) | while read -r f; do cp "$B/$f" "$f"; done
|
|
101
|
+
```
|
|
102
|
+
|
|
103
|
+
O comando restaura também `.ai/toolkit-lock.json` quando a operação o alterou, mantendo lock e arquivos coerentes. Em seguida, rode `seedgrid-ai status`. Apague `.ai/backups/` quando não precisar mais.
|
|
104
|
+
|
|
105
|
+
Se a mensagem disser "Rollback INCOMPLETO", os arquivos listados não puderam ser restaurados automaticamente: use o backup indicado.
|
|
@@ -0,0 +1,115 @@
|
|
|
1
|
+
# Manutenção
|
|
2
|
+
|
|
3
|
+
## Ciclo de desenvolvimento
|
|
4
|
+
|
|
5
|
+
```bash
|
|
6
|
+
npm install
|
|
7
|
+
npm run build # src/ -> dist/
|
|
8
|
+
npm test # compila src/ + tests/ em build-test/ e roda node:test
|
|
9
|
+
node dist/cli.js validate
|
|
10
|
+
```
|
|
11
|
+
|
|
12
|
+
Os testes criam projetos em diretórios temporários com espaços e Unicode no caminho e cobrem: instalação nova, repetição sem mudanças, atualização de conteúdo intacto, conflito local, preservação de texto antes e depois dos marcadores, dry-run sem escrita, remoção, nomes inválidos, referências quebradas, links para fora do projeto, lock adulterado, CRLF e falha de escrita com rollback. Eles não dependem de Claude Code ou Codex instalados (`SEEDGRID_AI_SKIP_TOOL_DETECTION=1`).
|
|
13
|
+
|
|
14
|
+
Para testar conteúdo em edição sem recompilar o pacote:
|
|
15
|
+
|
|
16
|
+
```bash
|
|
17
|
+
node dist/cli.js init --source ./seedgridKB --project ../projeto-descartavel --dry-run
|
|
18
|
+
```
|
|
19
|
+
|
|
20
|
+
## Versionamento
|
|
21
|
+
|
|
22
|
+
- `package.json` `version`: versão do CLI **e** do pacote distribuído.
|
|
23
|
+
- `content/manifest.json` `contentVersion`: versão do conteúdo. Aumente a cada mudança em `content/`.
|
|
24
|
+
- `schemaVersion` (manifesto) e `lockVersion` (lock) só mudam com alterações de formato; nesse caso, implemente a leitura do formato anterior ou documente a migração.
|
|
25
|
+
|
|
26
|
+
Ao mudar conteúdo, aumente `contentVersion` e, para publicar, a versão do pacote.
|
|
27
|
+
|
|
28
|
+
## Adicionando conteúdo
|
|
29
|
+
|
|
30
|
+
- Papel: crie `seedgridKB/SeedGrid/Toolkit/agents/<id>.md` seguindo [formato.md](formato.md) e adicione-o ao componente `agents` do manifesto.
|
|
31
|
+
- Skill: crie `seedgridKB/SeedGrid/Toolkit/skills/<nome>/SKILL.md` (+ recursos) e um componente `skill:<nome>`.
|
|
32
|
+
- Rode `node dist/cli.js validate` e `npm test`.
|
|
33
|
+
|
|
34
|
+
## Ampliando os adaptadores
|
|
35
|
+
|
|
36
|
+
Antes de gerar qualquer campo novo para uma ferramenta, confira a documentação oficial atual e a versão instalada, faça o smoke test e registre o resultado em [compatibilidade.md](compatibilidade.md). Não acrescente versões a `validatedVersions` sem esse teste.
|
|
37
|
+
|
|
38
|
+
## Smoke test manual
|
|
39
|
+
|
|
40
|
+
Use uma pasta descartável. Nenhum passo publica ou altera serviços externos.
|
|
41
|
+
|
|
42
|
+
```bash
|
|
43
|
+
mkdir "/tmp/proj teste ção" && cd "/tmp/proj teste ção"
|
|
44
|
+
node <toolkit>/dist/cli.js init --target both --mode native
|
|
45
|
+
node <toolkit>/dist/cli.js doctor --probe
|
|
46
|
+
|
|
47
|
+
# Claude Code: skills, subagentes e instruções
|
|
48
|
+
claude -p "Sem executar ferramentas, liste: (1) skills de projeto disponíveis; (2) tipos de subagente personalizados; (3) a primeira linha do bloco SeedGrid AI Toolkit recebido."
|
|
49
|
+
|
|
50
|
+
# Codex: skills e instruções (projeto não confiável)
|
|
51
|
+
codex exec --skip-git-repo-check --ephemeral -s read-only "Sem executar comandos, liste: (1) skills do projeto; (2) agentes personalizados; (3) a primeira linha do bloco SeedGrid AI Toolkit do AGENTS.md."
|
|
52
|
+
|
|
53
|
+
# Codex: agentes nativos (confiança só nesta execução; use o caminho absoluto do Windows/Unix)
|
|
54
|
+
codex exec --skip-git-repo-check --ephemeral -s read-only \
|
|
55
|
+
-c "projects={'<caminho absoluto>'={trust_level=\"trusted\"}}" \
|
|
56
|
+
"Sem comandos de shell: liste os agent_type personalizados aceitos por spawn_agent e inicie um 'revisor' com a tarefa 'Responda apenas: papel revisor ativo'."
|
|
57
|
+
```
|
|
58
|
+
|
|
59
|
+
Resultado esperado: 3 skills, 5 agentes e o bloco citado em cada ferramenta. Registre versões e resultados em [compatibilidade.md](compatibilidade.md).
|
|
60
|
+
|
|
61
|
+
## Empacotamento
|
|
62
|
+
|
|
63
|
+
```bash
|
|
64
|
+
npm pack --dry-run # lista o que entraria no tarball
|
|
65
|
+
npm pack # gera seedgrid-ai-toolkit-<versão>.tgz
|
|
66
|
+
```
|
|
67
|
+
|
|
68
|
+
`prepack` limpa e recompila `dist/`. O campo `files` do `package.json` inclui apenas `dist/`, `docs/`, `README.md`, `LICENSE` e, do vault, `seedgridKB/manifest.json` e `seedgridKB/SeedGrid/`. Confira na listagem que:
|
|
69
|
+
|
|
70
|
+
- `seedgridKB/manifest.json` e todos os arquivos que o manifesto instala estão presentes, e nada além disso do vault (sem `.obsidian/`, `AGENTS.md` e `CLAUDE.md` de manutenção);
|
|
71
|
+
- não há `.ai/backups/`, `build-test/`, `tests/`, `node_modules/`, `.env*`, `*.tgz` nem arquivos `*.seedgrid-tmp-*`.
|
|
72
|
+
|
|
73
|
+
Teste o tarball sem publicar (o `npx <arquivo.tgz>` não infere o binário de um tarball local; use `npm exec --package`):
|
|
74
|
+
|
|
75
|
+
```bash
|
|
76
|
+
cd ../projeto-descartavel
|
|
77
|
+
npm exec --yes --package=../seedgrid-ia/seedgrid-ai-toolkit-0.2.0.tgz -- seedgrid-ai init --dry-run
|
|
78
|
+
```
|
|
79
|
+
|
|
80
|
+
## Publicação no npm
|
|
81
|
+
|
|
82
|
+
O pacote é público: `@seedgrid/ai-toolkit`, no mesmo escopo de `@seedgrid/fe-components`. O comando instalado é `seedgrid-ai`.
|
|
83
|
+
|
|
84
|
+
### Versões
|
|
85
|
+
|
|
86
|
+
O pacote e o conteúdo usam o mesmo número. Para lançar uma versão:
|
|
87
|
+
|
|
88
|
+
1. Atualize `contentVersion` em `content/manifest.json` (se o conteúdo mudou).
|
|
89
|
+
2. `npm version <x.y.z>` atualiza o `package.json`, faz o commit e cria a tag `v<x.y.z>`.
|
|
90
|
+
3. `git push --follow-tags` dispara o workflow de publicação.
|
|
91
|
+
|
|
92
|
+
Versões com sufixo (`0.3.0-beta.1`) são publicadas com a dist-tag `next` e marcadas como pré-release; as demais vão para `latest`.
|
|
93
|
+
|
|
94
|
+
### Workflows
|
|
95
|
+
|
|
96
|
+
- `.github/workflows/ci.yml`: em push para `main` e em pull requests, roda testes, build, `validate` e `scripts/check-pack.mjs` no Ubuntu e no Windows, com Node 22 e 24.
|
|
97
|
+
- `.github/workflows/release.yml`: em tags `v*`, repete as verificações e exige tag igual à versão e `repository` preenchido. Depois publica no npm com provenance e cria a Release do GitHub com o `.tgz` anexado.
|
|
98
|
+
|
|
99
|
+
`node scripts/check-pack.mjs` pode ser rodado localmente: confere se todo arquivo do manifesto está no pacote e se não há fonte, testes, backups, `.env`, `.npmrc` ou `.tgz`.
|
|
100
|
+
|
|
101
|
+
### Primeira publicação (uma vez)
|
|
102
|
+
|
|
103
|
+
1. Crie o repositório no GitHub e adicione ao `package.json`:
|
|
104
|
+
```json
|
|
105
|
+
"repository": { "type": "git", "url": "git+https://github.com/<org>/<repo>.git" },
|
|
106
|
+
"homepage": "https://github.com/<org>/<repo>#readme",
|
|
107
|
+
"bugs": { "url": "https://github.com/<org>/<repo>/issues" }
|
|
108
|
+
```
|
|
109
|
+
A URL precisa ser exatamente a do repositório que publica; o npm a compara ao validar a provenance.
|
|
110
|
+
2. No GitHub, crie o environment `npm` (Settings → Environments). Ele permite exigir aprovação antes de publicar.
|
|
111
|
+
3. Para a primeira versão, o pacote ainda não existe no npm. Escolha uma opção:
|
|
112
|
+
- **Manual:** com uma conta que publica no escopo `@seedgrid`, rode `npm login` e `npm publish --access public` localmente.
|
|
113
|
+
- **Pelo workflow:** crie um token granular de publicação no npmjs.com e salve-o como segredo `NPM_TOKEN` no environment `npm`.
|
|
114
|
+
4. No npmjs.com, abra o pacote → Settings → **Trusted Publisher** e cadastre GitHub Actions: organização, repositório, workflow `release.yml` e environment `npm`.
|
|
115
|
+
5. Apague o segredo `NPM_TOKEN` (se criou). Daqui em diante, o workflow publica via OIDC, sem token guardado.
|
package/package.json
CHANGED
|
@@ -1,6 +1,45 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@seedgrid/ai-toolkit",
|
|
3
|
-
"version": "0.
|
|
4
|
-
"
|
|
5
|
-
"
|
|
6
|
-
|
|
3
|
+
"version": "0.3.1",
|
|
4
|
+
"description": "Instala agentes, skills, regras, templates e referências versionados em projetos locais para Claude Code e Codex.",
|
|
5
|
+
"type": "module",
|
|
6
|
+
"license": "MIT",
|
|
7
|
+
"repository": {
|
|
8
|
+
"type": "git",
|
|
9
|
+
"url": "git+https://github.com/SeedGrid/seedgrid-ai.git"
|
|
10
|
+
},
|
|
11
|
+
"homepage": "https://github.com/SeedGrid/seedgrid-ai#readme",
|
|
12
|
+
"bugs": {
|
|
13
|
+
"url": "https://github.com/SeedGrid/seedgrid-ai/issues"
|
|
14
|
+
},
|
|
15
|
+
"bin": {
|
|
16
|
+
"seedgrid-ai": "dist/cli.js"
|
|
17
|
+
},
|
|
18
|
+
"files": [
|
|
19
|
+
"LICENSE",
|
|
20
|
+
"README.md",
|
|
21
|
+
"dist/",
|
|
22
|
+
"docs/",
|
|
23
|
+
"seedgridKB/manifest.json",
|
|
24
|
+
"seedgridKB/SeedGrid/"
|
|
25
|
+
],
|
|
26
|
+
"engines": {
|
|
27
|
+
"node": ">=22.12"
|
|
28
|
+
},
|
|
29
|
+
"scripts": {
|
|
30
|
+
"build": "tsc -p tsconfig.json",
|
|
31
|
+
"build:test": "tsc -p tsconfig.test.json",
|
|
32
|
+
"test": "npm run build:test && node --test \"build-test/tests/**/*.test.js\"",
|
|
33
|
+
"validate-content": "npm run build && node dist/cli.js validate",
|
|
34
|
+
"prepack": "npm run clean && npm run build",
|
|
35
|
+
"clean": "node -e \"for (const d of ['dist','build-test']) require('node:fs').rmSync(d,{recursive:true,force:true})\""
|
|
36
|
+
},
|
|
37
|
+
"dependencies": {
|
|
38
|
+
"smol-toml": "^1.4.2",
|
|
39
|
+
"yaml": "^2.8.1"
|
|
40
|
+
},
|
|
41
|
+
"devDependencies": {
|
|
42
|
+
"@types/node": "^22.18.0",
|
|
43
|
+
"typescript": "~5.9.3"
|
|
44
|
+
}
|
|
45
|
+
}
|