auroq-os 2.2.2 → 2.3.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.auroq-core/constitution.md +11 -151
- package/.auroq-core/core-config.yaml +1 -1
- package/.auroq-core/dna-operacional.md +9 -131
- package/.claude/CLAUDE.md +5 -466
- package/.claude/commands/AuroqOS/agents/ops.md +4 -1781
- package/.claude/commands/auroq-clone-forge.md +3 -3
- package/.claude/commands/auroq-companion.md +3 -3
- package/.claude/commands/auroq-consultor.md +4 -4
- package/.claude/commands/auroq-etlmaker.md +3 -3
- package/.claude/commands/auroq-mind-forge.md +4 -4
- package/.claude/commands/auroq-squad-forge.md +3 -3
- package/.claude/commands/auroq-worker-forge.md +4 -4
- package/.claude/hooks/auroq-sync.cjs +127 -0
- package/.claude/output-styles/direto.md +19 -0
- package/.claude/rules/agent-authority.md +8 -6
- package/.claude/rules/evolucao-incremental.md +8 -20
- package/.claude/rules/mcp-usage.md +10 -18
- package/.claude/rules/operacao-autonoma.md +29 -0
- package/.claude/rules/puxar-e-entregar.md +31 -0
- package/.claude/settings.json +22 -1
- package/.gitignore +4 -0
- package/AGENTS.md +10 -119
- package/README.md +8 -7
- package/bin/auroq-os.js +68 -18
- package/lib/auth.js +6 -6
- package/lib/credentials.js +13 -1
- package/package.json +18 -8
- package/scripts/postpack-casca.mjs +32 -0
- package/scripts/prepack-casca.mjs +47 -0
- package/scripts/validate-hybrid.mjs +2 -0
- package/.auroq-core/development/sistema-gestao-projetos.md +0 -193
- package/.auroq-core/development/sistema-memoria.md +0 -157
- package/agents/clone-forge/.state.json +0 -7
- package/agents/clone-forge/README.md +0 -81
- package/agents/clone-forge/agents/clone-forge-chief.md +0 -885
- package/agents/clone-forge/agents/cognitive-motor.md +0 -384
- package/agents/clone-forge/agents/innerlens.md +0 -453
- package/agents/clone-forge/checklists/clone-forge-validation.md +0 -160
- package/agents/clone-forge/checklists/driver-quality-gate.md +0 -79
- package/agents/clone-forge/checklists/miu-quality-gate.md +0 -86
- package/agents/clone-forge/checklists/psychometric-quality-gate.md +0 -76
- package/agents/clone-forge/checklists/smoke-test-clone.md +0 -313
- package/agents/clone-forge/config.yaml +0 -221
- package/agents/clone-forge/data/clone-anti-patterns.yaml +0 -148
- package/agents/clone-forge/data/clone-forge-kb.md +0 -106
- package/agents/clone-forge/data/clone-validation.yaml +0 -190
- package/agents/clone-forge/data/driver-catalog.yaml +0 -2595
- package/agents/clone-forge/data/driver-relationship-templates.yaml +0 -242
- package/agents/clone-forge/data/miu-classification-taxonomy.yaml +0 -273
- package/agents/clone-forge/data/output-examples.yaml +0 -102
- package/agents/clone-forge/data/poc-schema.yaml +0 -320
- package/agents/clone-forge/data/psychometric-systems.yaml +0 -1514
- package/agents/clone-forge/data/source-tiers.yaml +0 -119
- package/agents/clone-forge/data/source-type-handlers.yaml +0 -282
- package/agents/clone-forge/tasks/aggregate-profile.md +0 -519
- package/agents/clone-forge/tasks/clone-review.md +0 -105
- package/agents/clone-forge/tasks/collect-and-merge-sources.md +0 -621
- package/agents/clone-forge/tasks/deep-interview.md +0 -737
- package/agents/clone-forge/tasks/extract-dna-enriched.md +0 -371
- package/agents/clone-forge/tasks/extract-mius.md +0 -1018
- package/agents/clone-forge/tasks/extract-thinking-dna.md +0 -654
- package/agents/clone-forge/tasks/extract-voice-dna.md +0 -620
- package/agents/clone-forge/tasks/fidelity-score.md +0 -109
- package/agents/clone-forge/tasks/gap-analysis-questionnaire.md +0 -517
- package/agents/clone-forge/tasks/generate-agent-from-profile.md +0 -874
- package/agents/clone-forge/tasks/infer-drivers.md +0 -431
- package/agents/clone-forge/tasks/ingest-local-content.md +0 -578
- package/agents/clone-forge/tasks/map-psychometrics.md +0 -459
- package/agents/clone-forge/tasks/start.md +0 -805
- package/agents/clone-forge/tasks/validate-clone-forge.md +0 -743
- package/agents/clone-forge/tasks/validate-clone.md +0 -130
- package/agents/clone-forge/templates/driver-profile-tmpl.yaml +0 -137
- package/agents/clone-forge/templates/manifest-tmpl.yaml +0 -161
- package/agents/clone-forge/templates/miu-tmpl.yaml +0 -109
- package/agents/clone-forge/templates/poc-module-tmpl.yaml +0 -259
- package/agents/clone-forge/templates/quality-dashboard-360-tmpl.md +0 -218
- package/agents/clone-forge/workflows/wf-clone-forge-full.yaml +0 -678
- package/agents/clone-forge/workflows/wf-clone-forge-quick.yaml +0 -320
- package/agents/companion/agents/companion.md +0 -326
- package/agents/companion/knowledge/arcane-method.md +0 -247
- package/agents/companion/knowledge/companion-foundation.md +0 -57
- package/agents/companion/knowledge/modus-operandi.md +0 -161
- package/agents/companion/knowledge/system-guide.md +0 -380
- package/agents/companion/tasks/new-project.md +0 -111
- package/agents/companion/tasks/save-memory.md +0 -73
- package/agents/companion/tasks/start.md +0 -159
- package/agents/companion/tasks/weekly-review.md +0 -82
- package/agents/consultor/agents/consultor.md +0 -185
- package/agents/consultor/knowledge/01-arquitetura-e-engenharia.md +0 -157
- package/agents/consultor/knowledge/02-operar-o-negocio.md +0 -136
- package/agents/consultor/knowledge/03-os-8-agentes.md +0 -96
- package/agents/consultor/knowledge/04-filosofia-e-didatica.md +0 -131
- package/agents/consultor/knowledge/05-fazer-no-dia-a-dia.md +0 -99
- package/agents/consultor/knowledge/06-quando-criar-agente-ou-squad.md +0 -109
- package/agents/consultor/knowledge/07-logicas-de-uso-e-higiene.md +0 -87
- package/agents/consultor/tasks/start.md +0 -26
- package/agents/etlmaker/agents/analyst.md +0 -189
- package/agents/etlmaker/agents/architect.md +0 -173
- package/agents/etlmaker/agents/auditor.md +0 -217
- package/agents/etlmaker/agents/composer.md +0 -201
- package/agents/etlmaker/agents/etl-chief.md +0 -259
- package/agents/etlmaker/agents/extractor.md +0 -184
- package/agents/etlmaker/data/archive/extraction-lenses.yaml +0 -178
- package/agents/etlmaker/data/archive/miu-types.yaml +0 -128
- package/agents/etlmaker/data/etlmaker-kb.md +0 -175
- package/agents/etlmaker/data/quality-gates.yaml +0 -208
- package/agents/etlmaker/skill.md +0 -230
- package/agents/etlmaker/squad.yaml +0 -182
- package/agents/etlmaker/tasks/compose-volume.md +0 -292
- package/agents/etlmaker/tasks/ingest-sources.md +0 -157
- package/agents/etlmaker/tasks/integrate-package.md +0 -357
- package/agents/etlmaker/tasks/map-territory.md +0 -394
- package/agents/etlmaker/tasks/start.md +0 -225
- package/agents/etlmaker/tasks/validate-final.md +0 -471
- package/agents/etlmaker/templates/kb-template.md +0 -180
- package/agents/etlmaker/workflows/wf-knowledge-etl.yaml +0 -371
- package/agents/mind-forge/README.md +0 -64
- package/agents/mind-forge/agents/forge-chief.md +0 -293
- package/agents/mind-forge/agents/knowledge-miner.md +0 -280
- package/agents/mind-forge/agents/mind-smith.md +0 -306
- package/agents/mind-forge/checklists/analysis-completeness.md +0 -34
- package/agents/mind-forge/checklists/mind-quality.md +0 -55
- package/agents/mind-forge/data/extraction-lenses.yaml +0 -229
- package/agents/mind-forge/data/forge-kb.md +0 -182
- package/agents/mind-forge/data/kf-classification.yaml +0 -307
- package/agents/mind-forge/skill.md +0 -7
- package/agents/mind-forge/squad.yaml +0 -167
- package/agents/mind-forge/tasks/analyze-knowledge.md +0 -278
- package/agents/mind-forge/tasks/forge-mind.md +0 -199
- package/agents/mind-forge/tasks/ingest-sources.md +0 -130
- package/agents/mind-forge/tasks/playback-validate.md +0 -146
- package/agents/mind-forge/tasks/start.md +0 -137
- package/agents/mind-forge/tasks/validate-mind.md +0 -237
- package/agents/mind-forge/templates/agent-tmpl.md +0 -124
- package/agents/mind-forge/templates/config-tmpl.yaml +0 -17
- package/agents/mind-forge/templates/kb-tmpl.md +0 -66
- package/agents/mind-forge/workflows/wf-mind-forge.yaml +0 -168
- package/agents/squad-forge/README.md +0 -110
- package/agents/squad-forge/agents/forge-chief.md +0 -297
- package/agents/squad-forge/agents/forge-smith.md +0 -535
- package/agents/squad-forge/agents/process-archaeologist.md +0 -398
- package/agents/squad-forge/checklists/architecture-coherence.md +0 -28
- package/agents/squad-forge/checklists/extraction-completeness.md +0 -48
- package/agents/squad-forge/checklists/nuclear-structure-validation.md +0 -61
- package/agents/squad-forge/checklists/squad-operational.md +0 -24
- package/agents/squad-forge/checklists/user-validation.md +0 -23
- package/agents/squad-forge/data/executor-mapping-guide.yaml +0 -135
- package/agents/squad-forge/data/extraction-lenses.yaml +0 -330
- package/agents/squad-forge/data/forge-kb.md +0 -248
- package/agents/squad-forge/data/pu-classification.yaml +0 -229
- package/agents/squad-forge/data/quality-thresholds.yaml +0 -259
- package/agents/squad-forge/squad.yaml +0 -175
- package/agents/squad-forge/tasks/architect-squad.md +0 -398
- package/agents/squad-forge/tasks/assemble-squad.md +0 -831
- package/agents/squad-forge/tasks/extract-process.md +0 -378
- package/agents/squad-forge/tasks/fix-squad.md +0 -334
- package/agents/squad-forge/tasks/generate-prd.md +0 -265
- package/agents/squad-forge/tasks/generate-stories.md +0 -223
- package/agents/squad-forge/tasks/playback-validate.md +0 -263
- package/agents/squad-forge/tasks/rebuild-squad.md +0 -236
- package/agents/squad-forge/tasks/self-test.md +0 -237
- package/agents/squad-forge/tasks/start.md +0 -247
- package/agents/squad-forge/tasks/update-squad.md +0 -262
- package/agents/squad-forge/tasks/validate-squad.md +0 -377
- package/agents/squad-forge/templates/process-map-tmpl.yaml +0 -109
- package/agents/squad-forge/templates/pu-tmpl.yaml +0 -71
- package/agents/squad-forge/templates/squad-blueprint-tmpl.yaml +0 -113
- package/agents/squad-forge/workflows/wf-squad-forge.yaml +0 -300
- package/agents/worker-forge/README.md +0 -58
- package/agents/worker-forge/agents/knowledge-curator.md +0 -170
- package/agents/worker-forge/agents/role-designer.md +0 -150
- package/agents/worker-forge/agents/worker-chief.md +0 -273
- package/agents/worker-forge/agents/worker-smith.md +0 -258
- package/agents/worker-forge/data/worker-forge-kb.md +0 -264
- package/agents/worker-forge/knowledge/autonomous-agent-architectures.md +0 -275
- package/agents/worker-forge/knowledge/delegation-competency-performance.md +0 -256
- package/agents/worker-forge/knowledge/job-design-business-systems.md +0 -296
- package/agents/worker-forge/knowledge/knowledge-management-improvement.md +0 -242
- package/agents/worker-forge/skill.md +0 -7
- package/agents/worker-forge/squad.yaml +0 -101
- package/agents/worker-forge/tasks/assemble-worker.md +0 -239
- package/agents/worker-forge/tasks/discover-needs.md +0 -219
- package/agents/worker-forge/tasks/playback-validate.md +0 -126
- package/agents/worker-forge/tasks/propose-worker.md +0 -112
- package/agents/worker-forge/tasks/research-domain.md +0 -165
- package/agents/worker-forge/tasks/start.md +0 -67
- package/agents/worker-forge/tasks/validate-worker.md +0 -155
- package/agents/worker-forge/workflows/wf-worker-forge.yaml +0 -96
- package/docs/stories/AUROQ-2.1.0-hybrid-runtime.md +0 -64
- package/tests/installer-hybrid.test.mjs +0 -66
- package/tests/onepassword.test.mjs +0 -54
- package/tests/sync-codex-skills.test.mjs +0 -88
- /package/{agents → seeds/agents}/companion/data/contexto-dinamico.md +0 -0
- /package/{agents → seeds/agents}/companion/data/demandas-backlog.md +0 -0
- /package/{agents → seeds/agents}/companion/data/log-decisoes.md +0 -0
- /package/{agents → seeds/agents}/companion/data/padroes-observados.md +0 -0
- /package/{agents → seeds/agents}/companion/knowledge/expert-essencial.md +0 -0
- /package/{business → seeds/business}/campanhas/_template/BRIEFING.md +0 -0
- /package/{business → seeds/business}/campanhas/_template/CHECKLIST.md +0 -0
- /package/{business → seeds/business}/campanhas/_template/DIARIO.md +0 -0
- /package/{business → seeds/business}/campanhas/_template/RETROVISOR.md +0 -0
- /package/{business → seeds/business}/cockpit.md +0 -0
- /package/{business → seeds/business}/templates/tracker-template.md +0 -0
- /package/{docs → seeds/docs}/knowledge/expert-business/criacoes/.gitkeep +0 -0
- /package/{docs → seeds/docs}/knowledge/expert-business/posicionamento/.gitkeep +0 -0
- /package/{docs → seeds/docs}/knowledge/expert-business/posicionamento.md +0 -0
- /package/{docs → seeds/docs}/knowledge/expert-business/produto/.gitkeep +0 -0
- /package/{docs → seeds/docs}/knowledge/expert-business/publico-alvo.md +0 -0
- /package/{docs → seeds/docs}/knowledge/expert-mind/assessments/.gitkeep +0 -0
- /package/{docs → seeds/docs}/knowledge/expert-mind/historia.md +0 -0
- /package/{docs → seeds/docs}/knowledge/expert-mind/identidade/.gitkeep +0 -0
- /package/{docs → seeds/docs}/knowledge/expert-mind/identidade.md +0 -0
- /package/{docs → seeds/docs}/knowledge/expert-mind/proposito/.gitkeep +0 -0
- /package/{docs → seeds/docs}/knowledge/expert-mind/tom-de-voz.md +0 -0
- /package/{docs → seeds/docs}/knowledge/expert-mind/valores.md +0 -0
package/README.md
CHANGED
|
@@ -80,11 +80,11 @@ claude
|
|
|
80
80
|
*conectar-1password # reconectar o cofre (uma vez so nesta maquina)
|
|
81
81
|
```
|
|
82
82
|
|
|
83
|
-
Ritual diario em toda maquina: **
|
|
83
|
+
Ritual diario em toda maquina: **abriu o `claude` → o sistema puxa sozinho o que mudou · terminou → diga "salva e entrega"** (qualquer agente executa o ritual do Ops; `*sync`/`*commit`/`*push` seguem como atalhos).
|
|
84
84
|
Colaborador usa conta propria de tudo (GitHub via convite, assinatura Claude propria,
|
|
85
85
|
cofre 1Password com escopo) — nunca a senha do dono. **Colaborador nao precisa ser
|
|
86
86
|
aluno**: o acesso dele e o convite do GitHub (o `clone` nao pede login); quem atualiza
|
|
87
|
-
o sistema e o dono, e o colaborador recebe as atualizacoes
|
|
87
|
+
o sistema e o dono, e o colaborador recebe as atualizacoes automaticamente ao abrir o `claude`.
|
|
88
88
|
|
|
89
89
|
## Estrutura
|
|
90
90
|
|
|
@@ -117,10 +117,11 @@ agents/ → Seu exercito (companion, workers, minds, squads)
|
|
|
117
117
|
|
|
118
118
|
## Primeiro uso
|
|
119
119
|
|
|
120
|
-
1. Ative o
|
|
121
|
-
2.
|
|
122
|
-
3.
|
|
123
|
-
4.
|
|
120
|
+
1. Ative o Ops (`/AuroqOS:agents:ops` no Claude/Grok ou `$ops` no Codex) e peca o Bootstrap 1.
|
|
121
|
+
2. O Ops prepara browser oficial, Computer Use quando elegivel e Playwright como fallback, sempre com smoke test real.
|
|
122
|
+
3. Ative o Companion (`/auroq-companion` no Claude/Grok ou `$companion` no Codex).
|
|
123
|
+
4. Preencha os templates em `docs/knowledge/expert-mind/` e `docs/knowledge/expert-business/`.
|
|
124
|
+
5. Pronto — o sistema ja te conhece.
|
|
124
125
|
|
|
125
126
|
## Filosofia
|
|
126
127
|
|
|
@@ -132,4 +133,4 @@ agents/ → Seu exercito (companion, workers, minds, squads)
|
|
|
132
133
|
|
|
133
134
|
---
|
|
134
135
|
|
|
135
|
-
*Auroq OS v2.
|
|
136
|
+
*Auroq OS v2.2.4 — by Euriler Jube / Arka*
|
package/bin/auroq-os.js
CHANGED
|
@@ -146,15 +146,14 @@ async function applySecretProtections(targetDir) {
|
|
|
146
146
|
const HEALTH_CHECKS = [
|
|
147
147
|
['.auroq-core/constitution.md', 'Constitution'],
|
|
148
148
|
['.claude/CLAUDE.md', 'CLAUDE.md'],
|
|
149
|
+
['.claude/output-styles/direto.md', 'Output style Direto'],
|
|
150
|
+
['.claude/rules/operacao-autonoma.md', 'Rule de operacao autonoma'],
|
|
149
151
|
['.claude/hooks/synapse-engine.cjs', 'Synapse Hook'],
|
|
150
|
-
['
|
|
151
|
-
['
|
|
152
|
-
['.claude/
|
|
153
|
-
['
|
|
154
|
-
['
|
|
155
|
-
['agents/worker-forge/agents/worker-chief.md', 'Worker Forge'],
|
|
156
|
-
['agents/clone-forge/agents/clone-forge-chief.md', 'Clone Forge'],
|
|
157
|
-
['agents/etlmaker/agents/etl-chief.md', 'ETLmaker'],
|
|
152
|
+
['.claude/hooks/auroq-sync.cjs', 'Sync Hook'],
|
|
153
|
+
['.claude/rules/puxar-e-entregar.md', 'Rule puxar-e-entregar'],
|
|
154
|
+
['.claude/rules/mcp-usage.md', 'Rule MCP (carve-out Arcane)'],
|
|
155
|
+
['.claude/commands/auroq-companion.md', 'Casca Companion'],
|
|
156
|
+
['.claude/commands/AuroqOS/agents/ops.md', 'Casca Ops'],
|
|
158
157
|
['business/cockpit.md', 'Cockpit'],
|
|
159
158
|
['.synapse/manifest', 'Synapse Manifest'],
|
|
160
159
|
['AGENTS.md', 'Codex AGENTS.md'],
|
|
@@ -165,21 +164,62 @@ const HEALTH_CHECKS = [
|
|
|
165
164
|
|
|
166
165
|
async function runHealthChecks(targetDir) {
|
|
167
166
|
let passed = 0;
|
|
167
|
+
const missing = [];
|
|
168
168
|
for (const [file, label] of HEALTH_CHECKS) {
|
|
169
169
|
if (await fs.pathExists(path.join(targetDir, file))) {
|
|
170
170
|
passed++;
|
|
171
171
|
} else {
|
|
172
|
-
|
|
172
|
+
missing.push(`${label} (${file})`);
|
|
173
173
|
}
|
|
174
174
|
}
|
|
175
175
|
if (passed === HEALTH_CHECKS.length) {
|
|
176
176
|
success(`${passed}/${HEALTH_CHECKS.length} verificacoes OK`);
|
|
177
177
|
} else {
|
|
178
|
-
|
|
178
|
+
error(`${passed}/${HEALTH_CHECKS.length} verificacoes OK — arquivo de autoload faltando:`);
|
|
179
|
+
for (const item of missing) error(` - ${item}`);
|
|
180
|
+
error('Nenhum arquivo de autoload pode faltar em silencio. Contato: 11 97312-2273');
|
|
181
|
+
process.exit(1);
|
|
179
182
|
}
|
|
180
183
|
return { passed, total: HEALTH_CHECKS.length };
|
|
181
184
|
}
|
|
182
185
|
|
|
186
|
+
async function writeArcaneMcpConfig(targetDir) {
|
|
187
|
+
const pin = 'arcane-mcp@0.1.0';
|
|
188
|
+
const mcpPath = path.join(targetDir, '.mcp.json');
|
|
189
|
+
let json = { mcpServers: {} };
|
|
190
|
+
if (await fs.pathExists(mcpPath)) {
|
|
191
|
+
try { json = await fs.readJSON(mcpPath); } catch { json = { mcpServers: {} }; }
|
|
192
|
+
}
|
|
193
|
+
json.mcpServers = json.mcpServers || {};
|
|
194
|
+
json.mcpServers.arcane = { command: 'npx', args: ['-y', pin] };
|
|
195
|
+
await fs.writeJSON(mcpPath, json, { spaces: 2 });
|
|
196
|
+
|
|
197
|
+
const tomlPath = path.join(targetDir, '.codex', 'config.toml');
|
|
198
|
+
await fs.ensureDir(path.dirname(tomlPath));
|
|
199
|
+
const block = `[mcp_servers.arcane]\ncommand = "npx"\nargs = ["-y", "${pin}"]\n`;
|
|
200
|
+
let toml = '';
|
|
201
|
+
if (await fs.pathExists(tomlPath)) toml = await fs.readFile(tomlPath, 'utf8');
|
|
202
|
+
if (!toml.includes('[mcp_servers.arcane]')) {
|
|
203
|
+
const next = (toml.trimEnd() ? `${toml.trimEnd()}\n\n` : '') + block;
|
|
204
|
+
await fs.writeFile(tomlPath, next);
|
|
205
|
+
}
|
|
206
|
+
}
|
|
207
|
+
|
|
208
|
+
async function patchEnableAllProjectMcpServers(targetDir) {
|
|
209
|
+
const settingsPath = path.join(targetDir, '.claude', 'settings.local.json');
|
|
210
|
+
let json = {};
|
|
211
|
+
if (await fs.pathExists(settingsPath)) {
|
|
212
|
+
try {
|
|
213
|
+
json = await fs.readJSON(settingsPath);
|
|
214
|
+
} catch {
|
|
215
|
+
json = {};
|
|
216
|
+
}
|
|
217
|
+
}
|
|
218
|
+
if (json.enableAllProjectMcpServers === true) return;
|
|
219
|
+
json.enableAllProjectMcpServers = true;
|
|
220
|
+
await fs.writeJSON(settingsPath, json, { spaces: 2 });
|
|
221
|
+
}
|
|
222
|
+
|
|
183
223
|
// ─── INSTALACAO ──────────────────────────────────────────
|
|
184
224
|
async function init() {
|
|
185
225
|
showBanner();
|
|
@@ -321,6 +361,7 @@ async function init() {
|
|
|
321
361
|
'.claude/CLAUDE.md',
|
|
322
362
|
'.claude/settings.json',
|
|
323
363
|
'.claude/settings.local.json',
|
|
364
|
+
'.claude/output-styles/direto.md',
|
|
324
365
|
'.claude/commands/auroq-companion.md',
|
|
325
366
|
'.claude/commands/auroq-organizer.md',
|
|
326
367
|
'.claude/commands/AuroqOS/agents/ops.md',
|
|
@@ -342,11 +383,14 @@ async function init() {
|
|
|
342
383
|
'.claude/rules/project-tracker.md',
|
|
343
384
|
'.claude/rules/tool-response-filtering.md',
|
|
344
385
|
'.claude/rules/natural-language-first.md',
|
|
386
|
+
'.claude/rules/operacao-autonoma.md',
|
|
345
387
|
'.claude/rules/custom-do-aluno.md',
|
|
388
|
+
'.claude/rules/puxar-e-entregar.md',
|
|
346
389
|
|
|
347
390
|
// Hooks
|
|
348
391
|
'.claude/hooks/synapse-engine.cjs',
|
|
349
392
|
'.claude/hooks/precompact-session-digest.cjs',
|
|
393
|
+
'.claude/hooks/auroq-sync.cjs',
|
|
350
394
|
|
|
351
395
|
// Synapse domain files
|
|
352
396
|
'.synapse/manifest',
|
|
@@ -510,6 +554,14 @@ async function init() {
|
|
|
510
554
|
}
|
|
511
555
|
success(`${copied} arquivos instalados`);
|
|
512
556
|
|
|
557
|
+
const seedRoot = path.join(sourceDir, 'seeds');
|
|
558
|
+
if (await fs.pathExists(seedRoot)) {
|
|
559
|
+
await fs.copy(seedRoot, targetDir, { overwrite: false });
|
|
560
|
+
success('Semente do aluno instalada (memoria, docs, cockpit — nunca sobrescreve)');
|
|
561
|
+
}
|
|
562
|
+
await patchEnableAllProjectMcpServers(targetDir);
|
|
563
|
+
await writeArcaneMcpConfig(targetDir);
|
|
564
|
+
|
|
513
565
|
// ─── Fase 4: Copiar Synapse Engine
|
|
514
566
|
step('Instalando Synapse Engine...');
|
|
515
567
|
|
|
@@ -527,11 +579,7 @@ async function init() {
|
|
|
527
579
|
step('Instalando Meta Squads e scripts...');
|
|
528
580
|
|
|
529
581
|
const dirsToCopy = [
|
|
530
|
-
{ src: 'agents/
|
|
531
|
-
{ src: 'agents/mind-forge', label: 'Mind Forge' },
|
|
532
|
-
{ src: 'agents/worker-forge', label: 'Worker Forge' },
|
|
533
|
-
{ src: 'agents/clone-forge', label: 'Clone Forge' },
|
|
534
|
-
{ src: 'agents/etlmaker', label: 'ETLmaker' },
|
|
582
|
+
{ src: 'agents/organizer', label: 'Organizer' },
|
|
535
583
|
{ src: '.auroq-core/development/scripts', label: 'Squad Scripts' },
|
|
536
584
|
];
|
|
537
585
|
|
|
@@ -785,6 +833,8 @@ async function clone(repoArg) {
|
|
|
785
833
|
}
|
|
786
834
|
}
|
|
787
835
|
|
|
836
|
+
await writeArcaneMcpConfig(destDir);
|
|
837
|
+
|
|
788
838
|
// ─── Fase 8: Health check
|
|
789
839
|
step('Verificando integridade...');
|
|
790
840
|
await runHealthChecks(destDir);
|
|
@@ -805,10 +855,10 @@ ${DIM} Uma vez so, nesta maquina:${RESET}
|
|
|
805
855
|
|
|
806
856
|
${DIM} Ritual de todo dia, em toda maquina:${RESET}
|
|
807
857
|
|
|
808
|
-
${GOLD}
|
|
809
|
-
${GOLD}Levantou${RESET} → ${CYAN}
|
|
858
|
+
${GOLD}Abriu${RESET} → ${DIM}o sistema puxa sozinho o que mudou nas outras maquinas (e te conta)${RESET}
|
|
859
|
+
${GOLD}Levantou${RESET} → diga ${CYAN}"salva e entrega"${RESET} ${DIM}pra quem estiver na tela — vai pro GitHub${RESET}
|
|
810
860
|
|
|
811
|
-
${DIM} Nunca levante da maquina com trabalho nao entregue.${RESET}
|
|
861
|
+
${DIM} Nunca levante da maquina com trabalho nao entregue — o sistema lembra, mas so voce entrega.${RESET}
|
|
812
862
|
|
|
813
863
|
${PURPLE}${BOLD} ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━${RESET}
|
|
814
864
|
${DIM} Auroq OS v${PKG_VERSION} — Sistema Operacional de IA para Experts${RESET}
|
package/lib/auth.js
CHANGED
|
@@ -150,7 +150,7 @@ async function interactiveLogin({ forceFresh = false } = {}) {
|
|
|
150
150
|
process.exit(1);
|
|
151
151
|
}
|
|
152
152
|
|
|
153
|
-
if (status !== 'ativo') {
|
|
153
|
+
if (status !== 'ativo' && status !== 'finalizado') {
|
|
154
154
|
await client.auth.signOut().catch(() => {});
|
|
155
155
|
err(statusMessage(status));
|
|
156
156
|
process.exit(1);
|
|
@@ -166,7 +166,7 @@ async function interactiveLogin({ forceFresh = false } = {}) {
|
|
|
166
166
|
});
|
|
167
167
|
|
|
168
168
|
ok(`Autenticado como ${BOLD}${user.email}${RESET}`);
|
|
169
|
-
ok(`Status: ${GREEN}
|
|
169
|
+
ok(`Status: ${GREEN}${status}${RESET}`);
|
|
170
170
|
return saved;
|
|
171
171
|
}
|
|
172
172
|
|
|
@@ -208,7 +208,7 @@ async function getValidSession({ allowOffline = true } = {}) {
|
|
|
208
208
|
refresh_token: cred.refresh_token,
|
|
209
209
|
});
|
|
210
210
|
const status = await checkAccess(client);
|
|
211
|
-
if (status !== 'ativo') {
|
|
211
|
+
if (status !== 'ativo' && status !== 'finalizado') {
|
|
212
212
|
err(statusMessage(status));
|
|
213
213
|
credentials.clear();
|
|
214
214
|
process.exit(1);
|
|
@@ -219,7 +219,7 @@ async function getValidSession({ allowOffline = true } = {}) {
|
|
|
219
219
|
last_status: status,
|
|
220
220
|
});
|
|
221
221
|
ok(`Autenticado como ${BOLD}${cred.user.email}${RESET}`);
|
|
222
|
-
ok(`Status: ${GREEN}
|
|
222
|
+
ok(`Status: ${GREEN}${status}${RESET}`);
|
|
223
223
|
return saved;
|
|
224
224
|
} catch (e) {
|
|
225
225
|
if (isOffline(e) && allowOffline) {
|
|
@@ -248,7 +248,7 @@ async function getValidSession({ allowOffline = true } = {}) {
|
|
|
248
248
|
process.exit(1);
|
|
249
249
|
}
|
|
250
250
|
|
|
251
|
-
if (status !== 'ativo') {
|
|
251
|
+
if (status !== 'ativo' && status !== 'finalizado') {
|
|
252
252
|
err(statusMessage(status));
|
|
253
253
|
credentials.clear();
|
|
254
254
|
process.exit(1);
|
|
@@ -263,7 +263,7 @@ async function getValidSession({ allowOffline = true } = {}) {
|
|
|
263
263
|
last_status: status,
|
|
264
264
|
});
|
|
265
265
|
ok(`Sessao renovada — ${BOLD}${user.email}${RESET}`);
|
|
266
|
-
ok(`Status: ${GREEN}
|
|
266
|
+
ok(`Status: ${GREEN}${status}${RESET}`);
|
|
267
267
|
return saved;
|
|
268
268
|
} catch (e) {
|
|
269
269
|
if (isOffline(e) && allowOffline) {
|
package/lib/credentials.js
CHANGED
|
@@ -3,10 +3,20 @@
|
|
|
3
3
|
const fs = require('fs');
|
|
4
4
|
const path = require('path');
|
|
5
5
|
const os = require('os');
|
|
6
|
+
const crypto = require('crypto');
|
|
6
7
|
|
|
7
8
|
const CRED_DIR = path.join(os.homedir(), '.arcane');
|
|
8
9
|
const CRED_FILE = path.join(CRED_DIR, 'credentials.json');
|
|
9
10
|
|
|
11
|
+
function deviceFingerprint() {
|
|
12
|
+
let username = 'unknown';
|
|
13
|
+
try {
|
|
14
|
+
username = os.userInfo().username;
|
|
15
|
+
} catch {}
|
|
16
|
+
const raw = `${os.hostname()}|${username}|${os.platform()}|${os.arch()}`;
|
|
17
|
+
return crypto.createHash('sha256').update(raw).digest('hex');
|
|
18
|
+
}
|
|
19
|
+
|
|
10
20
|
function ensureDir() {
|
|
11
21
|
if (!fs.existsSync(CRED_DIR)) {
|
|
12
22
|
fs.mkdirSync(CRED_DIR, { recursive: true, mode: 0o700 });
|
|
@@ -33,6 +43,7 @@ function load() {
|
|
|
33
43
|
|
|
34
44
|
function save(cred) {
|
|
35
45
|
ensureDir();
|
|
46
|
+
const existing = load() || {};
|
|
36
47
|
const payload = {
|
|
37
48
|
access_token: cred.access_token,
|
|
38
49
|
refresh_token: cred.refresh_token,
|
|
@@ -43,6 +54,7 @@ function save(cred) {
|
|
|
43
54
|
},
|
|
44
55
|
last_validated_at: cred.last_validated_at || Math.floor(Date.now() / 1000),
|
|
45
56
|
last_status: cred.last_status || 'unknown',
|
|
57
|
+
device_fp: existing.device_fp || cred.device_fp || deviceFingerprint(),
|
|
46
58
|
};
|
|
47
59
|
fs.writeFileSync(CRED_FILE, JSON.stringify(payload, null, 2), { mode: 0o600 });
|
|
48
60
|
try {
|
|
@@ -65,4 +77,4 @@ function isExpired(cred) {
|
|
|
65
77
|
return now >= cred.expires_at - 60;
|
|
66
78
|
}
|
|
67
79
|
|
|
68
|
-
module.exports = { load, save, clear, isExpired, CRED_DIR, CRED_FILE };
|
|
80
|
+
module.exports = { load, save, clear, isExpired, deviceFingerprint, CRED_DIR, CRED_FILE };
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "auroq-os",
|
|
3
|
-
"version": "2.
|
|
3
|
+
"version": "2.3.0",
|
|
4
4
|
"description": "Auroq OS — Sistema Operacional de IA para Experts",
|
|
5
5
|
"bin": {
|
|
6
6
|
"auroq-os": "bin/auroq-os.js"
|
|
@@ -18,22 +18,32 @@
|
|
|
18
18
|
"auroq:sync:codex:check": "npm run sync:codex:check",
|
|
19
19
|
"auroq:validate": "npm run validate:hybrid",
|
|
20
20
|
"validate:hybrid": "node scripts/validate-hybrid.mjs",
|
|
21
|
-
"lint": "node --check bin/auroq-os.js && node --check lib/auth.js && node --check lib/credentials.js && node --check lib/onepassword.js && node --check lib/supabase.js && node --check scripts/sync-codex-skills.mjs && node --check scripts/validate-hybrid.mjs",
|
|
21
|
+
"lint": "node --check bin/auroq-os.js && node --check lib/auth.js && node --check lib/credentials.js && node --check lib/onepassword.js && node --check lib/supabase.js && node --check scripts/sync-codex-skills.mjs && node --check scripts/validate-hybrid.mjs && node --check scripts/prepack-casca.mjs && node --check scripts/postpack-casca.mjs",
|
|
22
22
|
"typecheck": "npm run validate:hybrid",
|
|
23
23
|
"test": "node --test tests/*.test.mjs",
|
|
24
|
+
"prepack": "node scripts/prepack-casca.mjs",
|
|
25
|
+
"postpack": "node scripts/postpack-casca.mjs",
|
|
24
26
|
"build": "npm pack --dry-run --json > /dev/null"
|
|
25
27
|
},
|
|
26
28
|
"files": [
|
|
27
29
|
"bin/",
|
|
28
30
|
"lib/",
|
|
29
31
|
"scripts/",
|
|
30
|
-
"
|
|
31
|
-
".
|
|
32
|
+
"seeds/",
|
|
33
|
+
".auroq-core/core/",
|
|
34
|
+
".auroq-core/core-config.yaml",
|
|
35
|
+
".auroq-core/constitution.md",
|
|
36
|
+
".auroq-core/dna-operacional.md",
|
|
37
|
+
".auroq-core/development/scripts/",
|
|
38
|
+
".claude/hooks/",
|
|
39
|
+
".claude/settings.json",
|
|
40
|
+
".claude/settings.local.json",
|
|
41
|
+
".claude/output-styles/",
|
|
42
|
+
".claude/commands/",
|
|
43
|
+
".claude/rules/",
|
|
44
|
+
".claude/CLAUDE.md",
|
|
32
45
|
".synapse/",
|
|
33
|
-
"agents/",
|
|
34
|
-
"business/",
|
|
35
|
-
"docs/",
|
|
36
|
-
"tests/",
|
|
46
|
+
"agents/organizer/",
|
|
37
47
|
"AGENTS.md",
|
|
38
48
|
"README.md",
|
|
39
49
|
".gitignore",
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
#!/usr/bin/env node
|
|
2
|
+
/** Restaura o miolo depois do npm pack/publish. */
|
|
3
|
+
import fs from 'node:fs';
|
|
4
|
+
import path from 'node:path';
|
|
5
|
+
import { fileURLToPath } from 'node:url';
|
|
6
|
+
|
|
7
|
+
const root = fs.realpathSync(path.join(path.dirname(fileURLToPath(import.meta.url)), '..'));
|
|
8
|
+
const cascaRoot = path.join(root, 'casca');
|
|
9
|
+
const backupRoot = path.join(root, '.pack-casca-backup');
|
|
10
|
+
|
|
11
|
+
function walk(dir) {
|
|
12
|
+
const out = [];
|
|
13
|
+
if (!fs.existsSync(dir)) return out;
|
|
14
|
+
for (const entry of fs.readdirSync(dir, { withFileTypes: true })) {
|
|
15
|
+
const full = path.join(dir, entry.name);
|
|
16
|
+
if (entry.isDirectory()) out.push(...walk(full));
|
|
17
|
+
else out.push(full);
|
|
18
|
+
}
|
|
19
|
+
return out;
|
|
20
|
+
}
|
|
21
|
+
|
|
22
|
+
if (!fs.existsSync(backupRoot)) process.exit(0);
|
|
23
|
+
|
|
24
|
+
for (const bak of walk(backupRoot)) {
|
|
25
|
+
const rel = path.relative(backupRoot, bak);
|
|
26
|
+
const dest = path.join(root, rel);
|
|
27
|
+
fs.mkdirSync(path.dirname(dest), { recursive: true });
|
|
28
|
+
fs.copyFileSync(bak, dest);
|
|
29
|
+
}
|
|
30
|
+
|
|
31
|
+
fs.rmSync(backupRoot, { recursive: true, force: true });
|
|
32
|
+
console.log('postpack-casca: working tree restaurado');
|
|
@@ -0,0 +1,47 @@
|
|
|
1
|
+
#!/usr/bin/env node
|
|
2
|
+
/**
|
|
3
|
+
* Overlay da casca no tarball 2.3.0. O working tree permanece com o miolo
|
|
4
|
+
* (fonte do pack.py --stage-core). prepack troca só o que viaja no npm.
|
|
5
|
+
*/
|
|
6
|
+
import fs from 'node:fs';
|
|
7
|
+
import path from 'node:path';
|
|
8
|
+
import { fileURLToPath } from 'node:url';
|
|
9
|
+
|
|
10
|
+
const root = fs.realpathSync(path.join(path.dirname(fileURLToPath(import.meta.url)), '..'));
|
|
11
|
+
const cascaRoot = path.join(root, 'casca');
|
|
12
|
+
const backupRoot = path.join(root, '.pack-casca-backup');
|
|
13
|
+
|
|
14
|
+
function walk(dir) {
|
|
15
|
+
const out = [];
|
|
16
|
+
if (!fs.existsSync(dir)) return out;
|
|
17
|
+
for (const entry of fs.readdirSync(dir, { withFileTypes: true })) {
|
|
18
|
+
const full = path.join(dir, entry.name);
|
|
19
|
+
if (entry.isDirectory()) out.push(...walk(full));
|
|
20
|
+
else out.push(full);
|
|
21
|
+
}
|
|
22
|
+
return out;
|
|
23
|
+
}
|
|
24
|
+
|
|
25
|
+
if (fs.existsSync(backupRoot)) {
|
|
26
|
+
fs.rmSync(backupRoot, { recursive: true, force: true });
|
|
27
|
+
}
|
|
28
|
+
|
|
29
|
+
const files = walk(cascaRoot);
|
|
30
|
+
if (!files.length) {
|
|
31
|
+
console.error('casca/ vazia — recusando pack');
|
|
32
|
+
process.exit(1);
|
|
33
|
+
}
|
|
34
|
+
|
|
35
|
+
for (const src of files) {
|
|
36
|
+
const rel = path.relative(cascaRoot, src);
|
|
37
|
+
const dest = path.join(root, rel);
|
|
38
|
+
if (fs.existsSync(dest)) {
|
|
39
|
+
const bak = path.join(backupRoot, rel);
|
|
40
|
+
fs.mkdirSync(path.dirname(bak), { recursive: true });
|
|
41
|
+
fs.copyFileSync(dest, bak);
|
|
42
|
+
}
|
|
43
|
+
fs.mkdirSync(path.dirname(dest), { recursive: true });
|
|
44
|
+
fs.copyFileSync(src, dest);
|
|
45
|
+
}
|
|
46
|
+
|
|
47
|
+
console.log(`prepack-casca: ${files.length} arquivos sobrepostos`);
|
|
@@ -14,6 +14,8 @@ const requiredPaths = [
|
|
|
14
14
|
'.auroq-core/constitution.md',
|
|
15
15
|
'.auroq-core/core-config.yaml',
|
|
16
16
|
'.claude/CLAUDE.md',
|
|
17
|
+
'.claude/output-styles/direto.md',
|
|
18
|
+
'.claude/rules/operacao-autonoma.md',
|
|
17
19
|
'.claude/commands',
|
|
18
20
|
'.claude/rules',
|
|
19
21
|
'.synapse/manifest',
|
|
@@ -1,193 +0,0 @@
|
|
|
1
|
-
# Sistema de Gestao de Projetos — Auroq OS
|
|
2
|
-
|
|
3
|
-
> Como o expert opera seu negocio via projetos dentro do Auroq OS.
|
|
4
|
-
> Fundamentacao: 10 mestres (Allen/GTD, Sutherland/Scrum, Goldratt/TOC, Drucker, Ohno/TPS, Cohn, Appelo, Gawande, Cagan, Deming)
|
|
5
|
-
|
|
6
|
-
---
|
|
7
|
-
|
|
8
|
-
## Problema que Resolve
|
|
9
|
-
|
|
10
|
-
Expert operando com IA tem um problema novo: muitas possibilidades, muita velocidade, muita coisa rodando ao mesmo tempo. Sem sistema:
|
|
11
|
-
- Perde visao do todo (o que ta rodando?)
|
|
12
|
-
- Agentes trabalham sem saber o que outros fizeram
|
|
13
|
-
- Projetos ficam pendurados sem conclusao
|
|
14
|
-
- Ideias se misturam com compromissos
|
|
15
|
-
- Nao tem historico de decisoes
|
|
16
|
-
|
|
17
|
-
---
|
|
18
|
-
|
|
19
|
-
## 10 Principios
|
|
20
|
-
|
|
21
|
-
| # | Principio | Mestre | No Auroq OS |
|
|
22
|
-
|---|-----------|--------|-------------|
|
|
23
|
-
| 1 | **Capturar tudo, processar depois** | Allen (GTD) | Inbox → Companion classifica |
|
|
24
|
-
| 2 | **Limitar trabalho em progresso** | Goldratt (TOC) | Max 3 projetos ativos. Sem excecao |
|
|
25
|
-
| 3 | **Puxar, nao empurrar** | Ohno (TPS) | Agentes leem tracker e puxam trabalho |
|
|
26
|
-
| 4 | **Processo sem dono esta morto** | Drucker | Toda tarefa tem dono (agente ou pessoa) |
|
|
27
|
-
| 5 | **Checklists em pontos criticos** | Gawande | Weekly review = 6-item DO-CONFIRM |
|
|
28
|
-
| 6 | **Melhoria continua** | Deming (PDSA) | Todo projeto termina com retro (3 perguntas) |
|
|
29
|
-
| 7 | **Medir resultados, nao outputs** | Cagan | Metricas = outcomes, nao task count |
|
|
30
|
-
| 8 | **Transparencia e ritmo** | Sutherland | Tracker visivel, weekly review e o ritmo |
|
|
31
|
-
| 9 | **Estimar com honestidade** | Cohn | Deadlines reais, next action explicita |
|
|
32
|
-
| 10 | **Sistema remove atrito** | Appelo | Agentes auto-orientam, expert valida |
|
|
33
|
-
|
|
34
|
-
---
|
|
35
|
-
|
|
36
|
-
## Arquitetura de 4 Camadas
|
|
37
|
-
|
|
38
|
-
```
|
|
39
|
-
CAMADA 4 — INBOX
|
|
40
|
-
"O que eu pensei / preciso resolver?"
|
|
41
|
-
↓ Companion captura e classifica
|
|
42
|
-
|
|
43
|
-
CAMADA 3 — COCKPIT
|
|
44
|
-
"O que ta rodando na empresa?" (Fonte unica de verdade)
|
|
45
|
-
↓ cada projeto ativo usa
|
|
46
|
-
|
|
47
|
-
CAMADA 2 — PLAYBOOKS
|
|
48
|
-
"Como se faz isso?" (Receita reutilizavel)
|
|
49
|
-
↓ quando o processo roda de verdade
|
|
50
|
-
|
|
51
|
-
CAMADA 1 — TRACKERS
|
|
52
|
-
"Onde estamos AGORA nesse que ta rodando?"
|
|
53
|
-
```
|
|
54
|
-
|
|
55
|
-
### Camada 4: Inbox
|
|
56
|
-
- Ideias brutas capturadas pelo Companion
|
|
57
|
-
- Nao sao projetos — sao possibilidades
|
|
58
|
-
- Processadas no weekly review: sobe pra fila, congela, ou descarta
|
|
59
|
-
- Vive no cockpit, secao INBOX
|
|
60
|
-
|
|
61
|
-
### Camada 3: Cockpit (`business/cockpit.md`)
|
|
62
|
-
- Fonte UNICA de verdade sobre projetos
|
|
63
|
-
- 7 secoes: ATIVOS (max 3), FILA, INBOX, CONGELADOS, OPERACOES, ARQUIVO, REGRAS
|
|
64
|
-
- Mantido pelo Companion, validado pelo expert
|
|
65
|
-
- Todo agente consulta antes de trabalhar
|
|
66
|
-
|
|
67
|
-
### Camada 2: Playbooks (`business/processos/`)
|
|
68
|
-
- Receitas reutilizaveis (como fazer lancamento, como rodar campanha, etc.)
|
|
69
|
-
- Criados apos fazer pela primeira vez (pavimentar → documentar → reutilizar)
|
|
70
|
-
- Referenciados nos trackers
|
|
71
|
-
|
|
72
|
-
### Camada 1: Trackers (`business/campanhas/{projeto}/tracker.md`)
|
|
73
|
-
- Execucao ao vivo do projeto
|
|
74
|
-
- Fases, tarefas, dependencias, blockers, log, metricas, retro
|
|
75
|
-
- Todo agente le ANTES de trabalhar e atualiza DEPOIS
|
|
76
|
-
- Template padrao em `business/templates/tracker-template.md`
|
|
77
|
-
|
|
78
|
-
---
|
|
79
|
-
|
|
80
|
-
## Ciclo de Vida do Projeto
|
|
81
|
-
|
|
82
|
-
```
|
|
83
|
-
IDEIA (inbox) → FILA (priorizada) → ATIVO (max 3) → CONCLUIDO (arquivo)
|
|
84
|
-
↕
|
|
85
|
-
CONGELADO (someday)
|
|
86
|
-
```
|
|
87
|
-
|
|
88
|
-
### Nasce
|
|
89
|
-
1. Ideia capturada no inbox (pelo expert ou Companion)
|
|
90
|
-
2. Weekly review processa: vira projeto na fila ou descarta
|
|
91
|
-
3. Quando vaga abre (ativo sai), primeiro da fila entra
|
|
92
|
-
|
|
93
|
-
### Vive
|
|
94
|
-
1. Tracker criado (do template)
|
|
95
|
-
2. Fases e tarefas definidas
|
|
96
|
-
3. Agentes puxam trabalho (pull, nao push)
|
|
97
|
-
4. Log atualizado a cada acao
|
|
98
|
-
5. Blockers registrados imediatamente
|
|
99
|
-
|
|
100
|
-
### Morre
|
|
101
|
-
1. Ultima tarefa da ultima fase concluida
|
|
102
|
-
2. Metricas preenchidas
|
|
103
|
-
3. Retro feita (3 perguntas)
|
|
104
|
-
4. Move pro ARQUIVO no cockpit
|
|
105
|
-
5. Vaga abre — proximo da fila entra
|
|
106
|
-
|
|
107
|
-
---
|
|
108
|
-
|
|
109
|
-
## Protocolo de Agentes
|
|
110
|
-
|
|
111
|
-
**Regra global** (`rules/project-tracker-protocol.md`):
|
|
112
|
-
|
|
113
|
-
### ANTES de trabalhar
|
|
114
|
-
1. Ler tracker → entender onde estamos
|
|
115
|
-
2. Verificar dependencias → nao comecar bloqueado
|
|
116
|
-
3. Identificar sua tarefa → saber exatamente o que fazer
|
|
117
|
-
|
|
118
|
-
### DURANTE
|
|
119
|
-
4. Focar no escopo → fazer o que o tracker define
|
|
120
|
-
5. Registrar blockers novos → imediatamente
|
|
121
|
-
|
|
122
|
-
### DEPOIS
|
|
123
|
-
6. Marcar tarefas Done + data
|
|
124
|
-
7. Adicionar log (data — @agente: o que fez)
|
|
125
|
-
8. Se desbloqueou outra tarefa → visivel automaticamente
|
|
126
|
-
9. Se completou ultima tarefa da fase → marcar fase Done
|
|
127
|
-
|
|
128
|
-
---
|
|
129
|
-
|
|
130
|
-
## Weekly Review (Companion conduz)
|
|
131
|
-
|
|
132
|
-
**Frequencia:** Semanal (7 dias). Force alert em 14 dias.
|
|
133
|
-
**Duracao:** 20 minutos max.
|
|
134
|
-
|
|
135
|
-
### 4 Passos:
|
|
136
|
-
1. **Briefing** — Companion apresenta estado de todos os projetos
|
|
137
|
-
2. **DO-CONFIRM checklist** (6 itens):
|
|
138
|
-
- Todo ativo tem next action?
|
|
139
|
-
- Algum ativo parado 5+ dias?
|
|
140
|
-
- Algum blocker sem acao?
|
|
141
|
-
- Fila ordenada corretamente?
|
|
142
|
-
- Inbox processado?
|
|
143
|
-
- Operacoes continuas saudaveis?
|
|
144
|
-
3. **Update** — Atualizar cockpit e trackers
|
|
145
|
-
4. **Close** — Resumo e proxima data de review
|
|
146
|
-
|
|
147
|
-
---
|
|
148
|
-
|
|
149
|
-
## Escalacao Automatica (Companion monitora)
|
|
150
|
-
|
|
151
|
-
| Condicao | Acao |
|
|
152
|
-
|----------|------|
|
|
153
|
-
| Blocker 3+ dias | Alertar expert |
|
|
154
|
-
| Projeto sem movimento 5+ dias | Perguntar: congelar? |
|
|
155
|
-
| Deadline em 7 dias | Marcar urgente |
|
|
156
|
-
| Weekly review atrasado 7+ dias | Pull automatico |
|
|
157
|
-
| Weekly review atrasado 14+ dias | Force alert |
|
|
158
|
-
|
|
159
|
-
---
|
|
160
|
-
|
|
161
|
-
## Anti-Padroes
|
|
162
|
-
|
|
163
|
-
| Anti-padrao | Por que e ruim |
|
|
164
|
-
|-------------|---------------|
|
|
165
|
-
| Mais de 3 ativos | Context switching mata throughput |
|
|
166
|
-
| Cockpit sem weekly review | Vira documento abandonado |
|
|
167
|
-
| Tracker sem donos | Ninguem se responsabiliza |
|
|
168
|
-
| 50+ tarefas por tracker | Ninguem le |
|
|
169
|
-
| Ignorar blockers | Perpetua impedimentos |
|
|
170
|
-
| Pular retro | Repete mesmos erros |
|
|
171
|
-
| Tracker sem cockpit | Fragmenta de volta |
|
|
172
|
-
| Criar tracker sem projeto no cockpit | Projeto fantasma |
|
|
173
|
-
|
|
174
|
-
---
|
|
175
|
-
|
|
176
|
-
## Mapa de Arquivos
|
|
177
|
-
|
|
178
|
-
```
|
|
179
|
-
business/
|
|
180
|
-
├── cockpit.md ← Fonte unica de verdade
|
|
181
|
-
├── templates/
|
|
182
|
-
│ └── tracker-template.md ← Molde de tracker
|
|
183
|
-
├── processos/
|
|
184
|
-
│ └── {playbooks documentados}/ ← Receitas reutilizaveis
|
|
185
|
-
└── campanhas/
|
|
186
|
-
├── _template/ ← Template de campanha
|
|
187
|
-
└── {projeto-ativo}/
|
|
188
|
-
└── tracker.md ← Execucao ao vivo
|
|
189
|
-
```
|
|
190
|
-
|
|
191
|
-
---
|
|
192
|
-
|
|
193
|
-
*Sistema desenhado com fundamentacao nos 10 mestres. Adaptado para expert operando com SO de IA.*
|