@pathbit/agentdevkit 0.0.8 → 0.0.9
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/COMPATIBILIDADE.md +4 -2
- package/.pbai4devs/INSTRUCTIONS.md +4 -0
- package/.pbai4devs/commands/sincronizar/COMMAND.md +4 -3
- package/.pbai4devs/rules/documentacao/RULE.md +4 -0
- package/.pbai4devs/rules/qualidade/RULE.md +4 -2
- package/.pbai4devs/scripts/README.md +3 -3
- package/.pbai4devs/scripts/inspecionar-projeto/README.md +31 -0
- package/.pbai4devs/scripts/inspecionar-projeto/SCRIPT.mjs +142 -1
- package/.pbai4devs/scripts/inspecionar-projeto/tests/TEST.mjs +168 -1
- package/.pbai4devs/scripts/lib/native-paths.mjs +35 -0
- package/.pbai4devs/scripts/sincronizar-agentes/README.md +3 -0
- package/.pbai4devs/scripts/sincronizar-agentes/SCRIPT.mjs +73 -29
- package/.pbai4devs/scripts/sincronizar-agentes/tests/COEXISTENCE.mjs +190 -0
- package/.pbai4devs/scripts/sincronizar-agentes/tests/HUMAN_OWNERSHIP.mjs +8 -2
- package/.pbai4devs/scripts/sincronizar-agentes/tests/TEST.mjs +28 -28
- package/.pbai4devs/scripts/verificar-recursos/SCRIPT.mjs +56 -8
- package/.pbai4devs/scripts/verificar-recursos/tests/TEST.mjs +92 -1
- package/.pbai4devs/skills/produto/criar-design-doc/SKILL.md +2 -0
- package/.pbai4devs/skills/produto/criar-prd/SKILL.md +2 -0
- package/.pbai4devs/skills/produto/criar-ux-ui/SKILL.md +2 -0
- package/.pbai4devs/skills/projeto/atualizar-documentacao/SKILL.md +18 -4
- package/.pbai4devs/skills/projeto/configurar-projeto/SKILL.md +2 -0
- package/.pbai4devs/skills/projeto/criar-recurso/SKILL.md +1 -0
- package/.pbai4devs/skills/projeto/sincronizar-agentes/SKILL.md +3 -2
- package/.pbai4devs/skills/specs/criar-spec/SKILL.md +1 -0
- package/.pbai4devs/skills/specs/gerenciar-roadmap/SKILL.md +2 -1
- package/.pbai4devs/templates/README.md +4 -1
- package/.pbai4devs/templates/configuracao/TEMPLATE.md +6 -0
- package/CHANGELOG.md +10 -0
- package/README.en.md +3 -2
- package/README.es.md +3 -2
- package/README.md +3 -2
- package/docs/README.md +1 -0
- package/docs/guides/README.md +1 -0
- package/docs/guides/cli.md +2 -0
- package/docs/guides/documentation.md +63 -0
- package/docs/guides/installation.md +12 -5
- package/docs/guides/resources.md +6 -5
- package/docs/guides/troubleshooting.md +6 -6
- package/docs/guides/workflow.md +2 -0
- package/docs/maintainers/packages.md +1 -1
- package/docs/product/design.md +12 -0
- package/docs/product/prd.md +4 -1
- package/docs/product/roadmap.md +2 -0
- package/docs/specs/README.md +1 -0
- package/docs/specs/v0.0.9/README.md +9 -0
- package/docs/specs/v0.0.9/SPEC.md +68 -0
- package/package.json +3 -2
- package/src/cli.mjs +3 -0
- package/src/i18n.mjs +3 -0
- package/src/install.mjs +84 -16
|
@@ -20,6 +20,39 @@ function checkedStat(root, location) {
|
|
|
20
20
|
return item;
|
|
21
21
|
}
|
|
22
22
|
|
|
23
|
+
function checkedPath(root, path) {
|
|
24
|
+
if (typeof path !== 'string' || !path || isAbsolute(path) || /[\\\x00-\x1f\x7f:]/.test(path) || path.split('/').some(part => !part || part === '.' || part === '..')) fail(`Caminho gerenciado invalido: ${path}`);
|
|
25
|
+
let location = root;
|
|
26
|
+
for (const part of path.split('/')) { location = join(location, part); checkedStat(root, location); }
|
|
27
|
+
return location;
|
|
28
|
+
}
|
|
29
|
+
|
|
30
|
+
function ownership(root) {
|
|
31
|
+
const file = checkedPath(root, '.pbai4devs/estado/agentdevkit.json');
|
|
32
|
+
if (!checkedStat(root, file)) return null;
|
|
33
|
+
const readState = location => {
|
|
34
|
+
try { return JSON.parse(readFileSync(location, 'utf8')); }
|
|
35
|
+
catch { fail(`Estado invalido: ${normalize(relative(root, location))}`); }
|
|
36
|
+
};
|
|
37
|
+
const state = readState(file);
|
|
38
|
+
const validMap = value => value && typeof value === 'object' && !Array.isArray(value)
|
|
39
|
+
&& Object.values(value).every(hash => typeof hash === 'string' && /^[a-f0-9]{64}$/.test(hash));
|
|
40
|
+
if (state?.schemaVersion !== 1 || !validMap(state.files) || !validMap(state.blocks)) fail('Estado de propriedade invalido.');
|
|
41
|
+
const files = { ...state.files };
|
|
42
|
+
const derivedFile = checkedPath(root, '.pbai4devs/estado/derived.json');
|
|
43
|
+
if (checkedStat(root, derivedFile)) {
|
|
44
|
+
const derived = readState(derivedFile);
|
|
45
|
+
if (derived?.schemaVersion !== 1 || !validMap(derived.entries) || Object.keys(derived.entries).some(path => !['AGENTS.md', 'CLAUDE.md', 'GEMINI.md'].includes(path))
|
|
46
|
+
|| !validMap(derived.outputs ?? {}) || Object.keys(derived.outputs ?? {}).some(path => !/^\.[a-z0-9][a-z0-9-]*\/(?:skills|rules|agents)\.json$/.test(path))) fail('Estado de entradas derivadas invalido.');
|
|
47
|
+
Object.assign(files, derived.entries, derived.outputs);
|
|
48
|
+
}
|
|
49
|
+
for (const path of [...Object.keys(files), ...Object.keys(state.blocks)]) {
|
|
50
|
+
const location = checkedPath(root, path);
|
|
51
|
+
if (!checkedStat(root, location)?.isFile()) fail(`Arquivo gerenciado ausente: ${path}`);
|
|
52
|
+
}
|
|
53
|
+
return { files, blocks: state.blocks };
|
|
54
|
+
}
|
|
55
|
+
|
|
23
56
|
export function registryRoots(root) {
|
|
24
57
|
checkedStat(root, join(root, '.pbai4devs'));
|
|
25
58
|
const file = join(root, '.pbai4devs/espelhos.conf');
|
|
@@ -44,7 +77,7 @@ function walk(root, location, files, { skipTools = true } = {}) {
|
|
|
44
77
|
} else if (item.isFile() && ['.md', '.mdc'].includes(extname(location).toLowerCase())) files.add(location);
|
|
45
78
|
}
|
|
46
79
|
|
|
47
|
-
export function collectMarkdown(root, registry = registryRoots(root)) {
|
|
80
|
+
export function collectMarkdown(root, registry = registryRoots(root), { installed = ownership(root) } = {}) {
|
|
48
81
|
const agents = join(root, '.pbai4devs');
|
|
49
82
|
checkedStat(root, agents);
|
|
50
83
|
for (const directory of readdirSync(agents, { withFileTypes: true })) {
|
|
@@ -54,10 +87,18 @@ export function collectMarkdown(root, registry = registryRoots(root)) {
|
|
|
54
87
|
if (item?.isDirectory() && !checkedStat(root, join(location, 'README.md'))?.isFile()) fail(`README ausente: .pbai4devs/${directory.name}/`);
|
|
55
88
|
}
|
|
56
89
|
const files = new Set();
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
90
|
+
if (installed) {
|
|
91
|
+
walk(root, agents, files);
|
|
92
|
+
for (const path of Object.keys(installed.files)) {
|
|
93
|
+
const file = checkedPath(root, path);
|
|
94
|
+
if (['.md', '.mdc'].includes(extname(path).toLowerCase())) files.add(file);
|
|
95
|
+
}
|
|
96
|
+
} else {
|
|
97
|
+
const rootMarkdown = readdirSync(root).filter(name => ['.md', '.mdc'].includes(extname(name).toLowerCase()));
|
|
98
|
+
const sources = ['.pbai4devs', 'docs', 'src', 'bin', 'tests', 'scripts', 'examples',
|
|
99
|
+
'.github/PULL_REQUEST_TEMPLATE.md', '.github/ISSUE_TEMPLATE', ...rootMarkdown];
|
|
100
|
+
for (const name of [...sources, ...registry.paths]) walk(root, resolve(root, name), files);
|
|
101
|
+
}
|
|
61
102
|
const tools = join(agents, 'tools');
|
|
62
103
|
if (checkedStat(root, tools)) {
|
|
63
104
|
const guide = join(tools, 'README.md');
|
|
@@ -154,8 +195,14 @@ export function checkCatalog(root, build = buildCatalog) {
|
|
|
154
195
|
return result.catalog;
|
|
155
196
|
}
|
|
156
197
|
|
|
157
|
-
export function checkAgentExtras(root, agents) {
|
|
198
|
+
export function checkAgentExtras(root, agents, { installed = null } = {}) {
|
|
158
199
|
for (const agent of agents) {
|
|
200
|
+
if (installed) {
|
|
201
|
+
const files = Object.keys(installed.files).filter(path => path.startsWith(`${agent}/`));
|
|
202
|
+
if (files.some(path => auxiliary.some(name => path === `${agent}/${name}` || path.startsWith(`${agent}/${name}/`)))) fail(`Auxiliar gerenciado indevido em ${agent}`);
|
|
203
|
+
if (files.some(path => ['README.md', 'INSTRUCTIONS.md'].includes(basename(path)))) fail(`Guia gerenciado indevido em ${agent}`);
|
|
204
|
+
continue;
|
|
205
|
+
}
|
|
159
206
|
for (const name of auxiliary) if (existsSync(join(root, agent, name))) fail(`Auxiliar indevido em ${agent}/${name}`);
|
|
160
207
|
const files = new Set();
|
|
161
208
|
walk(root, join(root, agent), files);
|
|
@@ -183,14 +230,15 @@ export function checkLint(root, files, run = spawnSync) {
|
|
|
183
230
|
|
|
184
231
|
export function verifyResources({ root = projectRoot, sourceOnly = false, synchronize = checkSynchronization, lint = checkLint, catalogCheck = checkCatalog } = {}) {
|
|
185
232
|
requireNode();
|
|
233
|
+
const installed = sourceOnly ? null : ownership(root);
|
|
186
234
|
const built = sourceOnly ? buildCatalog(root) : null;
|
|
187
235
|
if (!sourceOnly) { synchronize(root); catalogCheck(root); }
|
|
188
236
|
const registry = sourceOnly ? { agents: [], paths: [] } : registryRoots(root);
|
|
189
|
-
const files = collectMarkdown(root, registry);
|
|
237
|
+
const files = collectMarkdown(root, registry, { installed });
|
|
190
238
|
const virtualPaths = new Set(sourceOnly ? [...built.outputs.keys(), '.pbai4devs/espelhos.conf'] : []);
|
|
191
239
|
checkMarkdown(root, files, { virtualPaths });
|
|
192
240
|
checkResourceReferences(root, files);
|
|
193
|
-
checkAgentExtras(root, registry.agents);
|
|
241
|
+
checkAgentExtras(root, registry.agents, { installed });
|
|
194
242
|
return { files, messages: [...lint(root, files), 'recursos=passed'] };
|
|
195
243
|
}
|
|
196
244
|
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import assert from 'node:assert/strict';
|
|
2
|
-
import { mkdirSync, mkdtempSync, readFileSync, readdirSync, rmSync, symlinkSync, writeFileSync } from 'node:fs';
|
|
2
|
+
import { lstatSync, mkdirSync, mkdtempSync, readFileSync, readlinkSync, readdirSync, rmSync, symlinkSync, writeFileSync } from 'node:fs';
|
|
3
|
+
import { createHash } from 'node:crypto';
|
|
3
4
|
import { join, relative } from 'node:path';
|
|
4
5
|
import { spawnSync } from 'node:child_process';
|
|
5
6
|
import test from 'node:test';
|
|
@@ -40,6 +41,16 @@ function resourceFixture(t) {
|
|
|
40
41
|
}
|
|
41
42
|
const verify = root => verifyResources({ root, synchronize() {}, catalogCheck() {}, lint: () => ['lint=fixture'] });
|
|
42
43
|
|
|
44
|
+
function installedFixture(t) {
|
|
45
|
+
const context = resourceFixture(t);
|
|
46
|
+
context.file('.pbai4devs/estado/README.md');
|
|
47
|
+
const generated = '.agents/skills/managed/SKILL.md';
|
|
48
|
+
context.file(generated, document('# Gerado\n'));
|
|
49
|
+
const files = { [generated]: createHash('sha256').update(readFileSync(join(context.root, generated))).digest('hex') };
|
|
50
|
+
context.file('.pbai4devs/estado/agentdevkit.json', JSON.stringify({ schemaVersion: 1, version: '0.0.9', language: 'pt', files, blocks: {} }));
|
|
51
|
+
return { ...context, generated };
|
|
52
|
+
}
|
|
53
|
+
|
|
43
54
|
function writeCatalog(root) {
|
|
44
55
|
for (const [path, content] of buildCatalog(root).outputs) { mkdirSync(join(root, path, '..'), { recursive: true }); writeFileSync(join(root, path), content); }
|
|
45
56
|
}
|
|
@@ -96,6 +107,86 @@ test('coleta source-only ignora exemplos gerados e clientes, sem exigir Git', t
|
|
|
96
107
|
for (const path of result.files) assert.doesNotMatch(relative(root, path), /examples[\\/]generated|node_modules|TEST-RESULTS|\.github[\\/]skills|\.codex/);
|
|
97
108
|
});
|
|
98
109
|
|
|
110
|
+
test('instalação valida somente fontes e Markdown próprio, preservando conteúdo humano', t => {
|
|
111
|
+
const { root, file, generated } = installedFixture(t);
|
|
112
|
+
const own = ['README.md', 'AGENTS.md', 'docs/product.md', 'src/README.md', '.codex/README.md', '.codex/templates/custom.md', '.codex/skills/human/SKILL.md'];
|
|
113
|
+
for (const path of own) file(path, '# Texto humano sem frontmatter\n\n[Link próprio](missing-human-file.md)\n');
|
|
114
|
+
let linted;
|
|
115
|
+
const result = verifyResources({ root, synchronize() {}, catalogCheck() {}, lint(_root, files) { linted = files; return ['lint=fixture']; } });
|
|
116
|
+
assert.ok(result.files.includes(join(root, generated)));
|
|
117
|
+
assert.ok(result.files.includes(join(root, '.pbai4devs/skills/exemplo/SKILL.md')));
|
|
118
|
+
for (const path of own) assert.equal(result.files.includes(join(root, path)), false, path);
|
|
119
|
+
assert.deepEqual(linted, result.files);
|
|
120
|
+
file('.pbai4devs/skills/exemplo/SKILL.md', '# Fonte do kit inválida\n');
|
|
121
|
+
assert.throws(() => verify(root), /Frontmatter\/H1 invalido: .pbai4devs\/skills\/exemplo\/SKILL.md/);
|
|
122
|
+
});
|
|
123
|
+
|
|
124
|
+
test('instalação não atravessa links humanos de entradas e skills', t => {
|
|
125
|
+
const { root, file } = installedFixture(t);
|
|
126
|
+
file('AGENTS.md', '# Instrução humana sem frontmatter\n');
|
|
127
|
+
file('own-docs/README.md', '# README humano\n');
|
|
128
|
+
file('own-skills/human/SKILL.md', '# Skill humana\n');
|
|
129
|
+
rmSync(join(root, '.codex/skills'), { recursive: true });
|
|
130
|
+
const links = [['CLAUDE.md', 'AGENTS.md', 'file'], ['README.md', 'own-docs/README.md', 'file'], ['.codex/skills', '../own-skills', 'dir']];
|
|
131
|
+
for (const [path, target, type] of links) {
|
|
132
|
+
try { symlinkSync(type === 'dir' && process.platform === 'win32' ? join(root, 'own-skills') : target, join(root, path), process.platform === 'win32' && type === 'dir' ? 'junction' : type); }
|
|
133
|
+
catch (error) {
|
|
134
|
+
if (process.platform === 'win32' && ['EPERM', 'EACCES'].includes(error.code)) { t.skip('Sem permissão para criar links no Windows.'); return; }
|
|
135
|
+
throw error;
|
|
136
|
+
}
|
|
137
|
+
}
|
|
138
|
+
const before = links.map(([path]) => readlinkSync(join(root, path)));
|
|
139
|
+
const result = verify(root);
|
|
140
|
+
for (const [path] of links) {
|
|
141
|
+
assert.equal(lstatSync(join(root, path)).isSymbolicLink(), true);
|
|
142
|
+
assert.equal(result.files.includes(join(root, path)), false);
|
|
143
|
+
}
|
|
144
|
+
assert.deepEqual(links.map(([path]) => readlinkSync(join(root, path))), before);
|
|
145
|
+
});
|
|
146
|
+
|
|
147
|
+
test('instalação recusa caminho gerenciado substituído por link', t => {
|
|
148
|
+
const { root, file, generated } = installedFixture(t);
|
|
149
|
+
const target = file('external.md', '# Conteúdo externo\n');
|
|
150
|
+
rmSync(join(root, generated));
|
|
151
|
+
try { symlinkSync(target, join(root, generated), 'file'); }
|
|
152
|
+
catch (error) {
|
|
153
|
+
if (process.platform === 'win32' && ['EPERM', 'EACCES'].includes(error.code)) { t.skip('Sem permissão para criar links no Windows.'); return; }
|
|
154
|
+
throw error;
|
|
155
|
+
}
|
|
156
|
+
assert.throws(() => verify(root), /Link simbolico: .agents\/skills\/managed\/SKILL.md/);
|
|
157
|
+
assert.equal(readFileSync(target, 'utf8'), '# Conteúdo externo\n');
|
|
158
|
+
});
|
|
159
|
+
|
|
160
|
+
test('instalação confere entradas derivadas sem aplicar lint a blocos humanos', t => {
|
|
161
|
+
const { root, file } = installedFixture(t);
|
|
162
|
+
const contents = document('# Entrada gerada\n');
|
|
163
|
+
file('GEMINI.md', contents);
|
|
164
|
+
file('.pbai4devs/estado/derived.json', JSON.stringify({ schemaVersion: 1, entries: { 'GEMINI.md': createHash('sha256').update(contents).digest('hex') } }));
|
|
165
|
+
file('AGENTS.md', '# Instruções humanas sem frontmatter\n\n<!-- BEGIN AGENTDEVKIT -->\nLeia as fontes.\n<!-- END AGENTDEVKIT -->\n');
|
|
166
|
+
const statePath = join(root, '.pbai4devs/estado/agentdevkit.json');
|
|
167
|
+
const state = JSON.parse(readFileSync(statePath, 'utf8'));
|
|
168
|
+
state.blocks['AGENTS.md'] = createHash('sha256').update('bloco registrado').digest('hex');
|
|
169
|
+
state.files['.pbai4devs/skills/exemplo/SKILL.md'] = createHash('sha256').update('fonte anterior').digest('hex');
|
|
170
|
+
writeFileSync(statePath, JSON.stringify(state));
|
|
171
|
+
const result = verify(root);
|
|
172
|
+
assert.ok(result.files.includes(join(root, 'GEMINI.md')));
|
|
173
|
+
assert.equal(result.files.includes(join(root, 'AGENTS.md')), false);
|
|
174
|
+
assert.ok(result.files.includes(join(root, '.pbai4devs/skills/exemplo/SKILL.md')));
|
|
175
|
+
file('GEMINI.md', document('# Fonte sincronizada com hash de instalação anterior\n'));
|
|
176
|
+
assert.ok(verify(root).files.includes(join(root, 'GEMINI.md')));
|
|
177
|
+
});
|
|
178
|
+
|
|
179
|
+
test('instalação também protege manifestos registrados em derived.outputs', t => {
|
|
180
|
+
const { root, file } = installedFixture(t);
|
|
181
|
+
const manifest = '.agents/skills.json';
|
|
182
|
+
const contents = '{"entries":[]}\n';
|
|
183
|
+
file(manifest, contents);
|
|
184
|
+
file('.pbai4devs/estado/derived.json', JSON.stringify({ schemaVersion: 1, entries: {}, outputs: { [manifest]: createHash('sha256').update(contents).digest('hex') } }));
|
|
185
|
+
assert.ok(!verify(root).files.includes(join(root, manifest)));
|
|
186
|
+
rmSync(join(root, manifest));
|
|
187
|
+
assert.throws(() => verify(root), /Arquivo gerenciado ausente: .agents\/skills.json/);
|
|
188
|
+
});
|
|
189
|
+
|
|
99
190
|
test('catalogo derivado cobre recursos e detecta JSON editado sem reescrever', t => {
|
|
100
191
|
const { root, file } = resourceFixture(t);
|
|
101
192
|
file('.pbai4devs/commands/inspecionar/COMMAND.md', document('# Inspecionar\n\n[Script](../../scripts/inspecionar/SCRIPT.mjs).\n'));
|
|
@@ -6,6 +6,8 @@ description: Define e revisa o design técnico do produto com o usuário.
|
|
|
6
6
|
# Criar design técnico
|
|
7
7
|
|
|
8
8
|
Siga `.pbai4devs/rules/qualidade/RULE.md` ao criar arquivos Markdown.
|
|
9
|
+
Antes de escrever, use `atualizar-documentacao` para ler e reaproveitar documentos
|
|
10
|
+
existentes; aplique o template somente às lacunas.
|
|
9
11
|
|
|
10
12
|
Consulte `.pbai4devs/estado/configuracao/ESTADO.md` e confira o PRD aprovado
|
|
11
13
|
e UX/UI aprovado ou não aplicável com justificativa,
|
|
@@ -6,6 +6,8 @@ description: Define e revisa o documento de requisitos do produto com o usuário
|
|
|
6
6
|
# Criar PRD
|
|
7
7
|
|
|
8
8
|
Siga `.pbai4devs/rules/qualidade/RULE.md` ao criar arquivos Markdown.
|
|
9
|
+
Antes de escrever, use `atualizar-documentacao` para ler e reaproveitar documentos
|
|
10
|
+
existentes; aplique o template somente às lacunas.
|
|
9
11
|
|
|
10
12
|
Confira a preparação em `.pbai4devs/estado/configuracao/ESTADO.md`. Se não estiver
|
|
11
13
|
concluída e comprovada, encaminhe a `configurar-projeto` para a fase
|
|
@@ -6,6 +6,8 @@ description: Define ou justifica a não aplicação de UX e interface com o usu
|
|
|
6
6
|
# Criar UX/UI
|
|
7
7
|
|
|
8
8
|
Siga `.pbai4devs/rules/qualidade/RULE.md` ao criar arquivos Markdown.
|
|
9
|
+
Antes de escrever, use `atualizar-documentacao` para ler e reaproveitar documentos
|
|
10
|
+
existentes; aplique o template somente às lacunas.
|
|
9
11
|
|
|
10
12
|
Consulte `.pbai4devs/estado/configuracao/ESTADO.md` e confira o PRD
|
|
11
13
|
com `status: aprovado` e a
|
|
@@ -5,9 +5,21 @@ description: Atualiza documentos afetados e sua coerência com a entrega.
|
|
|
5
5
|
|
|
6
6
|
# Atualizar documentação
|
|
7
7
|
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
8
|
+
Antes de escrever, execute `inspecionar-projeto` por `executar-script` e consulte
|
|
9
|
+
`documentation`. Abra os documentos relevantes: o inventário não substitui a
|
|
10
|
+
leitura nem comprova aprovação. Confira também o diff e os critérios da tarefa.
|
|
11
|
+
Reúna no início somente dúvidas que os arquivos não respondem.
|
|
12
|
+
|
|
13
|
+
Proponha por caminho: manter, complementar uma seção ou criar arquivo ausente.
|
|
14
|
+
Reutilize nomes, formatos, decisões, links e estrutura existentes; um documento
|
|
15
|
+
como `ARCHITECTURE.md` pode cumprir o papel de design sem ser renomeado.
|
|
16
|
+
Organize primeiro por índices e links. Não apague, mova ou substitua arquivos
|
|
17
|
+
para padronizá-los. Acrescente apenas fatos comprovados e preserve o conteúdo
|
|
18
|
+
anterior; trate contradições com o usuário antes de editar.
|
|
19
|
+
|
|
20
|
+
Use o [catálogo](../../../templates/README.md) como lista de lacunas, nunca como
|
|
21
|
+
substituto de um documento existente. Crie somente o que a fase e o pedido
|
|
22
|
+
exigem; ausência de respostas não autoriza inventar PRD, design ou aprovação.
|
|
11
23
|
|
|
12
24
|
Confira README da raiz/pastas, AGENTS/CLAUDE/GEMINI, contribuição, notas de versão,
|
|
13
25
|
produto/design/specs, ADRs, configuração/exemplos e comentários/docstrings
|
|
@@ -17,7 +29,9 @@ Segurança pública depende de suporte e canal confirmado, sem dados fictícios.
|
|
|
17
29
|
|
|
18
30
|
Registre por caminho a decisão `updated`, `no-impact` ou `not-applicable`, com
|
|
19
31
|
justificativa, no relatório da entrega ou no resultado da tarefa. Verifique
|
|
20
|
-
links e exemplos;
|
|
32
|
+
links e exemplos; compare o conteúdo anterior e confirme que arquivos fora
|
|
33
|
+
do plano permanecem intactos. Repetir a tarefa não deve duplicar seções.
|
|
34
|
+
Código de teste é versionado, evidências ficam ignoradas.
|
|
21
35
|
|
|
22
36
|
Acione o [revisor](../../../agents/revisor/AGENT.md) em leitura com o diff,
|
|
23
37
|
documentos, critérios e provas. Aplique os achados pertinentes e peça nova
|
|
@@ -17,6 +17,8 @@ as ferramentas e rode o diagnóstico. Isso não escolhe a stack da aplicação.
|
|
|
17
17
|
|
|
18
18
|
## Preparar o projeto
|
|
19
19
|
|
|
20
|
+
Antes de criar estado ou documentos, faça o inventário de `atualizar-documentacao`.
|
|
21
|
+
Mapeie os documentos já existentes aos seus papéis, sem reiniciar o produto.
|
|
20
22
|
Reúna dúvidas no início e aproveite decisões existentes. Quando o projeto
|
|
21
23
|
começar, crie ou retome `.pbai4devs/estado/configuracao/ESTADO.md` pelo modelo.
|
|
22
24
|
Combine os arquivos `prd`, `ux_ui`, `design`, `roadmap` e diretórios `releases`,
|
|
@@ -7,6 +7,7 @@ description: Encaminha criações e cria documentos, modelos ou novos recursos.
|
|
|
7
7
|
|
|
8
8
|
Se o pedido for um modelo, trabalhe em `.pbai4devs/templates/` sem iniciar a
|
|
9
9
|
definição do produto. Encaminhe documentos reais à skill correspondente.
|
|
10
|
+
Para documentos, comece pelo inventário e plano de `atualizar-documentacao`.
|
|
10
11
|
|
|
11
12
|
Confira se o recurso já existe e use a skill específica quando disponível:
|
|
12
13
|
`criar-skill`, `criar-agente`, `criar-comando`, `criar-regra`, `criar-prd`,
|
|
@@ -21,8 +21,9 @@ com as fontes, detectando inclusões, alterações, remoções e links inválido
|
|
|
21
21
|
Os `.gitignore` de `.pbai4devs` e dos clientes também são gerados dos
|
|
22
22
|
[modelos](../../../templates/gitignore/TEMPLATE.md). Preserve regras próprias
|
|
23
23
|
fora do bloco gerenciado; `--check` identifica blocos ausentes ou divergentes.
|
|
24
|
-
`--force` repara
|
|
25
|
-
|
|
24
|
+
`--force` repara conflitos gerenciados com backup local em `.agent-tests/`.
|
|
25
|
+
Preserve recursos nativos humanos, inclusive colisões de nomes; links humanos
|
|
26
|
+
são opacos e nunca devem ser atravessados. Confira `preserved` no JSON da CLI.
|
|
26
27
|
Não apague raízes inteiras: workflows, configurações nativas e a origem ficam
|
|
27
28
|
fora da limpeza. `--check` só confere, sem corrigir nem criar backups.
|
|
28
29
|
|
|
@@ -5,6 +5,7 @@ description: Cria uma spec de incremento, esclarecendo requisitos e dúvidas com
|
|
|
5
5
|
|
|
6
6
|
# Criar spec
|
|
7
7
|
|
|
8
|
+
Antes de escrever, aplique o inventário e plano de `atualizar-documentacao`.
|
|
8
9
|
Leia os caminhos em `.pbai4devs/estado/configuracao/ESTADO.md`. Exija PRD/design
|
|
9
10
|
aprovados e UX/UI aprovado ou não aplicável com justificativa aprovada.
|
|
10
11
|
Confira evidências, atualidade e decisões essenciais ao incremento; se faltar
|
|
@@ -10,7 +10,8 @@ mostre preparação, releases, specs e tarefas com dependências e bloqueios.
|
|
|
10
10
|
Use `[ ]`, `[-]` e `[x]` conforme evidências; informe estados desconhecidos.
|
|
11
11
|
Sem roadmap, diga que ainda não foi criado. Não conclua entregas sem prova.
|
|
12
12
|
|
|
13
|
-
|
|
13
|
+
Antes de alterar documentos, aplique o inventário de `atualizar-documentacao`.
|
|
14
|
+
Ao planejar ou atualizar, use o modelo só para lacunas no caminho acordado. Registre
|
|
14
15
|
objetivos, prioridades, etapas, dependências e pendências de PRD, UX/UI e design.
|
|
15
16
|
Mantenha referências e estados coerentes ao aprovar ou revisar documentos;
|
|
16
17
|
não invente escopo, datas ou releases. Identifique as specs do primeiro entregável
|
|
@@ -30,7 +30,10 @@ enquanto o usuário estiver preparando somente a estrutura dos agentes.
|
|
|
30
30
|
| [SECURITY][security] | Suporte público | Política/suporte mudar. |
|
|
31
31
|
| [Comando][comando] | Recurso agêntico | Entrada ou fluxo mudar. |
|
|
32
32
|
|
|
33
|
-
|
|
33
|
+
Antes, inventarie e leia os documentos existentes com `atualizar-documentacao`.
|
|
34
|
+
Use os modelos como lista de lacunas. Copie somente artefatos aplicáveis ainda
|
|
35
|
+
ausentes; nunca substitua documentos existentes. Remova placeholders e confirme
|
|
36
|
+
fatos nos novos arquivos; preserve nomes, formatos, seções e decisões anteriores.
|
|
34
37
|
README acompanha o projeto desde a preparação; documentos de produto surgem
|
|
35
38
|
após descoberta. Segurança depende de suporte e canal realmente definidos.
|
|
36
39
|
|
|
@@ -24,6 +24,12 @@ documentos:
|
|
|
24
24
|
|
|
25
25
|
# Configuração do projeto
|
|
26
26
|
|
|
27
|
+
## Documentos existentes
|
|
28
|
+
|
|
29
|
+
- Inventário e leitura inicial: a registrar antes de criar documentos.
|
|
30
|
+
- Caminhos e papéis reaproveitados: a definir; não impor novos nomes.
|
|
31
|
+
- Lacunas e complementos acordados: a definir, preservando o conteúdo anterior.
|
|
32
|
+
|
|
27
33
|
## Preparação
|
|
28
34
|
|
|
29
35
|
- Evidências e pendências: a definir.
|
package/CHANGELOG.md
CHANGED
|
@@ -4,6 +4,16 @@ description: Alterações verificáveis por versão do AgentDevKit.
|
|
|
4
4
|
|
|
5
5
|
# Changelog
|
|
6
6
|
|
|
7
|
+
## 0.0.9 — 2026-11-12
|
|
8
|
+
|
|
9
|
+
- Links e configurações humanos preservados na instalação dos agentes.
|
|
10
|
+
- Colisões com recursos nativos próprios não são sobrescritas pelo kit.
|
|
11
|
+
- Sincronização mantém recursos humanos, inclusive com `--force`.
|
|
12
|
+
- Caminhos preservados são informados sem registrar propriedade indevida.
|
|
13
|
+
- Matriz OSS verifica agentes preexistentes e sincronização independente.
|
|
14
|
+
- Inventário e fluxo documental exigem leitura e complementos sem substituição.
|
|
15
|
+
- Exercícios documentais cobrem projetos reais e um projeto vazio.
|
|
16
|
+
|
|
7
17
|
## 0.0.8 — 2026-11-11
|
|
8
18
|
|
|
9
19
|
- Preservação de arquivos humanos que parecem apontamentos gerados.
|
package/README.en.md
CHANGED
|
@@ -34,7 +34,7 @@ Then open the project in your coding agent and ask:
|
|
|
34
34
|
|
|
35
35
|
See [installation](docs/guides/installation.md) for Windows, missing Node, previews
|
|
36
36
|
and updates. Install and update through the [public npm package][packages]; the
|
|
37
|
-
[v0.0.
|
|
37
|
+
[v0.0.9 release][release] retains artifacts and checksums for verification.
|
|
38
38
|
No global installation is required.
|
|
39
39
|
The CLI supports `pt`, `en` and `es`; it saves your selection per project.
|
|
40
40
|
|
|
@@ -44,6 +44,7 @@ The CLI supports `pt`, `en` and `es`; it saves your selection per project.
|
|
|
44
44
|
| --- | --- |
|
|
45
45
|
| Understand the kit | [Documentation wiki](docs/README.md) |
|
|
46
46
|
| Plan or resume a project | [Workflow](docs/guides/workflow.md) |
|
|
47
|
+
| Improve existing documentation | [Inventory and additions](docs/guides/documentation.md) |
|
|
47
48
|
| Create a skill or command | [Resources](docs/guides/resources.md) |
|
|
48
49
|
| Install tools and verify work | [Tools and tests][tests] |
|
|
49
50
|
| Look up options or fix an error | [CLI][cli] · [Troubleshooting][help] |
|
|
@@ -78,7 +79,7 @@ forms. See [how to participate](docs/maintainers/community.md).
|
|
|
78
79
|
agent to read `AGENTS.md`.
|
|
79
80
|
|
|
80
81
|
[clients]: .pbai4devs/COMPATIBILIDADE.md
|
|
81
|
-
[release]: https://github.com/pathbit/AgentDevKit/releases/tag/v0.0.
|
|
82
|
+
[release]: https://github.com/pathbit/AgentDevKit/releases/tag/v0.0.9
|
|
82
83
|
[npm-package]: https://www.npmjs.com/package/@pathbit/agentdevkit
|
|
83
84
|
[npm-badge]: https://img.shields.io/npm/v/%40pathbit%2Fagentdevkit
|
|
84
85
|
[license-badge]: https://img.shields.io/badge/license-MIT-blue
|
package/README.es.md
CHANGED
|
@@ -35,7 +35,7 @@ Después, abre el proyecto en tu agente y pide:
|
|
|
35
35
|
La [guía de instalación](docs/guides/installation.md) incluye Windows, Node ausente,
|
|
36
36
|
simulación y actualización. Instala y actualiza mediante el
|
|
37
37
|
[paquete npm público][packages];
|
|
38
|
-
la [release v0.0.
|
|
38
|
+
la [release v0.0.9][release] conserva artefactos y checksums para verificarlos.
|
|
39
39
|
No requiere instalación global.
|
|
40
40
|
La CLI guarda el idioma `pt`, `en` o `es` por proyecto.
|
|
41
41
|
|
|
@@ -45,6 +45,7 @@ La CLI guarda el idioma `pt`, `en` o `es` por proyecto.
|
|
|
45
45
|
| --- | --- |
|
|
46
46
|
| Entender el kit | [Wiki](docs/README.md) |
|
|
47
47
|
| Planificar o retomar un proyecto | [Flujo](docs/guides/workflow.md) |
|
|
48
|
+
| Mejorar documentación existente | [Inventario y complementos](docs/guides/documentation.md) |
|
|
48
49
|
| Crear una skill o comando | [Recursos](docs/guides/resources.md) |
|
|
49
50
|
| Instalar herramientas y verificar | [Herramientas y pruebas][tests] |
|
|
50
51
|
| Consultar opciones o resolver un error | [CLI][cli] · [Soluciones][help] |
|
|
@@ -80,7 +81,7 @@ formularios. Consulta [cómo participar](docs/maintainers/community.md).
|
|
|
80
81
|
al agente que lea `AGENTS.md`.
|
|
81
82
|
|
|
82
83
|
[clients]: .pbai4devs/COMPATIBILIDADE.md
|
|
83
|
-
[release]: https://github.com/pathbit/AgentDevKit/releases/tag/v0.0.
|
|
84
|
+
[release]: https://github.com/pathbit/AgentDevKit/releases/tag/v0.0.9
|
|
84
85
|
[npm-package]: https://www.npmjs.com/package/@pathbit/agentdevkit
|
|
85
86
|
[npm-badge]: https://img.shields.io/npm/v/%40pathbit%2Fagentdevkit
|
|
86
87
|
[license-badge]: https://img.shields.io/badge/license-MIT-blue
|
package/README.md
CHANGED
|
@@ -32,7 +32,7 @@ Depois, abra o projeto no seu agente e peça:
|
|
|
32
32
|
|
|
33
33
|
Windows, instalação sem Node, simulação e atualização estão no
|
|
34
34
|
[guia de instalação](https://github.com/pathbit/AgentDevKit/blob/master/docs/guides/installation.md). A distribuição usa a
|
|
35
|
-
versão publicada no [npm público][packages] e na [release v0.0.
|
|
35
|
+
versão publicada no [npm público][packages] e na [release v0.0.9][release],
|
|
36
36
|
sem instalação global. Instalação e atualização usam o pacote do registro;
|
|
37
37
|
os arquivos da release servem para conferir os artefatos publicados.
|
|
38
38
|
O idioma da CLI pode ser `pt`, `en` ou `es`.
|
|
@@ -43,6 +43,7 @@ O idioma da CLI pode ser `pt`, `en` ou `es`.
|
|
|
43
43
|
| --- | --- |
|
|
44
44
|
| Entender e começar | [Wiki](https://github.com/pathbit/AgentDevKit/blob/master/docs/README.md) |
|
|
45
45
|
| Planejar ou retomar um projeto | [Fluxo de trabalho](https://github.com/pathbit/AgentDevKit/blob/master/docs/guides/workflow.md) |
|
|
46
|
+
| Evoluir documentos existentes | [Inventário e complementos](https://github.com/pathbit/AgentDevKit/blob/master/docs/guides/documentation.md) |
|
|
46
47
|
| Criar uma skill ou comando | [Recursos](https://github.com/pathbit/AgentDevKit/blob/master/docs/guides/resources.md) |
|
|
47
48
|
| Instalar ferramentas e comprovar uma entrega | [Ferramentas e testes][tests] |
|
|
48
49
|
| Consultar opções ou resolver um erro | [CLI][cli] · [Soluções][help] |
|
|
@@ -89,7 +90,7 @@ ao seu agente para ler `AGENTS.md`.
|
|
|
89
90
|
[help]: https://github.com/pathbit/AgentDevKit/blob/master/docs/guides/troubleshooting.md
|
|
90
91
|
[issues]: https://github.com/pathbit/AgentDevKit/issues/new/choose
|
|
91
92
|
[packages]: https://github.com/pathbit/AgentDevKit/blob/master/docs/maintainers/packages.md
|
|
92
|
-
[release]: https://github.com/pathbit/AgentDevKit/releases/tag/v0.0.
|
|
93
|
+
[release]: https://github.com/pathbit/AgentDevKit/releases/tag/v0.0.9
|
|
93
94
|
[npm-package]: https://www.npmjs.com/package/@pathbit/agentdevkit
|
|
94
95
|
[npm-badge]: https://img.shields.io/npm/v/%40pathbit%2Fagentdevkit
|
|
95
96
|
[license-badge]: https://img.shields.io/badge/license-MIT-blue
|
package/docs/README.md
CHANGED
|
@@ -24,6 +24,7 @@ pode trocar de agente sem manter várias cópias das mesmas instruções.
|
|
|
24
24
|
| --- | --- |
|
|
25
25
|
| Primeiro uso | [Instalar][install] → [seguir o fluxo][flow] |
|
|
26
26
|
| Projeto em andamento | [Instalar com simulação][install] → [retomar][flow] |
|
|
27
|
+
| Evoluir documentação existente | [Inventariar e complementar](guides/documentation.md) |
|
|
27
28
|
| Personalizar agentes | [Recursos][resources] → [compatibilidade][clients] |
|
|
28
29
|
| Executar ou verificar algo | [CLI](guides/cli.md) → [ferramentas e testes][tests] |
|
|
29
30
|
| Corrigir uma dificuldade | [Soluções e recuperação](guides/troubleshooting.md) |
|
package/docs/guides/README.md
CHANGED
|
@@ -7,6 +7,7 @@ description: Guias de instalação, uso e verificação do AgentDevKit.
|
|
|
7
7
|
- [Instalação](installation.md)
|
|
8
8
|
- [Comandos da CLI](cli.md)
|
|
9
9
|
- [Fluxo de trabalho](workflow.md)
|
|
10
|
+
- [Evoluir documentação existente](documentation.md)
|
|
10
11
|
- [Recursos dos agentes](resources.md)
|
|
11
12
|
- [Ferramentas e testes](tools-and-testing.md)
|
|
12
13
|
- [Solução de problemas](troubleshooting.md)
|
package/docs/guides/cli.md
CHANGED
|
@@ -77,6 +77,8 @@ do separador. `--help` e `--version` do kit não exigem um projeto instalado.
|
|
|
77
77
|
As respostas incluem `ok`, `command`, `version`, `language`, `target` e
|
|
78
78
|
`next`. Conforme a operação, há seleção, plano, conflitos, backup e erros.
|
|
79
79
|
Leia os campos estruturados, não dependa da tradução da mensagem.
|
|
80
|
+
`preserved` lista caminhos nativos humanos mantidos pelo projeto, com o motivo.
|
|
81
|
+
Eles não integram os arquivos gerenciados e não são substituídos por `--force`.
|
|
80
82
|
|
|
81
83
|
| Código | Significado |
|
|
82
84
|
| --- | --- |
|
|
@@ -0,0 +1,63 @@
|
|
|
1
|
+
---
|
|
2
|
+
description: Evoluir documentos existentes e criar somente o que falta.
|
|
3
|
+
---
|
|
4
|
+
|
|
5
|
+
# Documentação sem perder o contexto
|
|
6
|
+
|
|
7
|
+
O pacote instala as skills e suas ferramentas. O agente usa esses recursos
|
|
8
|
+
para ler o projeto, propor complementos e editar os documentos autorizados.
|
|
9
|
+
|
|
10
|
+
## Começar pelo que existe
|
|
11
|
+
|
|
12
|
+
Depois de instalar o kit, peça ao seu agente:
|
|
13
|
+
|
|
14
|
+
```text
|
|
15
|
+
Use atualizar-documentacao. Primeiro inventarie e leia os documentos existentes.
|
|
16
|
+
Proponha complementos por arquivo, preservando conteúdo, nomes e decisões.
|
|
17
|
+
Organize por índices e links; crie apenas documentos que realmente faltam.
|
|
18
|
+
```
|
|
19
|
+
|
|
20
|
+
O inventário pode ser consultado na raiz do projeto:
|
|
21
|
+
|
|
22
|
+
```console
|
|
23
|
+
node .pbai4devs/scripts/inspecionar-projeto/SCRIPT.mjs
|
|
24
|
+
```
|
|
25
|
+
|
|
26
|
+
O campo `documentation` lista documentos encontrados, possíveis papéis e
|
|
27
|
+
limitações da busca. Os papéis são indícios: o agente ainda precisa ler e
|
|
28
|
+
confirmar o conteúdo. Um nome como `ARCHITECTURE.md` pode servir ao design;
|
|
29
|
+
não é necessário renomeá-lo nem recriá-lo em outra pasta.
|
|
30
|
+
|
|
31
|
+
## Planejar o complemento
|
|
32
|
+
|
|
33
|
+
| Situação | Ação |
|
|
34
|
+
| --- | --- |
|
|
35
|
+
| Documento já suficiente | Manter e registrar ausência de impacto. |
|
|
36
|
+
| Falta uma informação comprovada | Acrescentar à seção apropriada. |
|
|
37
|
+
| Documentos difíceis de encontrar | Criar ou completar índices e links. |
|
|
38
|
+
| Documento necessário não existe | Combinar caminho e criar só o necessário. |
|
|
39
|
+
| Decisão não encontrada ou contraditória | Perguntar antes de escrever. |
|
|
40
|
+
|
|
41
|
+
Os templates ajudam a identificar lacunas. Não substituem documentos
|
|
42
|
+
existentes. Preserve suas seções, âncoras, fatos e decisões; repetir o fluxo
|
|
43
|
+
não deve duplicar conteúdo. Não mova nem exclua arquivos para padronizar.
|
|
44
|
+
|
|
45
|
+
## Projeto novo ou existente
|
|
46
|
+
|
|
47
|
+
Em projeto existente, aproveite README, guias, ADRs e documentos de produto.
|
|
48
|
+
Preparar o ambiente ou melhorar a documentação não exige reiniciar o produto.
|
|
49
|
+
|
|
50
|
+
Em projeto novo, descubra produto e experiência antes de arquitetura e specs.
|
|
51
|
+
Enquanto o objetivo for apenas configurar agentes, mantenha os modelos sem
|
|
52
|
+
inventar PRD, tecnologia ou aprovação. Siga o [fluxo de trabalho](workflow.md).
|
|
53
|
+
|
|
54
|
+
## Conferir o resultado
|
|
55
|
+
|
|
56
|
+
Revise o diff e os links. Confirme que o conteúdo anterior foi preservado,
|
|
57
|
+
que arquivos fora do plano não mudaram e que não surgiram decisões inventadas.
|
|
58
|
+
Use `verificar-trabalho` e `revisar-entrega`; salve as provas em `.agent-tests/`.
|
|
59
|
+
|
|
60
|
+
[Wiki](../README.md) · [Skill compartilhada][skill] · [Testes][tests]
|
|
61
|
+
|
|
62
|
+
[skill]: ../../.pbai4devs/skills/projeto/atualizar-documentacao/SKILL.md
|
|
63
|
+
[tests]: ../../tests/README.md
|
|
@@ -84,9 +84,16 @@ gerenciados alterados geram conflito; use `--force` somente após revisar o
|
|
|
84
84
|
backup e o conteúdo que será substituído. Preserve os dados locais, as
|
|
85
85
|
configurações próprias e os commits do projeto.
|
|
86
86
|
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
87
|
+
Entradas, configurações, skills e agentes humanos permanecem intactos, mesmo
|
|
88
|
+
quando seus nomes coincidem com os do kit. Links simbólicos preexistentes nas
|
|
89
|
+
entradas ou nos clientes são preservados sem leitura ou escrita pelo link.
|
|
90
|
+
O campo `preserved` do JSON informa os caminhos que o kit deixou sob controle
|
|
91
|
+
do projeto; os apontamentos são gerados nas demais rotas disponíveis.
|
|
92
|
+
|
|
93
|
+
Essa preservação não autoriza trocar arquivos gerenciados por links. Links
|
|
94
|
+
em caminhos já pertencentes ao kit, no hub, no estado ou em ferramentas
|
|
95
|
+
continuam sujeitos à recusa de segurança. Nenhum link humano é adotado como
|
|
96
|
+
propriedade do kit, e `--force` não o substitui.
|
|
90
97
|
|
|
91
98
|
Arquivos humanos não se tornam gerenciados apenas por conterem um link.
|
|
92
99
|
As alterações de arquivos existentes preservam permissões, inclusive em backup
|
|
@@ -95,7 +102,7 @@ e restauração após falha.
|
|
|
95
102
|
O [fluxo de trabalho](workflow.md) orienta a próxima etapa do projeto.
|
|
96
103
|
Se houver erro, consulte [solução de problemas](troubleshooting.md).
|
|
97
104
|
|
|
98
|
-
[Wiki](../README.md) · [Spec v0.0.
|
|
105
|
+
[Wiki](../README.md) · [Spec v0.0.9][spec]
|
|
99
106
|
|
|
100
107
|
[bootstrap]: ../../.pbai4devs/scripts/preparar-ferramentas/BOOTSTRAP.md
|
|
101
|
-
[spec]: ../specs/v0.0.
|
|
108
|
+
[spec]: ../specs/v0.0.9/SPEC.md
|
package/docs/guides/resources.md
CHANGED
|
@@ -84,18 +84,19 @@ node .pbai4devs/scripts/verificar-recursos/SCRIPT.mjs
|
|
|
84
84
|
O primeiro comando atualiza apontamentos e índices; `--check` só compara.
|
|
85
85
|
O manifesto instalado respeita os clientes escolhidos. Não o substitua por uma
|
|
86
86
|
lista de todos para reparar recursos; altere a seleção pela CLI se necessário.
|
|
87
|
-
Conflitos
|
|
87
|
+
Conflitos em arquivos gerenciados exigem revisão. Quando a substituição for
|
|
88
88
|
intencional, `--force` faz backup local antes de reparar caminhos gerenciados.
|
|
89
89
|
Não apague pastas inteiras para contornar um conflito.
|
|
90
90
|
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
Escolha a operação pelo escopo; não prometa preservação indistinta.
|
|
91
|
+
Recursos nativos humanos são preservados, inclusive com `--force` e nomes
|
|
92
|
+
iguais aos do kit. Links humanos são tratados como caminhos opacos; o gerador
|
|
93
|
+
não os atravessa. A CLI informa essas rotas em `preserved` no JSON.
|
|
95
94
|
|
|
96
95
|
Não edite ou versione `catalog.json`, `skills.json`, `rules.json` ou
|
|
97
96
|
`agents.json`: são derivados locais. Configurações nativas e documentos
|
|
98
97
|
do projeto não devem ser substituídos por cópias desses índices.
|
|
98
|
+
Em uma instalação existente, `verificar-recursos` confere o hub e as derivações
|
|
99
|
+
registradas, sem exigir frontmatter nos documentos humanos do projeto.
|
|
99
100
|
|
|
100
101
|
## O que permanece fora dos espelhos
|
|
101
102
|
|