context-first-cli 1.4.0 → 1.5.3

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.
@@ -10,6 +10,28 @@ const promises_1 = __importDefault(require("fs/promises"));
10
10
  const inquirer_1 = __importDefault(require("inquirer"));
11
11
  const config_1 = require("../utils/config");
12
12
  const git_1 = require("../utils/git");
13
+ const ai_properties_1 = require("../utils/ai-properties");
14
+ /**
15
+ * Get orchestrator path from config
16
+ */
17
+ async function getOrchestratorPath() {
18
+ const configResult = await (0, config_1.findConfig)();
19
+ if (!configResult) {
20
+ return null;
21
+ }
22
+ const { configDir } = configResult;
23
+ return path_1.default.join(configDir, '.context-orchestrator');
24
+ }
25
+ /**
26
+ * Get sessions directory from orchestrator
27
+ */
28
+ async function getSessionsDir() {
29
+ const orchestratorPath = await getOrchestratorPath();
30
+ if (!orchestratorPath) {
31
+ return null;
32
+ }
33
+ return path_1.default.join(orchestratorPath, '.sessions');
34
+ }
13
35
  exports.featureCommands = {
14
36
  start: async (issueId, options) => {
15
37
  console.log(chalk_1.default.blue.bold(`\n🚀 Starting feature workspace for: ${issueId}\n`));
@@ -21,20 +43,46 @@ exports.featureCommands = {
21
43
  const { config, configDir } = configResult;
22
44
  console.log(chalk_1.default.gray(`✓ Found configuration in ${configDir}`));
23
45
  // Determine orchestrator path
24
- const orchestratorPath = path_1.default.join(configDir, '.context-orchestrator');
25
- // Clone orchestrator if needed
26
- if (!(await (0, config_1.pathExists)(orchestratorPath))) {
27
- console.log(chalk_1.default.blue('\n📦 Cloning orchestrator repository...'));
28
- try {
29
- await (0, git_1.ensureRepoCloned)(config.orchestratorRepo, orchestratorPath);
46
+ // If we're already in the orchestrator (has ai.properties.md), use configDir
47
+ // Otherwise, use .context-orchestrator subdirectory
48
+ let orchestratorPath;
49
+ const aiPropertiesInConfigDir = path_1.default.join(configDir, 'ai.properties.md');
50
+ if (await (0, config_1.pathExists)(aiPropertiesInConfigDir)) {
51
+ // We're already in the orchestrator
52
+ orchestratorPath = configDir;
53
+ console.log(chalk_1.default.gray('✓ Running from orchestrator directory'));
54
+ }
55
+ else {
56
+ // We're in a different repo, need to clone orchestrator
57
+ orchestratorPath = path_1.default.join(configDir, '.context-orchestrator');
58
+ if (!(await (0, config_1.pathExists)(orchestratorPath))) {
59
+ console.log(chalk_1.default.blue('\n📦 Cloning orchestrator repository...'));
60
+ try {
61
+ await (0, git_1.ensureRepoCloned)(config.orchestratorRepo, orchestratorPath);
62
+ }
63
+ catch (error) {
64
+ (0, config_1.exitWithError)(`Failed to clone orchestrator: ${error.message}`);
65
+ }
30
66
  }
31
- catch (error) {
32
- (0, config_1.exitWithError)(`Failed to clone orchestrator: ${error.message}`);
67
+ else {
68
+ console.log(chalk_1.default.gray('✓ Orchestrator repository already cloned'));
33
69
  }
34
70
  }
35
- else {
36
- console.log(chalk_1.default.gray(' Orchestrator repository already cloned'));
71
+ // Load ai.properties.md
72
+ console.log(chalk_1.default.blue('\n⚙️ Loading configuration from ai.properties.md...'));
73
+ const aiProperties = await (0, ai_properties_1.loadAiProperties)(orchestratorPath);
74
+ if (!aiProperties) {
75
+ (0, config_1.exitWithError)('Could not load ai.properties.md from orchestrator.\n' +
76
+ 'Run "context-cli config:setup" to create it.');
77
+ }
78
+ const basePath = (0, ai_properties_1.getBasePath)(aiProperties);
79
+ if (!basePath) {
80
+ (0, config_1.exitWithError)('base_path not configured in ai.properties.md.\n' +
81
+ 'Run "context-cli config:setup" to configure it.');
37
82
  }
83
+ const autoClone = (0, ai_properties_1.isAutoCloneEnabled)(aiProperties);
84
+ console.log(chalk_1.default.gray(`✓ base_path: ${basePath}`));
85
+ console.log(chalk_1.default.gray(`✓ auto_clone: ${autoClone}`));
38
86
  // Load manifest
39
87
  const manifest = await (0, config_1.loadManifest)(orchestratorPath);
40
88
  if (!manifest) {
@@ -68,47 +116,58 @@ exports.featureCommands = {
68
116
  ]);
69
117
  repoIds = selectedRepos;
70
118
  }
71
- // Create workspace directory
72
- const workspacesDir = (0, config_1.getWorkspacesDir)();
73
- await (0, config_1.ensureDir)(workspacesDir);
74
- const workspacePath = path_1.default.join(workspacesDir, issueId);
119
+ // Create workspace directory in orchestrator/.sessions/
120
+ const sessionsDir = path_1.default.join(orchestratorPath, '.sessions');
121
+ await (0, config_1.ensureDir)(sessionsDir);
122
+ const workspacePath = path_1.default.join(sessionsDir, issueId);
75
123
  if (await (0, config_1.pathExists)(workspacePath)) {
76
124
  (0, config_1.exitWithError)(`Workspace for ${issueId} already exists at ${workspacePath}`);
77
125
  }
78
126
  await (0, config_1.ensureDir)(workspacePath);
79
127
  console.log(chalk_1.default.green(`\n✓ Created workspace directory: ${workspacePath}`));
80
- // Ensure main repositories are cloned
81
- console.log(chalk_1.default.blue('\n📦 Ensuring main repositories are cloned...'));
82
- const mainReposDir = path_1.default.join(configDir, '.context-repos');
83
- await (0, config_1.ensureDir)(mainReposDir);
128
+ // Process each repository
129
+ console.log(chalk_1.default.blue('\n🌳 Setting up repositories...'));
84
130
  const selectedRepos = manifest.repositories.filter(repo => repoIds.includes(repo.id));
131
+ const branchName = `feature/${issueId}`;
85
132
  for (const repo of selectedRepos) {
86
- const mainRepoPath = path_1.default.join(mainReposDir, repo.id);
87
- if (!(await (0, config_1.pathExists)(mainRepoPath))) {
88
- console.log(chalk_1.default.blue(`\n Cloning ${repo.id}...`));
89
- try {
90
- await (0, git_1.ensureRepoCloned)(repo.url, mainRepoPath);
133
+ console.log(chalk_1.default.blue(`\n Processing ${repo.id}...`));
134
+ // Check if repo exists at base_path
135
+ const mainRepoPath = path_1.default.join(basePath, repo.id);
136
+ const repoExists = await (0, config_1.pathExists)(mainRepoPath);
137
+ if (!repoExists) {
138
+ if (autoClone) {
139
+ // Clone the repository
140
+ console.log(chalk_1.default.blue(` Cloning ${repo.id} to ${mainRepoPath}...`));
141
+ try {
142
+ await (0, git_1.ensureRepoCloned)(repo.url, mainRepoPath);
143
+ console.log(chalk_1.default.green(` ✓ Cloned ${repo.id}`));
144
+ }
145
+ catch (error) {
146
+ console.log(chalk_1.default.yellow(` ⚠ Failed to clone ${repo.id}: ${error.message}`));
147
+ console.log(chalk_1.default.yellow(` Skipping ${repo.id}...`));
148
+ continue;
149
+ }
91
150
  }
92
- catch (error) {
93
- (0, config_1.exitWithError)(`Failed to clone ${repo.id}: ${error.message}`);
151
+ else {
152
+ // Skip if auto_clone is disabled
153
+ console.log(chalk_1.default.yellow(` ⚠ Repository not found at ${mainRepoPath}`));
154
+ console.log(chalk_1.default.yellow(` Set auto_clone=true in ai.properties.md to enable automatic cloning`));
155
+ console.log(chalk_1.default.yellow(` Skipping ${repo.id}...`));
156
+ continue;
94
157
  }
95
158
  }
96
159
  else {
97
- console.log(chalk_1.default.gray(` ✓ ${repo.id} already cloned`));
160
+ console.log(chalk_1.default.gray(` Repository exists at ${mainRepoPath}`));
98
161
  }
99
- }
100
- // Create worktrees
101
- console.log(chalk_1.default.blue('\n🌳 Creating worktrees...'));
102
- const branchName = `feature/${issueId}`;
103
- for (const repo of selectedRepos) {
104
- const mainRepoPath = path_1.default.join(mainReposDir, repo.id);
162
+ // Create worktree
105
163
  const worktreePath = path_1.default.join(workspacePath, repo.id);
106
- console.log(chalk_1.default.blue(`\n Creating worktree for ${repo.id}...`));
164
+ console.log(chalk_1.default.blue(` Creating worktree at ${worktreePath}...`));
107
165
  try {
108
166
  await (0, git_1.createWorktree)(mainRepoPath, worktreePath, branchName);
167
+ console.log(chalk_1.default.green(` ✓ Created worktree for ${repo.id}`));
109
168
  }
110
169
  catch (error) {
111
- console.log(chalk_1.default.yellow(` Warning: ${error.message}`));
170
+ console.log(chalk_1.default.yellow(` ⚠ Failed to create worktree: ${error.message}`));
112
171
  }
113
172
  }
114
173
  // Save workspace metadata
@@ -130,12 +189,16 @@ exports.featureCommands = {
130
189
  },
131
190
  list: async () => {
132
191
  console.log(chalk_1.default.blue.bold('\n📋 Active Feature Workspaces\n'));
133
- const workspacesDir = (0, config_1.getWorkspacesDir)();
134
- if (!(await (0, config_1.pathExists)(workspacesDir))) {
135
- console.log(chalk_1.default.yellow('No workspaces found. Create one with "context-cli feature:start <issue-id>"'));
192
+ const sessionsDir = await getSessionsDir();
193
+ if (!sessionsDir) {
194
+ console.log(chalk_1.default.yellow('No configuration found. Run "context-cli init" first.'));
136
195
  return;
137
196
  }
138
- const entries = await promises_1.default.readdir(workspacesDir, { withFileTypes: true });
197
+ if (!(await (0, config_1.pathExists)(sessionsDir))) {
198
+ console.log(chalk_1.default.yellow('No workspaces found. Create one with "context-cli feature start <issue-id>"'));
199
+ return;
200
+ }
201
+ const entries = await promises_1.default.readdir(sessionsDir, { withFileTypes: true });
139
202
  const workspaceDirs = entries.filter(e => e.isDirectory()).map(e => e.name);
140
203
  if (workspaceDirs.length === 0) {
141
204
  console.log(chalk_1.default.yellow('No workspaces found.'));
@@ -143,7 +206,7 @@ exports.featureCommands = {
143
206
  }
144
207
  const workspaces = [];
145
208
  for (const issueId of workspaceDirs) {
146
- const workspacePath = path_1.default.join(workspacesDir, issueId);
209
+ const workspacePath = path_1.default.join(sessionsDir, issueId);
147
210
  const metadata = await (0, config_1.loadWorkspaceMetadata)(workspacePath);
148
211
  workspaces.push({ issueId, metadata });
149
212
  }
@@ -160,25 +223,33 @@ exports.featureCommands = {
160
223
  console.log(`${chalk_1.default.cyan(issueId.padEnd(14))} | ${chalk_1.default.gray('(no metadata)')}`);
161
224
  }
162
225
  }
163
- console.log(chalk_1.default.gray('\n💡 Use "context-cli feature:switch <issue-id>" to switch to a workspace'));
226
+ console.log(chalk_1.default.gray('\n💡 Use "context-cli feature switch <issue-id>" to switch to a workspace'));
164
227
  },
165
228
  switch: async (issueId) => {
166
- const workspacesDir = (0, config_1.getWorkspacesDir)();
167
- const workspacePath = path_1.default.join(workspacesDir, issueId);
229
+ const sessionsDir = await getSessionsDir();
230
+ if (!sessionsDir) {
231
+ (0, config_1.exitWithError)('No configuration found. Run "context-cli init" first.');
232
+ }
233
+ const workspacePath = path_1.default.join(sessionsDir, issueId);
168
234
  if (!(await (0, config_1.pathExists)(workspacePath))) {
169
- (0, config_1.exitWithError)(`Workspace for ${issueId} not found. Use "context-cli feature:list" to see available workspaces.`);
235
+ (0, config_1.exitWithError)(`Workspace for ${issueId} not found`);
170
236
  }
171
- console.log(chalk_1.default.green(`\n✓ Workspace found: ${issueId}`));
172
- console.log(chalk_1.default.blue('\n💡 To switch to this workspace, run:'));
173
- console.log(chalk_1.default.white(` cd ${workspacePath}`));
237
+ console.log(chalk_1.default.green(`\n✓ Workspace found: ${workspacePath}`));
238
+ console.log(chalk_1.default.blue('\n💡 To switch to this workspace:'));
239
+ console.log(chalk_1.default.gray(` cd ${workspacePath}`));
240
+ console.log(chalk_1.default.gray(' code .'));
174
241
  },
175
- end: async (issueId, options) => {
176
- console.log(chalk_1.default.blue.bold(`\n🧹 Ending feature workspace: ${issueId}\n`));
177
- const workspacesDir = (0, config_1.getWorkspacesDir)();
178
- const workspacePath = path_1.default.join(workspacesDir, issueId);
242
+ remove: async (issueId, options) => {
243
+ console.log(chalk_1.default.blue.bold(`\n🗑️ Removing workspace: ${issueId}\n`));
244
+ const sessionsDir = await getSessionsDir();
245
+ if (!sessionsDir) {
246
+ (0, config_1.exitWithError)('No configuration found. Run "context-cli init" first.');
247
+ }
248
+ const workspacePath = path_1.default.join(sessionsDir, issueId);
179
249
  if (!(await (0, config_1.pathExists)(workspacePath))) {
180
- (0, config_1.exitWithError)(`Workspace for ${issueId} not found.`);
250
+ (0, config_1.exitWithError)(`Workspace for ${issueId} not found`);
181
251
  }
252
+ // Load metadata to get repository list
182
253
  const metadata = await (0, config_1.loadWorkspaceMetadata)(workspacePath);
183
254
  if (!metadata) {
184
255
  (0, config_1.exitWithError)('Could not load workspace metadata');
@@ -189,36 +260,91 @@ exports.featureCommands = {
189
260
  {
190
261
  type: 'confirm',
191
262
  name: 'confirm',
192
- message: `Are you sure you want to end workspace ${issueId}? This will remove all worktrees.`,
263
+ message: `Are you sure you want to remove workspace ${issueId}?`,
193
264
  default: false,
194
265
  },
195
266
  ]);
196
267
  if (!confirm) {
197
- console.log(chalk_1.default.yellow('✋ Operation cancelled'));
268
+ console.log(chalk_1.default.yellow('✋ Removal cancelled'));
198
269
  return;
199
270
  }
200
271
  }
201
- // Find configuration to locate main repos
202
- const configResult = await (0, config_1.findConfig)();
203
- if (!configResult) {
204
- (0, config_1.exitWithError)('No .contextrc.json found');
205
- }
206
- const { configDir } = configResult;
207
- const mainReposDir = path_1.default.join(configDir, '.context-repos');
208
272
  // Remove worktrees
209
- console.log(chalk_1.default.blue('🌳 Removing worktrees...'));
210
- for (const repoId of metadata.repositories) {
211
- const mainRepoPath = path_1.default.join(mainReposDir, repoId);
212
- const worktreePath = path_1.default.join(workspacePath, repoId);
213
- if (await (0, config_1.pathExists)(mainRepoPath)) {
214
- console.log(chalk_1.default.gray(` Removing worktree for ${repoId}...`));
215
- await (0, git_1.removeWorktree)(mainRepoPath, worktreePath);
273
+ console.log(chalk_1.default.blue('Removing worktrees...'));
274
+ // Load ai.properties to get base_path
275
+ const configResult = await (0, config_1.findConfig)();
276
+ if (configResult) {
277
+ const { configDir } = configResult;
278
+ const orchestratorPath = path_1.default.join(configDir, '.context-orchestrator');
279
+ const aiProperties = await (0, ai_properties_1.loadAiProperties)(orchestratorPath);
280
+ const basePath = (0, ai_properties_1.getBasePath)(aiProperties);
281
+ if (basePath) {
282
+ for (const repoId of metadata.repositories) {
283
+ const worktreePath = path_1.default.join(workspacePath, repoId);
284
+ const mainRepoPath = path_1.default.join(basePath, repoId);
285
+ if (await (0, config_1.pathExists)(worktreePath)) {
286
+ try {
287
+ console.log(chalk_1.default.gray(` Removing worktree for ${repoId}...`));
288
+ await (0, git_1.removeWorktree)(mainRepoPath, worktreePath);
289
+ }
290
+ catch (error) {
291
+ console.log(chalk_1.default.yellow(` Warning: ${error.message}`));
292
+ }
293
+ }
294
+ }
216
295
  }
217
296
  }
218
297
  // Remove workspace directory
219
- console.log(chalk_1.default.blue('\n🗑️ Removing workspace directory...'));
298
+ console.log(chalk_1.default.blue('Removing workspace directory...'));
220
299
  await promises_1.default.rm(workspacePath, { recursive: true, force: true });
221
- console.log(chalk_1.default.green.bold('\n✅ Workspace ended successfully!'));
300
+ console.log(chalk_1.default.green(`\n✅ Workspace ${issueId} removed successfully`));
301
+ },
302
+ status: async (issueId) => {
303
+ const sessionsDir = await getSessionsDir();
304
+ if (!sessionsDir) {
305
+ (0, config_1.exitWithError)('No configuration found. Run "context-cli init" first.');
306
+ }
307
+ if (issueId) {
308
+ // Show status for specific workspace
309
+ const workspacePath = path_1.default.join(sessionsDir, issueId);
310
+ if (!(await (0, config_1.pathExists)(workspacePath))) {
311
+ (0, config_1.exitWithError)(`Workspace for ${issueId} not found`);
312
+ }
313
+ const metadata = await (0, config_1.loadWorkspaceMetadata)(workspacePath);
314
+ if (!metadata) {
315
+ (0, config_1.exitWithError)('Could not load workspace metadata');
316
+ }
317
+ console.log(chalk_1.default.blue.bold(`\n📊 Workspace Status: ${issueId}\n`));
318
+ console.log(chalk_1.default.gray(`Created: ${new Date(metadata.createdAt).toLocaleString()}`));
319
+ console.log(chalk_1.default.gray(`Last Updated: ${new Date(metadata.lastUpdated).toLocaleString()}`));
320
+ console.log(chalk_1.default.gray(`Status: ${metadata.status}`));
321
+ console.log(chalk_1.default.gray(`\nRepositories:`));
322
+ for (const repoId of metadata.repositories) {
323
+ const worktreePath = path_1.default.join(workspacePath, repoId);
324
+ const exists = await (0, config_1.pathExists)(worktreePath);
325
+ const status = exists ? chalk_1.default.green('✓') : chalk_1.default.red('✗');
326
+ console.log(` ${status} ${repoId}`);
327
+ }
328
+ }
329
+ else {
330
+ // Show current workspace status (if in workspace)
331
+ const cwd = process.cwd();
332
+ // Check if we're in a .sessions workspace
333
+ if (cwd.includes('.sessions')) {
334
+ const parts = cwd.split(path_1.default.sep);
335
+ const sessionIndex = parts.indexOf('.sessions');
336
+ if (sessionIndex >= 0 && parts.length > sessionIndex + 1) {
337
+ const currentIssueId = parts[sessionIndex + 1];
338
+ await exports.featureCommands.status(currentIssueId);
339
+ return;
340
+ }
341
+ }
342
+ console.log(chalk_1.default.yellow('Not in a feature workspace. Use "context-cli feature list" to see all workspaces.'));
343
+ }
344
+ },
345
+ end: async (issueId, options) => {
346
+ // Alias for remove command
347
+ await exports.featureCommands.remove(issueId, options);
222
348
  },
223
349
  };
224
350
  //# sourceMappingURL=feature.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"feature.js","sourceRoot":"","sources":["../../src/commands/feature.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"feature.js","sourceRoot":"","sources":["../../src/commands/feature.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"init.d.ts","sourceRoot":"","sources":["../../src/commands/init.ts"],"names":[],"mappings":"AAWA,wBAAsB,WAAW,kBA2FhC"}
1
+ {"version":3,"file":"init.d.ts","sourceRoot":"","sources":["../../src/commands/init.ts"],"names":[],"mappings":"AAWA,wBAAsB,WAAW,kBA4FhC"}
@@ -84,8 +84,9 @@ async function initCommand() {
84
84
  console.log(chalk_1.default.gray(` AI Provider: ${config.aiProvider}`));
85
85
  console.log(chalk_1.default.gray(` Commands Directory: ${config.commandsDir}`));
86
86
  console.log(chalk_1.default.blue('\n💡 Next steps:'));
87
- console.log(chalk_1.default.gray(' 1. Run "context-cli link" to create command delegation files'));
88
- console.log(chalk_1.default.gray(' 2. Run "context-cli feature:start <issue-id>" to begin working on a feature'));
87
+ console.log(chalk_1.default.gray(' 1. Run "context-cli config:setup" to configure ai.properties.md in orchestrator'));
88
+ console.log(chalk_1.default.gray(' 2. Run "context-cli add:repo" to add your code repositories'));
89
+ console.log(chalk_1.default.gray(' 3. Run "context-cli feature start <issue-id>" to begin working on a feature'));
89
90
  }
90
91
  catch (error) {
91
92
  console.error(chalk_1.default.red('\n❌ Error during initialization:'), error);
@@ -1 +1 @@
1
- {"version":3,"file":"init.js","sourceRoot":"","sources":["../../src/commands/init.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"init.js","sourceRoot":"","sources":["../../src/commands/init.ts"],"names":[],"mappings":"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"}
@@ -140,9 +140,20 @@ Se houver desvios justificados:
140
140
  - **Documentação**: [Onde foi documentado]
141
141
  ```
142
142
 
143
- ## 📄 Relatório de Validação
143
+ ## 📄 Salvamento do Relatório de Validação
144
144
 
145
- Crie `./.sessions/<ISSUE-ID>/check-report.md`:
145
+ **PRIORIDADE 1: Usar MCP (Model Context Protocol)**
146
+
147
+ - Leia `ai.properties.md` do orchestrator para identificar o `task_management_system`
148
+ - Use o MCP apropriado para adicionar o relatório à issue:
149
+ - Adicione como comentário na issue
150
+ - Atualize labels/tags conforme resultado (ex: "validated", "needs-adjustment", "blocked")
151
+ - Se houver conflitos críticos, atualize status da issue
152
+ - Informe ao usuário: "✅ Relatório de validação adicionado à issue [ID]"
153
+
154
+ **FALLBACK: Criar arquivo .md apenas se MCP falhar**
155
+
156
+ Se o MCP não estiver disponível ou falhar, crie `./.sessions/<ISSUE-ID>/check-report.md`:
146
157
 
147
158
  ```markdown
148
159
  # Relatório de Validação - [ISSUE-ID]
@@ -174,14 +185,17 @@ Crie `./.sessions/<ISSUE-ID>/check-report.md`:
174
185
  - [ ] Bloqueado
175
186
  ```
176
187
 
188
+ Informe ao usuário: "⚠️ Relatório salvo localmente em .sessions/ (task manager não disponível)"
189
+
177
190
  ## 🚨 Ação em Caso de Conflitos
178
191
 
179
192
  Se conflitos críticos forem encontrados:
180
193
  1. 🛑 **PARE** o processo atual
181
194
  2. 📝 **DOCUMENTE** todos os conflitos
182
195
  3. 💬 **ALERTE** o usuário e stakeholders
183
- 4. 🔄 **AJUSTE** o plano/implementação conforme necessário
184
- 5. **REVALIDE** após ajustes
196
+ 4. **Via MCP**: Atualize status da issue para "Bloqueado" ou "Requer Ajustes"
197
+ 5. 🔄 **AJUSTE** o plano/implementação conforme necessário
198
+ 6. ✅ **REVALIDE** após ajustes
185
199
 
186
200
  ---
187
201
 
@@ -6,7 +6,7 @@ Você é um especialista em produto responsável por coletar e documentar novas
6
6
 
7
7
  **Este comando é APENAS para planejamento e documentação:**
8
8
  - ✅ Coletar e entender requisitos
9
- - ✅ Criar issue no task manager (se configurado)
9
+ - ✅ Criar issue no task manager via MCP
10
10
  - ✅ Fazer perguntas de esclarecimento
11
11
  - ❌ **NÃO implementar código**
12
12
  - ❌ **NÃO fazer edits em arquivos de código**
@@ -24,7 +24,7 @@ Antes de iniciar, carregue o contexto consultando:
24
24
 
25
25
  ## Seu Objetivo
26
26
 
27
- Entender a solicitação do usuário e capturá-la como issue para refinamento posterior.
27
+ Entender a solicitação do usuário e capturá-la como issue no task manager (via MCP).
28
28
 
29
29
  **Nesta fase, você NÃO precisa:**
30
30
  - ❌ Escrever especificação completa
@@ -80,13 +80,29 @@ Apenas certifique-se de que a ideia esteja **adequadamente compreendida**.
80
80
  - Faça ajustes conforme feedback
81
81
  - Obtenha aprovação final
82
82
 
83
- 4. **Salvamento**
84
- - **Se task manager estiver configurado**:
85
- - Use o MCP apropriado para criar a issue (ex: Linear, Jira)
86
- - Todos os dados ficam no task manager
87
- - **Se não houver task manager**:
88
- - Crie arquivo em `./.sessions/<ISSUE-ID>/collect.md`
89
- - Inclua data, tipo e conteúdo completo
83
+ 4. **Salvamento da Issue**
84
+
85
+ **PRIORIDADE 1: Usar MCP (Model Context Protocol)**
86
+
87
+ Verifique se MCP configurado para task manager:
88
+ - Leia `ai.properties.md` do orchestrator para identificar o `task_management_system`
89
+ - Se `task_management_system=jira`: Use MCP do Jira para criar a issue
90
+ - Se `task_management_system=linear`: Use MCP do Linear para criar a issue
91
+ - Se `task_management_system=github`: Use MCP do GitHub para criar a issue
92
+
93
+ **Ao usar MCP:**
94
+ - Crie a issue diretamente no task manager
95
+ - Obtenha o ID da issue criada (ex: FIN-123, LIN-456)
96
+ - Informe ao usuário: "✅ Issue [ID] criada no [task manager]"
97
+ - **NÃO crie arquivo .md**
98
+
99
+ **FALLBACK: Criar arquivo .md apenas se MCP falhar**
100
+
101
+ Se o MCP não estiver disponível ou falhar:
102
+ - Crie arquivo em `./.sessions/<ISSUE-ID>/collect.md`
103
+ - Use formato de ID manual: `LOCAL-001`, `LOCAL-002`, etc.
104
+ - Inclua data, tipo e conteúdo completo
105
+ - Informe ao usuário: "⚠️ Issue salva localmente em .sessions/ (task manager não disponível)"
90
106
 
91
107
  ## Perguntas de Esclarecimento
92
108
 
@@ -28,11 +28,19 @@ Refinar a issue coletada, esclarecendo:
28
28
 
29
29
  ### 1. Carregar Issue
30
30
 
31
- **Se task manager configurado**:
32
- - Leia a issue usando o MCP apropriado
31
+ **PRIORIDADE 1: Usar MCP (Model Context Protocol)**
32
+
33
+ - Leia `ai.properties.md` do orchestrator para identificar o `task_management_system`
34
+ - Use o MCP apropriado para buscar a issue:
35
+ - `task_management_system=jira`: Use MCP do Jira
36
+ - `task_management_system=linear`: Use MCP do Linear
37
+ - `task_management_system=github`: Use MCP do GitHub
38
+ - Carregue todos os dados da issue (título, descrição, labels, etc.)
39
+
40
+ **FALLBACK: Se MCP não estiver disponível ou falhar**
33
41
 
34
- **Senão**:
35
42
  - Leia `./.sessions/<ISSUE-ID>/collect.md`
43
+ - Se o arquivo não existir, informe o erro ao usuário
36
44
 
37
45
  ### 2. Análise de Escopo
38
46
 
@@ -110,9 +118,19 @@ Forneça estimativa de esforço:
110
118
 
111
119
  Liste perguntas que ainda precisam ser respondidas antes de iniciar a implementação.
112
120
 
113
- ## 📄 Documentação do Refinamento
121
+ ## 📄 Salvamento do Refinamento
122
+
123
+ **PRIORIDADE 1: Atualizar via MCP**
114
124
 
115
- Crie/atualize `./.sessions/<ISSUE-ID>/refine.md`:
125
+ - Use o MCP do task manager para atualizar a issue
126
+ - Adicione os critérios de aceitação como comentário ou campo customizado
127
+ - Atualize labels/tags se necessário (ex: "refined", "ready-for-spec")
128
+ - Adicione estimativa se o task manager suportar
129
+ - Informe ao usuário: "✅ Issue [ID] atualizada com refinamento"
130
+
131
+ **FALLBACK: Criar arquivo .md apenas se MCP falhar**
132
+
133
+ Se o MCP não estiver disponível ou falhar, crie/atualize `./.sessions/<ISSUE-ID>/refine.md`:
116
134
 
117
135
  ```markdown
118
136
  # [Título da Issue] - Refinamento
@@ -153,6 +171,8 @@ Crie/atualize `./.sessions/<ISSUE-ID>/refine.md`:
153
171
  - [Risco 2 e mitigação]
154
172
  ```
155
173
 
174
+ Informe ao usuário: "⚠️ Refinamento salvo localmente em .sessions/ (task manager não disponível)"
175
+
156
176
  ## 🔍 Validação
157
177
 
158
178
  Valide o refinamento contra:
@@ -203,12 +203,20 @@ Justificativa: [Por que ficam para depois]
203
203
 
204
204
  ## 📄 Salvamento do PRD
205
205
 
206
- **Se task manager configurado**:
207
- - Adicione o PRD como comentário na issue
208
- - Ou anexe como arquivo
206
+ **PRIORIDADE 1: Usar MCP (Model Context Protocol)**
209
207
 
210
- **Senão**:
208
+ - Leia `ai.properties.md` do orchestrator para identificar o `task_management_system`
209
+ - Use o MCP apropriado para atualizar a issue com o PRD:
210
+ - Adicione o PRD completo como comentário na issue
211
+ - Ou anexe como arquivo (se o task manager suportar)
212
+ - Atualize status/labels (ex: "spec-ready", "ready-for-dev")
213
+ - Informe ao usuário: "✅ PRD adicionado à issue [ID]"
214
+
215
+ **FALLBACK: Criar arquivo .md apenas se MCP falhar**
216
+
217
+ Se o MCP não estiver disponível ou falhar:
211
218
  - Salve em `./.sessions/<ISSUE-ID>/prd.md`
219
+ - Informe ao usuário: "⚠️ PRD salvo localmente em .sessions/ (task manager não disponível)"
212
220
 
213
221
  ## 🔍 Revisão e Aprovação
214
222
 
@@ -216,7 +224,8 @@ Antes de finalizar:
216
224
  1. Revise o PRD com stakeholders
217
225
  2. Valide contra metaspecs (se disponíveis)
218
226
  3. Obtenha aprovação para iniciar implementação
219
- 4. Atualize a issue no task manager com status "Pronto para Desenvolvimento"
227
+ 4. **Via MCP**: Atualize a issue no task manager com status "Pronto para Desenvolvimento"
228
+ 5. **Fallback**: Documente aprovação em `./.sessions/<ISSUE-ID>/prd.md`
220
229
 
221
230
  ---
222
231