@jaimevalasek/aioson 1.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/CHANGELOG.md +456 -0
- package/CODE_OF_CONDUCT.md +12 -0
- package/CONTRIBUTING.md +13 -0
- package/LICENSE +21 -0
- package/README.md +254 -0
- package/bin/aioson.js +4 -0
- package/docs/en/cli-reference.md +398 -0
- package/docs/en/i18n.md +52 -0
- package/docs/en/json-schemas.md +41 -0
- package/docs/en/mcp.md +56 -0
- package/docs/en/parallel.md +82 -0
- package/docs/en/qa-browser.md +339 -0
- package/docs/en/release-flow.md +22 -0
- package/docs/en/release-notes-template.md +41 -0
- package/docs/en/release.md +28 -0
- package/docs/en/schemas/agent-prompt.schema.json +17 -0
- package/docs/en/schemas/agents.schema.json +32 -0
- package/docs/en/schemas/context-validate.schema.json +36 -0
- package/docs/en/schemas/doctor.schema.json +89 -0
- package/docs/en/schemas/error.schema.json +24 -0
- package/docs/en/schemas/i18n-add.schema.json +15 -0
- package/docs/en/schemas/index.json +116 -0
- package/docs/en/schemas/info.schema.json +39 -0
- package/docs/en/schemas/init.schema.json +48 -0
- package/docs/en/schemas/install.schema.json +60 -0
- package/docs/en/schemas/locale-apply.schema.json +30 -0
- package/docs/en/schemas/mcp-doctor.schema.json +95 -0
- package/docs/en/schemas/mcp-init.schema.json +122 -0
- package/docs/en/schemas/package-test.schema.json +24 -0
- package/docs/en/schemas/parallel-assign.schema.json +57 -0
- package/docs/en/schemas/parallel-doctor.schema.json +86 -0
- package/docs/en/schemas/parallel-init.schema.json +53 -0
- package/docs/en/schemas/parallel-status.schema.json +94 -0
- package/docs/en/schemas/setup-context.schema.json +39 -0
- package/docs/en/schemas/smoke.schema.json +23 -0
- package/docs/en/schemas/update.schema.json +48 -0
- package/docs/en/schemas/workflow-plan.schema.json +30 -0
- package/docs/en/web3.md +54 -0
- package/docs/pt/README.md +46 -0
- package/docs/pt/advisor-spec.md +335 -0
- package/docs/pt/agentes.md +453 -0
- package/docs/pt/cenarios.md +1230 -0
- package/docs/pt/clientes-ai.md +224 -0
- package/docs/pt/comandos-cli.md +511 -0
- package/docs/pt/genome-3.0-spec.md +296 -0
- package/docs/pt/guia-engineer.md +226 -0
- package/docs/pt/inicio-rapido.md +138 -0
- package/docs/pt/profiler-system.md +214 -0
- package/docs/pt/runtime-observability.md +72 -0
- package/docs/pt/squad-genoma.md +777 -0
- package/docs/pt/web3.md +797 -0
- package/docs/testing/genome-2.0-manual-regression.md +23 -0
- package/docs/testing/genome-2.0-matrix.md +36 -0
- package/docs/testing/genome-2.0-rollout.md +184 -0
- package/package.json +50 -0
- package/src/agents.js +56 -0
- package/src/cli.js +497 -0
- package/src/commands/agents.js +142 -0
- package/src/commands/cloud.js +1767 -0
- package/src/commands/config.js +90 -0
- package/src/commands/context-validate.js +91 -0
- package/src/commands/doctor.js +123 -0
- package/src/commands/genome-doctor.js +41 -0
- package/src/commands/genome-migrate.js +49 -0
- package/src/commands/i18n-add.js +56 -0
- package/src/commands/info.js +41 -0
- package/src/commands/init.js +75 -0
- package/src/commands/install.js +68 -0
- package/src/commands/locale-apply.js +51 -0
- package/src/commands/locale-diff.js +126 -0
- package/src/commands/mcp-doctor.js +406 -0
- package/src/commands/mcp-init.js +379 -0
- package/src/commands/package-e2e.js +273 -0
- package/src/commands/parallel-assign.js +403 -0
- package/src/commands/parallel-doctor.js +437 -0
- package/src/commands/parallel-init.js +249 -0
- package/src/commands/parallel-status.js +290 -0
- package/src/commands/qa-doctor.js +185 -0
- package/src/commands/qa-init.js +161 -0
- package/src/commands/qa-report.js +58 -0
- package/src/commands/qa-run.js +873 -0
- package/src/commands/qa-scan.js +337 -0
- package/src/commands/runtime.js +948 -0
- package/src/commands/scan-project.js +1107 -0
- package/src/commands/setup-context.js +650 -0
- package/src/commands/smoke.js +426 -0
- package/src/commands/squad-doctor.js +358 -0
- package/src/commands/squad-export.js +46 -0
- package/src/commands/squad-pipeline.js +97 -0
- package/src/commands/squad-repair-genomes.js +39 -0
- package/src/commands/squad-status.js +424 -0
- package/src/commands/squad-validate.js +230 -0
- package/src/commands/test-agents.js +194 -0
- package/src/commands/update.js +55 -0
- package/src/commands/workflow-next.js +594 -0
- package/src/commands/workflow-plan.js +108 -0
- package/src/constants.js +314 -0
- package/src/context-parse-reason.js +22 -0
- package/src/context-writer.js +150 -0
- package/src/context.js +217 -0
- package/src/detector.js +261 -0
- package/src/doctor.js +289 -0
- package/src/execution-gateway.js +461 -0
- package/src/genome-files.js +198 -0
- package/src/genome-format.js +442 -0
- package/src/genome-schema.js +215 -0
- package/src/genomes/bindings.js +281 -0
- package/src/genomes.js +467 -0
- package/src/i18n/index.js +103 -0
- package/src/i18n/messages/en.js +784 -0
- package/src/i18n/messages/es.js +718 -0
- package/src/i18n/messages/fr.js +725 -0
- package/src/i18n/messages/pt-BR.js +818 -0
- package/src/i18n/scaffold.js +64 -0
- package/src/installer.js +232 -0
- package/src/lib/genomes/compat.js +206 -0
- package/src/lib/genomes/migrate.js +90 -0
- package/src/lib/squads/genome-repair.js +49 -0
- package/src/locales.js +84 -0
- package/src/onboarding.js +305 -0
- package/src/parser.js +53 -0
- package/src/prompt-tool.js +20 -0
- package/src/qa-html-report.js +472 -0
- package/src/runtime-store.js +1527 -0
- package/src/squads/apply-genome.js +21 -0
- package/src/squads/genome-binding-service.js +154 -0
- package/src/updater.js +32 -0
- package/src/utils.js +46 -0
- package/src/version.js +50 -0
- package/template/.aioson/advisors/.gitkeep +1 -0
- package/template/.aioson/agents/analyst.md +225 -0
- package/template/.aioson/agents/architect.md +221 -0
- package/template/.aioson/agents/dev.md +201 -0
- package/template/.aioson/agents/discovery-design-doc.md +196 -0
- package/template/.aioson/agents/genoma.md +300 -0
- package/template/.aioson/agents/orchestrator.md +107 -0
- package/template/.aioson/agents/pm.md +89 -0
- package/template/.aioson/agents/product.md +361 -0
- package/template/.aioson/agents/profiler-enricher.md +266 -0
- package/template/.aioson/agents/profiler-forge.md +188 -0
- package/template/.aioson/agents/profiler-researcher.md +245 -0
- package/template/.aioson/agents/qa.md +344 -0
- package/template/.aioson/agents/setup.md +381 -0
- package/template/.aioson/agents/squad.md +837 -0
- package/template/.aioson/agents/ux-ui.md +416 -0
- package/template/.aioson/config.md +56 -0
- package/template/.aioson/context/.gitkeep +0 -0
- package/template/.aioson/context/parallel/.gitkeep +0 -0
- package/template/.aioson/context/spec.md.template +37 -0
- package/template/.aioson/genomas/.gitkeep +0 -0
- package/template/.aioson/locales/en/agents/analyst.md +214 -0
- package/template/.aioson/locales/en/agents/architect.md +210 -0
- package/template/.aioson/locales/en/agents/dev.md +187 -0
- package/template/.aioson/locales/en/agents/discovery-design-doc.md +27 -0
- package/template/.aioson/locales/en/agents/genoma.md +212 -0
- package/template/.aioson/locales/en/agents/orchestrator.md +105 -0
- package/template/.aioson/locales/en/agents/pm.md +77 -0
- package/template/.aioson/locales/en/agents/product.md +310 -0
- package/template/.aioson/locales/en/agents/profiler-enricher.md +5 -0
- package/template/.aioson/locales/en/agents/profiler-forge.md +5 -0
- package/template/.aioson/locales/en/agents/profiler-researcher.md +5 -0
- package/template/.aioson/locales/en/agents/qa.md +214 -0
- package/template/.aioson/locales/en/agents/setup.md +342 -0
- package/template/.aioson/locales/en/agents/squad.md +247 -0
- package/template/.aioson/locales/en/agents/ux-ui.md +320 -0
- package/template/.aioson/locales/es/agents/analyst.md +203 -0
- package/template/.aioson/locales/es/agents/architect.md +208 -0
- package/template/.aioson/locales/es/agents/dev.md +183 -0
- package/template/.aioson/locales/es/agents/discovery-design-doc.md +19 -0
- package/template/.aioson/locales/es/agents/genoma.md +102 -0
- package/template/.aioson/locales/es/agents/orchestrator.md +108 -0
- package/template/.aioson/locales/es/agents/pm.md +81 -0
- package/template/.aioson/locales/es/agents/product.md +310 -0
- package/template/.aioson/locales/es/agents/profiler-enricher.md +5 -0
- package/template/.aioson/locales/es/agents/profiler-forge.md +5 -0
- package/template/.aioson/locales/es/agents/profiler-researcher.md +5 -0
- package/template/.aioson/locales/es/agents/qa.md +163 -0
- package/template/.aioson/locales/es/agents/setup.md +347 -0
- package/template/.aioson/locales/es/agents/squad.md +247 -0
- package/template/.aioson/locales/es/agents/ux-ui.md +201 -0
- package/template/.aioson/locales/fr/agents/analyst.md +203 -0
- package/template/.aioson/locales/fr/agents/architect.md +208 -0
- package/template/.aioson/locales/fr/agents/dev.md +183 -0
- package/template/.aioson/locales/fr/agents/discovery-design-doc.md +19 -0
- package/template/.aioson/locales/fr/agents/genoma.md +102 -0
- package/template/.aioson/locales/fr/agents/orchestrator.md +108 -0
- package/template/.aioson/locales/fr/agents/pm.md +81 -0
- package/template/.aioson/locales/fr/agents/product.md +310 -0
- package/template/.aioson/locales/fr/agents/profiler-enricher.md +5 -0
- package/template/.aioson/locales/fr/agents/profiler-forge.md +5 -0
- package/template/.aioson/locales/fr/agents/profiler-researcher.md +5 -0
- package/template/.aioson/locales/fr/agents/qa.md +163 -0
- package/template/.aioson/locales/fr/agents/setup.md +347 -0
- package/template/.aioson/locales/fr/agents/squad.md +247 -0
- package/template/.aioson/locales/fr/agents/ux-ui.md +201 -0
- package/template/.aioson/locales/pt-BR/agents/analyst.md +217 -0
- package/template/.aioson/locales/pt-BR/agents/architect.md +213 -0
- package/template/.aioson/locales/pt-BR/agents/dev.md +198 -0
- package/template/.aioson/locales/pt-BR/agents/discovery-design-doc.md +198 -0
- package/template/.aioson/locales/pt-BR/agents/genoma.md +297 -0
- package/template/.aioson/locales/pt-BR/agents/orchestrator.md +108 -0
- package/template/.aioson/locales/pt-BR/agents/pm.md +81 -0
- package/template/.aioson/locales/pt-BR/agents/product.md +316 -0
- package/template/.aioson/locales/pt-BR/agents/profiler-enricher.md +5 -0
- package/template/.aioson/locales/pt-BR/agents/profiler-forge.md +5 -0
- package/template/.aioson/locales/pt-BR/agents/profiler-researcher.md +5 -0
- package/template/.aioson/locales/pt-BR/agents/qa.md +217 -0
- package/template/.aioson/locales/pt-BR/agents/setup.md +371 -0
- package/template/.aioson/locales/pt-BR/agents/squad.md +772 -0
- package/template/.aioson/locales/pt-BR/agents/ux-ui.md +322 -0
- package/template/.aioson/mcp/servers.md +24 -0
- package/template/.aioson/profiler-reports/.gitkeep +1 -0
- package/template/.aioson/schemas/content-blueprint.schema.json +30 -0
- package/template/.aioson/schemas/genome-meta.schema.json +150 -0
- package/template/.aioson/schemas/genome.schema.json +115 -0
- package/template/.aioson/schemas/readiness.schema.json +27 -0
- package/template/.aioson/schemas/squad-blueprint.schema.json +172 -0
- package/template/.aioson/schemas/squad-manifest.schema.json +276 -0
- package/template/.aioson/skills/dynamic/README.md +30 -0
- package/template/.aioson/skills/dynamic/cardano-docs.md +16 -0
- package/template/.aioson/skills/dynamic/ethereum-docs.md +17 -0
- package/template/.aioson/skills/dynamic/flux-ui-docs.md +13 -0
- package/template/.aioson/skills/dynamic/laravel-docs.md +41 -0
- package/template/.aioson/skills/dynamic/npm-packages.md +16 -0
- package/template/.aioson/skills/dynamic/solana-docs.md +16 -0
- package/template/.aioson/skills/references/premium-command-center-ui/master-application-prompt.md +79 -0
- package/template/.aioson/skills/references/premium-command-center-ui/operational-ux-playbook.md +253 -0
- package/template/.aioson/skills/references/premium-command-center-ui/quality-validation-checklist.md +82 -0
- package/template/.aioson/skills/references/premium-command-center-ui/visual-system-and-component-patterns.md +270 -0
- package/template/.aioson/skills/static/django-patterns.md +342 -0
- package/template/.aioson/skills/static/fastapi-patterns.md +344 -0
- package/template/.aioson/skills/static/filament-patterns.md +267 -0
- package/template/.aioson/skills/static/flux-ui-components.md +262 -0
- package/template/.aioson/skills/static/git-conventions.md +227 -0
- package/template/.aioson/skills/static/interface-design.md +372 -0
- package/template/.aioson/skills/static/jetstream-setup.md +200 -0
- package/template/.aioson/skills/static/laravel-conventions.md +491 -0
- package/template/.aioson/skills/static/nextjs-patterns.md +321 -0
- package/template/.aioson/skills/static/node-express-patterns.md +317 -0
- package/template/.aioson/skills/static/node-typescript-patterns.md +282 -0
- package/template/.aioson/skills/static/premium-command-center-ui.md +190 -0
- package/template/.aioson/skills/static/rails-conventions.md +307 -0
- package/template/.aioson/skills/static/react-motion-patterns.md +577 -0
- package/template/.aioson/skills/static/static-html-patterns.md +1935 -0
- package/template/.aioson/skills/static/tall-stack-patterns.md +286 -0
- package/template/.aioson/skills/static/ui-ux-modern.md +75 -0
- package/template/.aioson/skills/static/web3-cardano-patterns.md +337 -0
- package/template/.aioson/skills/static/web3-ethereum-patterns.md +310 -0
- package/template/.aioson/skills/static/web3-security-checklist.md +284 -0
- package/template/.aioson/skills/static/web3-solana-patterns.md +324 -0
- package/template/.aioson/squads/.artisan/.gitkeep +0 -0
- package/template/.aioson/squads/.gitkeep +0 -0
- package/template/.aioson/squads/memory.md +5 -0
- package/template/.aioson/tasks/squad-analyze.md +83 -0
- package/template/.aioson/tasks/squad-create.md +99 -0
- package/template/.aioson/tasks/squad-design.md +100 -0
- package/template/.aioson/tasks/squad-export.md +20 -0
- package/template/.aioson/tasks/squad-extend.md +68 -0
- package/template/.aioson/tasks/squad-pipeline.md +122 -0
- package/template/.aioson/tasks/squad-repair.md +85 -0
- package/template/.aioson/tasks/squad-validate.md +58 -0
- package/template/.aioson/templates/squads/content-basic/template.json +21 -0
- package/template/.aioson/templates/squads/media-channel/template.json +24 -0
- package/template/.aioson/templates/squads/research-analysis/template.json +22 -0
- package/template/.aioson/templates/squads/software-delivery/template.json +21 -0
- package/template/.claude/commands/aioson/analyst.md +5 -0
- package/template/.claude/commands/aioson/architect.md +5 -0
- package/template/.claude/commands/aioson/dev.md +5 -0
- package/template/.claude/commands/aioson/orchestrator.md +5 -0
- package/template/.claude/commands/aioson/pm.md +5 -0
- package/template/.claude/commands/aioson/qa.md +5 -0
- package/template/.claude/commands/aioson/setup.md +5 -0
- package/template/.claude/commands/aioson/ux-ui.md +5 -0
- package/template/.gemini/GEMINI.md +10 -0
- package/template/.gemini/commands/aios-analyst.toml +4 -0
- package/template/.gemini/commands/aios-architect.toml +7 -0
- package/template/.gemini/commands/aios-dev.toml +8 -0
- package/template/.gemini/commands/aios-discovery-design-doc.toml +4 -0
- package/template/.gemini/commands/aios-orchestrator.toml +8 -0
- package/template/.gemini/commands/aios-pm.toml +8 -0
- package/template/.gemini/commands/aios-product.toml +4 -0
- package/template/.gemini/commands/aios-qa.toml +6 -0
- package/template/.gemini/commands/aios-setup.toml +3 -0
- package/template/.gemini/commands/aios-ux-ui.toml +8 -0
- package/template/AGENTS.md +67 -0
- package/template/CLAUDE.md +31 -0
- package/template/OPENCODE.md +24 -0
- package/template/aioson-models.json +40 -0
|
@@ -0,0 +1,68 @@
|
|
|
1
|
+
# Task: Squad Extend
|
|
2
|
+
|
|
3
|
+
> Adiciona componentes a um squad existente sem reescrever o pacote.
|
|
4
|
+
|
|
5
|
+
## Quando usar
|
|
6
|
+
- `@squad extend <slug>` — modo interativo
|
|
7
|
+
- `@squad extend <slug> --add executor --name <name>` — modo direto
|
|
8
|
+
- Após `@squad analyze` recomendar adições
|
|
9
|
+
|
|
10
|
+
## Entrada
|
|
11
|
+
- slug do squad existente
|
|
12
|
+
- tipo do componente: executor | skill | template | blueprint | genome | mcp
|
|
13
|
+
- detalhes do componente (nome, role, etc.)
|
|
14
|
+
|
|
15
|
+
## Processo
|
|
16
|
+
|
|
17
|
+
### Passo 1 — Ler estado atual
|
|
18
|
+
Leia squad.manifest.json e inventarie o que já existe.
|
|
19
|
+
|
|
20
|
+
### Passo 2 — Se modo interativo, perguntar o que adicionar
|
|
21
|
+
```
|
|
22
|
+
O que deseja adicionar ao squad "<slug>"?
|
|
23
|
+
1. Executor — Novo agente especialista
|
|
24
|
+
2. Skill — Nova capacidade reutilizável
|
|
25
|
+
3. Content Blueprint — Novo tipo de deliverable
|
|
26
|
+
4. Genome — Aplicar genome existente
|
|
27
|
+
5. MCP — Nova integração externa
|
|
28
|
+
```
|
|
29
|
+
|
|
30
|
+
### Passo 3 — Coletar detalhes do componente
|
|
31
|
+
Dependendo do tipo:
|
|
32
|
+
- **Executor:** slug, title, role, focus areas, skills. Gerar o arquivo .md.
|
|
33
|
+
- **Skill:** slug, title, description. Criar em squads/<slug>/skills/
|
|
34
|
+
- **Content Blueprint:** slug, contentType, layoutType, sections.
|
|
35
|
+
- **Genome:** slug do genome, scope (squad ou executor específico).
|
|
36
|
+
- **MCP:** slug, required, purpose.
|
|
37
|
+
|
|
38
|
+
### Passo 4 — Mostrar diff antes de persistir
|
|
39
|
+
Antes de salvar, mostre exatamente o que será alterado:
|
|
40
|
+
```
|
|
41
|
+
Changes to apply:
|
|
42
|
+
|
|
43
|
+
NEW FILE: .aioson/squads/<slug>/agents/<executor>.md
|
|
44
|
+
UPDATED: .aioson/squads/<slug>/squad.manifest.json
|
|
45
|
+
+ executors[]: { slug: "<executor>", role: "...", file: "..." }
|
|
46
|
+
UPDATED: .aioson/squads/<slug>/agents/agents.md
|
|
47
|
+
+ @<executor> — <role>
|
|
48
|
+
UPDATED: CLAUDE.md
|
|
49
|
+
+ /<executor> -> .aioson/squads/<slug>/agents/<executor>.md
|
|
50
|
+
UPDATED: AGENTS.md
|
|
51
|
+
+ @<executor> -> .aioson/squads/<slug>/agents/<executor>.md
|
|
52
|
+
|
|
53
|
+
Proceed? [Y/n]
|
|
54
|
+
```
|
|
55
|
+
|
|
56
|
+
### Passo 5 — Persistir alterações
|
|
57
|
+
- Criar arquivo(s) novo(s)
|
|
58
|
+
- Atualizar squad.manifest.json
|
|
59
|
+
- Atualizar agents.md
|
|
60
|
+
- Atualizar CLAUDE.md e AGENTS.md (se executor)
|
|
61
|
+
|
|
62
|
+
### Passo 6 — Validar
|
|
63
|
+
Rodar mentalmente a task squad-validate para confirmar que o pacote está consistente.
|
|
64
|
+
|
|
65
|
+
## Regras
|
|
66
|
+
- SEMPRE mostrar diff antes de persistir
|
|
67
|
+
- NUNCA deletar componentes existentes — extend é somente aditivo
|
|
68
|
+
- Para remoção, oriente o usuário a editar manualmente ou usar repair (Fase 4)
|
|
@@ -0,0 +1,122 @@
|
|
|
1
|
+
# Task: Squad Pipeline
|
|
2
|
+
|
|
3
|
+
> Gerenciamento de pipelines inter-squad. Conecta squads em fluxos de produção autônomos via DAG.
|
|
4
|
+
|
|
5
|
+
## Quando usar
|
|
6
|
+
- `@squad pipeline create <nome>` — cria um novo pipeline
|
|
7
|
+
- `@squad pipeline connect <pipeline> <source-squad>:<port> → <target-squad>:<port>` — conecta squads
|
|
8
|
+
- `@squad pipeline show <pipeline>` — exibe o DAG com nós, arestas e status
|
|
9
|
+
- `@squad pipeline run <pipeline>` — executa o pipeline (aciona handoffs)
|
|
10
|
+
|
|
11
|
+
## Conceito
|
|
12
|
+
|
|
13
|
+
Um **pipeline** é um grafo dirigido acíclico (DAG) de squads conectados por ports.
|
|
14
|
+
Cada squad declara `ports.inputs` e `ports.outputs` no `squad.manifest.json`.
|
|
15
|
+
Uma aresta conecta um output de um squad ao input de outro.
|
|
16
|
+
|
|
17
|
+
Quando um squad produz um output, cria um **handoff** (tabela `squad_handoffs`) com o payload.
|
|
18
|
+
O squad downstream lê os handoffs `pending` com `to_squad = seu slug` e os consome.
|
|
19
|
+
|
|
20
|
+
## Pré-requisitos
|
|
21
|
+
|
|
22
|
+
Antes de criar um pipeline, verifique:
|
|
23
|
+
1. Os squads participantes existem em `.aioson/squads/`
|
|
24
|
+
2. Cada squad tem `squad.manifest.json` com a seção `ports` declarada
|
|
25
|
+
3. Os ports de input/output são compatíveis em `dataType`
|
|
26
|
+
|
|
27
|
+
Se um squad não tem ports declarados, oriente o usuário a:
|
|
28
|
+
- Editar `squad.manifest.json` adicionando a seção `ports`
|
|
29
|
+
- Ou use `@squad extend <slug>` para adicionar ports interativamente
|
|
30
|
+
|
|
31
|
+
## Passo 1 — Criar o pipeline
|
|
32
|
+
|
|
33
|
+
```json
|
|
34
|
+
{
|
|
35
|
+
"slug": "<pipeline-slug>",
|
|
36
|
+
"name": "<nome legível>",
|
|
37
|
+
"description": "<descrição opcional>",
|
|
38
|
+
"status": "draft",
|
|
39
|
+
"triggerMode": "manual"
|
|
40
|
+
}
|
|
41
|
+
```
|
|
42
|
+
|
|
43
|
+
Registre via `aioson runtime` ou diretamente no SQLite (`squad_pipelines`).
|
|
44
|
+
|
|
45
|
+
## Passo 2 — Adicionar nós ao pipeline
|
|
46
|
+
|
|
47
|
+
Para cada squad participante, registre em `pipeline_nodes`:
|
|
48
|
+
- `pipelineSlug` — slug do pipeline
|
|
49
|
+
- `squadSlug` — slug do squad
|
|
50
|
+
- `positionX`, `positionY` — posição no canvas visual (opcional, padrão 0,0)
|
|
51
|
+
|
|
52
|
+
## Passo 3 — Conectar squads (criar arestas)
|
|
53
|
+
|
|
54
|
+
Para cada conexão `source:port → target:port`, registre em `pipeline_edges`:
|
|
55
|
+
- `pipelineSlug` — slug do pipeline
|
|
56
|
+
- `sourceSquad`, `sourcePort` — squad origem e port de output
|
|
57
|
+
- `targetSquad`, `targetPort` — squad destino e port de input
|
|
58
|
+
- `transform` — transformação de dados opcional (JSON)
|
|
59
|
+
|
|
60
|
+
Valide:
|
|
61
|
+
- Nenhum ciclo no DAG (use ordenação topológica de Kahn)
|
|
62
|
+
- Ports existem nos manifests
|
|
63
|
+
- DataTypes compatíveis (ou `any`)
|
|
64
|
+
|
|
65
|
+
## Passo 4 — Exibir o pipeline
|
|
66
|
+
|
|
67
|
+
Ao mostrar `@squad pipeline show <pipeline>`, exiba:
|
|
68
|
+
|
|
69
|
+
```
|
|
70
|
+
Pipeline: <nome>
|
|
71
|
+
Status: draft | active | paused
|
|
72
|
+
Trigger: manual | on_output | scheduled
|
|
73
|
+
|
|
74
|
+
Fluxo:
|
|
75
|
+
[squad-a] --output-key--> [squad-b] --outro-key--> [squad-c]
|
|
76
|
+
|
|
77
|
+
Ordem topológica: squad-a → squad-b → squad-c
|
|
78
|
+
|
|
79
|
+
Handoffs pendentes: 0
|
|
80
|
+
```
|
|
81
|
+
|
|
82
|
+
Se detectar ciclo: "⚠️ Ciclo detectado — pipeline inválido. Verifique as conexões."
|
|
83
|
+
|
|
84
|
+
## Passo 5 — Executar o pipeline (handoff)
|
|
85
|
+
|
|
86
|
+
Ao executar `@squad pipeline run <pipeline>`:
|
|
87
|
+
1. Calcule a ordem topológica
|
|
88
|
+
2. Para cada squad na ordem:
|
|
89
|
+
- Leia handoffs `pending` com `to_squad = squad_slug`
|
|
90
|
+
- Crie o contexto de execução com o payload dos handoffs
|
|
91
|
+
- Notifique o usuário: "Ativando @<squad> com input de @<source>"
|
|
92
|
+
3. Após cada squad processar seu output:
|
|
93
|
+
- Crie handoffs `pending` para os squads downstream conectados
|
|
94
|
+
- Marque handoffs consumidos como `consumed`
|
|
95
|
+
|
|
96
|
+
## Formato de handoff
|
|
97
|
+
|
|
98
|
+
```json
|
|
99
|
+
{
|
|
100
|
+
"id": "<uuid>",
|
|
101
|
+
"pipelineSlug": "<pipeline>",
|
|
102
|
+
"fromSquad": "<source>",
|
|
103
|
+
"fromPort": "<output-key>",
|
|
104
|
+
"toSquad": "<target>",
|
|
105
|
+
"toPort": "<input-key>",
|
|
106
|
+
"payload": { "contentKey": "...", "filePath": "..." },
|
|
107
|
+
"status": "pending"
|
|
108
|
+
}
|
|
109
|
+
```
|
|
110
|
+
|
|
111
|
+
## Output contract
|
|
112
|
+
|
|
113
|
+
- Pipeline registrado em SQLite (`squad_pipelines`, `pipeline_nodes`, `pipeline_edges`)
|
|
114
|
+
- Handoffs em `squad_handoffs`
|
|
115
|
+
- Relatório visual disponível em `/pipelines/<slug>` no dashboard
|
|
116
|
+
|
|
117
|
+
## Hard constraints
|
|
118
|
+
|
|
119
|
+
- Nunca criar um pipeline com ciclo — rejeite e explique o problema
|
|
120
|
+
- Validar compatibilidade de dataType antes de conectar
|
|
121
|
+
- Handoffs são imutáveis após criados — crie novos em vez de editar
|
|
122
|
+
- Pipeline em status `active` não pode ter nós removidos sem voltar para `draft`
|
|
@@ -0,0 +1,85 @@
|
|
|
1
|
+
# Task: Squad Repair
|
|
2
|
+
|
|
3
|
+
> Reconcilia o manifesto com a estrutura real do filesystem. Corrige inconsistências.
|
|
4
|
+
|
|
5
|
+
## Quando usar
|
|
6
|
+
- `@squad repair <slug>` — invocação direta
|
|
7
|
+
- Quando validate reporta erros de estrutura
|
|
8
|
+
- Quando o usuário editou arquivos manualmente e quebrou a consistência
|
|
9
|
+
|
|
10
|
+
## Processo
|
|
11
|
+
|
|
12
|
+
### Passo 0 — Detecção de squad legado
|
|
13
|
+
|
|
14
|
+
Se o slug existe como diretório em `.aioson/squads/<slug>/` mas NÃO tem `squad.manifest.json`:
|
|
15
|
+
|
|
16
|
+
1. Ler `squad.md` (metadata textual) se existir
|
|
17
|
+
2. Ler `agents/agents.md` se existir
|
|
18
|
+
3. Listar arquivos em `agents/` para descobrir executores
|
|
19
|
+
4. Inferir mode, mission, goal do texto encontrado
|
|
20
|
+
5. Gerar `squad.manifest.json` a partir do que foi descoberto (schemaVersion: "1.0.0")
|
|
21
|
+
6. Apresentar o manifesto gerado para aprovação:
|
|
22
|
+
```
|
|
23
|
+
Squad legado detectado: "<slug>"
|
|
24
|
+
Manifesto inferido:
|
|
25
|
+
mode: content (inferido)
|
|
26
|
+
mission: "..." (inferido de squad.md)
|
|
27
|
+
executors: writer, editor (encontrados em agents/)
|
|
28
|
+
confidence: LOW — revisar antes de confirmar
|
|
29
|
+
|
|
30
|
+
Criar squad.manifest.json com estes dados? [Y/n]
|
|
31
|
+
```
|
|
32
|
+
7. Se aprovado, salvar e rodar validate
|
|
33
|
+
8. Marcar readiness contextReady e blueprintReady como "partial"
|
|
34
|
+
|
|
35
|
+
### Passo 1 — Detectar inconsistências
|
|
36
|
+
|
|
37
|
+
Compare manifest vs filesystem:
|
|
38
|
+
|
|
39
|
+
**Cenário A — Arquivo no manifesto mas não no filesystem:**
|
|
40
|
+
- Executor referenciado mas arquivo não existe
|
|
41
|
+
- Skill declarada mas diretório/arquivo faltando
|
|
42
|
+
- Ação: oferecer REGENERAR o arquivo ou REMOVER do manifesto
|
|
43
|
+
|
|
44
|
+
**Cenário B — Arquivo no filesystem mas não no manifesto:**
|
|
45
|
+
- Novo executor .md em agents/ não declarado no manifesto
|
|
46
|
+
- Skill instalada em skills/ não declarada
|
|
47
|
+
- Ação: oferecer REGISTRAR no manifesto ou INFORMAR que é órfão
|
|
48
|
+
|
|
49
|
+
**Cenário C — Dados inconsistentes:**
|
|
50
|
+
- Slug do manifesto != nome do diretório
|
|
51
|
+
- Executor com file path errado
|
|
52
|
+
- CLAUDE.md/AGENTS.md desatualizado
|
|
53
|
+
- Ação: oferecer CORRIGIR
|
|
54
|
+
|
|
55
|
+
### Passo 2 — Mostrar diff completo
|
|
56
|
+
|
|
57
|
+
Antes de qualquer correção, mostre exatamente o que será feito:
|
|
58
|
+
```
|
|
59
|
+
Repair plan for "<slug>":
|
|
60
|
+
|
|
61
|
+
FIX: Executor "analyst" — file missing → regenerate agents/analyst.md
|
|
62
|
+
FIX: Executor "ghost" — in manifest but no file → remove from manifest
|
|
63
|
+
ADD: File "agents/reviewer.md" found → register in manifest
|
|
64
|
+
FIX: CLAUDE.md — squad section outdated → update
|
|
65
|
+
SKIP: readiness.md — missing but not critical
|
|
66
|
+
|
|
67
|
+
Apply repairs? [Y/n/select specific]
|
|
68
|
+
```
|
|
69
|
+
|
|
70
|
+
### Passo 3 — Aplicar correções selecionadas
|
|
71
|
+
|
|
72
|
+
- Regenerar arquivos de executor usando o role/skills do manifesto como input (seguir Step 2 de squad-create.md)
|
|
73
|
+
- Atualizar manifesto com novos arquivos encontrados
|
|
74
|
+
- Corrigir paths e slugs
|
|
75
|
+
- Atualizar CLAUDE.md e AGENTS.md
|
|
76
|
+
|
|
77
|
+
### Passo 4 — Revalidar
|
|
78
|
+
|
|
79
|
+
Ler e executar mentalmente `.aioson/tasks/squad-validate.md` após todas as correções para confirmar que o pacote está consistente.
|
|
80
|
+
|
|
81
|
+
## Regras
|
|
82
|
+
- NUNCA aplicar correções sem aprovação do usuário
|
|
83
|
+
- SEMPRE mostrar diff antes
|
|
84
|
+
- Para executores regenerados: gerar com as instruções de squad-create.md (Step 2 — Passo 5)
|
|
85
|
+
- Se o squad não tem manifest formal (squad antigo): executar Passo 0 primeiro
|
|
@@ -0,0 +1,58 @@
|
|
|
1
|
+
# Task: Squad Validate
|
|
2
|
+
|
|
3
|
+
> Fase de validação do lifecycle. Verifica consistência do pacote.
|
|
4
|
+
|
|
5
|
+
## Quando usar
|
|
6
|
+
- `@squad validate <slug>` — invocação direta
|
|
7
|
+
- Automaticamente após `@squad create`
|
|
8
|
+
- Quando o CLI `aioson squad:validate <slug>` é executado
|
|
9
|
+
|
|
10
|
+
## Entrada
|
|
11
|
+
- slug do squad (deve existir em `.aioson/squads/<slug>/`)
|
|
12
|
+
|
|
13
|
+
## Processo
|
|
14
|
+
|
|
15
|
+
### Camada 1 — Validação de schema
|
|
16
|
+
1. Leia `.aioson/squads/<slug>/squad.manifest.json`
|
|
17
|
+
2. Valide contra `.aioson/schemas/squad-manifest.schema.json`
|
|
18
|
+
3. Campos obrigatórios: schemaVersion, slug, name, mode, mission, goal
|
|
19
|
+
4. Se falhar: ERRO com campo faltante e sugestão
|
|
20
|
+
|
|
21
|
+
### Camada 2 — Validação estrutural
|
|
22
|
+
Verifique que existem:
|
|
23
|
+
- `.aioson/squads/<slug>/squad.manifest.json` (obrigatório)
|
|
24
|
+
- `.aioson/squads/<slug>/agents/agents.md` (obrigatório)
|
|
25
|
+
- `.aioson/squads/<slug>/agents/orquestrador.md` (obrigatório)
|
|
26
|
+
- Para cada executor em manifest.executors: o arquivo referenciado existe
|
|
27
|
+
- Diretórios: `output/<slug>/`, `aios-logs/<slug>/`
|
|
28
|
+
|
|
29
|
+
### Camada 3 — Validação semântica (básica nesta fase, aprofundada na Fase 2)
|
|
30
|
+
- Slug do manifesto bate com o nome do diretório
|
|
31
|
+
- Executores no manifesto têm arquivo correspondente
|
|
32
|
+
- Não há executores duplicados
|
|
33
|
+
|
|
34
|
+
### Relatório
|
|
35
|
+
Classifique cada check como:
|
|
36
|
+
- ✅ PASS
|
|
37
|
+
- ⚠️ WARNING (não bloqueia, mas recomenda correção)
|
|
38
|
+
- ❌ ERROR (bloqueia — squad inválido)
|
|
39
|
+
|
|
40
|
+
Formato de output:
|
|
41
|
+
```
|
|
42
|
+
═══ Squad Validation: <slug> ═══
|
|
43
|
+
|
|
44
|
+
Schema: ✅ PASS
|
|
45
|
+
Structure: ✅ PASS (7/7 files found)
|
|
46
|
+
Semantics: ⚠️ 1 warning
|
|
47
|
+
- executor "analyst" has no skills declared
|
|
48
|
+
|
|
49
|
+
Result: VALID (1 warning)
|
|
50
|
+
```
|
|
51
|
+
|
|
52
|
+
## Saída
|
|
53
|
+
- Relatório de validação (console)
|
|
54
|
+
- Status: VALID | VALID_WITH_WARNINGS | INVALID
|
|
55
|
+
|
|
56
|
+
## Regras
|
|
57
|
+
- NÃO corrija problemas automaticamente — apenas reporte
|
|
58
|
+
- SUGIRA o comando de correção quando possível (ex: "run @squad extend to add skills")
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
{
|
|
2
|
+
"slug": "content-basic",
|
|
3
|
+
"name": "Content Basic",
|
|
4
|
+
"description": "Squad genérico de conteúdo: artigos, scripts, copy, estratégia",
|
|
5
|
+
"mode": "content",
|
|
6
|
+
"suggestedExecutors": [
|
|
7
|
+
{ "slug": "writer", "role": "Creates written content, articles, scripts" },
|
|
8
|
+
{ "slug": "strategist", "role": "Defines content strategy, angles, positioning" },
|
|
9
|
+
{ "slug": "editor", "role": "Reviews, improves clarity, fact-checks" }
|
|
10
|
+
],
|
|
11
|
+
"defaultContentBlueprint": {
|
|
12
|
+
"slug": "content-piece",
|
|
13
|
+
"contentType": "article",
|
|
14
|
+
"layoutType": "document",
|
|
15
|
+
"sections": [
|
|
16
|
+
{ "key": "main-content", "label": "Content", "blockTypes": ["rich-text"] },
|
|
17
|
+
{ "key": "summary", "label": "Summary", "blockTypes": ["rich-text"] },
|
|
18
|
+
{ "key": "tags", "label": "Tags", "blockTypes": ["tags"] }
|
|
19
|
+
]
|
|
20
|
+
}
|
|
21
|
+
}
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
{
|
|
2
|
+
"slug": "media-channel",
|
|
3
|
+
"name": "Media Channel",
|
|
4
|
+
"description": "Squad para canal de mídia: YouTube, podcast, newsletter, social",
|
|
5
|
+
"mode": "content",
|
|
6
|
+
"suggestedExecutors": [
|
|
7
|
+
{ "slug": "scriptwriter", "role": "Writes scripts, outlines, narratives" },
|
|
8
|
+
{ "slug": "title-generator", "role": "Creates titles, hooks, angles" },
|
|
9
|
+
{ "slug": "copywriter", "role": "Writes descriptions, CTAs, social copy" },
|
|
10
|
+
{ "slug": "trend-analyst", "role": "Researches trends, competitors, opportunities" }
|
|
11
|
+
],
|
|
12
|
+
"defaultContentBlueprint": {
|
|
13
|
+
"slug": "media-package",
|
|
14
|
+
"contentType": "media-package",
|
|
15
|
+
"layoutType": "tabs",
|
|
16
|
+
"sections": [
|
|
17
|
+
{ "key": "script", "label": "Script/Outline", "blockTypes": ["rich-text"] },
|
|
18
|
+
{ "key": "titles", "label": "Title Options", "blockTypes": ["bullet-list"] },
|
|
19
|
+
{ "key": "description", "label": "Description", "blockTypes": ["rich-text"] },
|
|
20
|
+
{ "key": "tags", "label": "Tags & Keywords", "blockTypes": ["tags"] },
|
|
21
|
+
{ "key": "thumbnail", "label": "Thumbnail Brief", "blockTypes": ["rich-text"] }
|
|
22
|
+
]
|
|
23
|
+
}
|
|
24
|
+
}
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
{
|
|
2
|
+
"slug": "research-analysis",
|
|
3
|
+
"name": "Research & Analysis",
|
|
4
|
+
"description": "Squad de pesquisa, benchmarks, relatórios e comparações",
|
|
5
|
+
"mode": "research",
|
|
6
|
+
"suggestedExecutors": [
|
|
7
|
+
{ "slug": "researcher", "role": "Gathers data, finds sources, maps landscape" },
|
|
8
|
+
{ "slug": "analyst", "role": "Interprets data, finds patterns, draws conclusions" },
|
|
9
|
+
{ "slug": "reviewer", "role": "Validates methodology, challenges assumptions" }
|
|
10
|
+
],
|
|
11
|
+
"defaultContentBlueprint": {
|
|
12
|
+
"slug": "research-report",
|
|
13
|
+
"contentType": "report",
|
|
14
|
+
"layoutType": "accordion",
|
|
15
|
+
"sections": [
|
|
16
|
+
{ "key": "findings", "label": "Key Findings", "blockTypes": ["rich-text", "bullet-list"] },
|
|
17
|
+
{ "key": "methodology", "label": "Methodology", "blockTypes": ["rich-text"] },
|
|
18
|
+
{ "key": "data", "label": "Data & Sources", "blockTypes": ["bullet-list", "tags"] },
|
|
19
|
+
{ "key": "recommendations", "label": "Recommendations", "blockTypes": ["numbered-list"] }
|
|
20
|
+
]
|
|
21
|
+
}
|
|
22
|
+
}
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
{
|
|
2
|
+
"slug": "software-delivery",
|
|
3
|
+
"name": "Software Delivery",
|
|
4
|
+
"description": "Squad de desenvolvimento: features, arquitetura, QA",
|
|
5
|
+
"mode": "software",
|
|
6
|
+
"suggestedExecutors": [
|
|
7
|
+
{ "slug": "developer", "role": "Implements features, writes code" },
|
|
8
|
+
{ "slug": "architect", "role": "Designs system structure, makes technical decisions" },
|
|
9
|
+
{ "slug": "qa-engineer", "role": "Tests, validates, finds edge cases" }
|
|
10
|
+
],
|
|
11
|
+
"defaultContentBlueprint": {
|
|
12
|
+
"slug": "feature-delivery",
|
|
13
|
+
"contentType": "feature",
|
|
14
|
+
"layoutType": "tabs",
|
|
15
|
+
"sections": [
|
|
16
|
+
{ "key": "spec", "label": "Specification", "blockTypes": ["rich-text"] },
|
|
17
|
+
{ "key": "implementation", "label": "Implementation", "blockTypes": ["rich-text", "copy-block"] },
|
|
18
|
+
{ "key": "tests", "label": "Test Plan", "blockTypes": ["bullet-list"] }
|
|
19
|
+
]
|
|
20
|
+
}
|
|
21
|
+
}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
# AIOSON - Gemini CLI
|
|
2
|
+
|
|
3
|
+
## Initialization
|
|
4
|
+
- Read `.aioson/config.md`
|
|
5
|
+
- Check `.aioson/context/project.context.md`
|
|
6
|
+
- If missing, run `aios-setup`
|
|
7
|
+
|
|
8
|
+
## Commands
|
|
9
|
+
Use command files in `.gemini/commands/` that point to the same agents in `.aioson/agents/`.
|
|
10
|
+
- Include `aios-ux-ui` for frontend design specification when UI quality is critical.
|
|
@@ -0,0 +1,67 @@
|
|
|
1
|
+
# AIOSON
|
|
2
|
+
|
|
3
|
+
You operate as AIOSON — an AI development squad with specialized agents.
|
|
4
|
+
|
|
5
|
+
## Mandatory first action
|
|
6
|
+
1. Read `.aioson/config.md`
|
|
7
|
+
2. Check whether `.aioson/context/project.context.md` exists
|
|
8
|
+
- If missing: activate @setup agent immediately
|
|
9
|
+
- If present: read it before any action
|
|
10
|
+
3. Check `.aioson/rules/` — if any `.md` files exist, inform the user:
|
|
11
|
+
> "Project rules active: {n} rule(s) found in `.aioson/rules/`. Each agent will load applicable rules automatically."
|
|
12
|
+
|
|
13
|
+
## How to invoke agents
|
|
14
|
+
|
|
15
|
+
**Option 1 — @ file include (Codex v0.110+):**
|
|
16
|
+
Type `@agent-name` in the prompt. Codex will find the agent file and include its content.
|
|
17
|
+
The agent activates automatically — begin executing its instructions immediately.
|
|
18
|
+
Do not treat the included file as something to quote, summarize, or display back to the user unless the user explicitly asked to inspect the file itself.
|
|
19
|
+
|
|
20
|
+
Examples: `@setup`, `@dev`, `@squad`, `@genoma`, `@profiler-researcher`
|
|
21
|
+
|
|
22
|
+
**Option 2 — Natural language:**
|
|
23
|
+
Describe your intent. The agent system will match and execute.
|
|
24
|
+
|
|
25
|
+
| Agent | Natural language examples |
|
|
26
|
+
|-------|--------------------------|
|
|
27
|
+
| @setup | "start the project setup", "use the setup agent", "iniciar o setup" |
|
|
28
|
+
| @discovery-design-doc | "prepare the discovery and design doc", "use the discovery design doc agent" |
|
|
29
|
+
| @analyst | "analyze the requirements", "use the analyst agent" |
|
|
30
|
+
| @architect | "design the architecture", "use the architect agent" |
|
|
31
|
+
| @ux-ui | "design the UI", "use the ux-ui agent" |
|
|
32
|
+
| @product | "define the product vision", "use the product agent", "start the product wizard" |
|
|
33
|
+
| @pm | "create the user stories", "use the pm agent" |
|
|
34
|
+
| @dev | "implement the feature", "use the dev agent" |
|
|
35
|
+
| @qa | "write the tests", "use the qa agent" |
|
|
36
|
+
| @orchestrator | "coordinate this session", "use the orchestrator agent" |
|
|
37
|
+
| @squad | "assemble a squad", "use the squad agent", "montar squad" |
|
|
38
|
+
| @genoma | "generate a genome", "use the genoma agent", "gerar genoma" |
|
|
39
|
+
| @profiler-researcher | "start the profiler research", "profile this person", "pesquisar DNA mental" |
|
|
40
|
+
| @profiler-enricher | "enrich this profile", "analyze this person's cognition", "consolidar perfil cognitivo" |
|
|
41
|
+
| @profiler-forge | "generate the advisor", "forge the genome 3.0", "gerar advisor da persona" |
|
|
42
|
+
|
|
43
|
+
When an agent file is included via @ or described via natural language, read the corresponding file and execute its instructions immediately from the first step.
|
|
44
|
+
Do not answer with "I will open/read/show the file" unless the user explicitly asked to inspect that file.
|
|
45
|
+
|
|
46
|
+
## Agent files
|
|
47
|
+
- @setup → `.aioson/agents/setup.md`
|
|
48
|
+
- @discovery-design-doc → `.aioson/agents/discovery-design-doc.md`
|
|
49
|
+
- @analyst → `.aioson/agents/analyst.md`
|
|
50
|
+
- @architect → `.aioson/agents/architect.md`
|
|
51
|
+
- @ux-ui → `.aioson/agents/ux-ui.md`
|
|
52
|
+
- @product → `.aioson/agents/product.md`
|
|
53
|
+
- @pm → `.aioson/agents/pm.md`
|
|
54
|
+
- @dev → `.aioson/agents/dev.md`
|
|
55
|
+
- @qa → `.aioson/agents/qa.md`
|
|
56
|
+
- @orchestrator → `.aioson/agents/orchestrator.md`
|
|
57
|
+
- @squad → `.aioson/agents/squad.md`
|
|
58
|
+
- @genoma → `.aioson/agents/genoma.md`
|
|
59
|
+
- @profiler-researcher → `.aioson/agents/profiler-researcher.md`
|
|
60
|
+
- @profiler-enricher → `.aioson/agents/profiler-enricher.md`
|
|
61
|
+
- @profiler-forge → `.aioson/agents/profiler-forge.md`
|
|
62
|
+
|
|
63
|
+
## Session protocol
|
|
64
|
+
If `.aioson/context/spec.md` exists, read it at session start and update it at session end.
|
|
65
|
+
|
|
66
|
+
## Golden rule
|
|
67
|
+
Small project, small solution.
|