@silbaram/artifact-driven-agent 0.1.7 → 0.2.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.
Files changed (189) hide show
  1. package/README.md +510 -60
  2. package/ai-dev-team/.ada-status.template.json +10 -10
  3. package/ai-dev-team/README.md +39 -44
  4. package/ai-dev-team/ada.config.json +15 -0
  5. package/ai-dev-team/artifacts/api.md +2 -0
  6. package/ai-dev-team/artifacts/features/_template/api.md +19 -19
  7. package/ai-dev-team/artifacts/features/_template/review.md +14 -14
  8. package/ai-dev-team/artifacts/features/_template/spec.md +28 -28
  9. package/ai-dev-team/artifacts/features/_template/ui.md +14 -14
  10. package/ai-dev-team/artifacts/improvement-reports/IMP-0000-template.md +57 -0
  11. package/ai-dev-team/artifacts/project.md +2 -0
  12. package/ai-dev-team/artifacts/rfc/RFC-0000-template.md +49 -49
  13. package/core/artifacts/decision.md +72 -72
  14. package/core/artifacts/plan.md +187 -187
  15. package/core/artifacts/project.md +193 -193
  16. package/core/artifacts/sprints/_template/docs/release-notes.md +37 -37
  17. package/core/artifacts/sprints/_template/meta.md +54 -54
  18. package/core/artifacts/sprints/_template/retrospective.md +50 -50
  19. package/core/artifacts/sprints/_template/review-reports/review-template.md +49 -49
  20. package/core/artifacts/sprints/_template/tasks/task-template.md +43 -43
  21. package/core/docs-templates/mkdocs/docs/architecture/overview.md +29 -0
  22. package/core/docs-templates/mkdocs/docs/changelog.md +36 -0
  23. package/core/docs-templates/mkdocs/docs/contributing/contributing.md +60 -0
  24. package/core/docs-templates/mkdocs/docs/getting-started/configuration.md +51 -0
  25. package/core/docs-templates/mkdocs/docs/getting-started/installation.md +41 -0
  26. package/core/docs-templates/mkdocs/docs/getting-started/quick-start.md +56 -0
  27. package/core/docs-templates/mkdocs/docs/guides/api-reference.md +83 -0
  28. package/core/docs-templates/mkdocs/docs/index.md +32 -0
  29. package/core/docs-templates/mkdocs/mkdocs.yml +86 -0
  30. package/core/roles/analyzer.md +265 -243
  31. package/core/roles/developer.md +227 -223
  32. package/core/roles/documenter.md +226 -293
  33. package/core/roles/improver.md +461 -0
  34. package/core/roles/manager.md +574 -541
  35. package/core/roles/planner.md +398 -248
  36. package/core/roles/reviewer.md +294 -266
  37. package/core/rules/document-priority.md +199 -198
  38. package/core/rules/escalation.md +172 -172
  39. package/core/rules/iteration.md +236 -236
  40. package/core/rules/rfc.md +31 -31
  41. package/core/rules/rollback.md +218 -218
  42. package/core/skills/_template/SKILL.md +50 -0
  43. package/core/skills/clean-code/SKILL.md +177 -0
  44. package/core/skills/code-review-checklist/SKILL.md +125 -0
  45. package/core/skills/error-handling/SKILL.md +155 -0
  46. package/core/skills/talk-game-dot-design/SKILL.md +85 -0
  47. package/core/skills/talk-game-dot-design/references/asset-specs.md +57 -0
  48. package/core/skills/talk-game-dot-design/references/review-checklist.md +34 -0
  49. package/core/skills/task-writing/SKILL.md +166 -0
  50. package/core/skills/testing-patterns/SKILL.md +140 -0
  51. package/dist/bin/cli.d.ts +2 -0
  52. package/dist/bin/cli.js +121 -0
  53. package/dist/bin/cli.js.map +1 -0
  54. package/dist/src/commands/config.d.ts +4 -0
  55. package/dist/src/commands/config.js +427 -0
  56. package/dist/src/commands/config.js.map +1 -0
  57. package/dist/src/commands/docs.d.ts +12 -0
  58. package/dist/src/commands/docs.js +453 -0
  59. package/dist/src/commands/docs.js.map +1 -0
  60. package/dist/src/commands/interactive.d.ts +4 -0
  61. package/dist/src/commands/interactive.js +380 -0
  62. package/dist/src/commands/interactive.js.map +1 -0
  63. package/dist/src/commands/logs.d.ts +1 -0
  64. package/dist/src/commands/logs.js +76 -0
  65. package/dist/src/commands/logs.js.map +1 -0
  66. package/dist/src/commands/monitor.d.ts +6 -0
  67. package/dist/src/commands/monitor.js +216 -0
  68. package/dist/src/commands/monitor.js.map +1 -0
  69. package/dist/src/commands/reset.d.ts +4 -0
  70. package/dist/src/commands/reset.js +57 -0
  71. package/dist/src/commands/reset.js.map +1 -0
  72. package/dist/src/commands/run.d.ts +45 -0
  73. package/dist/src/commands/run.js +421 -0
  74. package/dist/src/commands/run.js.map +1 -0
  75. package/dist/src/commands/sessions.d.ts +5 -0
  76. package/dist/src/commands/sessions.js +563 -0
  77. package/dist/src/commands/sessions.js.map +1 -0
  78. package/dist/src/commands/setup.d.ts +1 -0
  79. package/dist/src/commands/setup.js +132 -0
  80. package/dist/src/commands/setup.js.map +1 -0
  81. package/dist/src/commands/skills.d.ts +4 -0
  82. package/dist/src/commands/skills.js +748 -0
  83. package/dist/src/commands/skills.js.map +1 -0
  84. package/dist/src/commands/sprint.d.ts +4 -0
  85. package/dist/src/commands/sprint.js +434 -0
  86. package/dist/src/commands/sprint.js.map +1 -0
  87. package/dist/src/commands/status.d.ts +1 -0
  88. package/dist/src/commands/status.js +97 -0
  89. package/dist/src/commands/status.js.map +1 -0
  90. package/dist/src/commands/upgrade.d.ts +6 -0
  91. package/dist/src/commands/upgrade.js +350 -0
  92. package/dist/src/commands/upgrade.js.map +1 -0
  93. package/dist/src/commands/validate.d.ts +8 -0
  94. package/dist/src/commands/validate.js +260 -0
  95. package/dist/src/commands/validate.js.map +1 -0
  96. package/dist/src/commands/validate.test.d.ts +1 -0
  97. package/dist/src/commands/validate.test.js +74 -0
  98. package/dist/src/commands/validate.test.js.map +1 -0
  99. package/{src/index.js → dist/src/index.d.ts} +2 -3
  100. package/dist/src/index.js +15 -0
  101. package/dist/src/index.js.map +1 -0
  102. package/dist/src/types/common.d.ts +31 -0
  103. package/dist/src/types/common.js +2 -0
  104. package/dist/src/types/common.js.map +1 -0
  105. package/dist/src/types/config.d.ts +46 -0
  106. package/dist/src/types/config.js +2 -0
  107. package/dist/src/types/config.js.map +1 -0
  108. package/dist/src/types/index.d.ts +53 -0
  109. package/dist/src/types/index.js +2 -0
  110. package/dist/src/types/index.js.map +1 -0
  111. package/dist/src/types/session.d.ts +87 -0
  112. package/dist/src/types/session.js +2 -0
  113. package/dist/src/types/session.js.map +1 -0
  114. package/dist/src/types/task.d.ts +32 -0
  115. package/dist/src/types/task.js +2 -0
  116. package/dist/src/types/task.js.map +1 -0
  117. package/dist/src/ui/dashboard.d.ts +9 -0
  118. package/dist/src/ui/dashboard.js +468 -0
  119. package/dist/src/ui/dashboard.js.map +1 -0
  120. package/dist/src/ui/keyHandler.d.ts +47 -0
  121. package/dist/src/ui/keyHandler.js +132 -0
  122. package/dist/src/ui/keyHandler.js.map +1 -0
  123. package/dist/src/ui/quickActions.d.ts +25 -0
  124. package/dist/src/ui/quickActions.js +106 -0
  125. package/dist/src/ui/quickActions.js.map +1 -0
  126. package/dist/src/utils/config.d.ts +33 -0
  127. package/dist/src/utils/config.js +135 -0
  128. package/dist/src/utils/config.js.map +1 -0
  129. package/dist/src/utils/files.d.ts +84 -0
  130. package/dist/src/utils/files.js +202 -0
  131. package/dist/src/utils/files.js.map +1 -0
  132. package/dist/src/utils/promptBuilder.d.ts +39 -0
  133. package/dist/src/utils/promptBuilder.js +726 -0
  134. package/dist/src/utils/promptBuilder.js.map +1 -0
  135. package/dist/src/utils/sessionState.d.ts +83 -0
  136. package/dist/src/utils/sessionState.js +466 -0
  137. package/dist/src/utils/sessionState.js.map +1 -0
  138. package/dist/src/utils/sessionState.process.test.d.ts +1 -0
  139. package/dist/src/utils/sessionState.process.test.js +93 -0
  140. package/dist/src/utils/sessionState.process.test.js.map +1 -0
  141. package/dist/src/utils/sessionState.test.d.ts +1 -0
  142. package/dist/src/utils/sessionState.test.js +150 -0
  143. package/dist/src/utils/sessionState.test.js.map +1 -0
  144. package/dist/src/utils/sprintUtils.d.ts +13 -0
  145. package/dist/src/utils/sprintUtils.js +129 -0
  146. package/dist/src/utils/sprintUtils.js.map +1 -0
  147. package/dist/src/utils/taskParser.d.ts +9 -0
  148. package/dist/src/utils/taskParser.js +122 -0
  149. package/dist/src/utils/taskParser.js.map +1 -0
  150. package/dist/src/utils/taskParser.test.d.ts +1 -0
  151. package/dist/src/utils/taskParser.test.js +69 -0
  152. package/dist/src/utils/taskParser.test.js.map +1 -0
  153. package/package.json +62 -47
  154. package/templates/cli/artifacts/commands.md +262 -262
  155. package/templates/cli/artifacts/output-format.md +298 -298
  156. package/templates/cli/rules/command-change.md +225 -225
  157. package/templates/game/artifacts/assets.md +148 -148
  158. package/templates/game/artifacts/game-systems.md +217 -217
  159. package/templates/game/artifacts/hud.md +199 -199
  160. package/templates/game/rules/system-change.md +184 -184
  161. package/templates/library/artifacts/changelog.md +84 -84
  162. package/templates/library/artifacts/examples.md +157 -157
  163. package/templates/library/artifacts/public-api.md +197 -197
  164. package/templates/library/rules/versioning.md +186 -186
  165. package/templates/web-dev/artifacts/api.md +212 -212
  166. package/templates/web-dev/artifacts/ui.md +104 -104
  167. package/templates/web-dev/rules/api-change.md +198 -198
  168. package/ai-dev-team/.gitkeep +0 -0
  169. package/ai-dev-team/artifacts/.gitkeep +0 -0
  170. package/ai-dev-team/artifacts/features/_template/qa.md +0 -16
  171. package/ai-dev-team/roles/.gitkeep +0 -0
  172. package/ai-dev-team/rules/.gitkeep +0 -0
  173. package/bin/cli.js +0 -83
  174. package/examples/todo-app/README.md +0 -23
  175. package/examples/todo-app/artifacts/backlog.md +0 -23
  176. package/examples/todo-app/artifacts/plan.md +0 -23
  177. package/examples/todo-app/artifacts/project.md +0 -23
  178. package/src/commands/interactive.js +0 -101
  179. package/src/commands/logs.js +0 -81
  180. package/src/commands/reset.js +0 -66
  181. package/src/commands/run.js +0 -554
  182. package/src/commands/sessions.js +0 -707
  183. package/src/commands/setup.js +0 -128
  184. package/src/commands/sprint.js +0 -262
  185. package/src/commands/status.js +0 -76
  186. package/src/commands/validate.js +0 -288
  187. package/src/commands/validate.test.js +0 -84
  188. package/src/utils/files.js +0 -134
  189. package/src/utils/sessionState.js +0 -379
@@ -0,0 +1,140 @@
1
+ ---
2
+ name: testing-patterns
3
+ description: 테스트 코드 작성 시 적용되는 패턴. 단위/통합/E2E 테스트 구조, 네이밍 규칙, 모킹 전략을 포함한다.
4
+ ---
5
+
6
+ # Testing Patterns
7
+
8
+ 이 스킬은 테스트 코드를 작성하거나 기존 테스트를 수정할 때 적용됩니다.
9
+ 언어/프레임워크에 무관하게 적용되는 보편 원칙입니다.
10
+
11
+ ## 핵심 규칙
12
+
13
+ 1. **테스트는 독립적이어야 한다**: 각 테스트는 다른 테스트에 의존하지 않고 단독 실행 가능해야 한다.
14
+ 2. **하나의 테스트는 하나의 동작만 검증한다**: 여러 동작을 한 테스트에 넣지 않는다.
15
+ 3. **테스트 이름만으로 의도를 파악할 수 있어야 한다**: 실패 시 이름만 보고 원인을 추론할 수 있어야 한다.
16
+ 4. **외부 의존성은 반드시 격리한다**: DB, 네트워크, 파일시스템 등은 모킹하거나 테스트용 인스턴스를 사용한다.
17
+ 5. **테스트 코드도 프로덕션 코드와 동일한 품질 기준을 적용한다**: 중복 제거, 가독성, 유지보수성을 유지한다.
18
+
19
+ ## 패턴 및 예시
20
+
21
+ ### 패턴 1: AAA (Arrange-Act-Assert)
22
+
23
+ 모든 테스트는 3단계로 구성한다. 단계 사이에 빈 줄로 구분하여 가독성을 확보한다.
24
+
25
+ ```
26
+ test "장바구니에 상품 추가 시 총액이 갱신된다":
27
+ // Arrange - 테스트 전제 조건 설정
28
+ cart = new Cart()
29
+ item = { id: "item-1", name: "키보드", price: 50000 }
30
+
31
+ // Act - 테스트 대상 동작 실행
32
+ cart.addItem(item)
33
+
34
+ // Assert - 결과 검증
35
+ assert cart.totalPrice == 50000
36
+ assert cart.items.length == 1
37
+ ```
38
+
39
+ ### 패턴 2: 테스트 네이밍 규칙
40
+
41
+ 테스트 이름은 **[대상]_[조건]_[기대결과]** 또는 자연어 서술 형식을 사용한다.
42
+
43
+ ```
44
+ // 형식 1: 구조화된 네이밍
45
+ test "calculateDiscount_회원등급이_VIP일때_20퍼센트_할인"
46
+
47
+ // 형식 2: 자연어 서술 (권장)
48
+ test "VIP 회원은 20% 할인을 받는다"
49
+
50
+ // 형식 3: 그룹 + 개별 테스트 조합
51
+ group "할인 계산":
52
+ test "VIP 회원은 20% 할인을 받는다"
53
+ test "일반 회원은 할인이 없다"
54
+ test "쿠폰과 등급 할인은 중복 적용되지 않는다"
55
+ ```
56
+
57
+ ### 패턴 3: 테스트 픽스처 (Test Fixture)
58
+
59
+ 반복되는 설정은 헬퍼 함수로 추출한다. 단, 테스트 내에서 핵심 값은 명시적으로 보여야 한다.
60
+
61
+ ```
62
+ // 팩토리 함수 - 기본값 + 오버라이드
63
+ function createUser(overrides):
64
+ return merge({
65
+ id: "user-1",
66
+ name: "테스트유저",
67
+ email: "test@example.com",
68
+ role: "member",
69
+ }, overrides)
70
+
71
+ test "관리자는 사용자를 삭제할 수 있다":
72
+ admin = createUser({ role: "admin" }) // 핵심 값 명시
73
+ target = createUser({ id: "user-2" })
74
+
75
+ result = deleteUser(admin, target.id)
76
+
77
+ assert result.success == true
78
+ ```
79
+
80
+ ### 패턴 4: 모킹 전략
81
+
82
+ 외부 의존성의 모킹 범위를 최소한으로 유지한다.
83
+
84
+ ```
85
+ // 의존성 주입 방식 (권장)
86
+ test "주문 생성 시 결제 서비스를 호출한다":
87
+ mockPayment = mock({ charge: returns({ success: true }) })
88
+ orderService = new OrderService(mockPayment)
89
+
90
+ orderService.createOrder({ amount: 10000 })
91
+
92
+ assert mockPayment.charge.calledOnce == true
93
+
94
+ // 모듈 모킹 (외부 라이브러리)
95
+ // 프레임워크별 방식을 따르되, 모킹 범위를 테스트 단위로 제한한다.
96
+ ```
97
+
98
+ ### 패턴 5: 경계값 테스트
99
+
100
+ 비즈니스 로직의 경계 조건을 명시적으로 테스트한다.
101
+
102
+ ```
103
+ group "비밀번호 검증":
104
+ // 경계값: 최소 길이
105
+ test "7자 비밀번호는 거부된다":
106
+ assert validatePassword("1234567") == false
107
+
108
+ test "8자 비밀번호는 허용된다":
109
+ assert validatePassword("12345678") == true
110
+
111
+ // 특수 케이스
112
+ test "빈 문자열은 거부된다":
113
+ assert validatePassword("") == false
114
+ ```
115
+
116
+ ## 테스트 유형별 가이드
117
+
118
+ ### 단위 테스트 (Unit)
119
+ - 단일 함수/클래스의 로직 검증
120
+ - 외부 의존성 전부 모킹
121
+ - 실행 시간: 각 테스트 100ms 이내
122
+ - 커버리지 목표: 비즈니스 로직 80% 이상
123
+
124
+ ### 통합 테스트 (Integration)
125
+ - 여러 모듈 간 상호작용 검증
126
+ - 실제 DB/파일시스템 사용 가능 (테스트용 인스턴스)
127
+ - 테스트 간 상태 격리 필수 (setup/teardown)
128
+
129
+ ### E2E 테스트 (End-to-End)
130
+ - 사용자 시나리오 기반 전체 흐름 검증
131
+ - 핵심 사용자 경로(happy path)에 집중
132
+ - 불안정한 테스트(flaky test)는 즉시 수정하거나 격리
133
+
134
+ ## 주의사항
135
+
136
+ - 구현 세부사항이 아닌 **동작(행위)**을 테스트한다
137
+ - 100% 커버리지를 목표로 하지 않는다. 의미 있는 테스트에 집중한다
138
+ - 테스트가 깨지면 프로덕션 코드보다 먼저 확인한다
139
+ - 테스트 실행 속도가 느려지면 병렬 실행, 모킹 범위 조정 등을 검토한다
140
+ - sleep/delay 기반의 대기 테스트는 피한다. 이벤트/폴링 기반으로 대체한다
@@ -0,0 +1,2 @@
1
+ #!/usr/bin/env node
2
+ export {};
@@ -0,0 +1,121 @@
1
+ #!/usr/bin/env node
2
+ import { program } from 'commander';
3
+ import { setup } from '../src/commands/setup.js';
4
+ import { status } from '../src/commands/status.js';
5
+ import { reset } from '../src/commands/reset.js';
6
+ import { validate } from '../src/commands/validate.js';
7
+ import { sessions } from '../src/commands/sessions.js';
8
+ import { logs } from '../src/commands/logs.js';
9
+ import { run } from '../src/commands/run.js';
10
+ import { config } from '../src/commands/config.js';
11
+ import { interactive } from '../src/commands/interactive.js';
12
+ import { upgrade } from '../src/commands/upgrade.js';
13
+ import { monitor } from '../src/commands/monitor.js';
14
+ import sprint from '../src/commands/sprint.js';
15
+ import docs from '../src/commands/docs.js';
16
+ import { skills } from '../src/commands/skills.js';
17
+ import { createRequire } from 'node:module';
18
+ const require = createRequire(import.meta.url);
19
+ const { version } = require('../../package.json');
20
+ program
21
+ .name('ada')
22
+ .description('Artifact-Driven AI Agent Framework\nAI가 규칙을 어기지 못하게 하는 문서 기반 개발')
23
+ .version(version)
24
+ .option('-m, --monitor', 'UI 모드 실행 (인터랙티브 인터페이스)');
25
+ // Setup command
26
+ program
27
+ .command('setup [template]')
28
+ .description('프로젝트 템플릿 세팅 (web, library, game, cli)')
29
+ .action(setup);
30
+ // Status command
31
+ program
32
+ .command('status')
33
+ .description('현재 세팅 상태 확인')
34
+ .action(status);
35
+ // Reset command
36
+ program
37
+ .command('reset')
38
+ .description('ai-dev-team 초기화')
39
+ .option('-f, --force', '확인 없이 강제 초기화')
40
+ .action(reset);
41
+ // Upgrade command
42
+ program
43
+ .command('upgrade')
44
+ .description('작업공간을 최신 버전으로 업그레이드')
45
+ .option('-f, --force', '확인 없이 강제 업그레이드')
46
+ .option('--dry-run', '변경 사항 미리보기 (실제 변경 없음)')
47
+ .option('--rollback', '이전 백업으로 롤백')
48
+ .action(upgrade);
49
+ // Validate command
50
+ program
51
+ .command('validate [doc]')
52
+ .description('문서 검증 (plan, project, backlog, sprint 또는 전체)')
53
+ .action(validate);
54
+ // Sessions command
55
+ program
56
+ .command('sessions')
57
+ .description('AI 실행 세션 목록')
58
+ .option('-w, --watch', '실시간 모니터링 모드')
59
+ .option('-c, --clean', '완료된 세션 정리')
60
+ .action(sessions);
61
+ // Logs command
62
+ program
63
+ .command('logs [sessionId]')
64
+ .description('세션 로그 확인')
65
+ .action(logs);
66
+ // Sprint command
67
+ program
68
+ .command('sprint <action> [tasks...]')
69
+ .description('스프린트 관리 (create, add, close, list)')
70
+ .action(sprint);
71
+ // Docs command
72
+ program
73
+ .command('docs <action>')
74
+ .description('문서 관리 (init, generate, publish, serve)')
75
+ .option('-g, --generator <type>', '문서 생성기 (mkdocs, jekyll)')
76
+ .action(docs);
77
+ // Skills command
78
+ program
79
+ .command('skills [action] [args...]')
80
+ .description('스킬 관리 (list, info, apply, remove, status, ui)')
81
+ .action(skills);
82
+ // Monitor command (UI 모드)
83
+ program
84
+ .command('monitor')
85
+ .alias('m')
86
+ .description('UI 모드 (인터랙티브 인터페이스)')
87
+ .action(monitor);
88
+ // Config command
89
+ program
90
+ .command('config [action] [key] [value]')
91
+ .description('설정 조회/변경 (대화형), show, get <key>, set <key> <value>')
92
+ .action(config);
93
+ // Run command
94
+ program
95
+ .command('run <role> [tool]')
96
+ .description('AI 에이전트 실행 (예: run backend [claude])')
97
+ .action(run);
98
+ // Parse arguments
99
+ const args = process.argv.slice(2);
100
+ // 명령어 목록
101
+ const COMMANDS = ['setup', 'status', 'reset', 'upgrade', 'validate', 'sessions', 'logs', 'run', 'sprint', 'docs', 'skills', 'config', 'monitor', 'm'];
102
+ if (args.length === 0) {
103
+ // 인자 없으면 대화형 모드
104
+ interactive();
105
+ }
106
+ else if (args.includes('-m') || args.includes('--monitor')) {
107
+ // -m 또는 --monitor 옵션이 있으면 대시보드 실행
108
+ monitor();
109
+ }
110
+ else if (args.length === 2 && !args[0].startsWith('-') && !COMMANDS.includes(args[0])) {
111
+ // 두 개의 인자가 명령어가 아니면 role tool로 간주 (간편 실행)
112
+ run(args[0], args[1]);
113
+ }
114
+ else if (args.length === 1 && !args[0].startsWith('-') && !COMMANDS.includes(args[0])) {
115
+ // 인자가 하나면 role로 간주하고 도구는 자동 선택
116
+ run(args[0]);
117
+ }
118
+ else {
119
+ program.parse();
120
+ }
121
+ //# sourceMappingURL=cli.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cli.js","sourceRoot":"","sources":["../../bin/cli.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,4 @@
1
+ /**
2
+ * [CLI] 설정 관리 명령어
3
+ */
4
+ export declare function config(action?: string, key?: string, ...values: string[]): Promise<void>;