aiag-cli 2.2.2 → 2.3.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 (77) hide show
  1. package/README.md +72 -37
  2. package/dist/cli.js +30 -2
  3. package/dist/cli.js.map +1 -1
  4. package/dist/commands/auto.js +45 -41
  5. package/dist/commands/auto.js.map +1 -1
  6. package/dist/commands/feature.d.ts +11 -0
  7. package/dist/commands/feature.d.ts.map +1 -0
  8. package/dist/commands/feature.js +153 -0
  9. package/dist/commands/feature.js.map +1 -0
  10. package/dist/commands/init.d.ts +1 -1
  11. package/dist/commands/init.d.ts.map +1 -1
  12. package/dist/commands/init.js +29 -78
  13. package/dist/commands/init.js.map +1 -1
  14. package/dist/commands/prd.d.ts +12 -0
  15. package/dist/commands/prd.d.ts.map +1 -0
  16. package/dist/commands/prd.js +179 -0
  17. package/dist/commands/prd.js.map +1 -0
  18. package/dist/prompts/coding.d.ts.map +1 -1
  19. package/dist/prompts/coding.js +12 -0
  20. package/dist/prompts/coding.js.map +1 -1
  21. package/dist/prompts/index.d.ts +2 -0
  22. package/dist/prompts/index.d.ts.map +1 -1
  23. package/dist/prompts/index.js +2 -0
  24. package/dist/prompts/index.js.map +1 -1
  25. package/dist/prompts/initializer.d.ts.map +1 -1
  26. package/dist/prompts/initializer.js +6 -0
  27. package/dist/prompts/initializer.js.map +1 -1
  28. package/dist/prompts/prd.d.ts +28 -0
  29. package/dist/prompts/prd.d.ts.map +1 -0
  30. package/dist/prompts/prd.js +105 -0
  31. package/dist/prompts/prd.js.map +1 -0
  32. package/dist/skills/index.d.ts +12 -0
  33. package/dist/skills/index.d.ts.map +1 -0
  34. package/dist/skills/index.js +12 -0
  35. package/dist/skills/index.js.map +1 -0
  36. package/dist/skills/installer.d.ts +38 -0
  37. package/dist/skills/installer.d.ts.map +1 -0
  38. package/dist/skills/installer.js +153 -0
  39. package/dist/skills/installer.js.map +1 -0
  40. package/dist/skills/loader.d.ts +34 -0
  41. package/dist/skills/loader.d.ts.map +1 -0
  42. package/dist/skills/loader.js +134 -0
  43. package/dist/skills/loader.js.map +1 -0
  44. package/dist/skills/runner.d.ts +14 -0
  45. package/dist/skills/runner.d.ts.map +1 -0
  46. package/dist/skills/runner.js +238 -0
  47. package/dist/skills/runner.js.map +1 -0
  48. package/dist/types.d.ts +127 -0
  49. package/dist/types.d.ts.map +1 -1
  50. package/dist/utils/prd.d.ts +21 -0
  51. package/dist/utils/prd.d.ts.map +1 -1
  52. package/dist/utils/prd.js +69 -0
  53. package/dist/utils/prd.js.map +1 -1
  54. package/dist/utils/taskmasterConverter.d.ts +72 -0
  55. package/dist/utils/taskmasterConverter.d.ts.map +1 -0
  56. package/dist/utils/taskmasterConverter.js +401 -0
  57. package/dist/utils/taskmasterConverter.js.map +1 -0
  58. package/dist/utils/taskmasterParser.d.ts +35 -0
  59. package/dist/utils/taskmasterParser.d.ts.map +1 -0
  60. package/dist/utils/taskmasterParser.js +259 -0
  61. package/dist/utils/taskmasterParser.js.map +1 -0
  62. package/package.json +1 -1
  63. package/templates/skills/prd-taskmaster/.taskmaster/docs/prd.md +2571 -0
  64. package/templates/skills/prd-taskmaster/.taskmaster/scripts/execution-state.py +87 -0
  65. package/templates/skills/prd-taskmaster/.taskmaster/scripts/learn-accuracy.py +113 -0
  66. package/templates/skills/prd-taskmaster/.taskmaster/scripts/rollback.sh +71 -0
  67. package/templates/skills/prd-taskmaster/.taskmaster/scripts/security-audit.py +130 -0
  68. package/templates/skills/prd-taskmaster/.taskmaster/scripts/track-time.py +133 -0
  69. package/templates/skills/prd-taskmaster/LICENSE +21 -0
  70. package/templates/skills/prd-taskmaster/README.md +608 -0
  71. package/templates/skills/prd-taskmaster/SKILL.md +1258 -0
  72. package/templates/skills/prd-taskmaster/reference/taskmaster-integration-guide.md +645 -0
  73. package/templates/skills/prd-taskmaster/reference/validation-checklist.md +394 -0
  74. package/templates/skills/prd-taskmaster/scripts/setup-taskmaster.sh +112 -0
  75. package/templates/skills/prd-taskmaster/templates/CLAUDE.md.template +635 -0
  76. package/templates/skills/prd-taskmaster/templates/taskmaster-prd-comprehensive.md +983 -0
  77. package/templates/skills/prd-taskmaster/templates/taskmaster-prd-minimal.md +103 -0
@@ -0,0 +1,401 @@
1
+ /**
2
+ * Taskmaster → aiag Feature 변환기
3
+ *
4
+ * prd-taskmaster에서 파싱된 TaskmasterRequirement 객체를
5
+ * aiag의 Feature 객체로 변환합니다.
6
+ */
7
+ /**
8
+ * 카테고리 추론을 위한 키워드 패턴
9
+ */
10
+ const CATEGORY_PATTERNS = {
11
+ auth: [
12
+ /\bauth/i,
13
+ /\blogin/i,
14
+ /\blogout/i,
15
+ /\bpassword/i,
16
+ /\b2fa\b/i,
17
+ /\btoken\b/i,
18
+ /\bjwt\b/i,
19
+ /\bsession/i,
20
+ /\boauth/i,
21
+ /\bsso\b/i,
22
+ ],
23
+ api: [
24
+ /\bapi\b/i,
25
+ /\bendpoint/i,
26
+ /\brest\b/i,
27
+ /\bgraphql/i,
28
+ /\brequest/i,
29
+ /\bresponse/i,
30
+ /\bwebhook/i,
31
+ /\bhttp/i,
32
+ ],
33
+ ui: [
34
+ /\bui\b/i,
35
+ /\bcomponent/i,
36
+ /\bform\b/i,
37
+ /\bbutton/i,
38
+ /\bpage\b/i,
39
+ /\bmodal/i,
40
+ /\bdialog/i,
41
+ /\blayout/i,
42
+ /\bstyle/i,
43
+ /\bcss\b/i,
44
+ /\btheme/i,
45
+ ],
46
+ cli: [
47
+ /\bcli\b/i,
48
+ /\bcommand/i,
49
+ /\bterminal/i,
50
+ /\bconsole/i,
51
+ /\bargument/i,
52
+ /\bflag\b/i,
53
+ /\boption\b/i,
54
+ ],
55
+ data: [
56
+ /\bdatabase/i,
57
+ /\bschema/i,
58
+ /\bmigration/i,
59
+ /\bquery/i,
60
+ /\bmodel/i,
61
+ /\bdb\b/i,
62
+ /\bsql\b/i,
63
+ /\borm\b/i,
64
+ /\bprisma/i,
65
+ /\bmongo/i,
66
+ ],
67
+ test: [
68
+ /\btest/i,
69
+ /\bspec\b/i,
70
+ /\bcoverage/i,
71
+ /\bmock/i,
72
+ /\bfixture/i,
73
+ /\be2e\b/i,
74
+ /\bunit\b/i,
75
+ /\bintegration\b/i,
76
+ ],
77
+ docs: [
78
+ /\bdoc/i,
79
+ /\breadme/i,
80
+ /\bguide/i,
81
+ /\btutorial/i,
82
+ /\bmarkdown/i,
83
+ /\bchangelog/i,
84
+ ],
85
+ devops: [
86
+ /\bdeploy/i,
87
+ /\bci\b/i,
88
+ /\bcd\b/i,
89
+ /\bdocker/i,
90
+ /\bkubernetes/i,
91
+ /\bbuild/i,
92
+ /\bpipeline/i,
93
+ /\baction/i,
94
+ /\bworkflow/i,
95
+ /\bmonitor/i,
96
+ ],
97
+ core: [
98
+ /\bcore\b/i,
99
+ /\binfrastructure/i,
100
+ /\bsetup/i,
101
+ /\bconfig/i,
102
+ /\binit/i,
103
+ /\bbase\b/i,
104
+ /\bfoundation/i,
105
+ ],
106
+ agent: [
107
+ /\bagent/i,
108
+ /\bclaude/i,
109
+ /\bai\b/i,
110
+ /\bllm\b/i,
111
+ /\bautonomous/i,
112
+ /\bautomation/i,
113
+ ],
114
+ claude: [
115
+ /\bclaude\b/i,
116
+ /\banthropic/i,
117
+ ],
118
+ feature: [], // 기본 카테고리 (매칭 없을 때)
119
+ };
120
+ /**
121
+ * 우선순위 매핑
122
+ */
123
+ const PRIORITY_MAP = {
124
+ P0: 'critical',
125
+ P1: 'high',
126
+ P2: 'medium',
127
+ };
128
+ /**
129
+ * 카테고리별 기본 testCommand
130
+ */
131
+ const DEFAULT_TEST_COMMANDS = {
132
+ api: 'bun test -- --grep "API"',
133
+ ui: 'bun test -- --grep "Component"',
134
+ cli: 'bun test -- --grep "CLI"',
135
+ auth: 'bun test -- --grep "Auth"',
136
+ data: 'bun test -- --grep "Database"',
137
+ test: 'bun test',
138
+ core: 'bun test -- --grep "Core"',
139
+ agent: 'bun test -- --grep "Agent"',
140
+ docs: 'echo "Documentation feature - manual review"',
141
+ devops: 'echo "DevOps feature - manual verification"',
142
+ };
143
+ /**
144
+ * 기본 변환 옵션
145
+ */
146
+ const DEFAULT_OPTIONS = {
147
+ splitTasks: false,
148
+ inferCategory: true,
149
+ generateTestCommands: true,
150
+ };
151
+ /**
152
+ * 파싱된 PRD를 FeatureList로 변환합니다
153
+ *
154
+ * @param parsedPrd 파싱된 PRD 결과
155
+ * @param options 변환 옵션
156
+ * @returns FeatureList 객체
157
+ */
158
+ export function convertPrdToFeatureList(parsedPrd, options = {}) {
159
+ const mergedOptions = { ...DEFAULT_OPTIONS, ...options };
160
+ const features = convertToFeatures(parsedPrd.requirements, mergedOptions);
161
+ return {
162
+ project: {
163
+ name: parsedPrd.metadata?.projectName || 'Untitled Project',
164
+ version: parsedPrd.metadata?.version || '1.0.0',
165
+ description: `Generated from prd-taskmaster PRD (${parsedPrd.requirements.length} requirements)`,
166
+ totalFeatures: features.length,
167
+ completedFeatures: 0,
168
+ },
169
+ features,
170
+ };
171
+ }
172
+ /**
173
+ * TaskmasterRequirement 배열을 Feature 배열로 변환합니다
174
+ *
175
+ * @param requirements 파싱된 요구사항 배열
176
+ * @param options 변환 옵션
177
+ * @returns Feature 배열
178
+ */
179
+ export function convertToFeatures(requirements, options = DEFAULT_OPTIONS) {
180
+ const features = [];
181
+ const idMap = new Map(); // REQ-XXX -> CATEGORY-XXX 매핑
182
+ // 1단계: 모든 요구사항의 카테고리와 새 ID 결정
183
+ for (const req of requirements) {
184
+ const category = options.inferCategory
185
+ ? inferCategory(req.title, req.description)
186
+ : 'feature';
187
+ const newId = generateFeatureId(category, features.length + idMap.size + 1);
188
+ idMap.set(req.id, newId);
189
+ }
190
+ // 2단계: Feature 객체 생성
191
+ for (const req of requirements) {
192
+ const newId = idMap.get(req.id);
193
+ const category = options.inferCategory
194
+ ? inferCategory(req.title, req.description)
195
+ : 'feature';
196
+ const feature = createFeatureFromRequirement(req, newId, category, options, idMap);
197
+ features.push(feature);
198
+ }
199
+ return features;
200
+ }
201
+ /**
202
+ * 개별 요구사항을 Feature로 변환합니다
203
+ */
204
+ function createFeatureFromRequirement(req, newId, category, options, idMap) {
205
+ // 의존성 ID 변환
206
+ const dependsOn = req.dependencies
207
+ .map(depId => idMap.get(depId))
208
+ .filter((id) => id !== undefined);
209
+ // Task Hints를 notes로 변환
210
+ const taskNotes = formatTaskHintsAsNotes(req.taskBreakdown);
211
+ // testCommand 생성
212
+ const testCommand = options.generateTestCommands
213
+ ? generateTestCommand(req.acceptanceCriteria, category)
214
+ : undefined;
215
+ return {
216
+ id: newId,
217
+ category,
218
+ priority: convertPriority(req.priority),
219
+ description: req.title,
220
+ acceptanceCriteria: req.acceptanceCriteria,
221
+ testCommand,
222
+ passes: false,
223
+ lastTestedAt: null,
224
+ implementedBy: null,
225
+ notes: taskNotes || undefined,
226
+ dependsOn: dependsOn.length > 0 ? dependsOn : undefined,
227
+ };
228
+ }
229
+ /**
230
+ * 제목과 설명에서 카테고리를 추론합니다
231
+ *
232
+ * @param title 요구사항 제목
233
+ * @param description 요구사항 설명
234
+ * @returns 추론된 카테고리
235
+ */
236
+ export function inferCategory(title, description) {
237
+ const text = `${title} ${description}`.toLowerCase();
238
+ // 우선순위 순서대로 매칭 (더 구체적인 카테고리 우선)
239
+ const priorityOrder = [
240
+ 'auth',
241
+ 'api',
242
+ 'cli',
243
+ 'ui',
244
+ 'data',
245
+ 'test',
246
+ 'docs',
247
+ 'devops',
248
+ 'agent',
249
+ 'claude',
250
+ 'core',
251
+ 'feature',
252
+ ];
253
+ for (const category of priorityOrder) {
254
+ const patterns = CATEGORY_PATTERNS[category];
255
+ if (patterns.some(pattern => pattern.test(text))) {
256
+ return category;
257
+ }
258
+ }
259
+ return 'feature';
260
+ }
261
+ /**
262
+ * Taskmaster 우선순위를 aiag 우선순위로 변환합니다
263
+ *
264
+ * @param priority Taskmaster 우선순위 (P0, P1, P2)
265
+ * @returns aiag 우선순위
266
+ */
267
+ export function convertPriority(priority) {
268
+ return PRIORITY_MAP[priority] || 'medium';
269
+ }
270
+ /**
271
+ * Feature ID를 생성합니다
272
+ *
273
+ * @param category 카테고리
274
+ * @param index 순서 번호
275
+ * @returns 생성된 ID (예: AUTH-001)
276
+ */
277
+ export function generateFeatureId(category, index) {
278
+ const prefix = category.toUpperCase();
279
+ const number = String(index).padStart(3, '0');
280
+ return `${prefix}-${number}`;
281
+ }
282
+ /**
283
+ * Acceptance Criteria와 카테고리를 기반으로 testCommand를 생성합니다
284
+ *
285
+ * @param criteria Acceptance Criteria 목록
286
+ * @param category 카테고리
287
+ * @returns 생성된 testCommand
288
+ */
289
+ export function generateTestCommand(criteria, category) {
290
+ // 카테고리 기본 명령어 사용
291
+ const defaultCommand = DEFAULT_TEST_COMMANDS[category] || 'bun test';
292
+ // Acceptance Criteria에서 패턴 감지하여 추가 명령어 생성
293
+ const additionalChecks = [];
294
+ for (const criterion of criteria) {
295
+ // 파일 존재 체크 패턴
296
+ const fileMatch = criterion.match(/(?:create|exists?|file)\s+([^\s,]+\.[a-z]+)/i);
297
+ if (fileMatch) {
298
+ additionalChecks.push(`[ -f "${fileMatch[1]}" ]`);
299
+ }
300
+ // API 엔드포인트 패턴
301
+ const apiMatch = criterion.match(/(GET|POST|PUT|DELETE|PATCH)\s+([^\s]+)/i);
302
+ if (apiMatch) {
303
+ // API 테스트는 기본 테스트 명령어에 포함
304
+ break;
305
+ }
306
+ }
307
+ // 추가 체크가 있으면 조합
308
+ if (additionalChecks.length > 0) {
309
+ return `${defaultCommand} && ${additionalChecks.join(' && ')}`;
310
+ }
311
+ return defaultCommand;
312
+ }
313
+ /**
314
+ * Task Breakdown Hints를 notes 문자열로 포맷팅합니다
315
+ */
316
+ function formatTaskHintsAsNotes(taskBreakdown) {
317
+ if (taskBreakdown.length === 0) {
318
+ return null;
319
+ }
320
+ const hints = taskBreakdown
321
+ .map(hint => `${hint.description} (${hint.complexity}, ${hint.estimatedHours}h)`)
322
+ .join(', ');
323
+ return `Task Hints: ${hints}`;
324
+ }
325
+ /**
326
+ * 의존성 그래프를 분석하여 순환 의존성을 감지합니다
327
+ *
328
+ * @param features Feature 배열
329
+ * @returns 순환 의존성이 있으면 해당 ID 쌍, 없으면 null
330
+ */
331
+ export function detectCircularDependencies(features) {
332
+ const cycles = [];
333
+ const visited = new Set();
334
+ const recursionStack = new Set();
335
+ const featureMap = new Map(features.map(f => [f.id, f]));
336
+ function dfs(id, path) {
337
+ if (recursionStack.has(id)) {
338
+ // 순환 감지
339
+ const cycleStart = path.indexOf(id);
340
+ for (let i = cycleStart; i < path.length - 1; i++) {
341
+ cycles.push([path[i], path[i + 1]]);
342
+ }
343
+ return true;
344
+ }
345
+ if (visited.has(id)) {
346
+ return false;
347
+ }
348
+ visited.add(id);
349
+ recursionStack.add(id);
350
+ const feature = featureMap.get(id);
351
+ if (feature?.dependsOn) {
352
+ for (const depId of feature.dependsOn) {
353
+ dfs(depId, [...path, depId]);
354
+ }
355
+ }
356
+ recursionStack.delete(id);
357
+ return false;
358
+ }
359
+ for (const feature of features) {
360
+ if (!visited.has(feature.id)) {
361
+ dfs(feature.id, [feature.id]);
362
+ }
363
+ }
364
+ return cycles.length > 0 ? cycles : null;
365
+ }
366
+ /**
367
+ * 변환 결과 통계를 반환합니다
368
+ */
369
+ export function getConversionStats(features) {
370
+ const byCategory = {};
371
+ const byPriority = {
372
+ critical: 0,
373
+ high: 0,
374
+ medium: 0,
375
+ low: 0,
376
+ };
377
+ let withDependencies = 0;
378
+ let withTestCommands = 0;
379
+ for (const feature of features) {
380
+ // 카테고리별
381
+ byCategory[feature.category] = (byCategory[feature.category] || 0) + 1;
382
+ // 우선순위별
383
+ byPriority[feature.priority]++;
384
+ // 의존성 있는 항목
385
+ if (feature.dependsOn && feature.dependsOn.length > 0) {
386
+ withDependencies++;
387
+ }
388
+ // testCommand 있는 항목
389
+ if (feature.testCommand) {
390
+ withTestCommands++;
391
+ }
392
+ }
393
+ return {
394
+ total: features.length,
395
+ byCategory,
396
+ byPriority,
397
+ withDependencies,
398
+ withTestCommands,
399
+ };
400
+ }
401
+ //# sourceMappingURL=taskmasterConverter.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"taskmasterConverter.js","sourceRoot":"","sources":["../../src/utils/taskmasterConverter.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,35 @@
1
+ /**
2
+ * prd-taskmaster PRD 파서
3
+ *
4
+ * prd-taskmaster가 생성하는 구조화된 PRD를 파싱하여
5
+ * TaskmasterRequirement 객체 배열로 변환합니다.
6
+ */
7
+ import type { TaskmasterRequirement, TaskmasterPriority, TaskHint, ParsedPrd } from '../types.js';
8
+ /**
9
+ * prd-taskmaster PRD를 파싱합니다
10
+ *
11
+ * @param content PRD 파일 전체 내용
12
+ * @returns 파싱된 PRD 결과
13
+ */
14
+ export declare function parseTaskmasterPrd(content: string): ParsedPrd;
15
+ /**
16
+ * Acceptance Criteria 체크리스트 항목들을 추출합니다
17
+ */
18
+ export declare function extractChecklistItems(block: string): string[];
19
+ /**
20
+ * Task Breakdown Hints를 추출합니다
21
+ */
22
+ export declare function extractTaskBreakdown(block: string): TaskHint[];
23
+ /**
24
+ * 요구사항 개수를 우선순위별로 집계합니다
25
+ */
26
+ export declare function countRequirementsByPriority(requirements: TaskmasterRequirement[]): Record<TaskmasterPriority, number>;
27
+ /**
28
+ * 요구사항 ID 목록을 반환합니다
29
+ */
30
+ export declare function getRequirementIds(requirements: TaskmasterRequirement[]): string[];
31
+ /**
32
+ * 특정 ID의 요구사항을 찾습니다
33
+ */
34
+ export declare function findRequirementById(requirements: TaskmasterRequirement[], id: string): TaskmasterRequirement | undefined;
35
+ //# sourceMappingURL=taskmasterParser.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"taskmasterParser.d.ts","sourceRoot":"","sources":["../../src/utils/taskmasterParser.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,KAAK,EACV,qBAAqB,EACrB,kBAAkB,EAClB,QAAQ,EACR,SAAS,EACV,MAAM,aAAa,CAAC;AA6CrB;;;;;GAKG;AACH,wBAAgB,kBAAkB,CAAC,OAAO,EAAE,MAAM,GAAG,SAAS,CAmB7D;AA2HD;;GAEG;AACH,wBAAgB,qBAAqB,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,EAAE,CAqB7D;AAED;;GAEG;AACH,wBAAgB,oBAAoB,CAAC,KAAK,EAAE,MAAM,GAAG,QAAQ,EAAE,CA0B9D;AAyDD;;GAEG;AACH,wBAAgB,2BAA2B,CACzC,YAAY,EAAE,qBAAqB,EAAE,GACpC,MAAM,CAAC,kBAAkB,EAAE,MAAM,CAAC,CAMpC;AAED;;GAEG;AACH,wBAAgB,iBAAiB,CAAC,YAAY,EAAE,qBAAqB,EAAE,GAAG,MAAM,EAAE,CAEjF;AAED;;GAEG;AACH,wBAAgB,mBAAmB,CACjC,YAAY,EAAE,qBAAqB,EAAE,EACrC,EAAE,EAAE,MAAM,GACT,qBAAqB,GAAG,SAAS,CAEnC"}