@pathbit/agentdevkit 0.0.17 → 0.0.19
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/.pbai4devs/commands/sincronizar/COMMAND.md +6 -4
- package/.pbai4devs/scripts/lib/gitignore.mjs +100 -43
- package/.pbai4devs/scripts/sincronizar-agentes/README.md +12 -7
- package/.pbai4devs/scripts/sincronizar-agentes/SCRIPT.mjs +70 -31
- package/.pbai4devs/scripts/sincronizar-agentes/tests/LOCAL_IGNORE.mjs +155 -17
- package/.pbai4devs/scripts/sincronizar-agentes/tests/PRESERVATION.mjs +306 -0
- package/.pbai4devs/scripts/sincronizar-agentes/tests/TEST.mjs +11 -3
- package/.pbai4devs/scripts/verificar-recursos/tests/TEST.mjs +23 -6
- package/.pbai4devs/templates/gitignore/TEMPLATE.md +14 -7
- package/.pbai4devs/templates/gitignore/shared.ignore +1 -0
- package/CHANGELOG.md +11 -0
- package/README.en.md +1 -1
- package/README.es.md +2 -2
- package/docs/guides/cli.md +48 -15
- package/docs/guides/installation.md +49 -23
- package/docs/guides/troubleshooting.md +3 -2
- package/docs/product/design.md +6 -6
- package/docs/specs/README.md +2 -0
- package/docs/specs/client-ignore/SPEC.md +21 -0
- package/docs/specs/safe-synchronization/SPEC.md +21 -0
- package/package.json +1 -1
- package/src/i18n.mjs +10 -0
- package/src/install.mjs +227 -28
|
@@ -375,19 +375,36 @@ function ignoreFixture(t) {
|
|
|
375
375
|
return context;
|
|
376
376
|
}
|
|
377
377
|
|
|
378
|
-
test('fontes
|
|
378
|
+
test('fontes permanecem elegíveis e pastas de clientes aceitam opt-in explícito', t => {
|
|
379
379
|
const { root, file } = ignoreFixture(t);
|
|
380
380
|
const outputs = ['.github/skills/generated/SKILL.md', '.vscode/.gitignore', '.github/.gitignore'];
|
|
381
|
-
|
|
382
|
-
const
|
|
381
|
+
const sources = ['src/new.mjs', 'bin/new.mjs', 'tests/new.test.mjs', 'scripts/release/new.mjs'];
|
|
382
|
+
const clients = ['.github/workflows/own.yml', '.github/ISSUE_TEMPLATE/bug.yml', '.github/skills/human/SKILL.md', '.vscode/settings.json'];
|
|
383
383
|
const generated = [...outputs, '.pbai4devs/catalog.json', '.pbai4devs/skills.json', '.pbai4devs/espelhos.conf', '.pbai4devs/state/agentdevkit.json'];
|
|
384
|
-
for (const path of [...sources, ...generated]) file(path, 'fixture\n');
|
|
384
|
+
for (const path of [...sources, ...clients, ...generated.filter(path => !path.endsWith('/.gitignore'))]) file(path, 'fixture\n');
|
|
385
|
+
file('.github/auth.json', 'credencial local\n');
|
|
386
|
+
file('.vscode/logs/session.log', 'artefato local\n');
|
|
387
|
+
assert.equal(git(root, ['add', '--', clients[0], sources[0]]).status, 0);
|
|
388
|
+
const index = git(root, ['ls-files', '--stage', '-z']).stdout;
|
|
389
|
+
applyLocalIgnore(planLocalIgnore(root, { outputs }));
|
|
385
390
|
assert.deepEqual(ignoredPaths(root, sources), []);
|
|
391
|
+
assert.deepEqual(new Set(ignoredPaths(root, clients)), new Set(clients));
|
|
386
392
|
assert.deepEqual(new Set(ignoredPaths(root, generated)), new Set(generated));
|
|
393
|
+
assert.equal(git(root, ['ls-files', '--stage', '-z']).stdout, index);
|
|
394
|
+
for (const path of clients) assert.equal(readFileSync(join(root, path), 'utf8'), 'fixture\n', path);
|
|
395
|
+
|
|
396
|
+
const exceptions = '!/.github/\n!/.vscode/\n';
|
|
397
|
+
file('.gitignore', exceptions);
|
|
398
|
+
applyLocalIgnore(planLocalIgnore(root, { outputs }));
|
|
399
|
+
assert.equal(readFileSync(join(root, '.gitignore'), 'utf8'), exceptions);
|
|
400
|
+
assert.equal(git(root, ['ls-files', '--stage', '-z']).stdout, index);
|
|
401
|
+
assert.deepEqual(ignoredPaths(root, clients), []);
|
|
402
|
+
const privateFiles = ['.github/auth.json', '.vscode/logs/session.log'];
|
|
403
|
+
assert.deepEqual(new Set(ignoredPaths(root, privateFiles)), new Set(privateFiles));
|
|
387
404
|
assert.equal(git(root, ['add', '--all']).status, 0);
|
|
388
405
|
const tracked = git(root, ['ls-files', '-z']).stdout.split('\0');
|
|
389
|
-
for (const path of sources) assert.ok(tracked.includes(path), path);
|
|
390
|
-
for (const path of generated) assert.equal(tracked.includes(path), false, path);
|
|
406
|
+
for (const path of [...sources, ...clients, ...outputs]) assert.ok(tracked.includes(path), path);
|
|
407
|
+
for (const path of [...generated.filter(path => !outputs.includes(path)), ...privateFiles]) assert.equal(tracked.includes(path), false, path);
|
|
391
408
|
});
|
|
392
409
|
|
|
393
410
|
test('ignores locais cobrem resultados em qualquer caixa sem bloquear fixtures', t => {
|
|
@@ -7,14 +7,21 @@ description: Exemplo opcional de regras de ignore para o projeto.
|
|
|
7
7
|
O `.gitignore` da raiz pertence ao projeto; o kit não o cria nem o altera.
|
|
8
8
|
O projeto pode adotar este exemplo e seus próprios padrões se desejar.
|
|
9
9
|
Regras de artefatos locais vêm de [shared.ignore](shared.ignore) e
|
|
10
|
-
[agents.ignore](agents.ignore). As
|
|
11
|
-
[local.ignore](local.ignore) em `.git/info/exclude`;
|
|
12
|
-
|
|
10
|
+
[agents.ignore](agents.ignore). As pastas dos clientes usam
|
|
11
|
+
[local.ignore](local.ignore) em `.git/info/exclude`; o `.gitignore` deste hub
|
|
12
|
+
não alcança pastas irmãs com `../`. As regras locais não são copiadas pelo Git:
|
|
13
|
+
execute `init` ou `sync` em cada clone com Git inicializado, antes de adicionar
|
|
14
|
+
arquivos. Worktrees do mesmo repositório podem compartilhar as exclusões;
|
|
15
|
+
sem Git, essa proteção fica pendente.
|
|
13
16
|
O sincronizador mantém o bloco `BEGIN AGENT IGNORE` / `END AGENT IGNORE`;
|
|
14
|
-
regras próprias ficam fora dele, com exceções depois do bloco.
|
|
15
|
-
|
|
16
|
-
dos clientes
|
|
17
|
-
|
|
17
|
+
regras próprias ficam fora dele, com exceções depois do bloco. Arquivos já
|
|
18
|
+
rastreados permanecem no índice; o kit não os desindexa automaticamente.
|
|
19
|
+
Pastas dos clientes também podem conter arquivos humanos ainda não rastreados.
|
|
20
|
+
Em especial, `.github` pode conter workflows e formulários do projeto.
|
|
21
|
+
Para permitir o versionamento, acrescente uma exceção literal ao `.gitignore`
|
|
22
|
+
da raiz, como `!/.claude/` ou `!/.github/`. Regras mais profundas continuam
|
|
23
|
+
válidas. Evite exceções amplas como `!/.claude/**`, que podem expor arquivos
|
|
24
|
+
privados e artefatos; `doctor` informa regras conflitantes.
|
|
18
25
|
Ignore binários baixados por local, não por extensão: `.bat`, `.exe` e outros
|
|
19
26
|
arquivos podem ser scripts ou fixtures necessários. Não use regras genéricas
|
|
20
27
|
como `Release/`, `Scripts/` ou `Lib/` que escondam fontes e modelos.
|
package/CHANGELOG.md
CHANGED
|
@@ -4,6 +4,17 @@ description: Alterações verificáveis por versão do AgentDevKit.
|
|
|
4
4
|
|
|
5
5
|
# Changelog
|
|
6
6
|
|
|
7
|
+
## 0.0.19 — 2026-11-13
|
|
8
|
+
|
|
9
|
+
- Pastas dos clientes são ignoradas localmente por padrão, com exceções do projeto.
|
|
10
|
+
- O índice Git e os arquivos já rastreados permanecem intactos.
|
|
11
|
+
|
|
12
|
+
## 0.0.18 — 2026-11-13
|
|
13
|
+
|
|
14
|
+
- Sincronização preserva recursos próprios, colisões e alterações humanas.
|
|
15
|
+
- Limpeza de recursos obsoletos exige comprovação de propriedade.
|
|
16
|
+
- Comandos e efeitos sobre arquivos, índice e backups documentados.
|
|
17
|
+
|
|
7
18
|
## 0.0.17 — 2026-11-13
|
|
8
19
|
|
|
9
20
|
- A pasta compartilhada de estado passa a se chamar `.pbai4devs/state`.
|
package/README.en.md
CHANGED
|
@@ -13,7 +13,7 @@ Organize work with coding agents, from planning to verification. Keep skills,
|
|
|
13
13
|
rules, commands and agent profiles in `.pbai4devs`; the kit generates the
|
|
14
14
|
references each client can discover. Code lives in `src/`, product tests in
|
|
15
15
|
`tests/`, and shared agent resources in `.pbai4devs/`. Generated client
|
|
16
|
-
folders
|
|
16
|
+
folders are ignored locally by default; projects can opt in to tracking them.
|
|
17
17
|
See the [supported clients][clients].
|
|
18
18
|
|
|
19
19
|
## Start in your project
|
package/README.es.md
CHANGED
|
@@ -13,8 +13,8 @@ Organiza el trabajo con agentes de código, desde la planificación hasta la
|
|
|
13
13
|
verificación. Mantén skills, reglas, comandos y perfiles en `.pbai4devs`;
|
|
14
14
|
el kit genera las referencias de cada [cliente compatible][clients].
|
|
15
15
|
El código vive en `src/`, las pruebas del producto en `tests/` y los recursos
|
|
16
|
-
compartidos en `.pbai4devs/`. Las carpetas
|
|
17
|
-
|
|
16
|
+
compartidos en `.pbai4devs/`. Las carpetas de clientes se ignoran localmente
|
|
17
|
+
por defecto; cada proyecto puede elegir versionarlas.
|
|
18
18
|
|
|
19
19
|
## Empezar en tu proyecto
|
|
20
20
|
|
package/docs/guides/cli.md
CHANGED
|
@@ -22,17 +22,17 @@ atendido; lá os comandos de manutenção usam o pacote por `npx`.
|
|
|
22
22
|
|
|
23
23
|
| Comando | Resultado |
|
|
24
24
|
| --- | --- |
|
|
25
|
-
| `init [pasta]` | Instala ou reaplica
|
|
26
|
-
| `update` |
|
|
27
|
-
| `sync` |
|
|
28
|
-
| `sync --check` | Confere
|
|
29
|
-
| `doctor` | Diagnostica
|
|
30
|
-
| `next` |
|
|
25
|
+
| `init [pasta]` | Instala o kit no projeto ou reaplica a instalação. |
|
|
26
|
+
| `update` | Atualiza a fonte usando a versão do pacote executado. |
|
|
27
|
+
| `sync` | Atualiza catálogos e apontamentos a partir da fonte local. |
|
|
28
|
+
| `sync --check` | Confere sincronização sem alterar o projeto. |
|
|
29
|
+
| `doctor` | Diagnostica o kit e indica divergências. |
|
|
30
|
+
| `next` | Mostra a próxima etapa, sem iniciá-la. |
|
|
31
31
|
| `lang [idioma]` | Consulta ou altera o idioma: pt, en ou es. |
|
|
32
|
-
| `agents` |
|
|
33
|
-
| `agents codex,claude` | Altera a seleção
|
|
34
|
-
| `agents all` |
|
|
35
|
-
| `tools <ação>` |
|
|
32
|
+
| `agents` | Mostra os clientes disponíveis e a seleção salva. |
|
|
33
|
+
| `agents codex,claude` | Altera a seleção e os apontamentos necessários. |
|
|
34
|
+
| `agents all` | Seleciona todos os clientes compatíveis. |
|
|
35
|
+
| `tools <ação>` | Consulta, instala, atualiza ou executa ferramentas. |
|
|
36
36
|
| `--help`, `--version` | Ajuda ou versão do pacote. |
|
|
37
37
|
|
|
38
38
|
Sem comando, a CLI executa `init`, que pode criar arquivos. `language` é alias
|
|
@@ -48,16 +48,49 @@ de `lang`; `clients`, de `agents`. O idioma não traduz documentos existentes.
|
|
|
48
48
|
| `--clients <lista>` | Alias de `--agents`. |
|
|
49
49
|
| `--yes`, `-y` | Evita perguntas iniciais; não força conflitos. |
|
|
50
50
|
| `--dry-run` | Exibe o plano sem aplicar alterações. |
|
|
51
|
-
| `--force` |
|
|
51
|
+
| `--force` | Solicita reparos gerenciados permitidos, com backup. |
|
|
52
52
|
| `--json` | Produz uma resposta JSON para automação. |
|
|
53
53
|
|
|
54
54
|
O primeiro uso interativo reúne idioma e clientes. Sem interação, valem as
|
|
55
55
|
opções explícitas, a escolha local salva e, por último, `all`. Confira os
|
|
56
56
|
[IDs e dependências](../../.pbai4devs/COMPATIBILIDADE.md).
|
|
57
57
|
|
|
58
|
-
`update`
|
|
59
|
-
|
|
60
|
-
|
|
58
|
+
`update` usa a versão executada; para escolher outra, fixe-a no nome do
|
|
59
|
+
pacote. `sync` usa o que já está em `.pbai4devs`: ele não baixa outra versão.
|
|
60
|
+
Ambos conciliam recursos e removem apontamentos obsoletos quando a propriedade
|
|
61
|
+
do kit é comprovada. Recursos e configurações próprios permanecem no projeto.
|
|
62
|
+
Diretórios antigos sem comprovação de propriedade podem permanecer vazios.
|
|
63
|
+
Ao mudar a seleção, pastas compartilhadas continuam quando outro cliente
|
|
64
|
+
precisa delas; arquivos adicionais da equipe devem ser preservados.
|
|
65
|
+
|
|
66
|
+
Antes de aplicar em projeto existente, confira o plano e depois o diagnóstico:
|
|
67
|
+
|
|
68
|
+
```console
|
|
69
|
+
npx @pathbit/agentdevkit update --dry-run --json
|
|
70
|
+
npx @pathbit/agentdevkit update
|
|
71
|
+
npx @pathbit/agentdevkit doctor
|
|
72
|
+
npx @pathbit/agentdevkit sync --check
|
|
73
|
+
```
|
|
74
|
+
|
|
75
|
+
Use `init --dry-run --json`, `sync --dry-run --json` ou
|
|
76
|
+
`agents codex,claude --dry-run --json` para as outras operações. Examine
|
|
77
|
+
`plan`, `conflicts`, `preserved`, `untrackedPaths` e `localIgnore` antes de
|
|
78
|
+
aplicar. Conflitos sem solução interrompem a operação; não presuma que uma
|
|
79
|
+
colisão de nomes torna um arquivo propriedade do kit.
|
|
80
|
+
|
|
81
|
+
O sincronizador independente também pode ser executado pelo
|
|
82
|
+
[script local](../../.pbai4devs/scripts/sincronizar-agentes/README.md). Seu
|
|
83
|
+
`--check` apenas confere e `--force` é explícito na linha de comando. O
|
|
84
|
+
comando agêntico [sincronizar](../../.pbai4devs/commands/sincronizar/COMMAND.md)
|
|
85
|
+
orienta executar o script com `--force`; ele não é o mesmo que `sync` da CLI.
|
|
86
|
+
|
|
87
|
+
No Git, o kit preserva o `.gitignore` da raiz e pode atualizar
|
|
88
|
+
`.git/info/exclude` para ocultar por padrão as pastas dos clientes. O projeto
|
|
89
|
+
pode reabri-las no `.gitignore` da raiz, como em `!/.claude/`; consulte as
|
|
90
|
+
[exceções e seus efeitos](installation.md#git-e-migração). Os comandos não
|
|
91
|
+
retiram arquivos já rastreados do índice, e `untrackedPaths` permanece vazio
|
|
92
|
+
por compatibilidade. Backups locais ficam em `.agent-tests/` e não substituem
|
|
93
|
+
o histórico Git.
|
|
61
94
|
|
|
62
95
|
## Ferramentas
|
|
63
96
|
|
|
@@ -80,7 +113,7 @@ do separador. `--help` e `--version` do kit não exigem um projeto instalado.
|
|
|
80
113
|
As respostas incluem `ok`, `command`, `version`, `language`, `target` e
|
|
81
114
|
`next`. Conforme a operação, há seleção, plano, conflitos, backup e erros.
|
|
82
115
|
Leia os campos estruturados, não dependa da tradução da mensagem.
|
|
83
|
-
`preserved` lista caminhos
|
|
116
|
+
`preserved` lista caminhos mantidos pelo projeto e o motivo.
|
|
84
117
|
Um complemento pode ser gerenciado por bloco sem tornar o arquivo propriedade
|
|
85
118
|
do kit. Conteúdo humano não é substituído por `--force`.
|
|
86
119
|
|
|
@@ -87,7 +87,7 @@ O próximo passo é [preparar as ferramentas](prerequisites.md#depois-de-instala
|
|
|
87
87
|
| Conteúdo | Tratamento |
|
|
88
88
|
| --- | --- |
|
|
89
89
|
| `.pbai4devs` com recursos e templates | Fonte compartilhada versionável. |
|
|
90
|
-
|
|
|
90
|
+
| Recursos nos clientes | Apontamentos locais; pastas ignoradas por padrão. |
|
|
91
91
|
| Entradas da raiz criadas pelo kit | Arquivos locais gerados. |
|
|
92
92
|
| Índices, manifesto e seleção pessoal | Derivados locais ignorados. |
|
|
93
93
|
| Código, documentos e configurações humanas | Preservados. |
|
|
@@ -102,16 +102,35 @@ identifica a licença dos recursos do AgentDevKit, sem redefinir a do projeto.
|
|
|
102
102
|
|
|
103
103
|
## Git e migração
|
|
104
104
|
|
|
105
|
-
Um `.gitignore` dentro de `.pbai4devs` só controla essa árvore
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
105
|
+
Um `.gitignore` dentro de `.pbai4devs` só controla essa árvore: `../` não
|
|
106
|
+
alcança pastas irmãs. O kit gera regras em `.git/info/exclude` para ignorar
|
|
107
|
+
por padrão as pastas dos clientes, sem alterar o `.gitignore` da raiz.
|
|
108
|
+
Essas regras são locais, não acompanham o clone; execute `init` ou `sync`
|
|
109
|
+
em cada clone com Git inicializado, antes de usar `git add`. Sem Git, a
|
|
110
|
+
exclusão fica pendente até `git init` e sincronização.
|
|
111
|
+
Worktrees do mesmo repositório podem compartilhar esse arquivo de exclusões.
|
|
112
|
+
|
|
113
|
+
Para versionar uma pasta de cliente, o projeto pode acrescentar uma exceção
|
|
114
|
+
literal ao seu próprio `.gitignore` da raiz, por exemplo:
|
|
115
|
+
|
|
116
|
+
```gitignore
|
|
117
|
+
!/.claude/
|
|
118
|
+
!/.github/
|
|
119
|
+
```
|
|
120
|
+
|
|
121
|
+
A exceção da raiz tem precedência sobre `.git/info/exclude`; regras de um
|
|
122
|
+
`.gitignore` mais profundo continuam valendo. Não use `!/.claude/**`: um
|
|
123
|
+
curinga amplo pode reabrir credenciais e artefatos que devem ficar locais.
|
|
124
|
+
O diagnóstico informa exceções que exponham esses arquivos.
|
|
125
|
+
|
|
126
|
+
O padrão também oculta arquivos humanos ainda não rastreados nas pastas dos
|
|
127
|
+
clientes. Em especial, `.github` pode conter workflows, formulários de issues
|
|
128
|
+
e outras configurações do projeto; use `!/.github/` se precisar versioná-los.
|
|
129
|
+
O mesmo cuidado vale para `.vscode` e configurações próprias de outros agentes.
|
|
111
130
|
|
|
112
131
|
O bloco local também protege `.agent-tests`, `tmp`, `temp`, `.playwright*`
|
|
113
132
|
e relatórios de testes, inclusive com letras maiúsculas e em subpastas.
|
|
114
|
-
O conteúdo do `.gitignore` existente
|
|
133
|
+
O conteúdo do `.gitignore` existente na raiz é preservado.
|
|
115
134
|
Uma exceção que reabra arquivo privado ou artefato é informada como conflito;
|
|
116
135
|
o projeto decide como ajustar suas próprias regras.
|
|
117
136
|
Negativas com curingas também podem ser recusadas preventivamente, mesmo antes
|
|
@@ -119,12 +138,10 @@ de existir um arquivo correspondente. Examine a regra indicada no diagnóstico.
|
|
|
119
138
|
Nomes próprios de artefatos e arquivos existentes também são conferidos;
|
|
120
139
|
a validação fica restrita ao projeto e aos ignores de seus ancestrais.
|
|
121
140
|
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
Revise o plano e os conflitos em um projeto existente; use `--dry-run` antes
|
|
127
|
-
de aplicar. Conteúdo humano não deve ser classificado como saída do gerador.
|
|
141
|
+
Ignorar uma pasta não retira arquivos já rastreados do índice. O kit preserva
|
|
142
|
+
o índice, inclusive alterações preparadas; para mudar o rastreamento, o projeto
|
|
143
|
+
decide a ação Git. `--dry-run` e `sync --check` também não alteram o índice.
|
|
144
|
+
Revise o plano e os conflitos antes de aplicar em um projeto existente.
|
|
128
145
|
|
|
129
146
|
## Atualizar e escolher agentes
|
|
130
147
|
|
|
@@ -133,13 +150,20 @@ continua válida; `agents` consulta e `agents codex,claude` altera a seleção.
|
|
|
133
150
|
`agents all` habilita todos. As pastas compartilhadas permanecem quando
|
|
134
151
|
necessárias para outro cliente, como `.agents` para Codex e Antigravity.
|
|
135
152
|
|
|
136
|
-
Confira
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
|
|
153
|
+
Confira `update --dry-run --json` antes de atualizar um projeto existente.
|
|
154
|
+
Revise arquivos criados, atualizados e removidos, conflitos e `preserved`.
|
|
155
|
+
`sync` usa as fontes já instaladas e não baixa uma nova versão. Consulte a
|
|
156
|
+
[referência da CLI](cli.md) para todos os comandos.
|
|
157
|
+
|
|
158
|
+
Skills e outros recursos próprios podem coexistir com os do kit. Um nome
|
|
159
|
+
igual não comprova propriedade: conteúdo humano e arquivos adicionais não
|
|
160
|
+
devem ser descartados para reconstruir apontamentos. Remoções automáticas
|
|
161
|
+
ficam restritas a arquivos obsoletos cuja propriedade possa ser comprovada.
|
|
162
|
+
`--force` não autoriza substituir conteúdo próprio; backups ficam em
|
|
163
|
+
`.agent-tests/` e devem ser revisados quando houver reparo gerenciado.
|
|
140
164
|
|
|
141
|
-
|
|
142
|
-
|
|
165
|
+
Em entradas como `AGENTS.md`, `claude.md` e `GEMINI.md`, e em recursos nativos
|
|
166
|
+
compatíveis, o kit pode acrescentar apenas uma referência delimitada:
|
|
143
167
|
|
|
144
168
|
```markdown
|
|
145
169
|
<!-- BEGIN AGENTDEVKIT -->
|
|
@@ -148,13 +172,15 @@ Leia e siga [origem](caminho/para/.pbai4devs/recurso.md).
|
|
|
148
172
|
```
|
|
149
173
|
|
|
150
174
|
O texto e o frontmatter humanos permanecem; a referência usa o caminho real
|
|
151
|
-
do recurso.
|
|
175
|
+
do recurso. Um arquivo que não possa receber o bloco é preservado e informado,
|
|
176
|
+
sem prometer a adição do apontamento. Repetir a operação não duplica o bloco.
|
|
177
|
+
Edite suas instruções fora
|
|
152
178
|
dele: atualizações alteram somente a contribuição do kit. Nomes de entradas
|
|
153
179
|
com caixa diferente são reaproveitados quando há uma única opção.
|
|
154
180
|
Comandos Gemini mantêm a referência dentro do valor `prompt` em TOML válido.
|
|
155
181
|
Configurações que não são instruções não recebem uma mesclagem arbitrária.
|
|
156
|
-
Arquivos mistos
|
|
157
|
-
|
|
182
|
+
Arquivos mistos não passam a pertencer ao kit. Sua visibilidade para o Git
|
|
183
|
+
também depende da regra aplicada à pasta do cliente.
|
|
158
184
|
|
|
159
185
|
Links simbólicos preexistentes são preservados sem atravessá-los. O campo
|
|
160
186
|
`preserved` informa rotas que continuam sob controle do projeto. Um formato
|
|
@@ -164,8 +164,9 @@ não devem ser versionados. Verifique com `git status` e `git check-ignore -v
|
|
|
164
164
|
retira automaticamente do Git; revise a remoção do índice sem apagar dados.
|
|
165
165
|
|
|
166
166
|
O `.gitignore` do hub não controla pastas irmãs. Confira a proteção local
|
|
167
|
-
gerada pelo kit
|
|
168
|
-
|
|
167
|
+
gerada pelo kit em `info/exclude`. Para versionar configurações humanas novas
|
|
168
|
+
em `.github` ou `.vscode`, reabra a pasta com `!/.github/` ou `!/.vscode/`
|
|
169
|
+
no `.gitignore` da raiz. Confira as regras com `git check-ignore -v`.
|
|
169
170
|
|
|
170
171
|
Para pedir ajuda, inclua SO/arquitetura, versões de Node/npm/AgentDevKit,
|
|
171
172
|
comando executado, código de saída e trecho relevante do JSON, sem segredos.
|
package/docs/product/design.md
CHANGED
|
@@ -60,13 +60,13 @@ bloco exigem revisão e não autorizam sobrescrever o arquivo com `--force`.
|
|
|
60
60
|
Arquivos novos e integralmente gerados continuam com propriedade integral.
|
|
61
61
|
Comandos TOML recebem a referência no valor de `prompt`, preservando as demais
|
|
62
62
|
chaves. Configurações nativas fora desse escopo permanecem sob controle humano.
|
|
63
|
-
Nunca é possível ignorar somente um trecho de arquivo no Git
|
|
64
|
-
|
|
63
|
+
Nunca é possível ignorar somente um trecho de arquivo no Git. Veja a
|
|
64
|
+
[spec de integração][additive].
|
|
65
65
|
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
da raiz
|
|
69
|
-
|
|
66
|
+
O Git usa `info/exclude` para ignorar localmente pastas de clientes, inclusive
|
|
67
|
+
seus arquivos humanos ainda não rastreados. Exceções literais no `.gitignore`
|
|
68
|
+
da raiz permitem versioná-las. Arquivos já rastreados e o índice permanecem;
|
|
69
|
+
sem Git, a proteção fica pendente. A política vem dos templates.
|
|
70
70
|
|
|
71
71
|
O estado registra versão, escolha e propriedade local. Índices e manifesto
|
|
72
72
|
podem ser reconstruídos. Downloads, credenciais e relatórios ficam fora do
|
package/docs/specs/README.md
CHANGED
|
@@ -21,9 +21,11 @@ description: Incrementos verificáveis do AgentDevKit.
|
|
|
21
21
|
especialistas, colaboração e provas.
|
|
22
22
|
- [Confiabilidade da pipeline](ci-resilience/SPEC.md): testes e releases.
|
|
23
23
|
- [Pasta de estado](state-directory/SPEC.md): migração segura para `state`.
|
|
24
|
+
- [Sincronização segura](safe-synchronization/SPEC.md): preservar recursos próprios.
|
|
24
25
|
- [Integração sem substituição][additive]: acréscimos em arquivos existentes.
|
|
25
26
|
- [Compatibilidade com projetos reais][oss]: projetos públicos e exemplos reproduzíveis.
|
|
26
27
|
- [Ignore do projeto](project-ignore/SPEC.md): preservar o arquivo da raiz.
|
|
28
|
+
- [Ignore de clientes](client-ignore/SPEC.md): padrão local e exceções do projeto.
|
|
27
29
|
|
|
28
30
|
Cada incremento vincula requisitos, critérios, testes e evidências locais.
|
|
29
31
|
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
---
|
|
2
|
+
description: Exclusão local de clientes com escolha explícita do projeto.
|
|
3
|
+
---
|
|
4
|
+
|
|
5
|
+
# Ignore de clientes
|
|
6
|
+
|
|
7
|
+
O Git não aplica `../` no `.gitignore` do hub às pastas irmãs. O kit usa
|
|
8
|
+
exclusões locais do Git e o projeto escolhe exceções no seu `.gitignore`.
|
|
9
|
+
|
|
10
|
+
## Critérios de aceite
|
|
11
|
+
|
|
12
|
+
- AC-001: Pastas de clientes são ignoradas por padrão em repositórios Git,
|
|
13
|
+
sem modificar o `.gitignore` da raiz.
|
|
14
|
+
- AC-002: Uma exceção literal da raiz, como `!/.claude/`, permite versionar
|
|
15
|
+
o cliente e continua válida após instalação, atualização e sincronização.
|
|
16
|
+
- AC-003: Credenciais e artefatos continuam protegidos; exceções inseguras
|
|
17
|
+
são informadas antes de qualquer mudança.
|
|
18
|
+
- AC-004: Arquivos humanos e o índice Git, incluindo alterações preparadas,
|
|
19
|
+
são preservados. Arquivos já rastreados continuam rastreados.
|
|
20
|
+
- AC-005: Documentação e testes explicam e verificam precedência, limites,
|
|
21
|
+
clones, clientes compartilhados, cenários sem Git e sistemas suportados.
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
---
|
|
2
|
+
description: Sincronização segura com recursos e alterações próprios do projeto.
|
|
3
|
+
---
|
|
4
|
+
|
|
5
|
+
# Sincronização segura
|
|
6
|
+
|
|
7
|
+
Projetos podem ter arquivos próprios e recursos adicionais aos do pacote.
|
|
8
|
+
Os comandos devem preservar esse conteúdo ao instalar, atualizar e sincronizar.
|
|
9
|
+
|
|
10
|
+
## Critérios de aceite
|
|
11
|
+
|
|
12
|
+
- AC-001: Recursos humanos ou modificados no hub e nos clientes são
|
|
13
|
+
preservados, inclusive em colisões e com `--force`.
|
|
14
|
+
- AC-002: A limpeza remove somente saídas obsoletas com propriedade comprovada;
|
|
15
|
+
pastas e arquivos adicionais da equipe não são removidos.
|
|
16
|
+
- AC-003: Um conteúdo divergente preparado no índice não é descartado pela
|
|
17
|
+
sincronização; `.gitignore` da raiz e dados humanos são preservados.
|
|
18
|
+
- AC-004: `init`, `update`, `sync`, consultas e opções estão documentados com
|
|
19
|
+
seus efeitos sobre arquivos, backups, seleção de clientes e Git.
|
|
20
|
+
- AC-005: Testes exercitam instalações existentes, obsolescência, colisões,
|
|
21
|
+
execução repetida, Git e falhas; a CI contempla Linux, Windows e macOS.
|
package/package.json
CHANGED
package/src/i18n.mjs
CHANGED
|
@@ -42,6 +42,16 @@ const messages = {
|
|
|
42
42
|
};
|
|
43
43
|
export const text = (language, key) => messages[language || 'pt'][key] || key;
|
|
44
44
|
export function explainError(language, code) {
|
|
45
|
+
if (code === 'E_STAGED') return {
|
|
46
|
+
pt: 'Há alterações preparadas diferentes dos arquivos locais; revise-as antes de atualizar.',
|
|
47
|
+
en: 'Staged changes differ from the working files; review them before updating.',
|
|
48
|
+
es: 'Hay cambios preparados distintos de los archivos locales; revíselos antes de actualizar.',
|
|
49
|
+
}[language || 'pt'];
|
|
50
|
+
if (code === 'E_GIT') return {
|
|
51
|
+
pt: 'Não foi possível verificar o índice Git com segurança; nenhum arquivo foi alterado.',
|
|
52
|
+
en: 'The Git index could not be checked safely; no files were changed.',
|
|
53
|
+
es: 'No se pudo verificar el índice Git de forma segura; no se modificaron archivos.',
|
|
54
|
+
}[language || 'pt'];
|
|
45
55
|
if (code === 'E_CONFIG_PARSE') return {
|
|
46
56
|
pt: 'Não foi possível analisar a configuração legada com segurança; revise o frontmatter e as aspas antes de executar update.',
|
|
47
57
|
en: 'The legacy configuration could not be safely parsed; review its frontmatter and quoted values before running update.',
|