context-first-cli 1.0.0 → 1.1.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/dist/commands/scaffold-orchestrator.d.ts.map +1 -1
- package/dist/commands/scaffold-orchestrator.js +37 -17
- package/dist/commands/scaffold-orchestrator.js.map +1 -1
- package/dist/templates/commands/engineer/plan.md +251 -0
- package/dist/templates/commands/engineer/pr.md +167 -0
- package/dist/templates/commands/engineer/pre-pr.md +262 -0
- package/dist/templates/commands/engineer/start.md +115 -0
- package/dist/templates/commands/engineer/work.md +125 -0
- package/dist/templates/commands/products/check.md +201 -0
- package/dist/templates/commands/products/collect.md +129 -0
- package/dist/templates/commands/products/refine.md +182 -0
- package/dist/templates/commands/products/spec.md +239 -0
- package/dist/templates/commands/warm-up.md +65 -0
- package/package.json +4 -2
- package/templates/commands/engineer/plan.md +251 -0
- package/templates/commands/engineer/pr.md +167 -0
- package/templates/commands/engineer/pre-pr.md +262 -0
- package/templates/commands/engineer/start.md +115 -0
- package/templates/commands/engineer/work.md +125 -0
- package/templates/commands/products/check.md +201 -0
- package/templates/commands/products/collect.md +129 -0
- package/templates/commands/products/refine.md +182 -0
- package/templates/commands/products/spec.md +239 -0
- package/templates/commands/warm-up.md +65 -0
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"scaffold-orchestrator.d.ts","sourceRoot":"","sources":["../../src/commands/scaffold-orchestrator.ts"],"names":[],"mappings":"AAWA,wBAAsB,2BAA2B,
|
|
1
|
+
{"version":3,"file":"scaffold-orchestrator.d.ts","sourceRoot":"","sources":["../../src/commands/scaffold-orchestrator.ts"],"names":[],"mappings":"AAWA,wBAAsB,2BAA2B,kBA8FhD"}
|
|
@@ -54,11 +54,12 @@ async function scaffoldOrchestratorCommand() {
|
|
|
54
54
|
}
|
|
55
55
|
// Create directory structure
|
|
56
56
|
await promises_1.default.mkdir(targetDir, { recursive: true });
|
|
57
|
-
await promises_1.default.mkdir(path_1.default.join(targetDir, '
|
|
58
|
-
await promises_1.default.mkdir(path_1.default.join(targetDir, '
|
|
59
|
-
await promises_1.default.mkdir(path_1.default.join(targetDir, '
|
|
60
|
-
await promises_1.default.mkdir(path_1.default.join(targetDir, '
|
|
61
|
-
await promises_1.default.mkdir(path_1.default.join(targetDir, '
|
|
57
|
+
await promises_1.default.mkdir(path_1.default.join(targetDir, '.claude', 'commands', 'products'), { recursive: true });
|
|
58
|
+
await promises_1.default.mkdir(path_1.default.join(targetDir, '.claude', 'commands', 'engineer'), { recursive: true });
|
|
59
|
+
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, '.context-sessions'), { recursive: true });
|
|
61
|
+
await promises_1.default.mkdir(path_1.default.join(targetDir, 'specs', 'business'), { recursive: true });
|
|
62
|
+
await promises_1.default.mkdir(path_1.default.join(targetDir, 'specs', 'technical'), { recursive: true });
|
|
62
63
|
// Create README.md
|
|
63
64
|
const readme = generateReadme(answers);
|
|
64
65
|
await promises_1.default.writeFile(path_1.default.join(targetDir, 'README.md'), readme, 'utf-8');
|
|
@@ -68,14 +69,16 @@ async function scaffoldOrchestratorCommand() {
|
|
|
68
69
|
// Create context-manifest.json
|
|
69
70
|
const manifest = generateManifest(answers);
|
|
70
71
|
await promises_1.default.writeFile(path_1.default.join(targetDir, 'context-manifest.json'), JSON.stringify(manifest, null, 2), 'utf-8');
|
|
72
|
+
// Copy command templates
|
|
73
|
+
await copyCommandTemplates(targetDir);
|
|
71
74
|
// Create .gitignore
|
|
72
|
-
const gitignore = `node_modules/\n.env\n.ia.env\
|
|
75
|
+
const gitignore = `node_modules/\n.env\n.ia.env\n.context-sessions/*/\n*.log\n`;
|
|
73
76
|
await promises_1.default.writeFile(path_1.default.join(targetDir, '.gitignore'), gitignore, 'utf-8');
|
|
74
77
|
console.log(chalk_1.default.green(`\n✅ Orchestrator scaffolded successfully at: ${targetDir}`));
|
|
75
78
|
console.log(chalk_1.default.blue('\n📁 Structure created:'));
|
|
76
|
-
console.log(chalk_1.default.gray(' commands/
|
|
77
|
-
console.log(chalk_1.default.gray('
|
|
78
|
-
console.log(chalk_1.default.gray('
|
|
79
|
+
console.log(chalk_1.default.gray(' .claude/commands/ - Command definitions for AI'));
|
|
80
|
+
console.log(chalk_1.default.gray(' .context-sessions/ - Feature session data'));
|
|
81
|
+
console.log(chalk_1.default.gray(' specs/ - Business and technical specifications'));
|
|
79
82
|
console.log(chalk_1.default.gray(' ai.properties.md - Configuration template'));
|
|
80
83
|
console.log(chalk_1.default.gray(' context-manifest.json - Repository manifest'));
|
|
81
84
|
console.log(chalk_1.default.blue('\n💡 Next steps:'));
|
|
@@ -89,6 +92,22 @@ async function scaffoldOrchestratorCommand() {
|
|
|
89
92
|
process.exit(1);
|
|
90
93
|
}
|
|
91
94
|
}
|
|
95
|
+
async function copyCommandTemplates(targetDir) {
|
|
96
|
+
const templatesDir = path_1.default.join(__dirname, '..', '..', 'templates', 'commands');
|
|
97
|
+
const targetCommandsDir = path_1.default.join(targetDir, '.claude', 'commands');
|
|
98
|
+
// Copy warm-up.md
|
|
99
|
+
await promises_1.default.copyFile(path_1.default.join(templatesDir, 'warm-up.md'), path_1.default.join(targetCommandsDir, 'warm-up.md'));
|
|
100
|
+
// Copy products commands
|
|
101
|
+
const productsCommands = ['collect.md', 'refine.md', 'spec.md', 'check.md'];
|
|
102
|
+
for (const cmd of productsCommands) {
|
|
103
|
+
await promises_1.default.copyFile(path_1.default.join(templatesDir, 'products', cmd), path_1.default.join(targetCommandsDir, 'products', cmd));
|
|
104
|
+
}
|
|
105
|
+
// Copy engineer commands
|
|
106
|
+
const engineerCommands = ['start.md', 'plan.md', 'work.md', 'pre-pr.md', 'pr.md'];
|
|
107
|
+
for (const cmd of engineerCommands) {
|
|
108
|
+
await promises_1.default.copyFile(path_1.default.join(templatesDir, 'engineer', cmd), path_1.default.join(targetCommandsDir, 'engineer', cmd));
|
|
109
|
+
}
|
|
110
|
+
}
|
|
92
111
|
function generateReadme(answers) {
|
|
93
112
|
return `# ${answers.projectName}
|
|
94
113
|
|
|
@@ -102,14 +121,15 @@ This orchestrator manages the Context-First development methodology for the proj
|
|
|
102
121
|
|
|
103
122
|
\`\`\`
|
|
104
123
|
${answers.projectName}/
|
|
105
|
-
├──
|
|
106
|
-
│ └──
|
|
107
|
-
│ ├──
|
|
108
|
-
│ ├── engineer/ # Engineering commands
|
|
109
|
-
│ └──
|
|
110
|
-
├──
|
|
111
|
-
|
|
112
|
-
├──
|
|
124
|
+
├── .claude/
|
|
125
|
+
│ └── commands/ # Command definitions for AI
|
|
126
|
+
│ ├── products/ # Product commands (collect, refine, spec, check)
|
|
127
|
+
│ ├── engineer/ # Engineering commands (start, plan, work, pre-pr, pr)
|
|
128
|
+
│ └── warm-up.md # Context loading command
|
|
129
|
+
├── .context-sessions/ # Feature session data
|
|
130
|
+
├── specs/
|
|
131
|
+
│ ├── business/ # Business specifications
|
|
132
|
+
│ └── technical/ # Technical specifications
|
|
113
133
|
├── ai.properties.md # Configuration
|
|
114
134
|
└── context-manifest.json # Repository manifest
|
|
115
135
|
\`\`\`
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"scaffold-orchestrator.js","sourceRoot":"","sources":["../../src/commands/scaffold-orchestrator.ts"],"names":[],"mappings":";;;;;AAWA,
|
|
1
|
+
{"version":3,"file":"scaffold-orchestrator.js","sourceRoot":"","sources":["../../src/commands/scaffold-orchestrator.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,251 @@
|
|
|
1
|
+
# Planejamento Técnico
|
|
2
|
+
|
|
3
|
+
Este comando cria o plano técnico detalhado para implementação da feature.
|
|
4
|
+
|
|
5
|
+
## 📋 Pré-requisitos
|
|
6
|
+
|
|
7
|
+
- PRD criado via `/spec`
|
|
8
|
+
- Análise inicial feita via `/start`
|
|
9
|
+
- Contexto técnico carregado
|
|
10
|
+
|
|
11
|
+
## 🎯 Objetivo
|
|
12
|
+
|
|
13
|
+
Criar um plano técnico detalhado que guiará a implementação, dividindo o trabalho em unidades menores e sequenciais.
|
|
14
|
+
|
|
15
|
+
## 📝 Estrutura do Plano
|
|
16
|
+
|
|
17
|
+
### 1. Visão Geral Técnica
|
|
18
|
+
|
|
19
|
+
```markdown
|
|
20
|
+
# Plano Técnico - [Título da Feature]
|
|
21
|
+
|
|
22
|
+
## Resumo
|
|
23
|
+
[Breve descrição técnica do que será implementado]
|
|
24
|
+
|
|
25
|
+
## Repositórios Envolvidos
|
|
26
|
+
- **<repo-1>**: [Papel nesta feature]
|
|
27
|
+
- **<repo-2>**: [Papel nesta feature]
|
|
28
|
+
|
|
29
|
+
## Abordagem Técnica
|
|
30
|
+
[Estratégia geral de implementação]
|
|
31
|
+
```
|
|
32
|
+
|
|
33
|
+
### 2. Arquitetura da Solução
|
|
34
|
+
|
|
35
|
+
```markdown
|
|
36
|
+
## Arquitetura
|
|
37
|
+
|
|
38
|
+
### Diagrama de Componentes
|
|
39
|
+
[Descrição textual ou ASCII art dos componentes e suas relações]
|
|
40
|
+
|
|
41
|
+
### Fluxo de Dados
|
|
42
|
+
1. [Passo 1 do fluxo]
|
|
43
|
+
2. [Passo 2 do fluxo]
|
|
44
|
+
3. [Passo 3 do fluxo]
|
|
45
|
+
|
|
46
|
+
### Integrações
|
|
47
|
+
- **<repo-1> → <repo-2>**: [Como se comunicam]
|
|
48
|
+
- **Sistema → API Externa**: [Se houver]
|
|
49
|
+
```
|
|
50
|
+
|
|
51
|
+
### 3. Decisões Técnicas
|
|
52
|
+
|
|
53
|
+
```markdown
|
|
54
|
+
## Decisões Técnicas
|
|
55
|
+
|
|
56
|
+
### Decisão 1: [Título]
|
|
57
|
+
**Contexto**: [Por que precisamos decidir isso]
|
|
58
|
+
**Opções consideradas**:
|
|
59
|
+
- Opção A: [Prós e contras]
|
|
60
|
+
- Opção B: [Prós e contras]
|
|
61
|
+
**Decisão**: [Opção escolhida]
|
|
62
|
+
**Justificativa**: [Por que escolhemos esta opção]
|
|
63
|
+
|
|
64
|
+
### Decisão 2: [Título]
|
|
65
|
+
[Mesmo formato acima]
|
|
66
|
+
```
|
|
67
|
+
|
|
68
|
+
### 4. Plano de Implementação
|
|
69
|
+
|
|
70
|
+
Divida o trabalho em unidades pequenas e sequenciais:
|
|
71
|
+
|
|
72
|
+
```markdown
|
|
73
|
+
## Plano de Implementação
|
|
74
|
+
|
|
75
|
+
### Fase 1: [Nome da Fase]
|
|
76
|
+
**Objetivo**: [O que será alcançado nesta fase]
|
|
77
|
+
**Repositórios**: [repos afetados]
|
|
78
|
+
|
|
79
|
+
#### Tarefa 1.1: [Descrição]
|
|
80
|
+
- **Repo**: <repo-1>
|
|
81
|
+
- **Arquivos**: [arquivos a criar/modificar]
|
|
82
|
+
- **Descrição**: [O que fazer]
|
|
83
|
+
- **Testes**: [Testes a implementar]
|
|
84
|
+
- **Estimativa**: [tempo estimado]
|
|
85
|
+
|
|
86
|
+
#### Tarefa 1.2: [Descrição]
|
|
87
|
+
- **Repo**: <repo-2>
|
|
88
|
+
- **Arquivos**: [arquivos a criar/modificar]
|
|
89
|
+
- **Descrição**: [O que fazer]
|
|
90
|
+
- **Testes**: [Testes a implementar]
|
|
91
|
+
- **Estimativa**: [tempo estimado]
|
|
92
|
+
|
|
93
|
+
### Fase 2: [Nome da Fase]
|
|
94
|
+
[Mesmo formato acima]
|
|
95
|
+
|
|
96
|
+
### Fase 3: [Nome da Fase]
|
|
97
|
+
[Mesmo formato acima]
|
|
98
|
+
```
|
|
99
|
+
|
|
100
|
+
### 5. Estrutura de Arquivos
|
|
101
|
+
|
|
102
|
+
Para cada repositório, defina a estrutura:
|
|
103
|
+
|
|
104
|
+
```markdown
|
|
105
|
+
## Estrutura de Arquivos
|
|
106
|
+
|
|
107
|
+
### <repo-1>
|
|
108
|
+
```
|
|
109
|
+
src/
|
|
110
|
+
├── components/
|
|
111
|
+
│ ├── NewComponent.tsx (CRIAR)
|
|
112
|
+
│ └── ExistingComponent.tsx (MODIFICAR)
|
|
113
|
+
├── services/
|
|
114
|
+
│ └── NewService.ts (CRIAR)
|
|
115
|
+
└── tests/
|
|
116
|
+
└── NewComponent.test.tsx (CRIAR)
|
|
117
|
+
```
|
|
118
|
+
|
|
119
|
+
### <repo-2>
|
|
120
|
+
```
|
|
121
|
+
src/
|
|
122
|
+
├── controllers/
|
|
123
|
+
│ └── NewController.ts (CRIAR)
|
|
124
|
+
└── tests/
|
|
125
|
+
└── NewController.test.ts (CRIAR)
|
|
126
|
+
```
|
|
127
|
+
```
|
|
128
|
+
|
|
129
|
+
### 6. APIs e Contratos
|
|
130
|
+
|
|
131
|
+
```markdown
|
|
132
|
+
## APIs e Contratos
|
|
133
|
+
|
|
134
|
+
### Endpoints Novos
|
|
135
|
+
|
|
136
|
+
#### POST /api/resource
|
|
137
|
+
**Request**:
|
|
138
|
+
```json
|
|
139
|
+
{
|
|
140
|
+
"field1": "string",
|
|
141
|
+
"field2": "number"
|
|
142
|
+
}
|
|
143
|
+
```
|
|
144
|
+
|
|
145
|
+
**Response**:
|
|
146
|
+
```json
|
|
147
|
+
{
|
|
148
|
+
"id": "string",
|
|
149
|
+
"status": "string"
|
|
150
|
+
}
|
|
151
|
+
```
|
|
152
|
+
|
|
153
|
+
### Endpoints Modificados
|
|
154
|
+
|
|
155
|
+
#### GET /api/resource/:id
|
|
156
|
+
**Mudanças**: [O que muda]
|
|
157
|
+
**Breaking Change**: Sim / Não
|
|
158
|
+
```
|
|
159
|
+
|
|
160
|
+
### 7. Estratégia de Testes
|
|
161
|
+
|
|
162
|
+
```markdown
|
|
163
|
+
## Estratégia de Testes
|
|
164
|
+
|
|
165
|
+
### Testes Unitários
|
|
166
|
+
- **<repo-1>**: [Componentes/funções a testar]
|
|
167
|
+
- **<repo-2>**: [Componentes/funções a testar]
|
|
168
|
+
|
|
169
|
+
### Testes de Integração
|
|
170
|
+
- **Cenário 1**: [Descrição e repos envolvidos]
|
|
171
|
+
- **Cenário 2**: [Descrição e repos envolvidos]
|
|
172
|
+
|
|
173
|
+
### Testes E2E (se aplicável)
|
|
174
|
+
- **Fluxo 1**: [Descrição]
|
|
175
|
+
- **Fluxo 2**: [Descrição]
|
|
176
|
+
```
|
|
177
|
+
|
|
178
|
+
### 8. Riscos Técnicos
|
|
179
|
+
|
|
180
|
+
```markdown
|
|
181
|
+
## Riscos Técnicos
|
|
182
|
+
|
|
183
|
+
### Risco 1: [Descrição]
|
|
184
|
+
- **Impacto**: Alto / Médio / Baixo
|
|
185
|
+
- **Probabilidade**: Alta / Média / Baixa
|
|
186
|
+
- **Mitigação**: [Como mitigar]
|
|
187
|
+
- **Plano B**: [Alternativa se ocorrer]
|
|
188
|
+
|
|
189
|
+
### Risco 2: [Descrição]
|
|
190
|
+
[Mesmo formato acima]
|
|
191
|
+
```
|
|
192
|
+
|
|
193
|
+
### 9. Checklist de Implementação
|
|
194
|
+
|
|
195
|
+
```markdown
|
|
196
|
+
## Checklist de Implementação
|
|
197
|
+
|
|
198
|
+
### Fase 1
|
|
199
|
+
- [ ] Tarefa 1.1
|
|
200
|
+
- [ ] Tarefa 1.2
|
|
201
|
+
- [ ] Testes da Fase 1
|
|
202
|
+
|
|
203
|
+
### Fase 2
|
|
204
|
+
- [ ] Tarefa 2.1
|
|
205
|
+
- [ ] Tarefa 2.2
|
|
206
|
+
- [ ] Testes da Fase 2
|
|
207
|
+
|
|
208
|
+
### Fase 3
|
|
209
|
+
- [ ] Tarefa 3.1
|
|
210
|
+
- [ ] Tarefa 3.2
|
|
211
|
+
- [ ] Testes da Fase 3
|
|
212
|
+
|
|
213
|
+
### Finalização
|
|
214
|
+
- [ ] Documentação atualizada
|
|
215
|
+
- [ ] Code review
|
|
216
|
+
- [ ] Testes de integração
|
|
217
|
+
- [ ] PR criado
|
|
218
|
+
```
|
|
219
|
+
|
|
220
|
+
## 📄 Salvamento do Plano
|
|
221
|
+
|
|
222
|
+
Salve em `./.context-sessions/<ISSUE-ID>/plan.md`
|
|
223
|
+
|
|
224
|
+
## 🔍 Revisão
|
|
225
|
+
|
|
226
|
+
Revise o plano verificando:
|
|
227
|
+
- Todas as tarefas estão claras e executáveis
|
|
228
|
+
- Dependências entre tarefas estão identificadas
|
|
229
|
+
- Estimativas são realistas
|
|
230
|
+
- Riscos foram considerados
|
|
231
|
+
- Estratégia de testes é adequada
|
|
232
|
+
|
|
233
|
+
---
|
|
234
|
+
|
|
235
|
+
**Argumentos fornecidos**:
|
|
236
|
+
|
|
237
|
+
```
|
|
238
|
+
#$ARGUMENTS
|
|
239
|
+
```
|
|
240
|
+
|
|
241
|
+
---
|
|
242
|
+
|
|
243
|
+
## 🎯 Próximo Passo
|
|
244
|
+
|
|
245
|
+
Após aprovação do plano:
|
|
246
|
+
|
|
247
|
+
```bash
|
|
248
|
+
/work
|
|
249
|
+
```
|
|
250
|
+
|
|
251
|
+
Este comando iniciará a execução da primeira unidade de trabalho do plano.
|
|
@@ -0,0 +1,167 @@
|
|
|
1
|
+
# Criação de Pull Request
|
|
2
|
+
|
|
3
|
+
Este comando cria Pull Requests para todos os repositórios modificados no workspace.
|
|
4
|
+
|
|
5
|
+
## 📋 Pré-requisitos
|
|
6
|
+
|
|
7
|
+
Antes de criar PRs, certifique-se de que:
|
|
8
|
+
- Executou `/pre-pr` e todas as validações passaram
|
|
9
|
+
- Todos os commits foram feitos
|
|
10
|
+
- Todos os testes estão passando
|
|
11
|
+
- A documentação está atualizada
|
|
12
|
+
|
|
13
|
+
## 🎯 Processo de Criação de PRs
|
|
14
|
+
|
|
15
|
+
### 1. Identificar Repositórios Modificados
|
|
16
|
+
|
|
17
|
+
Para cada repositório no workspace, verifique:
|
|
18
|
+
```bash
|
|
19
|
+
cd <repositório>
|
|
20
|
+
git status
|
|
21
|
+
git log origin/main..HEAD # Ver commits não pushados
|
|
22
|
+
```
|
|
23
|
+
|
|
24
|
+
### 2. Push das Branches
|
|
25
|
+
|
|
26
|
+
Para cada repositório modificado:
|
|
27
|
+
```bash
|
|
28
|
+
cd <repositório>
|
|
29
|
+
git push origin <branch-name>
|
|
30
|
+
```
|
|
31
|
+
|
|
32
|
+
### 3. Criar Pull Requests
|
|
33
|
+
|
|
34
|
+
Para cada repositório, crie um PR usando o GitHub CLI ou interface web:
|
|
35
|
+
|
|
36
|
+
**Usando GitHub CLI**:
|
|
37
|
+
```bash
|
|
38
|
+
cd <repositório>
|
|
39
|
+
gh pr create --title "[ISSUE-ID] Título da Feature" \
|
|
40
|
+
--body "$(cat ../.context-sessions/<ISSUE-ID>/pr-description.md)" \
|
|
41
|
+
--base main
|
|
42
|
+
```
|
|
43
|
+
|
|
44
|
+
**Template de Descrição do PR**:
|
|
45
|
+
|
|
46
|
+
```markdown
|
|
47
|
+
## 🎯 Objetivo
|
|
48
|
+
|
|
49
|
+
[Breve descrição do que esta PR faz]
|
|
50
|
+
|
|
51
|
+
## 📝 Mudanças
|
|
52
|
+
|
|
53
|
+
### Repositório: <nome-do-repo>
|
|
54
|
+
|
|
55
|
+
- [Mudança 1]
|
|
56
|
+
- [Mudança 2]
|
|
57
|
+
- [Mudança 3]
|
|
58
|
+
|
|
59
|
+
## 🔗 Relacionamentos
|
|
60
|
+
|
|
61
|
+
- **Issue**: <ISSUE-ID>
|
|
62
|
+
- **PRs Relacionados**:
|
|
63
|
+
- <repo-1>#<PR-number>
|
|
64
|
+
- <repo-2>#<PR-number>
|
|
65
|
+
|
|
66
|
+
## ✅ Checklist
|
|
67
|
+
|
|
68
|
+
- [ ] Código implementado e testado
|
|
69
|
+
- [ ] Testes unitários adicionados/atualizados
|
|
70
|
+
- [ ] Testes de integração passando
|
|
71
|
+
- [ ] Documentação atualizada
|
|
72
|
+
- [ ] Sem breaking changes (ou documentados)
|
|
73
|
+
- [ ] Revisado por pares (após criação do PR)
|
|
74
|
+
|
|
75
|
+
## 🧪 Como Testar
|
|
76
|
+
|
|
77
|
+
1. [Passo 1]
|
|
78
|
+
2. [Passo 2]
|
|
79
|
+
3. [Resultado esperado]
|
|
80
|
+
|
|
81
|
+
## 📸 Screenshots/Demos
|
|
82
|
+
|
|
83
|
+
[Se aplicável, adicione screenshots ou links para demos]
|
|
84
|
+
|
|
85
|
+
## 🔍 Notas para Revisores
|
|
86
|
+
|
|
87
|
+
- [Ponto de atenção 1]
|
|
88
|
+
- [Ponto de atenção 2]
|
|
89
|
+
```
|
|
90
|
+
|
|
91
|
+
### 4. Vincular PRs
|
|
92
|
+
|
|
93
|
+
Se houver múltiplos PRs (um por repositório):
|
|
94
|
+
- Adicione links cruzados entre os PRs
|
|
95
|
+
- Documente a ordem de merge recomendada
|
|
96
|
+
- Indique dependências entre PRs
|
|
97
|
+
|
|
98
|
+
### 5. Atualizar Issue no Task Manager
|
|
99
|
+
|
|
100
|
+
Se task manager estiver configurado:
|
|
101
|
+
- Mova a issue para "Em Revisão" ou "PR Aberto"
|
|
102
|
+
- Adicione links dos PRs na issue
|
|
103
|
+
- Adicione comentário com resumo das mudanças
|
|
104
|
+
|
|
105
|
+
### 6. Documentação da Sessão
|
|
106
|
+
|
|
107
|
+
Atualize `./.context-sessions/<ISSUE-ID>/pr.md`:
|
|
108
|
+
|
|
109
|
+
```markdown
|
|
110
|
+
# [Título da Feature] - Pull Requests
|
|
111
|
+
|
|
112
|
+
## PRs Criados
|
|
113
|
+
|
|
114
|
+
### <repo-1>
|
|
115
|
+
- **Link**: <URL do PR>
|
|
116
|
+
- **Status**: Aberto
|
|
117
|
+
- **Commits**: X commits
|
|
118
|
+
|
|
119
|
+
### <repo-2>
|
|
120
|
+
- **Link**: <URL do PR>
|
|
121
|
+
- **Status**: Aberto
|
|
122
|
+
- **Commits**: Y commits
|
|
123
|
+
|
|
124
|
+
## Ordem de Merge Recomendada
|
|
125
|
+
|
|
126
|
+
1. <repo-1> - [Justificativa]
|
|
127
|
+
2. <repo-2> - [Justificativa]
|
|
128
|
+
|
|
129
|
+
## Notas para Merge
|
|
130
|
+
|
|
131
|
+
- [Nota importante 1]
|
|
132
|
+
- [Nota importante 2]
|
|
133
|
+
```
|
|
134
|
+
|
|
135
|
+
## 🔍 Checklist Final
|
|
136
|
+
|
|
137
|
+
Antes de solicitar revisão:
|
|
138
|
+
- [ ] Todos os PRs criados
|
|
139
|
+
- [ ] Descrições completas e claras
|
|
140
|
+
- [ ] PRs vinculados entre si
|
|
141
|
+
- [ ] Issue atualizada no task manager
|
|
142
|
+
- [ ] Testes passando em CI/CD
|
|
143
|
+
- [ ] Documentação da sessão completa
|
|
144
|
+
|
|
145
|
+
## 📢 Comunicação
|
|
146
|
+
|
|
147
|
+
Notifique o time sobre os PRs:
|
|
148
|
+
- Mencione revisores relevantes
|
|
149
|
+
- Destaque mudanças críticas ou breaking changes
|
|
150
|
+
- Indique urgência se aplicável
|
|
151
|
+
|
|
152
|
+
---
|
|
153
|
+
|
|
154
|
+
**Argumentos fornecidos**:
|
|
155
|
+
|
|
156
|
+
```
|
|
157
|
+
#$ARGUMENTS
|
|
158
|
+
```
|
|
159
|
+
|
|
160
|
+
---
|
|
161
|
+
|
|
162
|
+
## 🎯 Próximos Passos
|
|
163
|
+
|
|
164
|
+
1. Aguardar revisão dos PRs
|
|
165
|
+
2. Responder comentários e fazer ajustes
|
|
166
|
+
3. Após aprovação, fazer merge na ordem recomendada
|
|
167
|
+
4. Executar `context-cli feature:end <ISSUE-ID>` para limpar o workspace
|