context-first-cli 1.1.0 → 1.1.1
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/dist/commands/scaffold-orchestrator.d.ts.map +1 -1
- package/dist/commands/scaffold-orchestrator.js +44 -8
- package/dist/commands/scaffold-orchestrator.js.map +1 -1
- package/dist/templates/commands/engineer/plan.md +1 -1
- package/dist/templates/commands/engineer/pr.md +2 -2
- package/dist/templates/commands/engineer/pre-pr.md +2 -2
- package/dist/templates/commands/engineer/start.md +1 -1
- package/dist/templates/commands/engineer/work.md +3 -3
- package/dist/templates/commands/products/check.md +1 -1
- package/dist/templates/commands/products/collect.md +1 -1
- package/dist/templates/commands/products/refine.md +2 -2
- package/dist/templates/commands/products/spec.md +1 -1
- package/dist/templates/commands/quality/metrics.md +240 -0
- package/dist/templates/commands/quality/observe.md +168 -0
- package/package.json +1 -1
- package/templates/commands/engineer/plan.md +1 -1
- package/templates/commands/engineer/pr.md +2 -2
- package/templates/commands/engineer/pre-pr.md +2 -2
- package/templates/commands/engineer/start.md +1 -1
- package/templates/commands/engineer/work.md +3 -3
- package/templates/commands/products/check.md +1 -1
- package/templates/commands/products/collect.md +1 -1
- package/templates/commands/products/refine.md +2 -2
- package/templates/commands/products/spec.md +1 -1
- package/templates/commands/quality/metrics.md +240 -0
- package/templates/commands/quality/observe.md +168 -0
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"scaffold-orchestrator.d.ts","sourceRoot":"","sources":["../../src/commands/scaffold-orchestrator.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"scaffold-orchestrator.d.ts","sourceRoot":"","sources":["../../src/commands/scaffold-orchestrator.ts"],"names":[],"mappings":"AAaA,wBAAsB,2BAA2B,kBAyHhD"}
|
|
@@ -8,6 +8,7 @@ const inquirer_1 = __importDefault(require("inquirer"));
|
|
|
8
8
|
const chalk_1 = __importDefault(require("chalk"));
|
|
9
9
|
const promises_1 = __importDefault(require("fs/promises"));
|
|
10
10
|
const path_1 = __importDefault(require("path"));
|
|
11
|
+
const simple_git_1 = require("simple-git");
|
|
11
12
|
async function scaffoldOrchestratorCommand() {
|
|
12
13
|
console.log(chalk_1.default.blue.bold('\n🏗️ Scaffolding a new Orchestrator repository\n'));
|
|
13
14
|
try {
|
|
@@ -44,6 +45,12 @@ async function scaffoldOrchestratorCommand() {
|
|
|
44
45
|
],
|
|
45
46
|
default: 'jira',
|
|
46
47
|
},
|
|
48
|
+
{
|
|
49
|
+
type: 'confirm',
|
|
50
|
+
name: 'initGit',
|
|
51
|
+
message: 'Initialize Git repository and create initial commit?',
|
|
52
|
+
default: true,
|
|
53
|
+
},
|
|
47
54
|
]);
|
|
48
55
|
const targetDir = path_1.default.join(process.cwd(), answers.projectName);
|
|
49
56
|
// Check if directory already exists
|
|
@@ -57,7 +64,7 @@ async function scaffoldOrchestratorCommand() {
|
|
|
57
64
|
await promises_1.default.mkdir(path_1.default.join(targetDir, '.claude', 'commands', 'products'), { recursive: true });
|
|
58
65
|
await promises_1.default.mkdir(path_1.default.join(targetDir, '.claude', 'commands', 'engineer'), { recursive: true });
|
|
59
66
|
await promises_1.default.mkdir(path_1.default.join(targetDir, '.claude', 'commands', 'quality'), { recursive: true });
|
|
60
|
-
await promises_1.default.mkdir(path_1.default.join(targetDir, '.
|
|
67
|
+
await promises_1.default.mkdir(path_1.default.join(targetDir, '.sessions'), { recursive: true });
|
|
61
68
|
await promises_1.default.mkdir(path_1.default.join(targetDir, 'specs', 'business'), { recursive: true });
|
|
62
69
|
await promises_1.default.mkdir(path_1.default.join(targetDir, 'specs', 'technical'), { recursive: true });
|
|
63
70
|
// Create README.md
|
|
@@ -72,20 +79,41 @@ async function scaffoldOrchestratorCommand() {
|
|
|
72
79
|
// Copy command templates
|
|
73
80
|
await copyCommandTemplates(targetDir);
|
|
74
81
|
// Create .gitignore
|
|
75
|
-
const gitignore = `node_modules
|
|
82
|
+
const gitignore = `node_modules/
|
|
83
|
+
.env
|
|
84
|
+
.ia.env
|
|
85
|
+
ai.properties.md
|
|
86
|
+
.sessions/*/
|
|
87
|
+
*.log
|
|
88
|
+
`;
|
|
76
89
|
await promises_1.default.writeFile(path_1.default.join(targetDir, '.gitignore'), gitignore, 'utf-8');
|
|
77
90
|
console.log(chalk_1.default.green(`\n✅ Orchestrator scaffolded successfully at: ${targetDir}`));
|
|
78
91
|
console.log(chalk_1.default.blue('\n📁 Structure created:'));
|
|
79
92
|
console.log(chalk_1.default.gray(' .claude/commands/ - Command definitions for AI'));
|
|
80
|
-
console.log(chalk_1.default.gray(' .
|
|
93
|
+
console.log(chalk_1.default.gray(' .sessions/ - Feature session data'));
|
|
81
94
|
console.log(chalk_1.default.gray(' specs/ - Business and technical specifications'));
|
|
82
|
-
console.log(chalk_1.default.gray(' ai.properties.md - Configuration template'));
|
|
95
|
+
console.log(chalk_1.default.gray(' ai.properties.md - Configuration template (gitignored)'));
|
|
83
96
|
console.log(chalk_1.default.gray(' context-manifest.json - Repository manifest'));
|
|
97
|
+
// Initialize Git if requested
|
|
98
|
+
if (answers.initGit) {
|
|
99
|
+
console.log(chalk_1.default.blue('\n🔧 Initializing Git repository...'));
|
|
100
|
+
const git = (0, simple_git_1.simpleGit)(targetDir);
|
|
101
|
+
await git.init();
|
|
102
|
+
await git.add('.');
|
|
103
|
+
await git.commit('chore: initial commit - orchestrator scaffolded by context-cli');
|
|
104
|
+
console.log(chalk_1.default.green('✅ Git repository initialized and initial commit created'));
|
|
105
|
+
}
|
|
84
106
|
console.log(chalk_1.default.blue('\n💡 Next steps:'));
|
|
85
107
|
console.log(chalk_1.default.gray(` 1. cd ${answers.projectName}`));
|
|
86
108
|
console.log(chalk_1.default.gray(' 2. Edit ai.properties.md with your project paths'));
|
|
87
109
|
console.log(chalk_1.default.gray(' 3. Edit context-manifest.json to define your repositories'));
|
|
88
|
-
|
|
110
|
+
if (answers.initGit) {
|
|
111
|
+
console.log(chalk_1.default.gray(' 4. Add remote: git remote add origin <your-repo-url>'));
|
|
112
|
+
console.log(chalk_1.default.gray(' 5. Push to remote: git push -u origin main'));
|
|
113
|
+
}
|
|
114
|
+
else {
|
|
115
|
+
console.log(chalk_1.default.gray(' 4. Initialize as a Git repository and push to remote'));
|
|
116
|
+
}
|
|
89
117
|
}
|
|
90
118
|
catch (error) {
|
|
91
119
|
console.error(chalk_1.default.red('\n❌ Error during scaffolding:'), error);
|
|
@@ -107,6 +135,11 @@ async function copyCommandTemplates(targetDir) {
|
|
|
107
135
|
for (const cmd of engineerCommands) {
|
|
108
136
|
await promises_1.default.copyFile(path_1.default.join(templatesDir, 'engineer', cmd), path_1.default.join(targetCommandsDir, 'engineer', cmd));
|
|
109
137
|
}
|
|
138
|
+
// Copy quality commands
|
|
139
|
+
const qualityCommands = ['observe.md', 'metrics.md'];
|
|
140
|
+
for (const cmd of qualityCommands) {
|
|
141
|
+
await promises_1.default.copyFile(path_1.default.join(templatesDir, 'quality', cmd), path_1.default.join(targetCommandsDir, 'quality', cmd));
|
|
142
|
+
}
|
|
110
143
|
}
|
|
111
144
|
function generateReadme(answers) {
|
|
112
145
|
return `# ${answers.projectName}
|
|
@@ -125,23 +158,26 @@ ${answers.projectName}/
|
|
|
125
158
|
│ └── commands/ # Command definitions for AI
|
|
126
159
|
│ ├── products/ # Product commands (collect, refine, spec, check)
|
|
127
160
|
│ ├── engineer/ # Engineering commands (start, plan, work, pre-pr, pr)
|
|
161
|
+
│ ├── quality/ # Quality commands (observe, metrics)
|
|
128
162
|
│ └── warm-up.md # Context loading command
|
|
129
|
-
├── .
|
|
163
|
+
├── .sessions/ # Feature session data (gitignored)
|
|
130
164
|
├── specs/
|
|
131
165
|
│ ├── business/ # Business specifications
|
|
132
166
|
│ └── technical/ # Technical specifications
|
|
133
|
-
├── ai.properties.md # Configuration
|
|
167
|
+
├── ai.properties.md # Configuration (gitignored - each dev has their own)
|
|
134
168
|
└── context-manifest.json # Repository manifest
|
|
135
169
|
\`\`\`
|
|
136
170
|
|
|
137
171
|
## ⚙️ Configuration
|
|
138
172
|
|
|
139
173
|
Edit \`ai.properties.md\` to configure:
|
|
140
|
-
- Project paths
|
|
174
|
+
- Project paths (specific to each developer)
|
|
141
175
|
- Task manager credentials (${answers.taskManager})
|
|
142
176
|
- Branch conventions
|
|
143
177
|
- Repository-specific commands
|
|
144
178
|
|
|
179
|
+
**Note**: \`ai.properties.md\` is gitignored because it contains local paths and credentials specific to each developer.
|
|
180
|
+
|
|
145
181
|
## 🚀 Usage
|
|
146
182
|
|
|
147
183
|
1. Configure \`ai.properties.md\` with your project paths
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"scaffold-orchestrator.js","sourceRoot":"","sources":["../../src/commands/scaffold-orchestrator.ts"],"names":[],"mappings":";;;;;
|
|
1
|
+
{"version":3,"file":"scaffold-orchestrator.js","sourceRoot":"","sources":["../../src/commands/scaffold-orchestrator.ts"],"names":[],"mappings":"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"}
|
|
@@ -37,7 +37,7 @@ Para cada repositório, crie um PR usando o GitHub CLI ou interface web:
|
|
|
37
37
|
```bash
|
|
38
38
|
cd <repositório>
|
|
39
39
|
gh pr create --title "[ISSUE-ID] Título da Feature" \
|
|
40
|
-
--body "$(cat ../.
|
|
40
|
+
--body "$(cat ../.sessions/<ISSUE-ID>/pr-description.md)" \
|
|
41
41
|
--base main
|
|
42
42
|
```
|
|
43
43
|
|
|
@@ -104,7 +104,7 @@ Se task manager estiver configurado:
|
|
|
104
104
|
|
|
105
105
|
### 6. Documentação da Sessão
|
|
106
106
|
|
|
107
|
-
Atualize `./.
|
|
107
|
+
Atualize `./.sessions/<ISSUE-ID>/pr.md`:
|
|
108
108
|
|
|
109
109
|
```markdown
|
|
110
110
|
# [Título da Feature] - Pull Requests
|
|
@@ -168,7 +168,7 @@ Se múltiplos repositórios foram modificados:
|
|
|
168
168
|
|
|
169
169
|
## 📄 Preparação da Descrição do PR
|
|
170
170
|
|
|
171
|
-
Crie `./.
|
|
171
|
+
Crie `./.sessions/<ISSUE-ID>/pr-description.md`:
|
|
172
172
|
|
|
173
173
|
```markdown
|
|
174
174
|
## 🎯 Objetivo
|
|
@@ -212,7 +212,7 @@ Se alguma validação falhar:
|
|
|
212
212
|
|
|
213
213
|
## 📊 Relatório de Validação
|
|
214
214
|
|
|
215
|
-
Crie `./.
|
|
215
|
+
Crie `./.sessions/<ISSUE-ID>/pre-pr-report.md`:
|
|
216
216
|
|
|
217
217
|
```markdown
|
|
218
218
|
# Relatório de Validação Pre-PR
|
|
@@ -68,7 +68,7 @@ Após análise inicial, formule **3-5 clarificações mais importantes**:
|
|
|
68
68
|
|
|
69
69
|
## 📝 Documentação da Sessão
|
|
70
70
|
|
|
71
|
-
Crie arquivo `./.
|
|
71
|
+
Crie arquivo `./.sessions/<ISSUE-ID>/start.md` com:
|
|
72
72
|
|
|
73
73
|
```markdown
|
|
74
74
|
# [Título da Feature] - Início
|
|
@@ -8,7 +8,7 @@ Antes de executar, certifique-se de que:
|
|
|
8
8
|
- Executou `/warm-up` para carregar o contexto
|
|
9
9
|
- Executou `/start` e `/plan` para ter o planejamento técnico
|
|
10
10
|
- Está no workspace correto (verifique `.workspace.json`)
|
|
11
|
-
- Tem o arquivo `./.
|
|
11
|
+
- Tem o arquivo `./.sessions/<ISSUE-ID>/plan.md` disponível
|
|
12
12
|
|
|
13
13
|
## 🎯 Objetivo
|
|
14
14
|
|
|
@@ -22,7 +22,7 @@ Implementar uma unidade de trabalho específica do plano, que pode envolver:
|
|
|
22
22
|
|
|
23
23
|
### 1. Identificar Unidade de Trabalho
|
|
24
24
|
|
|
25
|
-
Com base no plano técnico (`./.
|
|
25
|
+
Com base no plano técnico (`./.sessions/<ISSUE-ID>/plan.md`), identifique:
|
|
26
26
|
- Qual tarefa específica será implementada agora
|
|
27
27
|
- Em qual(is) repositório(s) do workspace
|
|
28
28
|
- Quais arquivos serão criados/modificados
|
|
@@ -62,7 +62,7 @@ Refs: <ISSUE-ID>"
|
|
|
62
62
|
|
|
63
63
|
### 5. Documentação da Sessão
|
|
64
64
|
|
|
65
|
-
Atualize `./.
|
|
65
|
+
Atualize `./.sessions/<ISSUE-ID>/work.md`:
|
|
66
66
|
|
|
67
67
|
```markdown
|
|
68
68
|
# [Título da Feature] - Trabalho Executado
|
|
@@ -85,7 +85,7 @@ Apenas certifique-se de que a ideia esteja **adequadamente compreendida**.
|
|
|
85
85
|
- Use o MCP apropriado para criar a issue (ex: Linear, Jira)
|
|
86
86
|
- Todos os dados ficam no task manager
|
|
87
87
|
- **Se não houver task manager**:
|
|
88
|
-
- Crie arquivo em `./.
|
|
88
|
+
- Crie arquivo em `./.sessions/<ISSUE-ID>/collect.md`
|
|
89
89
|
- Inclua data, tipo e conteúdo completo
|
|
90
90
|
|
|
91
91
|
## Perguntas de Esclarecimento
|
|
@@ -32,7 +32,7 @@ Refinar a issue coletada, esclarecendo:
|
|
|
32
32
|
- Leia a issue usando o MCP apropriado
|
|
33
33
|
|
|
34
34
|
**Senão**:
|
|
35
|
-
- Leia `./.
|
|
35
|
+
- Leia `./.sessions/<ISSUE-ID>/collect.md`
|
|
36
36
|
|
|
37
37
|
### 2. Análise de Escopo
|
|
38
38
|
|
|
@@ -112,7 +112,7 @@ Liste perguntas que ainda precisam ser respondidas antes de iniciar a implementa
|
|
|
112
112
|
|
|
113
113
|
## 📄 Documentação do Refinamento
|
|
114
114
|
|
|
115
|
-
Crie/atualize `./.
|
|
115
|
+
Crie/atualize `./.sessions/<ISSUE-ID>/refine.md`:
|
|
116
116
|
|
|
117
117
|
```markdown
|
|
118
118
|
# [Título da Issue] - Refinamento
|
|
@@ -0,0 +1,240 @@
|
|
|
1
|
+
# Métricas de Qualidade
|
|
2
|
+
|
|
3
|
+
Este comando coleta e analisa métricas de qualidade do código e do processo de desenvolvimento.
|
|
4
|
+
|
|
5
|
+
## 🎯 Objetivo
|
|
6
|
+
|
|
7
|
+
Medir e documentar a qualidade da implementação através de métricas objetivas:
|
|
8
|
+
- Cobertura de testes
|
|
9
|
+
- Complexidade do código
|
|
10
|
+
- Dívida técnica
|
|
11
|
+
- Performance
|
|
12
|
+
- Conformidade com padrões
|
|
13
|
+
|
|
14
|
+
## 📋 Pré-requisitos
|
|
15
|
+
|
|
16
|
+
- Implementação concluída (após `/work`)
|
|
17
|
+
- Testes implementados
|
|
18
|
+
- Build funcionando
|
|
19
|
+
|
|
20
|
+
## 📊 Métricas a Coletar
|
|
21
|
+
|
|
22
|
+
### 1. Cobertura de Testes
|
|
23
|
+
|
|
24
|
+
Para cada repositório modificado:
|
|
25
|
+
|
|
26
|
+
```bash
|
|
27
|
+
cd <repositório>
|
|
28
|
+
|
|
29
|
+
# Executar testes com cobertura
|
|
30
|
+
npm run test:coverage # ou comando equivalente
|
|
31
|
+
|
|
32
|
+
# Capturar resultados
|
|
33
|
+
```
|
|
34
|
+
|
|
35
|
+
Documente:
|
|
36
|
+
```markdown
|
|
37
|
+
## Cobertura de Testes
|
|
38
|
+
|
|
39
|
+
### <repo-1>
|
|
40
|
+
- **Cobertura Total**: X%
|
|
41
|
+
- **Statements**: X%
|
|
42
|
+
- **Branches**: X%
|
|
43
|
+
- **Functions**: X%
|
|
44
|
+
- **Lines**: X%
|
|
45
|
+
- **Arquivos não cobertos**: [lista]
|
|
46
|
+
|
|
47
|
+
### <repo-2>
|
|
48
|
+
[Mesmo formato]
|
|
49
|
+
```
|
|
50
|
+
|
|
51
|
+
### 2. Complexidade do Código
|
|
52
|
+
|
|
53
|
+
Analise a complexidade ciclomática dos arquivos modificados:
|
|
54
|
+
|
|
55
|
+
```markdown
|
|
56
|
+
## Complexidade do Código
|
|
57
|
+
|
|
58
|
+
### Arquivos com Alta Complexidade
|
|
59
|
+
- **arquivo1.ts**: Complexidade 15 (recomendado: < 10)
|
|
60
|
+
- **arquivo2.ts**: Complexidade 12
|
|
61
|
+
|
|
62
|
+
### Recomendações
|
|
63
|
+
- [Sugestão de refatoração 1]
|
|
64
|
+
- [Sugestão de refatoração 2]
|
|
65
|
+
```
|
|
66
|
+
|
|
67
|
+
### 3. Qualidade do Código
|
|
68
|
+
|
|
69
|
+
```bash
|
|
70
|
+
# Executar linting
|
|
71
|
+
npm run lint
|
|
72
|
+
|
|
73
|
+
# Verificar formatação
|
|
74
|
+
npm run format:check
|
|
75
|
+
|
|
76
|
+
# Análise estática (se disponível)
|
|
77
|
+
npm run analyze
|
|
78
|
+
```
|
|
79
|
+
|
|
80
|
+
Documente:
|
|
81
|
+
```markdown
|
|
82
|
+
## Qualidade do Código
|
|
83
|
+
|
|
84
|
+
### Linting
|
|
85
|
+
- **Erros**: 0
|
|
86
|
+
- **Warnings**: X
|
|
87
|
+
- **Warnings Justificados**: [lista com justificativas]
|
|
88
|
+
|
|
89
|
+
### Formatação
|
|
90
|
+
- **Status**: ✅ Conforme / ⚠️ Ajustes necessários
|
|
91
|
+
|
|
92
|
+
### Análise Estática
|
|
93
|
+
- **Problemas Críticos**: 0
|
|
94
|
+
- **Problemas Médios**: X
|
|
95
|
+
- **Problemas Baixos**: Y
|
|
96
|
+
```
|
|
97
|
+
|
|
98
|
+
### 4. Performance
|
|
99
|
+
|
|
100
|
+
Se aplicável, meça performance:
|
|
101
|
+
|
|
102
|
+
```markdown
|
|
103
|
+
## Performance
|
|
104
|
+
|
|
105
|
+
### Benchmarks
|
|
106
|
+
- **Operação X**: Yms (baseline: Zms)
|
|
107
|
+
- **Operação Y**: Yms (baseline: Zms)
|
|
108
|
+
|
|
109
|
+
### Otimizações Aplicadas
|
|
110
|
+
- [Otimização 1 e impacto]
|
|
111
|
+
- [Otimização 2 e impacto]
|
|
112
|
+
|
|
113
|
+
### Gargalos Identificados
|
|
114
|
+
- [Gargalo 1 e plano de mitigação]
|
|
115
|
+
```
|
|
116
|
+
|
|
117
|
+
### 5. Tamanho e Impacto
|
|
118
|
+
|
|
119
|
+
```markdown
|
|
120
|
+
## Tamanho e Impacto
|
|
121
|
+
|
|
122
|
+
### Linhas de Código
|
|
123
|
+
- **Adicionadas**: +X linhas
|
|
124
|
+
- **Removidas**: -Y linhas
|
|
125
|
+
- **Modificadas**: Z linhas
|
|
126
|
+
|
|
127
|
+
### Arquivos
|
|
128
|
+
- **Novos**: X arquivos
|
|
129
|
+
- **Modificados**: Y arquivos
|
|
130
|
+
- **Removidos**: Z arquivos
|
|
131
|
+
|
|
132
|
+
### Dependências
|
|
133
|
+
- **Novas dependências**: [lista]
|
|
134
|
+
- **Tamanho do bundle**: +X KB
|
|
135
|
+
```
|
|
136
|
+
|
|
137
|
+
### 6. Dívida Técnica
|
|
138
|
+
|
|
139
|
+
Identifique dívida técnica introduzida ou resolvida:
|
|
140
|
+
|
|
141
|
+
```markdown
|
|
142
|
+
## Dívida Técnica
|
|
143
|
+
|
|
144
|
+
### Dívida Introduzida
|
|
145
|
+
- **Item 1**: [Descrição e justificativa]
|
|
146
|
+
- Severidade: Alta / Média / Baixa
|
|
147
|
+
- Plano de resolução: [quando e como resolver]
|
|
148
|
+
|
|
149
|
+
### Dívida Resolvida
|
|
150
|
+
- **Item 1**: [O que foi resolvido]
|
|
151
|
+
- Impacto: [melhoria obtida]
|
|
152
|
+
```
|
|
153
|
+
|
|
154
|
+
## 📄 Relatório de Métricas
|
|
155
|
+
|
|
156
|
+
Crie `./.sessions/<ISSUE-ID>/metrics.md`:
|
|
157
|
+
|
|
158
|
+
```markdown
|
|
159
|
+
# Relatório de Métricas - [ISSUE-ID]
|
|
160
|
+
|
|
161
|
+
**Data**: [data/hora]
|
|
162
|
+
**Repositórios**: [lista]
|
|
163
|
+
|
|
164
|
+
## Resumo Executivo
|
|
165
|
+
|
|
166
|
+
- **Cobertura de Testes**: X% (meta: Y%)
|
|
167
|
+
- **Qualidade do Código**: ✅ / ⚠️ / ❌
|
|
168
|
+
- **Performance**: ✅ / ⚠️ / ❌
|
|
169
|
+
- **Dívida Técnica**: Baixa / Média / Alta
|
|
170
|
+
|
|
171
|
+
## Métricas Detalhadas
|
|
172
|
+
|
|
173
|
+
[Incluir todas as seções acima]
|
|
174
|
+
|
|
175
|
+
## Comparação com Baseline
|
|
176
|
+
|
|
177
|
+
| Métrica | Antes | Depois | Variação |
|
|
178
|
+
|---------|-------|--------|----------|
|
|
179
|
+
| Cobertura | X% | Y% | +Z% |
|
|
180
|
+
| Complexidade Média | X | Y | +Z |
|
|
181
|
+
| Bundle Size | X KB | Y KB | +Z KB |
|
|
182
|
+
|
|
183
|
+
## Ações Recomendadas
|
|
184
|
+
|
|
185
|
+
1. [Ação 1 - prioridade alta]
|
|
186
|
+
2. [Ação 2 - prioridade média]
|
|
187
|
+
3. [Ação 3 - prioridade baixa]
|
|
188
|
+
|
|
189
|
+
## Aprovação para Merge
|
|
190
|
+
|
|
191
|
+
- [ ] Cobertura de testes >= meta
|
|
192
|
+
- [ ] Sem problemas críticos de qualidade
|
|
193
|
+
- [ ] Performance dentro dos requisitos
|
|
194
|
+
- [ ] Dívida técnica documentada e aprovada
|
|
195
|
+
```
|
|
196
|
+
|
|
197
|
+
## 🎯 Metas de Qualidade
|
|
198
|
+
|
|
199
|
+
Se o projeto tiver metas definidas nas metaspecs, valide:
|
|
200
|
+
|
|
201
|
+
```markdown
|
|
202
|
+
## Validação contra Metas
|
|
203
|
+
|
|
204
|
+
### Metas do Projeto
|
|
205
|
+
- **Cobertura mínima**: 80%
|
|
206
|
+
- **Complexidade máxima**: 10
|
|
207
|
+
- **Performance**: < 100ms
|
|
208
|
+
|
|
209
|
+
### Status
|
|
210
|
+
- Cobertura: ✅ 85% (meta: 80%)
|
|
211
|
+
- Complexidade: ⚠️ 12 (meta: 10) - Justificado
|
|
212
|
+
- Performance: ✅ 85ms (meta: 100ms)
|
|
213
|
+
```
|
|
214
|
+
|
|
215
|
+
## 🚨 Alertas
|
|
216
|
+
|
|
217
|
+
Se alguma métrica estiver fora do aceitável:
|
|
218
|
+
1. 🛑 **DOCUMENTE** o problema
|
|
219
|
+
2. 💬 **ALERTE** o usuário
|
|
220
|
+
3. 🔧 **PROPONHA** ações corretivas
|
|
221
|
+
4. ⏸️ **CONSIDERE** bloquear o merge até resolução
|
|
222
|
+
|
|
223
|
+
---
|
|
224
|
+
|
|
225
|
+
**Argumentos fornecidos**:
|
|
226
|
+
|
|
227
|
+
```
|
|
228
|
+
#$ARGUMENTS
|
|
229
|
+
```
|
|
230
|
+
|
|
231
|
+
---
|
|
232
|
+
|
|
233
|
+
## 🎯 Resultado
|
|
234
|
+
|
|
235
|
+
Após executar este comando, você terá:
|
|
236
|
+
- Relatório completo de métricas
|
|
237
|
+
- Comparação com baseline e metas
|
|
238
|
+
- Identificação de problemas de qualidade
|
|
239
|
+
- Recomendações de ações
|
|
240
|
+
- Base objetiva para aprovação de merge
|
|
@@ -0,0 +1,168 @@
|
|
|
1
|
+
# Observabilidade de Decisões
|
|
2
|
+
|
|
3
|
+
Este comando registra decisões importantes tomadas durante o desenvolvimento, criando um log auditável para explicabilidade e rastreabilidade.
|
|
4
|
+
|
|
5
|
+
## 🎯 Objetivo
|
|
6
|
+
|
|
7
|
+
Criar registro estruturado de decisões técnicas e de produto, garantindo:
|
|
8
|
+
- **Explicabilidade**: Por que cada decisão foi tomada
|
|
9
|
+
- **Rastreabilidade**: Quais fontes (PRD, metaspecs, ADRs) embasaram a decisão
|
|
10
|
+
- **Auditoria**: Histórico completo de escolhas para revisão futura
|
|
11
|
+
- **Aprendizado**: Documentação de trade-offs e alternativas consideradas
|
|
12
|
+
|
|
13
|
+
**IMPORTANTE**: Este comando NÃO gera decisões novas. Ele apenas REGISTRA decisões que já foram tomadas no processo de desenvolvimento.
|
|
14
|
+
|
|
15
|
+
## 📋 Pré-requisitos
|
|
16
|
+
|
|
17
|
+
- Executou pelo menos um dos comandos que geram decisões:
|
|
18
|
+
- `/spec` - gera PRD com decisões de produto
|
|
19
|
+
- `/plan` - gera plan.md com decisões técnicas
|
|
20
|
+
- `/work` - implementação gera decisões durante desenvolvimento
|
|
21
|
+
|
|
22
|
+
## 🔍 Processo de Observação
|
|
23
|
+
|
|
24
|
+
### 1. Identificar Decisões Relevantes
|
|
25
|
+
|
|
26
|
+
Analise os arquivos da sessão (`./.sessions/<ISSUE-ID>/`) para identificar decisões:
|
|
27
|
+
|
|
28
|
+
**Após `/spec`** - Decisões de Produto:
|
|
29
|
+
- Leia `./.sessions/<ISSUE-ID>/prd.md`
|
|
30
|
+
- Identifique decisões em:
|
|
31
|
+
- Escopo (o que entra/não entra na feature)
|
|
32
|
+
- Personas atendidas (quem é o público-alvo)
|
|
33
|
+
- Métricas de sucesso (como medir resultados)
|
|
34
|
+
- Requisitos não-funcionais (performance, acessibilidade)
|
|
35
|
+
- Restrições e trade-offs
|
|
36
|
+
|
|
37
|
+
**Após `/plan`** - Decisões Técnicas:
|
|
38
|
+
- Leia `./.sessions/<ISSUE-ID>/plan.md`
|
|
39
|
+
- Identifique decisões em:
|
|
40
|
+
- Arquitetura de componentes/módulos
|
|
41
|
+
- Escolha de bibliotecas ou ferramentas
|
|
42
|
+
- Padrões de implementação
|
|
43
|
+
- Estrutura de dados
|
|
44
|
+
- Estratégia de testes
|
|
45
|
+
|
|
46
|
+
**Durante `/work`** - Decisões de Implementação:
|
|
47
|
+
- Leia `./.sessions/<ISSUE-ID>/work.md`
|
|
48
|
+
- Identifique decisões em:
|
|
49
|
+
- Refatorações realizadas
|
|
50
|
+
- Mudanças de abordagem
|
|
51
|
+
- Otimizações aplicadas
|
|
52
|
+
- Tratamento de edge cases
|
|
53
|
+
|
|
54
|
+
### 2. Documentar Cada Decisão
|
|
55
|
+
|
|
56
|
+
Para cada decisão identificada, documente:
|
|
57
|
+
|
|
58
|
+
```markdown
|
|
59
|
+
## Decisão: [Título Claro]
|
|
60
|
+
|
|
61
|
+
**Contexto**: [Por que precisamos decidir isso? Qual o problema ou necessidade?]
|
|
62
|
+
|
|
63
|
+
**Opções Consideradas**:
|
|
64
|
+
1. **Opção A**: [Descrição]
|
|
65
|
+
- Prós: [vantagens]
|
|
66
|
+
- Contras: [desvantagens]
|
|
67
|
+
2. **Opção B**: [Descrição]
|
|
68
|
+
- Prós: [vantagens]
|
|
69
|
+
- Contras: [desvantagens]
|
|
70
|
+
|
|
71
|
+
**Decisão**: [Opção escolhida]
|
|
72
|
+
|
|
73
|
+
**Justificativa**: [Por que escolhemos esta opção? Quais critérios foram mais importantes?]
|
|
74
|
+
|
|
75
|
+
**Fontes**:
|
|
76
|
+
- [PRD seção X]
|
|
77
|
+
- [Metaspec Y]
|
|
78
|
+
- [ADR-00Z]
|
|
79
|
+
|
|
80
|
+
**Trade-offs Aceitos**: [Quais desvantagens aceitamos conscientemente?]
|
|
81
|
+
|
|
82
|
+
**Reversibilidade**: Fácil / Média / Difícil
|
|
83
|
+
|
|
84
|
+
**Data**: [data da decisão]
|
|
85
|
+
```
|
|
86
|
+
|
|
87
|
+
### 3. Criar Log de Decisões
|
|
88
|
+
|
|
89
|
+
Salve em `./.sessions/<ISSUE-ID>/decisions.md`:
|
|
90
|
+
|
|
91
|
+
```markdown
|
|
92
|
+
# Log de Decisões - [ISSUE-ID]
|
|
93
|
+
|
|
94
|
+
## Resumo
|
|
95
|
+
[Breve resumo das principais decisões tomadas nesta feature]
|
|
96
|
+
|
|
97
|
+
## Decisões de Produto
|
|
98
|
+
|
|
99
|
+
### [Decisão 1]
|
|
100
|
+
[Conforme template acima]
|
|
101
|
+
|
|
102
|
+
### [Decisão 2]
|
|
103
|
+
[Conforme template acima]
|
|
104
|
+
|
|
105
|
+
## Decisões Técnicas
|
|
106
|
+
|
|
107
|
+
### [Decisão 3]
|
|
108
|
+
[Conforme template acima]
|
|
109
|
+
|
|
110
|
+
### [Decisão 4]
|
|
111
|
+
[Conforme template acima]
|
|
112
|
+
|
|
113
|
+
## Decisões de Implementação
|
|
114
|
+
|
|
115
|
+
### [Decisão 5]
|
|
116
|
+
[Conforme template acima]
|
|
117
|
+
|
|
118
|
+
## Lições Aprendidas
|
|
119
|
+
- [Lição 1]
|
|
120
|
+
- [Lição 2]
|
|
121
|
+
|
|
122
|
+
## Decisões Pendentes
|
|
123
|
+
- [Decisão que ainda precisa ser tomada]
|
|
124
|
+
```
|
|
125
|
+
|
|
126
|
+
## 📊 Análise de Impacto
|
|
127
|
+
|
|
128
|
+
Para decisões críticas, documente o impacto:
|
|
129
|
+
|
|
130
|
+
```markdown
|
|
131
|
+
## Análise de Impacto
|
|
132
|
+
|
|
133
|
+
**Repositórios Afetados**: [lista]
|
|
134
|
+
|
|
135
|
+
**Componentes Impactados**: [lista]
|
|
136
|
+
|
|
137
|
+
**Dependências Criadas**: [lista]
|
|
138
|
+
|
|
139
|
+
**Riscos Introduzidos**: [lista]
|
|
140
|
+
|
|
141
|
+
**Mitigações Aplicadas**: [lista]
|
|
142
|
+
```
|
|
143
|
+
|
|
144
|
+
## 🔄 Revisão de Decisões
|
|
145
|
+
|
|
146
|
+
Periodicamente, revise as decisões tomadas:
|
|
147
|
+
- Ainda fazem sentido?
|
|
148
|
+
- Os trade-offs se provaram corretos?
|
|
149
|
+
- Há aprendizados para documentar?
|
|
150
|
+
- Alguma decisão precisa ser revertida?
|
|
151
|
+
|
|
152
|
+
---
|
|
153
|
+
|
|
154
|
+
**Argumentos fornecidos**:
|
|
155
|
+
|
|
156
|
+
```
|
|
157
|
+
#$ARGUMENTS
|
|
158
|
+
```
|
|
159
|
+
|
|
160
|
+
---
|
|
161
|
+
|
|
162
|
+
## 🎯 Resultado
|
|
163
|
+
|
|
164
|
+
Após executar este comando, você terá:
|
|
165
|
+
- Log completo de decisões em `./.sessions/<ISSUE-ID>/decisions.md`
|
|
166
|
+
- Rastreabilidade de cada escolha feita
|
|
167
|
+
- Documentação para futuras referências
|
|
168
|
+
- Base para ADRs (se decisões forem de arquitetura)
|
package/package.json
CHANGED
|
@@ -37,7 +37,7 @@ Para cada repositório, crie um PR usando o GitHub CLI ou interface web:
|
|
|
37
37
|
```bash
|
|
38
38
|
cd <repositório>
|
|
39
39
|
gh pr create --title "[ISSUE-ID] Título da Feature" \
|
|
40
|
-
--body "$(cat ../.
|
|
40
|
+
--body "$(cat ../.sessions/<ISSUE-ID>/pr-description.md)" \
|
|
41
41
|
--base main
|
|
42
42
|
```
|
|
43
43
|
|
|
@@ -104,7 +104,7 @@ Se task manager estiver configurado:
|
|
|
104
104
|
|
|
105
105
|
### 6. Documentação da Sessão
|
|
106
106
|
|
|
107
|
-
Atualize `./.
|
|
107
|
+
Atualize `./.sessions/<ISSUE-ID>/pr.md`:
|
|
108
108
|
|
|
109
109
|
```markdown
|
|
110
110
|
# [Título da Feature] - Pull Requests
|
|
@@ -168,7 +168,7 @@ Se múltiplos repositórios foram modificados:
|
|
|
168
168
|
|
|
169
169
|
## 📄 Preparação da Descrição do PR
|
|
170
170
|
|
|
171
|
-
Crie `./.
|
|
171
|
+
Crie `./.sessions/<ISSUE-ID>/pr-description.md`:
|
|
172
172
|
|
|
173
173
|
```markdown
|
|
174
174
|
## 🎯 Objetivo
|
|
@@ -212,7 +212,7 @@ Se alguma validação falhar:
|
|
|
212
212
|
|
|
213
213
|
## 📊 Relatório de Validação
|
|
214
214
|
|
|
215
|
-
Crie `./.
|
|
215
|
+
Crie `./.sessions/<ISSUE-ID>/pre-pr-report.md`:
|
|
216
216
|
|
|
217
217
|
```markdown
|
|
218
218
|
# Relatório de Validação Pre-PR
|
|
@@ -68,7 +68,7 @@ Após análise inicial, formule **3-5 clarificações mais importantes**:
|
|
|
68
68
|
|
|
69
69
|
## 📝 Documentação da Sessão
|
|
70
70
|
|
|
71
|
-
Crie arquivo `./.
|
|
71
|
+
Crie arquivo `./.sessions/<ISSUE-ID>/start.md` com:
|
|
72
72
|
|
|
73
73
|
```markdown
|
|
74
74
|
# [Título da Feature] - Início
|
|
@@ -8,7 +8,7 @@ Antes de executar, certifique-se de que:
|
|
|
8
8
|
- Executou `/warm-up` para carregar o contexto
|
|
9
9
|
- Executou `/start` e `/plan` para ter o planejamento técnico
|
|
10
10
|
- Está no workspace correto (verifique `.workspace.json`)
|
|
11
|
-
- Tem o arquivo `./.
|
|
11
|
+
- Tem o arquivo `./.sessions/<ISSUE-ID>/plan.md` disponível
|
|
12
12
|
|
|
13
13
|
## 🎯 Objetivo
|
|
14
14
|
|
|
@@ -22,7 +22,7 @@ Implementar uma unidade de trabalho específica do plano, que pode envolver:
|
|
|
22
22
|
|
|
23
23
|
### 1. Identificar Unidade de Trabalho
|
|
24
24
|
|
|
25
|
-
Com base no plano técnico (`./.
|
|
25
|
+
Com base no plano técnico (`./.sessions/<ISSUE-ID>/plan.md`), identifique:
|
|
26
26
|
- Qual tarefa específica será implementada agora
|
|
27
27
|
- Em qual(is) repositório(s) do workspace
|
|
28
28
|
- Quais arquivos serão criados/modificados
|
|
@@ -62,7 +62,7 @@ Refs: <ISSUE-ID>"
|
|
|
62
62
|
|
|
63
63
|
### 5. Documentação da Sessão
|
|
64
64
|
|
|
65
|
-
Atualize `./.
|
|
65
|
+
Atualize `./.sessions/<ISSUE-ID>/work.md`:
|
|
66
66
|
|
|
67
67
|
```markdown
|
|
68
68
|
# [Título da Feature] - Trabalho Executado
|
|
@@ -85,7 +85,7 @@ Apenas certifique-se de que a ideia esteja **adequadamente compreendida**.
|
|
|
85
85
|
- Use o MCP apropriado para criar a issue (ex: Linear, Jira)
|
|
86
86
|
- Todos os dados ficam no task manager
|
|
87
87
|
- **Se não houver task manager**:
|
|
88
|
-
- Crie arquivo em `./.
|
|
88
|
+
- Crie arquivo em `./.sessions/<ISSUE-ID>/collect.md`
|
|
89
89
|
- Inclua data, tipo e conteúdo completo
|
|
90
90
|
|
|
91
91
|
## Perguntas de Esclarecimento
|
|
@@ -32,7 +32,7 @@ Refinar a issue coletada, esclarecendo:
|
|
|
32
32
|
- Leia a issue usando o MCP apropriado
|
|
33
33
|
|
|
34
34
|
**Senão**:
|
|
35
|
-
- Leia `./.
|
|
35
|
+
- Leia `./.sessions/<ISSUE-ID>/collect.md`
|
|
36
36
|
|
|
37
37
|
### 2. Análise de Escopo
|
|
38
38
|
|
|
@@ -112,7 +112,7 @@ Liste perguntas que ainda precisam ser respondidas antes de iniciar a implementa
|
|
|
112
112
|
|
|
113
113
|
## 📄 Documentação do Refinamento
|
|
114
114
|
|
|
115
|
-
Crie/atualize `./.
|
|
115
|
+
Crie/atualize `./.sessions/<ISSUE-ID>/refine.md`:
|
|
116
116
|
|
|
117
117
|
```markdown
|
|
118
118
|
# [Título da Issue] - Refinamento
|
|
@@ -0,0 +1,240 @@
|
|
|
1
|
+
# Métricas de Qualidade
|
|
2
|
+
|
|
3
|
+
Este comando coleta e analisa métricas de qualidade do código e do processo de desenvolvimento.
|
|
4
|
+
|
|
5
|
+
## 🎯 Objetivo
|
|
6
|
+
|
|
7
|
+
Medir e documentar a qualidade da implementação através de métricas objetivas:
|
|
8
|
+
- Cobertura de testes
|
|
9
|
+
- Complexidade do código
|
|
10
|
+
- Dívida técnica
|
|
11
|
+
- Performance
|
|
12
|
+
- Conformidade com padrões
|
|
13
|
+
|
|
14
|
+
## 📋 Pré-requisitos
|
|
15
|
+
|
|
16
|
+
- Implementação concluída (após `/work`)
|
|
17
|
+
- Testes implementados
|
|
18
|
+
- Build funcionando
|
|
19
|
+
|
|
20
|
+
## 📊 Métricas a Coletar
|
|
21
|
+
|
|
22
|
+
### 1. Cobertura de Testes
|
|
23
|
+
|
|
24
|
+
Para cada repositório modificado:
|
|
25
|
+
|
|
26
|
+
```bash
|
|
27
|
+
cd <repositório>
|
|
28
|
+
|
|
29
|
+
# Executar testes com cobertura
|
|
30
|
+
npm run test:coverage # ou comando equivalente
|
|
31
|
+
|
|
32
|
+
# Capturar resultados
|
|
33
|
+
```
|
|
34
|
+
|
|
35
|
+
Documente:
|
|
36
|
+
```markdown
|
|
37
|
+
## Cobertura de Testes
|
|
38
|
+
|
|
39
|
+
### <repo-1>
|
|
40
|
+
- **Cobertura Total**: X%
|
|
41
|
+
- **Statements**: X%
|
|
42
|
+
- **Branches**: X%
|
|
43
|
+
- **Functions**: X%
|
|
44
|
+
- **Lines**: X%
|
|
45
|
+
- **Arquivos não cobertos**: [lista]
|
|
46
|
+
|
|
47
|
+
### <repo-2>
|
|
48
|
+
[Mesmo formato]
|
|
49
|
+
```
|
|
50
|
+
|
|
51
|
+
### 2. Complexidade do Código
|
|
52
|
+
|
|
53
|
+
Analise a complexidade ciclomática dos arquivos modificados:
|
|
54
|
+
|
|
55
|
+
```markdown
|
|
56
|
+
## Complexidade do Código
|
|
57
|
+
|
|
58
|
+
### Arquivos com Alta Complexidade
|
|
59
|
+
- **arquivo1.ts**: Complexidade 15 (recomendado: < 10)
|
|
60
|
+
- **arquivo2.ts**: Complexidade 12
|
|
61
|
+
|
|
62
|
+
### Recomendações
|
|
63
|
+
- [Sugestão de refatoração 1]
|
|
64
|
+
- [Sugestão de refatoração 2]
|
|
65
|
+
```
|
|
66
|
+
|
|
67
|
+
### 3. Qualidade do Código
|
|
68
|
+
|
|
69
|
+
```bash
|
|
70
|
+
# Executar linting
|
|
71
|
+
npm run lint
|
|
72
|
+
|
|
73
|
+
# Verificar formatação
|
|
74
|
+
npm run format:check
|
|
75
|
+
|
|
76
|
+
# Análise estática (se disponível)
|
|
77
|
+
npm run analyze
|
|
78
|
+
```
|
|
79
|
+
|
|
80
|
+
Documente:
|
|
81
|
+
```markdown
|
|
82
|
+
## Qualidade do Código
|
|
83
|
+
|
|
84
|
+
### Linting
|
|
85
|
+
- **Erros**: 0
|
|
86
|
+
- **Warnings**: X
|
|
87
|
+
- **Warnings Justificados**: [lista com justificativas]
|
|
88
|
+
|
|
89
|
+
### Formatação
|
|
90
|
+
- **Status**: ✅ Conforme / ⚠️ Ajustes necessários
|
|
91
|
+
|
|
92
|
+
### Análise Estática
|
|
93
|
+
- **Problemas Críticos**: 0
|
|
94
|
+
- **Problemas Médios**: X
|
|
95
|
+
- **Problemas Baixos**: Y
|
|
96
|
+
```
|
|
97
|
+
|
|
98
|
+
### 4. Performance
|
|
99
|
+
|
|
100
|
+
Se aplicável, meça performance:
|
|
101
|
+
|
|
102
|
+
```markdown
|
|
103
|
+
## Performance
|
|
104
|
+
|
|
105
|
+
### Benchmarks
|
|
106
|
+
- **Operação X**: Yms (baseline: Zms)
|
|
107
|
+
- **Operação Y**: Yms (baseline: Zms)
|
|
108
|
+
|
|
109
|
+
### Otimizações Aplicadas
|
|
110
|
+
- [Otimização 1 e impacto]
|
|
111
|
+
- [Otimização 2 e impacto]
|
|
112
|
+
|
|
113
|
+
### Gargalos Identificados
|
|
114
|
+
- [Gargalo 1 e plano de mitigação]
|
|
115
|
+
```
|
|
116
|
+
|
|
117
|
+
### 5. Tamanho e Impacto
|
|
118
|
+
|
|
119
|
+
```markdown
|
|
120
|
+
## Tamanho e Impacto
|
|
121
|
+
|
|
122
|
+
### Linhas de Código
|
|
123
|
+
- **Adicionadas**: +X linhas
|
|
124
|
+
- **Removidas**: -Y linhas
|
|
125
|
+
- **Modificadas**: Z linhas
|
|
126
|
+
|
|
127
|
+
### Arquivos
|
|
128
|
+
- **Novos**: X arquivos
|
|
129
|
+
- **Modificados**: Y arquivos
|
|
130
|
+
- **Removidos**: Z arquivos
|
|
131
|
+
|
|
132
|
+
### Dependências
|
|
133
|
+
- **Novas dependências**: [lista]
|
|
134
|
+
- **Tamanho do bundle**: +X KB
|
|
135
|
+
```
|
|
136
|
+
|
|
137
|
+
### 6. Dívida Técnica
|
|
138
|
+
|
|
139
|
+
Identifique dívida técnica introduzida ou resolvida:
|
|
140
|
+
|
|
141
|
+
```markdown
|
|
142
|
+
## Dívida Técnica
|
|
143
|
+
|
|
144
|
+
### Dívida Introduzida
|
|
145
|
+
- **Item 1**: [Descrição e justificativa]
|
|
146
|
+
- Severidade: Alta / Média / Baixa
|
|
147
|
+
- Plano de resolução: [quando e como resolver]
|
|
148
|
+
|
|
149
|
+
### Dívida Resolvida
|
|
150
|
+
- **Item 1**: [O que foi resolvido]
|
|
151
|
+
- Impacto: [melhoria obtida]
|
|
152
|
+
```
|
|
153
|
+
|
|
154
|
+
## 📄 Relatório de Métricas
|
|
155
|
+
|
|
156
|
+
Crie `./.sessions/<ISSUE-ID>/metrics.md`:
|
|
157
|
+
|
|
158
|
+
```markdown
|
|
159
|
+
# Relatório de Métricas - [ISSUE-ID]
|
|
160
|
+
|
|
161
|
+
**Data**: [data/hora]
|
|
162
|
+
**Repositórios**: [lista]
|
|
163
|
+
|
|
164
|
+
## Resumo Executivo
|
|
165
|
+
|
|
166
|
+
- **Cobertura de Testes**: X% (meta: Y%)
|
|
167
|
+
- **Qualidade do Código**: ✅ / ⚠️ / ❌
|
|
168
|
+
- **Performance**: ✅ / ⚠️ / ❌
|
|
169
|
+
- **Dívida Técnica**: Baixa / Média / Alta
|
|
170
|
+
|
|
171
|
+
## Métricas Detalhadas
|
|
172
|
+
|
|
173
|
+
[Incluir todas as seções acima]
|
|
174
|
+
|
|
175
|
+
## Comparação com Baseline
|
|
176
|
+
|
|
177
|
+
| Métrica | Antes | Depois | Variação |
|
|
178
|
+
|---------|-------|--------|----------|
|
|
179
|
+
| Cobertura | X% | Y% | +Z% |
|
|
180
|
+
| Complexidade Média | X | Y | +Z |
|
|
181
|
+
| Bundle Size | X KB | Y KB | +Z KB |
|
|
182
|
+
|
|
183
|
+
## Ações Recomendadas
|
|
184
|
+
|
|
185
|
+
1. [Ação 1 - prioridade alta]
|
|
186
|
+
2. [Ação 2 - prioridade média]
|
|
187
|
+
3. [Ação 3 - prioridade baixa]
|
|
188
|
+
|
|
189
|
+
## Aprovação para Merge
|
|
190
|
+
|
|
191
|
+
- [ ] Cobertura de testes >= meta
|
|
192
|
+
- [ ] Sem problemas críticos de qualidade
|
|
193
|
+
- [ ] Performance dentro dos requisitos
|
|
194
|
+
- [ ] Dívida técnica documentada e aprovada
|
|
195
|
+
```
|
|
196
|
+
|
|
197
|
+
## 🎯 Metas de Qualidade
|
|
198
|
+
|
|
199
|
+
Se o projeto tiver metas definidas nas metaspecs, valide:
|
|
200
|
+
|
|
201
|
+
```markdown
|
|
202
|
+
## Validação contra Metas
|
|
203
|
+
|
|
204
|
+
### Metas do Projeto
|
|
205
|
+
- **Cobertura mínima**: 80%
|
|
206
|
+
- **Complexidade máxima**: 10
|
|
207
|
+
- **Performance**: < 100ms
|
|
208
|
+
|
|
209
|
+
### Status
|
|
210
|
+
- Cobertura: ✅ 85% (meta: 80%)
|
|
211
|
+
- Complexidade: ⚠️ 12 (meta: 10) - Justificado
|
|
212
|
+
- Performance: ✅ 85ms (meta: 100ms)
|
|
213
|
+
```
|
|
214
|
+
|
|
215
|
+
## 🚨 Alertas
|
|
216
|
+
|
|
217
|
+
Se alguma métrica estiver fora do aceitável:
|
|
218
|
+
1. 🛑 **DOCUMENTE** o problema
|
|
219
|
+
2. 💬 **ALERTE** o usuário
|
|
220
|
+
3. 🔧 **PROPONHA** ações corretivas
|
|
221
|
+
4. ⏸️ **CONSIDERE** bloquear o merge até resolução
|
|
222
|
+
|
|
223
|
+
---
|
|
224
|
+
|
|
225
|
+
**Argumentos fornecidos**:
|
|
226
|
+
|
|
227
|
+
```
|
|
228
|
+
#$ARGUMENTS
|
|
229
|
+
```
|
|
230
|
+
|
|
231
|
+
---
|
|
232
|
+
|
|
233
|
+
## 🎯 Resultado
|
|
234
|
+
|
|
235
|
+
Após executar este comando, você terá:
|
|
236
|
+
- Relatório completo de métricas
|
|
237
|
+
- Comparação com baseline e metas
|
|
238
|
+
- Identificação de problemas de qualidade
|
|
239
|
+
- Recomendações de ações
|
|
240
|
+
- Base objetiva para aprovação de merge
|
|
@@ -0,0 +1,168 @@
|
|
|
1
|
+
# Observabilidade de Decisões
|
|
2
|
+
|
|
3
|
+
Este comando registra decisões importantes tomadas durante o desenvolvimento, criando um log auditável para explicabilidade e rastreabilidade.
|
|
4
|
+
|
|
5
|
+
## 🎯 Objetivo
|
|
6
|
+
|
|
7
|
+
Criar registro estruturado de decisões técnicas e de produto, garantindo:
|
|
8
|
+
- **Explicabilidade**: Por que cada decisão foi tomada
|
|
9
|
+
- **Rastreabilidade**: Quais fontes (PRD, metaspecs, ADRs) embasaram a decisão
|
|
10
|
+
- **Auditoria**: Histórico completo de escolhas para revisão futura
|
|
11
|
+
- **Aprendizado**: Documentação de trade-offs e alternativas consideradas
|
|
12
|
+
|
|
13
|
+
**IMPORTANTE**: Este comando NÃO gera decisões novas. Ele apenas REGISTRA decisões que já foram tomadas no processo de desenvolvimento.
|
|
14
|
+
|
|
15
|
+
## 📋 Pré-requisitos
|
|
16
|
+
|
|
17
|
+
- Executou pelo menos um dos comandos que geram decisões:
|
|
18
|
+
- `/spec` - gera PRD com decisões de produto
|
|
19
|
+
- `/plan` - gera plan.md com decisões técnicas
|
|
20
|
+
- `/work` - implementação gera decisões durante desenvolvimento
|
|
21
|
+
|
|
22
|
+
## 🔍 Processo de Observação
|
|
23
|
+
|
|
24
|
+
### 1. Identificar Decisões Relevantes
|
|
25
|
+
|
|
26
|
+
Analise os arquivos da sessão (`./.sessions/<ISSUE-ID>/`) para identificar decisões:
|
|
27
|
+
|
|
28
|
+
**Após `/spec`** - Decisões de Produto:
|
|
29
|
+
- Leia `./.sessions/<ISSUE-ID>/prd.md`
|
|
30
|
+
- Identifique decisões em:
|
|
31
|
+
- Escopo (o que entra/não entra na feature)
|
|
32
|
+
- Personas atendidas (quem é o público-alvo)
|
|
33
|
+
- Métricas de sucesso (como medir resultados)
|
|
34
|
+
- Requisitos não-funcionais (performance, acessibilidade)
|
|
35
|
+
- Restrições e trade-offs
|
|
36
|
+
|
|
37
|
+
**Após `/plan`** - Decisões Técnicas:
|
|
38
|
+
- Leia `./.sessions/<ISSUE-ID>/plan.md`
|
|
39
|
+
- Identifique decisões em:
|
|
40
|
+
- Arquitetura de componentes/módulos
|
|
41
|
+
- Escolha de bibliotecas ou ferramentas
|
|
42
|
+
- Padrões de implementação
|
|
43
|
+
- Estrutura de dados
|
|
44
|
+
- Estratégia de testes
|
|
45
|
+
|
|
46
|
+
**Durante `/work`** - Decisões de Implementação:
|
|
47
|
+
- Leia `./.sessions/<ISSUE-ID>/work.md`
|
|
48
|
+
- Identifique decisões em:
|
|
49
|
+
- Refatorações realizadas
|
|
50
|
+
- Mudanças de abordagem
|
|
51
|
+
- Otimizações aplicadas
|
|
52
|
+
- Tratamento de edge cases
|
|
53
|
+
|
|
54
|
+
### 2. Documentar Cada Decisão
|
|
55
|
+
|
|
56
|
+
Para cada decisão identificada, documente:
|
|
57
|
+
|
|
58
|
+
```markdown
|
|
59
|
+
## Decisão: [Título Claro]
|
|
60
|
+
|
|
61
|
+
**Contexto**: [Por que precisamos decidir isso? Qual o problema ou necessidade?]
|
|
62
|
+
|
|
63
|
+
**Opções Consideradas**:
|
|
64
|
+
1. **Opção A**: [Descrição]
|
|
65
|
+
- Prós: [vantagens]
|
|
66
|
+
- Contras: [desvantagens]
|
|
67
|
+
2. **Opção B**: [Descrição]
|
|
68
|
+
- Prós: [vantagens]
|
|
69
|
+
- Contras: [desvantagens]
|
|
70
|
+
|
|
71
|
+
**Decisão**: [Opção escolhida]
|
|
72
|
+
|
|
73
|
+
**Justificativa**: [Por que escolhemos esta opção? Quais critérios foram mais importantes?]
|
|
74
|
+
|
|
75
|
+
**Fontes**:
|
|
76
|
+
- [PRD seção X]
|
|
77
|
+
- [Metaspec Y]
|
|
78
|
+
- [ADR-00Z]
|
|
79
|
+
|
|
80
|
+
**Trade-offs Aceitos**: [Quais desvantagens aceitamos conscientemente?]
|
|
81
|
+
|
|
82
|
+
**Reversibilidade**: Fácil / Média / Difícil
|
|
83
|
+
|
|
84
|
+
**Data**: [data da decisão]
|
|
85
|
+
```
|
|
86
|
+
|
|
87
|
+
### 3. Criar Log de Decisões
|
|
88
|
+
|
|
89
|
+
Salve em `./.sessions/<ISSUE-ID>/decisions.md`:
|
|
90
|
+
|
|
91
|
+
```markdown
|
|
92
|
+
# Log de Decisões - [ISSUE-ID]
|
|
93
|
+
|
|
94
|
+
## Resumo
|
|
95
|
+
[Breve resumo das principais decisões tomadas nesta feature]
|
|
96
|
+
|
|
97
|
+
## Decisões de Produto
|
|
98
|
+
|
|
99
|
+
### [Decisão 1]
|
|
100
|
+
[Conforme template acima]
|
|
101
|
+
|
|
102
|
+
### [Decisão 2]
|
|
103
|
+
[Conforme template acima]
|
|
104
|
+
|
|
105
|
+
## Decisões Técnicas
|
|
106
|
+
|
|
107
|
+
### [Decisão 3]
|
|
108
|
+
[Conforme template acima]
|
|
109
|
+
|
|
110
|
+
### [Decisão 4]
|
|
111
|
+
[Conforme template acima]
|
|
112
|
+
|
|
113
|
+
## Decisões de Implementação
|
|
114
|
+
|
|
115
|
+
### [Decisão 5]
|
|
116
|
+
[Conforme template acima]
|
|
117
|
+
|
|
118
|
+
## Lições Aprendidas
|
|
119
|
+
- [Lição 1]
|
|
120
|
+
- [Lição 2]
|
|
121
|
+
|
|
122
|
+
## Decisões Pendentes
|
|
123
|
+
- [Decisão que ainda precisa ser tomada]
|
|
124
|
+
```
|
|
125
|
+
|
|
126
|
+
## 📊 Análise de Impacto
|
|
127
|
+
|
|
128
|
+
Para decisões críticas, documente o impacto:
|
|
129
|
+
|
|
130
|
+
```markdown
|
|
131
|
+
## Análise de Impacto
|
|
132
|
+
|
|
133
|
+
**Repositórios Afetados**: [lista]
|
|
134
|
+
|
|
135
|
+
**Componentes Impactados**: [lista]
|
|
136
|
+
|
|
137
|
+
**Dependências Criadas**: [lista]
|
|
138
|
+
|
|
139
|
+
**Riscos Introduzidos**: [lista]
|
|
140
|
+
|
|
141
|
+
**Mitigações Aplicadas**: [lista]
|
|
142
|
+
```
|
|
143
|
+
|
|
144
|
+
## 🔄 Revisão de Decisões
|
|
145
|
+
|
|
146
|
+
Periodicamente, revise as decisões tomadas:
|
|
147
|
+
- Ainda fazem sentido?
|
|
148
|
+
- Os trade-offs se provaram corretos?
|
|
149
|
+
- Há aprendizados para documentar?
|
|
150
|
+
- Alguma decisão precisa ser revertida?
|
|
151
|
+
|
|
152
|
+
---
|
|
153
|
+
|
|
154
|
+
**Argumentos fornecidos**:
|
|
155
|
+
|
|
156
|
+
```
|
|
157
|
+
#$ARGUMENTS
|
|
158
|
+
```
|
|
159
|
+
|
|
160
|
+
---
|
|
161
|
+
|
|
162
|
+
## 🎯 Resultado
|
|
163
|
+
|
|
164
|
+
Após executar este comando, você terá:
|
|
165
|
+
- Log completo de decisões em `./.sessions/<ISSUE-ID>/decisions.md`
|
|
166
|
+
- Rastreabilidade de cada escolha feita
|
|
167
|
+
- Documentação para futuras referências
|
|
168
|
+
- Base para ADRs (se decisões forem de arquitetura)
|