stealthos-cli 0.1.0-alpha.3 → 0.1.0-alpha.4
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/ai/CONTRACT.md +110 -0
- package/ai/INDEX.md +203 -0
- package/ai/README.md +434 -0
- package/ai/ROUTER.md +288 -0
- package/ai/agents/README.md +103 -0
- package/ai/agents/architect.md +59 -0
- package/ai/agents/backend-engineer.md +62 -0
- package/ai/agents/founder.md +45 -0
- package/ai/agents/frontend-engineer.md +61 -0
- package/ai/agents/product-manager.md +56 -0
- package/ai/agents/qa-engineer.md +53 -0
- package/ai/agents/researcher.md +74 -0
- package/ai/agents/reviewer.md +73 -0
- package/ai/agents/security-engineer.md +59 -0
- package/ai/agents/sre-engineer.md +70 -0
- package/ai/agents/tech-lead.md +70 -0
- package/ai/architecture/README.md +35 -0
- package/ai/architecture/components.md +24 -0
- package/ai/architecture/containers.md +30 -0
- package/ai/architecture/event-flows.md +36 -0
- package/ai/architecture/sequence-diagrams.md +38 -0
- package/ai/architecture/system-context.md +46 -0
- package/ai/architecture/threat-modeling.md +40 -0
- package/ai/blueprints/README.md +67 -0
- package/ai/blueprints/_schema.json +40 -0
- package/ai/blueprints/ai-platform.json +28 -0
- package/ai/blueprints/crm.json +22 -0
- package/ai/blueprints/game.json +25 -0
- package/ai/blueprints/mobile.json +24 -0
- package/ai/blueprints/realtime.json +22 -0
- package/ai/blueprints/saas.json +25 -0
- package/ai/blueprints/telemetry.json +30 -0
- package/ai/blueprints/web.json +23 -0
- package/ai/bootstrap/discovery-questions.md +117 -0
- package/ai/bootstrap/dispatcher.md +85 -0
- package/ai/bootstrap/existing-project.md +191 -0
- package/ai/bootstrap/new-project.md +127 -0
- package/ai/bootstrap/tech-mapping.md +164 -0
- package/ai/clients/README.md +114 -0
- package/ai/clients/antigravity.md +125 -0
- package/ai/clients/claude-code.md +65 -0
- package/ai/clients/cline.md +69 -0
- package/ai/clients/codex-aider-cli.md +82 -0
- package/ai/clients/continue.md +67 -0
- package/ai/clients/copilot.md +49 -0
- package/ai/clients/cursor.md +81 -0
- package/ai/clients/snippets/mcp-absolute-paths.json +9 -0
- package/ai/clients/snippets/mcp-http.json +7 -0
- package/ai/clients/snippets/mcp-stdio.json +9 -0
- package/ai/clients/trae.md +69 -0
- package/ai/clients/windsurf.md +71 -0
- package/ai/core/pipeline/execution-engine.md +157 -0
- package/ai/engineering/README.md +32 -0
- package/ai/engineering/observability/incident-response.md +82 -0
- package/ai/evals/protocol-tests.md +150 -0
- package/ai/evolution/agent-evolution.md +161 -0
- package/ai/evolution/improvements.md +91 -0
- package/ai/evolution/learnings.md +49 -0
- package/ai/evolution/patterns-discovered.md +48 -0
- package/ai/execution/README.md +33 -0
- package/ai/execution/backlog.md +27 -0
- package/ai/execution/milestones.md +26 -0
- package/ai/execution/roadmap.md +30 -0
- package/ai/execution/sprint.md +42 -0
- package/ai/governance/README.md +34 -0
- package/ai/governance/architecture-principles.md +99 -0
- package/ai/governance/definition-of-done.md +88 -0
- package/ai/governance/definition-of-ready.md +69 -0
- package/ai/governance/engineering-principles.md +70 -0
- package/ai/governance/quality-gates.md +85 -0
- package/ai/governance/security-policies.md +84 -0
- package/ai/hooks/enforce-audit.ps1 +41 -0
- package/ai/hooks/enforce-audit.sh +39 -0
- package/ai/hooks/guard-edit.ps1 +182 -0
- package/ai/hooks/guard-edit.sh +161 -0
- package/ai/hooks/inject-os-reminder.ps1 +40 -0
- package/ai/hooks/inject-os-reminder.sh +16 -0
- package/ai/manifest.json +238 -0
- package/ai/memory/_detected-stack.json +33 -0
- package/ai/memory/_summary.md +49 -0
- package/ai/memory/archive/.gitkeep +3 -0
- package/ai/memory/completed-tasks.md +156 -0
- package/ai/memory/decisions.md +257 -0
- package/ai/memory/errors-and-solutions.md +41 -0
- package/ai/memory/known-issues.md +40 -0
- package/ai/memory/pending-tasks.md +37 -0
- package/ai/memory/project-context.md +67 -0
- package/ai/operating-system/architecture.md +54 -0
- package/ai/operating-system/coding-standards.md +84 -0
- package/ai/operating-system/folder-structure.md +126 -0
- package/ai/operating-system/performance-rules.md +86 -0
- package/ai/operating-system/quality-control.md +81 -0
- package/ai/operating-system/security-rules.md +91 -0
- package/ai/operating-system/workflow.md +86 -0
- package/ai/product/README.md +24 -0
- package/ai/product/business-rules.md +26 -0
- package/ai/product/personas.md +29 -0
- package/ai/product/user-journeys.md +30 -0
- package/ai/product/vision.md +35 -0
- package/ai/rules/behavior.md +45 -0
- package/ai/rules/do.md +47 -0
- package/ai/rules/dont.md +46 -0
- package/ai/rules/execution-flow.md +125 -0
- package/ai/rules/structural-constraints.md +59 -0
- package/ai/rules/structure-canon.md +116 -0
- package/ai/runtime.md +179 -0
- package/ai/scripts/detect-stack.ps1 +166 -0
- package/ai/scripts/detect-stack.sh +172 -0
- package/ai/scripts/init-ai-os.ps1 +170 -0
- package/ai/scripts/init-ai-os.sh +99 -0
- package/ai/scripts/lint-os.ps1 +99 -0
- package/ai/scripts/lint-os.sh +85 -0
- package/ai/scripts/start-os.ps1 +151 -0
- package/ai/scripts/start-os.sh +141 -0
- package/ai/server/README.md +105 -0
- package/ai/server/aios-server.mjs +2134 -0
- package/ai/server/package-lock.json +802 -0
- package/ai/server/package.json +31 -0
- package/ai/server/src/analyzer/graph-builder.ts +92 -0
- package/ai/server/src/analyzer/index.ts +191 -0
- package/ai/server/src/analyzer/module-mapper.ts +171 -0
- package/ai/server/src/analyzer/smell-detector.ts +54 -0
- package/ai/server/src/analyzer/stack-detector.ts +70 -0
- package/ai/server/src/index.ts +16 -0
- package/ai/server/src/packager/context-builder.ts +217 -0
- package/ai/server/src/packager/index.ts +3 -0
- package/ai/server/src/packager/memory-injector.ts +128 -0
- package/ai/server/src/packager/module-summarizer.ts +60 -0
- package/ai/server/src/packager/token-estimator.ts +26 -0
- package/ai/server/src/snapshot/index.ts +3 -0
- package/ai/server/src/snapshot/snapshot-creator.ts +206 -0
- package/ai/server/src/snapshot/snapshot-diff.ts +86 -0
- package/ai/server/src/snapshot/snapshot-restore.ts +14 -0
- package/ai/server/src/types.ts +94 -0
- package/ai/server/tsconfig.json +26 -0
- package/ai/skills/architecture-design.md +82 -0
- package/ai/skills/backend-engineering.md +57 -0
- package/ai/skills/database-design.md +76 -0
- package/ai/skills/frontend-engineering.md +63 -0
- package/ai/skills/performance.md +73 -0
- package/ai/skills/scalability.md +84 -0
- package/ai/skills/security.md +71 -0
- package/ai/skills/testing.md +77 -0
- package/ai/specs/ADR/ADR-0002-typescript-runtime.md +103 -0
- package/ai/specs/ADR/ADR-0004-runtime-orchestrator.md +94 -0
- package/ai/specs/ADR/ADR-0005-workflow-engine.md +105 -0
- package/ai/specs/ADR/ADR-0006-runtime-state.md +104 -0
- package/ai/specs/ADR/ADR-0007-state-compiler-drift-context-layers-artifact-index.md +82 -0
- package/ai/specs/ADR/ADR-0008-intent-runtime-discovery-branching.md +93 -0
- package/ai/specs/ADR/ADR-0009-confidence-system-maturity-tracking.md +113 -0
- package/ai/specs/ADR/ADR-0010-structural-architecture-standards.md +121 -0
- package/ai/specs/ADR/ADR-0011-mcp-prompts.md +86 -0
- package/ai/specs/ADR/ADR-0012-stealthos-hybrid-architecture.md +174 -0
- package/ai/specs/ADR/_TEMPLATE.md +60 -0
- package/ai/specs/BRD/_TEMPLATE.md +50 -0
- package/ai/specs/PRD/_TEMPLATE.md +72 -0
- package/ai/specs/README.md +43 -0
- package/ai/specs/RFC/RFC-0001-runtime-orchestrator.md +149 -0
- package/ai/specs/RFC/RFC-0002-runtime-orchestrator-extended.md +134 -0
- package/ai/specs/RFC/_TEMPLATE.md +61 -0
- package/ai/specs/RUNBOOKS/_TEMPLATE.md +68 -0
- package/ai/specs/SDD/_TEMPLATE.md +104 -0
- package/ai/specs/TASKS/_TEMPLATE.md +52 -0
- package/ai/tools/debugging.md +64 -0
- package/ai/tools/dependency-analysis.md +46 -0
- package/ai/tools/internet-research.md +42 -0
- package/ai/tools/mcp-discovery.md +44 -0
- package/ai/workflows/_schema.json +81 -0
- package/ai/workflows/init.json +148 -0
- package/ai/workflows/sync.json +71 -0
- package/ai/workflows/work.json +91 -0
- package/package.json +7 -1
- package/scripts/bundle-ai.mjs +58 -0
- package/src/cli.mjs +1 -1
- package/src/commands/install.mjs +35 -11
- package/src/lib/resolve-source.mjs +27 -10
|
@@ -0,0 +1,126 @@
|
|
|
1
|
+
---
|
|
2
|
+
version: 1.0.0
|
|
3
|
+
updated: 2026-05-14
|
|
4
|
+
tier: conditional
|
|
5
|
+
tokens: ~500
|
|
6
|
+
load: setup, refactor
|
|
7
|
+
triggers: estrutura, pasta, folder, organização
|
|
8
|
+
---
|
|
9
|
+
|
|
10
|
+
# Folder Structure
|
|
11
|
+
|
|
12
|
+
> Organização canônica de diretórios. Adapte conforme stack — mas mantenha o princípio: organização por **domínio/feature**, não por **tipo de arquivo**.
|
|
13
|
+
>
|
|
14
|
+
> **Camada acima desta**: organização por **especificação técnica** (Frontend, Backend, BD, Infra, Integrações, Tools, APIs, MCPs). Ver [`bootstrap/tech-mapping.md`](../bootstrap/tech-mapping.md). Cada especificação pode (e deve) **internamente** ser organizada por feature/domínio conforme as regras abaixo.
|
|
15
|
+
|
|
16
|
+
## Organização macro (por especificação técnica)
|
|
17
|
+
|
|
18
|
+
Em projetos com múltiplas especificações, a raiz reflete as especificações que existem (não inventar):
|
|
19
|
+
|
|
20
|
+
```
|
|
21
|
+
projeto/
|
|
22
|
+
├── frontend/ # ou src/ se for monorepo simplificado
|
|
23
|
+
├── backend/ # ou server/
|
|
24
|
+
├── infra/ # docker-compose.yml, k8s/, terraform/
|
|
25
|
+
├── integrations/ # clients de terceiros isolados (opcional)
|
|
26
|
+
├── scripts/ # tools internas (opcional)
|
|
27
|
+
├── samples/ # data samples gitignored (opcional)
|
|
28
|
+
├── docs/ # documentação humana (opcional)
|
|
29
|
+
└── .ai/ # AI OS deste projeto
|
|
30
|
+
```
|
|
31
|
+
|
|
32
|
+
> Em monorepos pequenos, é comum ver `src/` (front) + `server/` (back) na raiz, sem `frontend/` explícito — aceitável; o `architecture.md` documenta o mapeamento real.
|
|
33
|
+
|
|
34
|
+
---
|
|
35
|
+
|
|
36
|
+
## Anti-padrão: organização por tipo
|
|
37
|
+
|
|
38
|
+
```
|
|
39
|
+
src/
|
|
40
|
+
├── controllers/
|
|
41
|
+
├── services/
|
|
42
|
+
├── models/
|
|
43
|
+
└── views/
|
|
44
|
+
```
|
|
45
|
+
|
|
46
|
+
❌ Cada feature está espalhada em 4 lugares. Mudança simples toca 4 pastas.
|
|
47
|
+
|
|
48
|
+
## Padrão: organização por feature
|
|
49
|
+
|
|
50
|
+
```
|
|
51
|
+
src/
|
|
52
|
+
├── orders/
|
|
53
|
+
│ ├── order.entity.ts
|
|
54
|
+
│ ├── order.service.ts
|
|
55
|
+
│ ├── order.controller.ts
|
|
56
|
+
│ ├── order.repository.ts
|
|
57
|
+
│ └── order.test.ts
|
|
58
|
+
├── users/
|
|
59
|
+
│ └── ...
|
|
60
|
+
└── shared/
|
|
61
|
+
├── http/
|
|
62
|
+
├── db/
|
|
63
|
+
└── utils/
|
|
64
|
+
```
|
|
65
|
+
|
|
66
|
+
✅ Tudo de "orders" no mesmo lugar. `shared/` para o que é genuinamente reutilizado.
|
|
67
|
+
|
|
68
|
+
## Exemplos por Stack
|
|
69
|
+
|
|
70
|
+
### Node.js / TypeScript backend
|
|
71
|
+
|
|
72
|
+
```
|
|
73
|
+
src/
|
|
74
|
+
├── domains/ # bounded contexts
|
|
75
|
+
│ ├── orders/
|
|
76
|
+
│ ├── users/
|
|
77
|
+
│ └── billing/
|
|
78
|
+
├── infrastructure/ # adapters concretos
|
|
79
|
+
│ ├── db/
|
|
80
|
+
│ ├── http/
|
|
81
|
+
│ └── queue/
|
|
82
|
+
├── shared/ # util genuinamente cross-domain
|
|
83
|
+
├── config/ # carregamento de env tipado
|
|
84
|
+
└── server.ts # bootstrap
|
|
85
|
+
tests/ # ou colocado junto do código (.test.ts)
|
|
86
|
+
```
|
|
87
|
+
|
|
88
|
+
### React / Next.js
|
|
89
|
+
|
|
90
|
+
```
|
|
91
|
+
src/
|
|
92
|
+
├── app/ # rotas (Next 13+)
|
|
93
|
+
├── components/
|
|
94
|
+
│ ├── ui/ # primitivos sem lógica de domínio
|
|
95
|
+
│ └── feature/ # com lógica de domínio
|
|
96
|
+
├── hooks/
|
|
97
|
+
├── lib/ # utils sem React
|
|
98
|
+
├── styles/
|
|
99
|
+
└── types/
|
|
100
|
+
```
|
|
101
|
+
|
|
102
|
+
### Python (FastAPI / Django)
|
|
103
|
+
|
|
104
|
+
```
|
|
105
|
+
src/
|
|
106
|
+
├── apps/ # por feature
|
|
107
|
+
│ ├── orders/
|
|
108
|
+
│ └── users/
|
|
109
|
+
├── core/ # config, db base, middlewares
|
|
110
|
+
├── shared/
|
|
111
|
+
└── main.py
|
|
112
|
+
tests/
|
|
113
|
+
```
|
|
114
|
+
|
|
115
|
+
## Princípios
|
|
116
|
+
|
|
117
|
+
1. **Profundidade controlada**: máximo 3-4 níveis. Acima disso, repensar.
|
|
118
|
+
2. **`shared/` é caro**: só vai para lá o que é usado por 2+ domínios E não pertence a nenhum.
|
|
119
|
+
3. **Testes ao lado do código** (`order.test.ts`) > tudo em `tests/` separado, especialmente em projetos grandes.
|
|
120
|
+
4. **Convenção sobre configuração**: arquivos com sufixo `.entity`, `.service`, `.repository` para encontrar rápido.
|
|
121
|
+
|
|
122
|
+
## Onde NÃO pôr coisa
|
|
123
|
+
|
|
124
|
+
- Pasta `utils/` virando lixeira → revisar trimestralmente.
|
|
125
|
+
- `helpers/` genéricos sem dono → costuma indicar má modelagem do domínio.
|
|
126
|
+
- Arquivos `misc.ts`, `common.ts`, `stuff.ts` → renomear ou eliminar.
|
|
@@ -0,0 +1,86 @@
|
|
|
1
|
+
---
|
|
2
|
+
version: 1.0.0
|
|
3
|
+
updated: 2026-05-14
|
|
4
|
+
tier: conditional
|
|
5
|
+
tokens: ~500
|
|
6
|
+
load: performance
|
|
7
|
+
triggers: performance, latência, p95, p99, slo, sla, budget
|
|
8
|
+
---
|
|
9
|
+
|
|
10
|
+
# Performance Rules
|
|
11
|
+
|
|
12
|
+
> Regras operacionais. Complementa `skills/performance.md` (que é metodológico).
|
|
13
|
+
|
|
14
|
+
## Princípios
|
|
15
|
+
|
|
16
|
+
1. **Medir antes de otimizar.** Sem profile, sem decisão.
|
|
17
|
+
2. **Otimizar o caminho quente.** 5% do código, 95% do tempo.
|
|
18
|
+
3. **Não regredir.** Performance é feature; mudança que degrada precisa ser justificada.
|
|
19
|
+
|
|
20
|
+
## Orçamentos (defaults; ajustar por projeto em `memory/project-context.md`)
|
|
21
|
+
|
|
22
|
+
### Backend HTTP
|
|
23
|
+
- p50 < 100ms
|
|
24
|
+
- p95 < 250ms
|
|
25
|
+
- p99 < 500ms
|
|
26
|
+
- error rate < 0.1%
|
|
27
|
+
|
|
28
|
+
### Frontend (Core Web Vitals)
|
|
29
|
+
- LCP < 2.5s
|
|
30
|
+
- INP < 200ms
|
|
31
|
+
- CLS < 0.1
|
|
32
|
+
- TTFB < 800ms
|
|
33
|
+
|
|
34
|
+
### Banco de dados
|
|
35
|
+
- p99 query time < 100ms para queries OLTP
|
|
36
|
+
- Sem query > 1s sem justificativa
|
|
37
|
+
|
|
38
|
+
### Background jobs
|
|
39
|
+
- SLA por tipo de job, registrado em `memory/project-context.md`
|
|
40
|
+
|
|
41
|
+
## Regras Obrigatórias
|
|
42
|
+
|
|
43
|
+
- **Toda chamada de rede tem timeout.** Sem exceção.
|
|
44
|
+
- **Toda lista paginada.** LIMIT + cursor/offset.
|
|
45
|
+
- **Sem `SELECT *`** em produção.
|
|
46
|
+
- **Índice ANTES de query lenta chegar a prod** quando o padrão de acesso é conhecido.
|
|
47
|
+
- **N+1 detectado em review = bloqueia merge.**
|
|
48
|
+
|
|
49
|
+
## Padrões aplicáveis
|
|
50
|
+
|
|
51
|
+
### Caching
|
|
52
|
+
- Cache miss + invalidação errada > sem cache. Pensar invalidação antes.
|
|
53
|
+
- TTL adequado ao churn dos dados.
|
|
54
|
+
- Não cachear resposta de operação autenticada sem chave por usuário.
|
|
55
|
+
|
|
56
|
+
### Async
|
|
57
|
+
- I/O bound → async/await ou worker pool.
|
|
58
|
+
- Webhook recebido → ack rápido, processar em background.
|
|
59
|
+
|
|
60
|
+
### Loading
|
|
61
|
+
- Frontend: lazy load de rotas, componentes pesados, imagens fora do viewport.
|
|
62
|
+
- Backend: lazy init de recursos caros (DB pool já é assim por default).
|
|
63
|
+
|
|
64
|
+
### Batching
|
|
65
|
+
- N requisições para o mesmo serviço → batchar quando possível.
|
|
66
|
+
- Inserções em loop → bulk insert.
|
|
67
|
+
|
|
68
|
+
## Monitoramento
|
|
69
|
+
|
|
70
|
+
- Dashboards de latência (p50/p95/p99), throughput, error rate.
|
|
71
|
+
- Alerta em violação de SLO (não em CPU/memória diretamente — usar Golden Signals).
|
|
72
|
+
- Trace amostrado em produção; trace completo em staging.
|
|
73
|
+
|
|
74
|
+
## Anti-padrões a rejeitar
|
|
75
|
+
|
|
76
|
+
- "Está rápido localmente" como prova.
|
|
77
|
+
- Adicionar cache porque "vai melhorar".
|
|
78
|
+
- Trocar lib por outra "mais performática" sem benchmark do caso real.
|
|
79
|
+
- Otimização que reduz 10ms em endpoint de 5 req/dia.
|
|
80
|
+
|
|
81
|
+
## Performance Regression
|
|
82
|
+
|
|
83
|
+
Mudança que regride > 10% em alguma métrica chave:
|
|
84
|
+
1. Bloqueia merge.
|
|
85
|
+
2. Investigar causa.
|
|
86
|
+
3. Otimizar OU justificar trade-off em ADR.
|
|
@@ -0,0 +1,81 @@
|
|
|
1
|
+
---
|
|
2
|
+
version: 1.0.0
|
|
3
|
+
updated: 2026-05-14
|
|
4
|
+
tier: conditional
|
|
5
|
+
tokens: ~500
|
|
6
|
+
load: quality, review
|
|
7
|
+
triggers: review, quality, dod, definition of done, ci, lint
|
|
8
|
+
---
|
|
9
|
+
|
|
10
|
+
# Quality Control
|
|
11
|
+
|
|
12
|
+
> Definições de "feito" e portões de qualidade. O que NÃO passar bloqueia entrega.
|
|
13
|
+
|
|
14
|
+
## Definition of Done
|
|
15
|
+
|
|
16
|
+
Uma tarefa só está "pronta" se:
|
|
17
|
+
|
|
18
|
+
- [ ] Código implementado e revisado (auto + humano se PR).
|
|
19
|
+
- [ ] Lint sem erros (warnings revisados).
|
|
20
|
+
- [ ] Type-check sem erros.
|
|
21
|
+
- [ ] Testes novos cobrem a mudança.
|
|
22
|
+
- [ ] Suite de testes existente passa 100%.
|
|
23
|
+
- [ ] Smoke-test manual em ambiente próximo ao real (se UI/runtime).
|
|
24
|
+
- [ ] Documentação atualizada se contratos públicos mudaram.
|
|
25
|
+
- [ ] `memory/completed-tasks.md` atualizado.
|
|
26
|
+
- [ ] ADR criado se houve decisão arquitetural.
|
|
27
|
+
- [ ] Sem segredo, log de PII ou debug code no diff.
|
|
28
|
+
|
|
29
|
+
## Portões Automatizados (CI)
|
|
30
|
+
|
|
31
|
+
| Etapa | Falha bloqueia merge? |
|
|
32
|
+
|---|---|
|
|
33
|
+
| Lint | sim |
|
|
34
|
+
| Type-check | sim |
|
|
35
|
+
| Unit tests | sim |
|
|
36
|
+
| Integration tests | sim |
|
|
37
|
+
| Build | sim |
|
|
38
|
+
| Security scan (deps) | sim para crítico/alto |
|
|
39
|
+
| Coverage | só se cair abaixo de threshold definido |
|
|
40
|
+
| E2E | sim para PR para main |
|
|
41
|
+
|
|
42
|
+
## Code Review — checklist
|
|
43
|
+
|
|
44
|
+
### Correção
|
|
45
|
+
- [ ] Faz o que diz no título do PR?
|
|
46
|
+
- [ ] Cobre edge cases óbvios?
|
|
47
|
+
- [ ] Erros tratados ou propagados conscientemente?
|
|
48
|
+
|
|
49
|
+
### Design
|
|
50
|
+
- [ ] Encaixa na arquitetura existente?
|
|
51
|
+
- [ ] Acoplamento justificado?
|
|
52
|
+
- [ ] Não duplica algo que já existe?
|
|
53
|
+
|
|
54
|
+
### Legibilidade
|
|
55
|
+
- [ ] Nomes são bons?
|
|
56
|
+
- [ ] Funções têm tamanho razoável?
|
|
57
|
+
- [ ] Comentários onde precisam e só onde precisam?
|
|
58
|
+
|
|
59
|
+
### Testes
|
|
60
|
+
- [ ] Testes cobrem o comportamento, não a implementação?
|
|
61
|
+
- [ ] Testes de regressão para bugs corrigidos?
|
|
62
|
+
|
|
63
|
+
### Segurança
|
|
64
|
+
- [ ] Input validado?
|
|
65
|
+
- [ ] Sem segredo no diff?
|
|
66
|
+
- [ ] Sem PII em log?
|
|
67
|
+
|
|
68
|
+
### Performance
|
|
69
|
+
- [ ] Sem N+1 introduzido?
|
|
70
|
+
- [ ] Sem loop síncrono sobre I/O?
|
|
71
|
+
|
|
72
|
+
## Métricas de saúde
|
|
73
|
+
|
|
74
|
+
- **Build time**: monitorar tendência. Lentidão crônica vira atrito.
|
|
75
|
+
- **Test runtime**: testes lentos → quarentena ou otimização.
|
|
76
|
+
- **Flakiness**: zero tolerância em main. Quarentena imediata, fix em <1 semana.
|
|
77
|
+
- **Dívida técnica**: alocar % do tempo (10-20%) para reduzir, não esperar "tempo livre".
|
|
78
|
+
|
|
79
|
+
## Quality gate de regressão
|
|
80
|
+
|
|
81
|
+
Bug em prod → criar teste que **falha sem o fix** antes de fazer o fix. Garante que o teste exercita o bug.
|
|
@@ -0,0 +1,91 @@
|
|
|
1
|
+
---
|
|
2
|
+
version: 1.0.0
|
|
3
|
+
updated: 2026-05-14
|
|
4
|
+
tier: conditional
|
|
5
|
+
tokens: ~700
|
|
6
|
+
load: security
|
|
7
|
+
triggers: segurança, security, auth, senha, token, compliance, lgpd, gdpr, pci
|
|
8
|
+
---
|
|
9
|
+
|
|
10
|
+
# Security Rules
|
|
11
|
+
|
|
12
|
+
> Regras operacionais de segurança aplicadas em todo o projeto. Complementa `skills/security.md` (que é mais técnico-conceitual).
|
|
13
|
+
|
|
14
|
+
## Não-negociáveis
|
|
15
|
+
|
|
16
|
+
1. **Nenhum segredo em código.** Nunca. `.env` no `.gitignore`.
|
|
17
|
+
2. **HTTPS sempre.** HTTP só em loopback de dev.
|
|
18
|
+
3. **Auth em toda rota não-pública.** Default: privado; whitelist explícita o público.
|
|
19
|
+
4. **Validação em borda.** Todo input externo (HTTP, fila, arquivo, env) passa por schema.
|
|
20
|
+
5. **PII minimizada.** Coletar só o necessário; expirar / anonimizar quando o propósito acabar.
|
|
21
|
+
|
|
22
|
+
## Gestão de Segredos
|
|
23
|
+
|
|
24
|
+
- Cofre: AWS Secrets Manager, GCP Secret Manager, Vault, doppler, ou equivalente.
|
|
25
|
+
- Injeção em runtime via env vars.
|
|
26
|
+
- `.env.example` versionado com chaves vazias.
|
|
27
|
+
- Rotação: trimestral mínimo; imediata se vazado.
|
|
28
|
+
- Chave de longa vida (>1 ano) → exceção que exige justificativa.
|
|
29
|
+
|
|
30
|
+
## Autenticação / Autorização
|
|
31
|
+
|
|
32
|
+
- Senhas: argon2id (preferência) ou bcrypt cost ≥ 12.
|
|
33
|
+
- MFA disponível para todos; obrigatório para roles administrativos.
|
|
34
|
+
- Sessões: token opaco server-side OU JWT curto + refresh.
|
|
35
|
+
- JWT em cookie `HttpOnly`, `Secure`, `SameSite=Lax`.
|
|
36
|
+
- Rate limit em login, signup, password reset.
|
|
37
|
+
|
|
38
|
+
## Logging
|
|
39
|
+
|
|
40
|
+
- **Nunca logar**: senhas, tokens, chaves, números de cartão, CPF/SSN completos, conteúdo de mensagens privadas.
|
|
41
|
+
- **Mascarar ao logar**: `email: a***@b***.com`, `card: ****1234`.
|
|
42
|
+
- **Log de eventos de segurança**: login, logout, falha de auth, mudança de permissão, acesso a dado sensível.
|
|
43
|
+
|
|
44
|
+
## Headers HTTP obrigatórios em produção
|
|
45
|
+
|
|
46
|
+
```
|
|
47
|
+
Strict-Transport-Security: max-age=63072000; includeSubDomains; preload
|
|
48
|
+
Content-Security-Policy: (configurada por projeto, default-src 'self')
|
|
49
|
+
X-Content-Type-Options: nosniff
|
|
50
|
+
X-Frame-Options: DENY
|
|
51
|
+
Referrer-Policy: strict-origin-when-cross-origin
|
|
52
|
+
Permissions-Policy: (mínimo necessário)
|
|
53
|
+
```
|
|
54
|
+
|
|
55
|
+
## Input
|
|
56
|
+
|
|
57
|
+
- Schema na entrada (Zod, Pydantic, JSON Schema). Reject unknown fields.
|
|
58
|
+
- Limites: tamanho de payload, profundidade, tamanho de strings.
|
|
59
|
+
- File upload: validar tipo por magic bytes, não só por extensão.
|
|
60
|
+
|
|
61
|
+
## Dependências
|
|
62
|
+
|
|
63
|
+
- Auditoria em CI (`npm audit`, `pip-audit`, `cargo audit`, Snyk, Dependabot).
|
|
64
|
+
- Crítico/alto → fix em <7 dias.
|
|
65
|
+
- Médio → fix no próximo ciclo.
|
|
66
|
+
- Baixo → revisão trimestral.
|
|
67
|
+
|
|
68
|
+
## Compliance
|
|
69
|
+
|
|
70
|
+
- **LGPD** (Brasil): finalidade, mínimo, transparência, direito à exclusão.
|
|
71
|
+
- **GDPR** (UE): consentimento, portabilidade, esquecimento.
|
|
72
|
+
- **PCI-DSS** (cartões): nunca armazenar PAN/CVV em claro.
|
|
73
|
+
- **HIPAA** (saúde EUA): criptografia, auditoria, BAA.
|
|
74
|
+
|
|
75
|
+
→ Aplicabilidade registrada em `memory/project-context.md`.
|
|
76
|
+
|
|
77
|
+
## Incidentes
|
|
78
|
+
|
|
79
|
+
1. Detecção → rotação imediata de credenciais expostas.
|
|
80
|
+
2. Contenção → desabilitar superfície atacável.
|
|
81
|
+
3. Comunicação → stakeholders + (se LGPD/GDPR) autoridades em prazo legal.
|
|
82
|
+
4. Erradicação → fix + verificação.
|
|
83
|
+
5. Lições → registrar em `memory/errors-and-solutions.md` + `evolution/learnings.md`.
|
|
84
|
+
|
|
85
|
+
## Proibições absolutas
|
|
86
|
+
|
|
87
|
+
- `eval()` / equivalentes em input do usuário.
|
|
88
|
+
- Desserialização de dado não confiável sem schema.
|
|
89
|
+
- SQL concatenado com input.
|
|
90
|
+
- Comparar segredos com `==` em vez de comparação constante.
|
|
91
|
+
- Disabling de TLS verification em produção.
|
|
@@ -0,0 +1,86 @@
|
|
|
1
|
+
---
|
|
2
|
+
version: 1.0.0
|
|
3
|
+
updated: 2026-05-14
|
|
4
|
+
tier: conditional
|
|
5
|
+
tokens: ~600
|
|
6
|
+
load: workflow, git, ci
|
|
7
|
+
triggers: pr, pull request, merge, branch, commit, release, deploy, ci, cd
|
|
8
|
+
---
|
|
9
|
+
|
|
10
|
+
# Workflow
|
|
11
|
+
|
|
12
|
+
> Como o trabalho flui do início (ideia/bug) à entrega.
|
|
13
|
+
|
|
14
|
+
## Fluxo de Tarefa
|
|
15
|
+
|
|
16
|
+
```
|
|
17
|
+
1. Origem (request, bug, idea)
|
|
18
|
+
↓
|
|
19
|
+
2. Registrar em pending-tasks.md (com critério de aceite)
|
|
20
|
+
↓
|
|
21
|
+
3. Triagem (prioridade, dependências)
|
|
22
|
+
↓
|
|
23
|
+
4. Pickup → mover para "in-progress"
|
|
24
|
+
↓
|
|
25
|
+
5. Branch (feat/, fix/, chore/, refactor/)
|
|
26
|
+
↓
|
|
27
|
+
6. Implementação seguindo rules/execution-flow.md
|
|
28
|
+
↓
|
|
29
|
+
7. Auto-revisão (lint, types, tests, leitura do diff)
|
|
30
|
+
↓
|
|
31
|
+
8. PR / Review humano
|
|
32
|
+
↓
|
|
33
|
+
9. Merge
|
|
34
|
+
↓
|
|
35
|
+
10. Mover para completed-tasks.md
|
|
36
|
+
↓
|
|
37
|
+
11. Atualizar decisions.md / errors-and-solutions.md se aplicável
|
|
38
|
+
```
|
|
39
|
+
|
|
40
|
+
## Branches
|
|
41
|
+
|
|
42
|
+
- `main` (ou `master`): sempre verde, sempre deployável.
|
|
43
|
+
- `feat/<slug>`, `fix/<slug>`, `chore/<slug>`, `refactor/<slug>`, `docs/<slug>`.
|
|
44
|
+
- Branch de vida curta: <1 semana ideal, <3 dias ótimo.
|
|
45
|
+
- Rebase contra main antes de PR para minimizar merge commits.
|
|
46
|
+
|
|
47
|
+
## Commits
|
|
48
|
+
|
|
49
|
+
- Conventional Commits (`feat:`, `fix:`, `chore:`, `refactor:`, `docs:`, `test:`).
|
|
50
|
+
- Mensagem clara: o **quê** muda e (se não óbvio) **por quê**.
|
|
51
|
+
- Atômicos: um commit = uma mudança lógica.
|
|
52
|
+
|
|
53
|
+
## Pull Requests
|
|
54
|
+
|
|
55
|
+
- Título: imperativo, < 70 caracteres.
|
|
56
|
+
- Descrição obrigatória:
|
|
57
|
+
- **O que muda**
|
|
58
|
+
- **Por quê** (link para issue/ADR)
|
|
59
|
+
- **Como testar**
|
|
60
|
+
- **Risco / rollback**
|
|
61
|
+
- Tamanho: < 400 linhas mudadas ideal. PR gigante = revisão ruim.
|
|
62
|
+
|
|
63
|
+
## Review
|
|
64
|
+
|
|
65
|
+
- Bloqueia: bug, segurança, perf grave, arquitetura.
|
|
66
|
+
- Sugere: estilo, naming, refactor opcional.
|
|
67
|
+
- Não bloquear por preferência pessoal sem fundamento.
|
|
68
|
+
|
|
69
|
+
## Deploy
|
|
70
|
+
|
|
71
|
+
- CI verde obrigatório antes de merge.
|
|
72
|
+
- Deploy automatizado pós-merge em staging.
|
|
73
|
+
- Promoção para prod: manual ou agendada, com janela definida.
|
|
74
|
+
- Rollback plan documentado para mudanças críticas.
|
|
75
|
+
|
|
76
|
+
## Postmortem
|
|
77
|
+
|
|
78
|
+
- Incidente em prod → postmortem blameless dentro de 1 semana.
|
|
79
|
+
- Registrar em `memory/errors-and-solutions.md` (sintoma + causa + correção + prevenção).
|
|
80
|
+
- Padrão recorrente → `evolution/patterns-discovered.md`.
|
|
81
|
+
|
|
82
|
+
## Cadência sugerida
|
|
83
|
+
|
|
84
|
+
- Daily async: o que fiz, o que farei, bloqueios (curto).
|
|
85
|
+
- Weekly: revisão de `pending-tasks.md` — repriorizar, descartar obsoletos.
|
|
86
|
+
- Monthly: revisão de `evolution/` — promover learnings consolidados a `operating-system/`.
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
---
|
|
2
|
+
version: 1.0.0
|
|
3
|
+
updated: 2026-05-15
|
|
4
|
+
tier: on_demand
|
|
5
|
+
audience: humano + product-manager agent
|
|
6
|
+
---
|
|
7
|
+
|
|
8
|
+
# Product — Visão, personas, regras de negócio, jornadas
|
|
9
|
+
|
|
10
|
+
> Artefatos de **produto** mantidos pelo `product-manager` agent (+ founder). Vivem **separados de `specs/`**: produto = "o quê e por quê"; specs = "como em detalhe".
|
|
11
|
+
|
|
12
|
+
## Arquivos
|
|
13
|
+
|
|
14
|
+
| Arquivo | Conteúdo |
|
|
15
|
+
|---|---|
|
|
16
|
+
| `vision.md` | Visão do produto (longo prazo, 1-3 anos) |
|
|
17
|
+
| `personas.md` | Perfis de usuário com motivações e dores |
|
|
18
|
+
| `business-rules.md` | Regras de negócio (não-funcionais centrais) |
|
|
19
|
+
| `user-journeys.md` | Jornadas principais (do usuário → resultado) |
|
|
20
|
+
| `requirements/PRD/` | PRDs aceitos (atalho para `specs/PRD/`) |
|
|
21
|
+
| `requirements/BRD/` | BRDs aceitos (atalho para `specs/BRD/`) |
|
|
22
|
+
| `requirements/RFC/` | RFCs (atalho para `specs/RFC/`) |
|
|
23
|
+
|
|
24
|
+
> Diretórios `requirements/*/` são opcionalmente alimentados por link/cópia — facilita "tour de produto" em um lugar só. Se preferir ficar enxuto, deletar `requirements/` e referenciar `specs/` direto.
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
---
|
|
2
|
+
version: 1.0.0
|
|
3
|
+
updated: 2026-05-15
|
|
4
|
+
tier: conditional
|
|
5
|
+
mutable: true
|
|
6
|
+
---
|
|
7
|
+
|
|
8
|
+
# Business Rules
|
|
9
|
+
|
|
10
|
+
> Regras de negócio invariantes — independem da tecnologia. Mudança aqui exige discussão com Founder.
|
|
11
|
+
|
|
12
|
+
## Formato
|
|
13
|
+
|
|
14
|
+
```
|
|
15
|
+
## BR-NNN — <nome>
|
|
16
|
+
- Categoria: validação | autorização | cálculo | fluxo | compliance
|
|
17
|
+
- Descrição: <regra em linguagem natural>
|
|
18
|
+
- Origem: <regulação, decisão de produto, acordo comercial>
|
|
19
|
+
- Onde é aplicada: <camada front/back/ambos>
|
|
20
|
+
- Penalidade se violada: <multa, perda de cliente, dado corrompido>
|
|
21
|
+
- Testes que cobrem: <referência>
|
|
22
|
+
```
|
|
23
|
+
|
|
24
|
+
## Regras ativas
|
|
25
|
+
|
|
26
|
+
<!-- preencher por projeto -->
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
---
|
|
2
|
+
version: 1.0.0
|
|
3
|
+
updated: 2026-05-15
|
|
4
|
+
tier: conditional
|
|
5
|
+
mutable: true
|
|
6
|
+
---
|
|
7
|
+
|
|
8
|
+
# Personas
|
|
9
|
+
|
|
10
|
+
> Perfis arquetípicos de usuário. Cada persona = 1 segmento real com motivações, dores e contexto distintos. Personas devem ser observadas (entrevistas, dados), não inventadas.
|
|
11
|
+
|
|
12
|
+
## Formato
|
|
13
|
+
|
|
14
|
+
```
|
|
15
|
+
## P-NNN — <nome arquetípico> (ex.: "Maria, gerente de frota")
|
|
16
|
+
|
|
17
|
+
- Segmento: <em qual segmento>
|
|
18
|
+
- Demografia / contexto: <idade, papel, ferramentas atuais>
|
|
19
|
+
- Objetivo principal: <o que quer alcançar>
|
|
20
|
+
- Dores atuais: <o que não funciona>
|
|
21
|
+
- Métrica de sucesso (do ponto de vista da persona): <como mede>
|
|
22
|
+
- Como usaria o produto: <cenário típico>
|
|
23
|
+
- Hábitos: <quando usa, com que frequência, em qual device>
|
|
24
|
+
- Não é o usuário-alvo: <persona X> — porque ...
|
|
25
|
+
```
|
|
26
|
+
|
|
27
|
+
## Personas ativas
|
|
28
|
+
|
|
29
|
+
<!-- preencher por projeto com base em pesquisa real -->
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
---
|
|
2
|
+
version: 1.0.0
|
|
3
|
+
updated: 2026-05-15
|
|
4
|
+
tier: conditional
|
|
5
|
+
mutable: true
|
|
6
|
+
---
|
|
7
|
+
|
|
8
|
+
# User Journeys
|
|
9
|
+
|
|
10
|
+
> Jornadas principais do ponto de vista da persona: do gatilho à recompensa. Mantém alinhamento entre features fragmentadas.
|
|
11
|
+
|
|
12
|
+
## Formato
|
|
13
|
+
|
|
14
|
+
```
|
|
15
|
+
## J-NNN — <nome da jornada>
|
|
16
|
+
- Persona: P-NNN (ver `personas.md`)
|
|
17
|
+
- Gatilho: <o que inicia>
|
|
18
|
+
- Estados:
|
|
19
|
+
1. <estado/passo>
|
|
20
|
+
2. <estado/passo>
|
|
21
|
+
3. ...
|
|
22
|
+
- Recompensa: <resultado para a persona>
|
|
23
|
+
- Métrica de jornada: <tempo até completar | % de conclusão | NPS pós-jornada>
|
|
24
|
+
- Pontos de fricção conhecidos: <lista>
|
|
25
|
+
- Features que tocam: <referências PRD-NNNN>
|
|
26
|
+
```
|
|
27
|
+
|
|
28
|
+
## Jornadas ativas
|
|
29
|
+
|
|
30
|
+
<!-- preencher por projeto -->
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
---
|
|
2
|
+
version: 1.0.0
|
|
3
|
+
updated: 2026-05-15
|
|
4
|
+
tier: conditional
|
|
5
|
+
mutable: true
|
|
6
|
+
---
|
|
7
|
+
|
|
8
|
+
# Vision
|
|
9
|
+
|
|
10
|
+
> **Visão de 1-3 anos.** Reflete o "para onde estamos indo", não o que estamos fazendo este mês.
|
|
11
|
+
|
|
12
|
+
## Norte
|
|
13
|
+
1-2 frases. "Em [horizonte], queremos que [persona] consiga [ação central] de [maneira diferenciada]."
|
|
14
|
+
|
|
15
|
+
## Por quê agora
|
|
16
|
+
O que mudou no mundo / mercado / tecnologia que torna isso possível ou urgente?
|
|
17
|
+
|
|
18
|
+
## Para quem (alto nível)
|
|
19
|
+
Apontador para `personas.md`. Aqui só os 1-2 segmentos prioritários.
|
|
20
|
+
|
|
21
|
+
## Critério de sucesso em 12 meses
|
|
22
|
+
3-5 indicadores binários ou métricos.
|
|
23
|
+
- [ ] <métrica 1>
|
|
24
|
+
- [ ] <métrica 2>
|
|
25
|
+
|
|
26
|
+
## Princípios de produto
|
|
27
|
+
- <princípio 1 — ex.: "preferir automação a configuração">
|
|
28
|
+
- <princípio 2>
|
|
29
|
+
- <princípio 3>
|
|
30
|
+
|
|
31
|
+
## Não-objetivos
|
|
32
|
+
O que **explicitamente** não queremos virar. Evita drift.
|
|
33
|
+
|
|
34
|
+
## Atualização
|
|
35
|
+
Revisar a cada 3-6 meses. Mudança grande exige conversa estratégica registrada em `memory/decisions.md`.
|
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
---
|
|
2
|
+
version: 1.0.0
|
|
3
|
+
updated: 2026-05-14
|
|
4
|
+
tier: core
|
|
5
|
+
tokens: ~400
|
|
6
|
+
load: always
|
|
7
|
+
---
|
|
8
|
+
|
|
9
|
+
# Regras de Comportamento
|
|
10
|
+
|
|
11
|
+
## Postura
|
|
12
|
+
|
|
13
|
+
- **Engenheiro sênior, não assistente passivo.** Questione premissas mal formuladas antes de executar.
|
|
14
|
+
- **Direto e técnico.** Sem floreios, sem auto-elogios, sem "claro!", "ótima pergunta!".
|
|
15
|
+
- **Calibre confiança.** Diga "não sei" quando não souber. Diga "suposição" quando supor.
|
|
16
|
+
- **Pense antes de agir.** Plano > execução cega.
|
|
17
|
+
|
|
18
|
+
## Tom
|
|
19
|
+
|
|
20
|
+
- Português técnico, sem gírias, sem emojis (exceto se solicitado).
|
|
21
|
+
- Frases curtas. Parágrafos curtos. Cite arquivos como `caminho/arquivo.ext:linha`.
|
|
22
|
+
- Não narre o que vai fazer em prosa antes de fazer — faça e relate o resultado.
|
|
23
|
+
|
|
24
|
+
## Granularidade de Resposta
|
|
25
|
+
|
|
26
|
+
| Tipo de pergunta | Resposta esperada |
|
|
27
|
+
|---|---|
|
|
28
|
+
| Pergunta factual simples | 1 frase |
|
|
29
|
+
| Decisão de design | 2-3 frases + trade-off principal |
|
|
30
|
+
| Implementação | Plano breve → código → validação |
|
|
31
|
+
| Exploratória ("o que acha de...") | Recomendação + alternativa + razão (sem implementar) |
|
|
32
|
+
| Bug | Causa raiz → correção mínima → teste |
|
|
33
|
+
|
|
34
|
+
## Honestidade Operacional
|
|
35
|
+
|
|
36
|
+
- Nunca afirmar que algo foi testado se não foi.
|
|
37
|
+
- Nunca afirmar que um arquivo existe sem ter verificado.
|
|
38
|
+
- Nunca afirmar que uma dependência funciona sem ter executado.
|
|
39
|
+
- Se a tarefa é grande, dizer onde está incompleto antes de declarar "pronto".
|
|
40
|
+
|
|
41
|
+
## Resposta a Conflitos
|
|
42
|
+
|
|
43
|
+
- Conflito entre instrução do usuário e regra deste OS → seguir a instrução do usuário, mas avisar.
|
|
44
|
+
- Conflito entre `rules/dont.md` e qualquer outra coisa → `dont.md` vence sempre.
|
|
45
|
+
- Ambiguidade → perguntar, não inventar.
|