timsquad 2.0.0 → 2.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.
Files changed (56) hide show
  1. package/README.md +688 -154
  2. package/dist/commands/feedback.d.ts.map +1 -1
  3. package/dist/commands/feedback.js +21 -2
  4. package/dist/commands/feedback.js.map +1 -1
  5. package/dist/commands/git/commit.d.ts.map +1 -1
  6. package/dist/commands/git/commit.js +1 -4
  7. package/dist/commands/git/commit.js.map +1 -1
  8. package/dist/commands/improve.d.ts +3 -0
  9. package/dist/commands/improve.d.ts.map +1 -0
  10. package/dist/commands/improve.js +286 -0
  11. package/dist/commands/improve.js.map +1 -0
  12. package/dist/commands/init.js +3 -2
  13. package/dist/commands/init.js.map +1 -1
  14. package/dist/commands/log.d.ts.map +1 -1
  15. package/dist/commands/log.js +202 -2
  16. package/dist/commands/log.js.map +1 -1
  17. package/dist/commands/metrics.d.ts.map +1 -1
  18. package/dist/commands/metrics.js +404 -99
  19. package/dist/commands/metrics.js.map +1 -1
  20. package/dist/commands/retro.d.ts.map +1 -1
  21. package/dist/commands/retro.js +454 -54
  22. package/dist/commands/retro.js.map +1 -1
  23. package/dist/commands/session.d.ts +3 -0
  24. package/dist/commands/session.d.ts.map +1 -0
  25. package/dist/commands/session.js +346 -0
  26. package/dist/commands/session.js.map +1 -0
  27. package/dist/index.js +4 -0
  28. package/dist/index.js.map +1 -1
  29. package/dist/lib/template.d.ts.map +1 -1
  30. package/dist/lib/template.js +66 -1
  31. package/dist/lib/template.js.map +1 -1
  32. package/dist/types/feedback.d.ts +52 -1
  33. package/dist/types/feedback.d.ts.map +1 -1
  34. package/dist/types/feedback.js +0 -3
  35. package/dist/types/feedback.js.map +1 -1
  36. package/dist/types/project.d.ts +1 -1
  37. package/dist/types/project.d.ts.map +1 -1
  38. package/dist/types/project.js +3 -1
  39. package/dist/types/project.js.map +1 -1
  40. package/package.json +1 -1
  41. package/templates/common/claude/agents/tsq-dba.md +21 -0
  42. package/templates/common/claude/agents/tsq-designer.md +19 -0
  43. package/templates/common/claude/agents/tsq-developer.md +59 -0
  44. package/templates/common/claude/agents/tsq-planner.md +101 -1
  45. package/templates/common/claude/agents/tsq-prompter.md +20 -0
  46. package/templates/common/claude/agents/tsq-qa.md +38 -4
  47. package/templates/common/claude/agents/tsq-retro.md +25 -0
  48. package/templates/common/claude/agents/tsq-security.md +31 -0
  49. package/templates/common/claude/hooks/auto-metrics.sh +165 -0
  50. package/templates/common/claude/hooks/auto-worklog.sh +245 -0
  51. package/templates/common/claude/hooks/event-logger.sh +208 -0
  52. package/templates/common/claude/settings.json +86 -0
  53. package/templates/common/config.template.yaml +2 -1
  54. package/templates/common/timsquad/process/phase-checklist.yaml +174 -0
  55. package/templates/common/timsquad/process/state-machine.xml +12 -0
  56. package/templates/common/timsquad/process/workflow-base.xml +124 -0
@@ -1 +1 @@
1
- {"version":3,"file":"metrics.js","sourceRoot":"","sources":["../../src/commands/metrics.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"metrics.js","sourceRoot":"","sources":["../../src/commands/metrics.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"retro.d.ts","sourceRoot":"","sources":["../../src/commands/retro.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAgBpC,wBAAgB,oBAAoB,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,CAkF3D"}
1
+ {"version":3,"file":"retro.d.ts","sourceRoot":"","sources":["../../src/commands/retro.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAoBpC,wBAAgB,oBAAoB,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,CA8G3D"}
@@ -1,13 +1,28 @@
1
1
  import path from 'path';
2
2
  import fs from 'fs-extra';
3
+ import { execSync } from 'child_process';
3
4
  import { colors, printHeader, printError, printSuccess, printKeyValue } from '../utils/colors.js';
4
- import { findProjectRoot } from '../lib/project.js';
5
+ import { findProjectRoot, getProjectInfo } from '../lib/project.js';
5
6
  import { exists, writeFile, listFiles } from '../utils/fs.js';
6
- import { getTimestamp } from '../utils/date.js';
7
+ import { getTimestamp, getDateString } from '../utils/date.js';
8
+ import { promptText, promptConfirm } from '../utils/prompts.js';
7
9
  export function registerRetroCommand(program) {
8
10
  const retroCmd = program
9
11
  .command('retro')
10
12
  .description('Retrospective learning system');
13
+ // tsq retro phase <phase-name>
14
+ retroCmd
15
+ .command('phase <phase>')
16
+ .description('Run phase-level retrospective (saves locally)')
17
+ .action(async (phase) => {
18
+ try {
19
+ await runPhaseRetro(phase);
20
+ }
21
+ catch (error) {
22
+ printError(error.message);
23
+ process.exit(1);
24
+ }
25
+ });
11
26
  // tsq retro start
12
27
  retroCmd
13
28
  .command('start')
@@ -50,10 +65,11 @@ export function registerRetroCommand(program) {
50
65
  // tsq retro report
51
66
  retroCmd
52
67
  .command('report')
53
- .description('Generate retrospective report')
54
- .action(async () => {
68
+ .description('Generate aggregated report + create GitHub Issue')
69
+ .option('--local', 'Skip GitHub Issue creation')
70
+ .action(async (options) => {
55
71
  try {
56
- await generateReport();
72
+ await generateReport(options.local);
57
73
  }
58
74
  catch (error) {
59
75
  printError(error.message);
@@ -73,6 +89,20 @@ export function registerRetroCommand(program) {
73
89
  process.exit(1);
74
90
  }
75
91
  });
92
+ // tsq retro auto
93
+ retroCmd
94
+ .command('auto')
95
+ .description('Run full retrospective cycle automatically (start → collect → report → apply)')
96
+ .option('--local', 'Skip GitHub Issue creation')
97
+ .action(async (options) => {
98
+ try {
99
+ await runAutoRetro(options.local);
100
+ }
101
+ catch (error) {
102
+ printError(error.message);
103
+ process.exit(1);
104
+ }
105
+ });
76
106
  // tsq retro status
77
107
  retroCmd
78
108
  .command('status')
@@ -87,6 +117,61 @@ export function registerRetroCommand(program) {
87
117
  }
88
118
  });
89
119
  }
120
+ // ============================================================
121
+ // Phase-level retro
122
+ // ============================================================
123
+ const VALID_PHASES = ['planning', 'design', 'implementation', 'review', 'security', 'deployment'];
124
+ async function runPhaseRetro(phase) {
125
+ if (!VALID_PHASES.includes(phase)) {
126
+ throw new Error(`Invalid phase: ${phase}. Valid: ${VALID_PHASES.join(', ')}`);
127
+ }
128
+ const projectRoot = await findProjectRoot();
129
+ if (!projectRoot) {
130
+ throw new Error('Not a TimSquad project');
131
+ }
132
+ const project = await getProjectInfo(projectRoot);
133
+ printHeader(`Phase Retrospective: ${phase}`);
134
+ console.log(colors.dim('KPT 프레임워크로 Phase 회고를 진행합니다.\n'));
135
+ // Interactive KPT input
136
+ console.log(colors.header('Keep (잘 된 것)'));
137
+ const keepInput = await promptText('쉼표로 구분하여 입력:', '');
138
+ const keep = keepInput.split(',').map(s => s.trim()).filter(Boolean);
139
+ console.log('');
140
+ console.log(colors.header('Problem (문제점)'));
141
+ const problemInput = await promptText('쉼표로 구분하여 입력:', '');
142
+ const problem = problemInput.split(',').map(s => s.trim()).filter(Boolean);
143
+ console.log('');
144
+ console.log(colors.header('Try (다음에 시도할 것)'));
145
+ const tryInput = await promptText('쉼표로 구분하여 입력:', '');
146
+ const tryNext = tryInput.split(',').map(s => s.trim()).filter(Boolean);
147
+ // Create phase retro entry
148
+ const entry = {
149
+ id: `PR-${phase}-${Date.now()}`,
150
+ timestamp: getTimestamp(),
151
+ project: project.name,
152
+ phase,
153
+ keep,
154
+ problem,
155
+ try_next: tryNext,
156
+ tags: [phase, project.type],
157
+ };
158
+ // Save locally
159
+ const feedbackDir = path.join(projectRoot, '.timsquad', 'feedback');
160
+ await fs.ensureDir(feedbackDir);
161
+ const fileName = `phase-${phase}-${getDateString()}.json`;
162
+ await fs.writeJson(path.join(feedbackDir, fileName), entry, { spaces: 2 });
163
+ console.log('');
164
+ printSuccess(`Phase 회고 저장: .timsquad/feedback/${fileName}`);
165
+ // Show summary
166
+ console.log('');
167
+ printKeyValue('Keep', keep.length > 0 ? keep.join(', ') : '(없음)');
168
+ printKeyValue('Problem', problem.length > 0 ? problem.join(', ') : '(없음)');
169
+ printKeyValue('Try', tryNext.length > 0 ? tryNext.join(', ') : '(없음)');
170
+ console.log(colors.dim('\n전체 리포트 생성: tsq retro report'));
171
+ }
172
+ // ============================================================
173
+ // Existing retro flow
174
+ // ============================================================
90
175
  async function getRetroState(projectRoot) {
91
176
  const statePath = path.join(projectRoot, '.timsquad', 'retrospective', 'state.json');
92
177
  if (!await exists(statePath)) {
@@ -180,63 +265,230 @@ async function analyzeRetro() {
180
265
  printSuccess('Analysis phase completed (manual review mode)');
181
266
  console.log(colors.dim('\nNext: Run "tsq retro report" to generate report'));
182
267
  }
183
- async function generateReport() {
268
+ // ============================================================
269
+ // Aggregated report + GitHub Issue
270
+ // ============================================================
271
+ async function loadFeedbackEntries(projectRoot) {
272
+ const feedbackDir = path.join(projectRoot, '.timsquad', 'feedback');
273
+ if (!await exists(feedbackDir))
274
+ return [];
275
+ const files = await listFiles('FB-*.json', feedbackDir);
276
+ const entries = [];
277
+ for (const file of files) {
278
+ try {
279
+ const data = await fs.readJson(path.join(feedbackDir, file));
280
+ entries.push(data);
281
+ }
282
+ catch {
283
+ // skip invalid files
284
+ }
285
+ }
286
+ return entries.sort((a, b) => a.timestamp.localeCompare(b.timestamp));
287
+ }
288
+ async function loadPhaseRetros(projectRoot) {
289
+ const feedbackDir = path.join(projectRoot, '.timsquad', 'feedback');
290
+ if (!await exists(feedbackDir))
291
+ return [];
292
+ const files = await listFiles('phase-*.json', feedbackDir);
293
+ const entries = [];
294
+ for (const file of files) {
295
+ try {
296
+ const data = await fs.readJson(path.join(feedbackDir, file));
297
+ entries.push(data);
298
+ }
299
+ catch {
300
+ // skip invalid files
301
+ }
302
+ }
303
+ return entries.sort((a, b) => a.timestamp.localeCompare(b.timestamp));
304
+ }
305
+ function buildAggregatedReport(project, phases, feedbacks) {
306
+ const byLevel = {};
307
+ const byPhase = {};
308
+ const issueCount = {};
309
+ for (const fb of feedbacks) {
310
+ const levelKey = `Level ${fb.level ?? '?'}`;
311
+ byLevel[levelKey] = (byLevel[levelKey] || 0) + 1;
312
+ if (fb.phase) {
313
+ byPhase[fb.phase] = (byPhase[fb.phase] || 0) + 1;
314
+ }
315
+ if (fb.trigger) {
316
+ issueCount[fb.trigger] = (issueCount[fb.trigger] || 0) + 1;
317
+ }
318
+ }
319
+ for (const pr of phases) {
320
+ byPhase[pr.phase] = (byPhase[pr.phase] || 0) + pr.problem.length;
321
+ for (const p of pr.problem) {
322
+ issueCount[p] = (issueCount[p] || 0) + 1;
323
+ }
324
+ }
325
+ const topIssues = Object.entries(issueCount)
326
+ .sort(([, a], [, b]) => b - a)
327
+ .slice(0, 5)
328
+ .map(([issue]) => issue);
329
+ const timestamps = [
330
+ ...phases.map(p => p.timestamp),
331
+ ...feedbacks.map(f => f.timestamp),
332
+ ].sort();
333
+ return {
334
+ project: project.name,
335
+ generated_at: getTimestamp(),
336
+ period: {
337
+ start: timestamps[0] || getTimestamp(),
338
+ end: timestamps[timestamps.length - 1] || getTimestamp(),
339
+ },
340
+ phases,
341
+ feedbacks,
342
+ summary: {
343
+ total_feedbacks: feedbacks.length,
344
+ by_level: byLevel,
345
+ by_phase: byPhase,
346
+ top_issues: topIssues,
347
+ },
348
+ };
349
+ }
350
+ function renderReportMarkdown(report) {
351
+ const lines = [];
352
+ lines.push(`# [retro] ${report.project} - Retrospective Report`);
353
+ lines.push('');
354
+ lines.push(`> Generated: ${report.generated_at}`);
355
+ lines.push(`> Period: ${report.period.start.split('T')[0]} ~ ${report.period.end.split('T')[0]}`);
356
+ lines.push('');
357
+ // Summary
358
+ lines.push('## Summary');
359
+ lines.push('');
360
+ lines.push('| Metric | Value |');
361
+ lines.push('|--------|-------|');
362
+ lines.push(`| Phase retros | ${report.phases.length} |`);
363
+ lines.push(`| Feedbacks | ${report.summary.total_feedbacks} |`);
364
+ for (const [level, count] of Object.entries(report.summary.by_level)) {
365
+ lines.push(`| ${level} | ${count} |`);
366
+ }
367
+ lines.push('');
368
+ // Top issues
369
+ if (report.summary.top_issues.length > 0) {
370
+ lines.push('## Top Issues');
371
+ lines.push('');
372
+ for (const issue of report.summary.top_issues) {
373
+ lines.push(`- ${issue}`);
374
+ }
375
+ lines.push('');
376
+ }
377
+ // Phase retros
378
+ if (report.phases.length > 0) {
379
+ lines.push('## Phase Retrospectives');
380
+ lines.push('');
381
+ for (const phase of report.phases) {
382
+ lines.push(`### ${phase.phase} (${phase.timestamp.split('T')[0]})`);
383
+ lines.push('');
384
+ if (phase.keep.length > 0) {
385
+ lines.push('**Keep:**');
386
+ for (const k of phase.keep)
387
+ lines.push(`- ${k}`);
388
+ lines.push('');
389
+ }
390
+ if (phase.problem.length > 0) {
391
+ lines.push('**Problem:**');
392
+ for (const p of phase.problem)
393
+ lines.push(`- ${p}`);
394
+ lines.push('');
395
+ }
396
+ if (phase.try_next.length > 0) {
397
+ lines.push('**Try:**');
398
+ for (const t of phase.try_next)
399
+ lines.push(`- ${t}`);
400
+ lines.push('');
401
+ }
402
+ }
403
+ }
404
+ // Feedbacks
405
+ if (report.feedbacks.length > 0) {
406
+ lines.push('## Feedbacks');
407
+ lines.push('');
408
+ lines.push('| Date | Level | Trigger | Message |');
409
+ lines.push('|------|:-----:|---------|---------|');
410
+ for (const fb of report.feedbacks) {
411
+ const date = fb.timestamp.split('T')[0];
412
+ lines.push(`| ${date} | ${fb.level ?? '-'} | ${fb.trigger ?? '-'} | ${fb.message.substring(0, 60)} |`);
413
+ }
414
+ lines.push('');
415
+ }
416
+ lines.push('## Improvement Suggestions');
417
+ lines.push('');
418
+ for (const issue of report.summary.top_issues) {
419
+ lines.push(`- [ ] Address: ${issue}`);
420
+ }
421
+ lines.push('');
422
+ lines.push('---');
423
+ lines.push('Generated by TimSquad v2.0.0');
424
+ return lines.join('\n');
425
+ }
426
+ function createGitHubIssue(title, body) {
427
+ try {
428
+ execSync('gh --version', { stdio: 'ignore' });
429
+ // Write body to temp file to avoid shell escaping issues
430
+ const tmpFile = path.join('/tmp', `tsq-retro-${Date.now()}.md`);
431
+ fs.writeFileSync(tmpFile, body, 'utf-8');
432
+ const result = execSync(`gh issue create --repo ericson/timsquad --title "${title}" --label "retro-feedback" --body-file "${tmpFile}"`, { encoding: 'utf-8', stdio: ['pipe', 'pipe', 'pipe'] });
433
+ fs.removeSync(tmpFile);
434
+ return result.trim();
435
+ }
436
+ catch {
437
+ return null;
438
+ }
439
+ }
440
+ async function generateReport(localOnly) {
184
441
  const projectRoot = await findProjectRoot();
185
442
  if (!projectRoot) {
186
443
  throw new Error('Not a TimSquad project');
187
444
  }
445
+ const project = await getProjectInfo(projectRoot);
446
+ printHeader('Generating Aggregated Report');
447
+ // Load all local feedback
448
+ const phases = await loadPhaseRetros(projectRoot);
449
+ const feedbacks = await loadFeedbackEntries(projectRoot);
450
+ if (phases.length === 0 && feedbacks.length === 0) {
451
+ console.log(colors.warning('\n⚠ No feedback data found.'));
452
+ console.log(colors.dim(' Run "tsq retro phase <name>" or "tsq feedback <message>" first.\n'));
453
+ return;
454
+ }
455
+ printKeyValue('Phase retros', String(phases.length));
456
+ printKeyValue('Feedbacks', String(feedbacks.length));
457
+ // Build aggregated report
458
+ const report = buildAggregatedReport(project, phases, feedbacks);
459
+ const markdown = renderReportMarkdown(report);
460
+ // Save report locally
188
461
  const state = await getRetroState(projectRoot);
189
- if (state.status !== 'reporting') {
190
- throw new Error('Analyze patterns first. Run "tsq retro analyze"');
462
+ const cycleNum = state.currentCycle > 0 ? state.currentCycle : 1;
463
+ const reportDir = path.join(projectRoot, '.timsquad', 'retrospective', 'cycles');
464
+ await fs.ensureDir(reportDir);
465
+ const reportPath = path.join(reportDir, `cycle-${cycleNum}.md`);
466
+ await writeFile(reportPath, markdown);
467
+ const jsonPath = path.join(reportDir, `cycle-${cycleNum}.json`);
468
+ await fs.writeJson(jsonPath, report, { spaces: 2 });
469
+ console.log('');
470
+ printSuccess(`Report saved: cycle-${cycleNum}.md`);
471
+ console.log(colors.path(` ${reportPath}`));
472
+ // Create GitHub Issue (unless --local)
473
+ if (!localOnly) {
474
+ console.log('');
475
+ const shouldCreate = await promptConfirm('GitHub Issue를 생성하시겠습니까?', true);
476
+ if (shouldCreate) {
477
+ const issueTitle = `[retro] ${project.name} - Cycle ${cycleNum}`;
478
+ const issueUrl = createGitHubIssue(issueTitle, markdown);
479
+ if (issueUrl) {
480
+ console.log('');
481
+ printSuccess(`GitHub Issue created: ${issueUrl}`);
482
+ }
483
+ else {
484
+ console.log(colors.warning('\n⚠ GitHub Issue 생성 실패 (gh CLI 확인 필요)'));
485
+ console.log(colors.dim(' 수동 생성: gh issue create --repo ericson/timsquad'));
486
+ }
487
+ }
191
488
  }
192
- // Load metrics
193
- const metricsPath = path.join(projectRoot, '.timsquad', 'retrospective', 'metrics', `cycle-${state.currentCycle}.json`);
194
- const metrics = await fs.readJson(metricsPath);
195
- // Generate report
196
- const report = `# Cycle ${state.currentCycle} Retrospective Report
197
-
198
- ## Period
199
- - Started: ${state.startedAt}
200
- - Collected: ${state.collectedAt}
201
- - Generated: ${getTimestamp()}
202
-
203
- ## Metrics Summary
204
-
205
- | Metric | Value |
206
- |--------|-------|
207
- | Total Logs | ${metrics.summary.total_logs} |
208
- | Active Agents | ${metrics.summary.agents_active} |
209
-
210
- ## Agent Activity
211
-
212
- ${Object.entries(metrics.raw_data.agents).map(([agent, count]) => `- ${agent}: ${count} logs`).join('\n')}
213
-
214
- ## Patterns Identified
215
-
216
- ### Success Patterns
217
- _Manual review required_
218
-
219
- ### Failure Patterns
220
- _Manual review required_
221
-
222
- ## Improvement Suggestions
223
- _Manual review required_
224
-
225
- ## Next Cycle Goals
226
- - [ ] Review and update SSOT documents
227
- - [ ] Address identified patterns
228
- - [ ] Apply approved improvements
229
-
230
- ---
231
- Generated by TimSquad v2.0.0
232
- `;
233
- const reportPath = path.join(projectRoot, '.timsquad', 'retrospective', 'cycles', `cycle-${state.currentCycle}.md`);
234
- await fs.ensureDir(path.dirname(reportPath));
235
- await writeFile(reportPath, report);
489
+ // Update retro state
236
490
  state.status = 'applying';
237
491
  await saveRetroState(projectRoot, state);
238
- printSuccess(`Report generated: cycle-${state.currentCycle}.md`);
239
- console.log(colors.path(` ${reportPath}`));
240
492
  console.log(colors.dim('\nNext: Review report and run "tsq retro apply" to complete'));
241
493
  }
242
494
  async function applyImprovements() {
@@ -252,10 +504,149 @@ async function applyImprovements() {
252
504
  console.log(colors.dim(' 1. Review the generated report'));
253
505
  console.log(colors.dim(' 2. Update templates/prompts as needed'));
254
506
  console.log(colors.dim(' 3. This cycle will be marked as complete\n'));
507
+ // Archive processed feedback
508
+ const feedbackDir = path.join(projectRoot, '.timsquad', 'feedback');
509
+ const archiveDir = path.join(feedbackDir, `archive-cycle-${state.currentCycle}`);
510
+ if (await exists(feedbackDir)) {
511
+ const files = await listFiles('*.json', feedbackDir);
512
+ if (files.length > 0) {
513
+ await fs.ensureDir(archiveDir);
514
+ for (const file of files) {
515
+ await fs.move(path.join(feedbackDir, file), path.join(archiveDir, file), { overwrite: true });
516
+ }
517
+ console.log(colors.dim(` Feedback archived: ${archiveDir}`));
518
+ }
519
+ }
255
520
  state.status = 'idle';
256
521
  await saveRetroState(projectRoot, state);
257
522
  printSuccess(`Retrospective cycle ${state.currentCycle} completed!`);
258
523
  }
524
+ // ============================================================
525
+ // Auto retro (전체 사이클 자동 실행)
526
+ // start → collect → (analyze skip) → report → apply
527
+ // ============================================================
528
+ async function runAutoRetro(localOnly) {
529
+ const projectRoot = await findProjectRoot();
530
+ if (!projectRoot) {
531
+ throw new Error('Not a TimSquad project');
532
+ }
533
+ printHeader('Auto Retrospective');
534
+ console.log(colors.dim('전체 회고 사이클을 자동으로 실행합니다.\n'));
535
+ // Step 1: Start
536
+ let state = await getRetroState(projectRoot);
537
+ if (state.status !== 'idle') {
538
+ console.log(colors.warning(`⚠ 기존 cycle ${state.currentCycle} (${state.status}) 가 진행 중입니다.`));
539
+ console.log(colors.dim(' 기존 사이클을 이어서 진행합니다.\n'));
540
+ }
541
+ else {
542
+ state.currentCycle += 1;
543
+ state.status = 'collecting';
544
+ state.startedAt = getTimestamp();
545
+ await saveRetroState(projectRoot, state);
546
+ printSuccess(`[1/4] Cycle ${state.currentCycle} started`);
547
+ }
548
+ // Step 2: Collect
549
+ if (state.status === 'collecting') {
550
+ const logsDir = path.join(projectRoot, '.timsquad', 'logs');
551
+ const logFiles = await listFiles('*.md', logsDir);
552
+ const recentLogs = logFiles.filter(f => !f.startsWith('_'));
553
+ const agentStats = {};
554
+ for (const file of recentLogs) {
555
+ const match = file.match(/-([a-z]+)\.md$/);
556
+ if (match) {
557
+ agentStats[match[1]] = (agentStats[match[1]] || 0) + 1;
558
+ }
559
+ }
560
+ const metricsPath = path.join(projectRoot, '.timsquad', 'retrospective', 'metrics', `cycle-${state.currentCycle}.json`);
561
+ await fs.ensureDir(path.dirname(metricsPath));
562
+ await fs.writeJson(metricsPath, {
563
+ cycle: state.currentCycle,
564
+ collectedAt: getTimestamp(),
565
+ raw_data: { log_files: recentLogs.length, agents: agentStats },
566
+ summary: { total_logs: recentLogs.length, agents_active: Object.keys(agentStats).length },
567
+ }, { spaces: 2 });
568
+ state.status = 'analyzing';
569
+ state.collectedAt = getTimestamp();
570
+ await saveRetroState(projectRoot, state);
571
+ printSuccess(`[2/4] Metrics collected (${recentLogs.length} logs, ${Object.keys(agentStats).length} agents)`);
572
+ }
573
+ // Step 3: Skip analyze (stub) → reporting
574
+ if (state.status === 'analyzing') {
575
+ state.status = 'reporting';
576
+ state.analyzedAt = getTimestamp();
577
+ await saveRetroState(projectRoot, state);
578
+ printSuccess('[3/4] Analysis skipped (programmatic mode)');
579
+ }
580
+ // Step 4: Report + Apply
581
+ if (state.status === 'reporting') {
582
+ const project = await getProjectInfo(projectRoot);
583
+ const phases = await loadPhaseRetros(projectRoot);
584
+ const feedbacks = await loadFeedbackEntries(projectRoot);
585
+ if (phases.length === 0 && feedbacks.length === 0) {
586
+ console.log(colors.dim('\n 피드백 데이터 없음 - 빈 리포트 생성을 건너뜁니다.'));
587
+ }
588
+ else {
589
+ const report = buildAggregatedReport(project, phases, feedbacks);
590
+ const markdown = renderReportMarkdown(report);
591
+ const reportDir = path.join(projectRoot, '.timsquad', 'retrospective', 'cycles');
592
+ await fs.ensureDir(reportDir);
593
+ await writeFile(path.join(reportDir, `cycle-${state.currentCycle}.md`), markdown);
594
+ await fs.writeJson(path.join(reportDir, `cycle-${state.currentCycle}.json`), report, { spaces: 2 });
595
+ printKeyValue(' Phase retros', String(phases.length));
596
+ printKeyValue(' Feedbacks', String(feedbacks.length));
597
+ // GitHub Issue (auto mode에서는 --local이 아니면 자동 생성 시도)
598
+ if (!localOnly) {
599
+ const issueTitle = `[retro] ${project.name} - Cycle ${state.currentCycle}`;
600
+ const issueUrl = createGitHubIssue(issueTitle, markdown);
601
+ if (issueUrl) {
602
+ printSuccess(` GitHub Issue: ${issueUrl}`);
603
+ }
604
+ }
605
+ }
606
+ // Apply: archive feedback
607
+ const feedbackDir = path.join(projectRoot, '.timsquad', 'feedback');
608
+ const archiveDir = path.join(feedbackDir, `archive-cycle-${state.currentCycle}`);
609
+ if (await exists(feedbackDir)) {
610
+ const files = await listFiles('*.json', feedbackDir);
611
+ if (files.length > 0) {
612
+ await fs.ensureDir(archiveDir);
613
+ for (const file of files) {
614
+ await fs.move(path.join(feedbackDir, file), path.join(archiveDir, file), { overwrite: true });
615
+ }
616
+ }
617
+ }
618
+ state.status = 'idle';
619
+ await saveRetroState(projectRoot, state);
620
+ printSuccess(`[4/4] Cycle ${state.currentCycle} completed`);
621
+ }
622
+ // Bonus: retro → improve 자동 연결
623
+ // GitHub Issue가 생성되었으면 improve fetch+analyze 자동 실행
624
+ try {
625
+ execSync('gh --version', { stdio: 'ignore' });
626
+ console.log(colors.dim('\n Improvement analysis 자동 실행 중...'));
627
+ try {
628
+ execSync('npx tsq improve fetch --limit 20', {
629
+ cwd: projectRoot,
630
+ stdio: 'ignore',
631
+ timeout: 15000,
632
+ });
633
+ execSync('npx tsq improve analyze', {
634
+ cwd: projectRoot,
635
+ stdio: 'ignore',
636
+ timeout: 15000,
637
+ });
638
+ printSuccess(' Improvement analysis completed');
639
+ console.log(colors.dim(' 결과 확인: tsq improve summary'));
640
+ }
641
+ catch {
642
+ console.log(colors.dim(' Improvement analysis skipped (no issues or error)'));
643
+ }
644
+ }
645
+ catch {
646
+ // gh not available, skip
647
+ }
648
+ console.log(colors.dim('\nTip: tsq retro status 로 결과 확인'));
649
+ }
259
650
  async function showRetroStatus() {
260
651
  const projectRoot = await findProjectRoot();
261
652
  if (!projectRoot) {
@@ -268,6 +659,15 @@ async function showRetroStatus() {
268
659
  if (state.startedAt) {
269
660
  printKeyValue('Started', state.startedAt.split('T')[0]);
270
661
  }
662
+ // Count pending feedback
663
+ const feedbackDir = path.join(projectRoot, '.timsquad', 'feedback');
664
+ if (await exists(feedbackDir)) {
665
+ const phaseFiles = await listFiles('phase-*.json', feedbackDir);
666
+ const fbFiles = await listFiles('FB-*.json', feedbackDir);
667
+ console.log('');
668
+ printKeyValue('Pending phase retros', String(phaseFiles.length));
669
+ printKeyValue('Pending feedbacks', String(fbFiles.length));
670
+ }
271
671
  // List completed cycles
272
672
  const cyclesDir = path.join(projectRoot, '.timsquad', 'retrospective', 'cycles');
273
673
  if (await exists(cyclesDir)) {