@wooojin/forgen 0.2.1 → 0.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 (124) hide show
  1. package/CHANGELOG.md +44 -0
  2. package/README.ko.md +25 -14
  3. package/README.md +61 -17
  4. package/agents/analyst.md +48 -4
  5. package/agents/architect.md +39 -4
  6. package/agents/code-reviewer.md +107 -77
  7. package/agents/critic.md +47 -4
  8. package/agents/debugger.md +46 -4
  9. package/agents/designer.md +40 -4
  10. package/agents/executor.md +112 -30
  11. package/agents/explore.md +45 -5
  12. package/agents/git-master.md +48 -4
  13. package/agents/planner.md +121 -18
  14. package/agents/test-engineer.md +58 -4
  15. package/agents/verifier.md +92 -77
  16. package/commands/architecture-decision.md +127 -258
  17. package/commands/calibrate.md +225 -0
  18. package/commands/code-review.md +163 -178
  19. package/commands/compound.md +127 -68
  20. package/commands/deep-interview.md +212 -110
  21. package/commands/docker.md +68 -178
  22. package/commands/forge-loop.md +215 -0
  23. package/commands/learn.md +231 -0
  24. package/commands/retro.md +215 -0
  25. package/commands/ship.md +277 -0
  26. package/dist/cli.js +17 -9
  27. package/dist/core/auto-compound-runner.js +14 -0
  28. package/dist/core/config-injector.d.ts +2 -1
  29. package/dist/core/config-injector.js +2 -1
  30. package/dist/core/dashboard.d.ts +17 -0
  31. package/dist/core/dashboard.js +112 -2
  32. package/dist/core/harness.d.ts +6 -1
  33. package/dist/core/harness.js +75 -19
  34. package/dist/core/paths.d.ts +6 -1
  35. package/dist/core/paths.js +18 -2
  36. package/dist/core/spawn.d.ts +3 -2
  37. package/dist/core/spawn.js +27 -8
  38. package/dist/core/types.d.ts +34 -0
  39. package/dist/engine/compound-lifecycle.d.ts +4 -3
  40. package/dist/engine/compound-lifecycle.js +91 -46
  41. package/dist/engine/meta-learning/adaptive-thresholds.d.ts +20 -0
  42. package/dist/engine/meta-learning/adaptive-thresholds.js +126 -0
  43. package/dist/engine/meta-learning/extraction-tuner.d.ts +15 -0
  44. package/dist/engine/meta-learning/extraction-tuner.js +99 -0
  45. package/dist/engine/meta-learning/matcher-weight-tuner.d.ts +21 -0
  46. package/dist/engine/meta-learning/matcher-weight-tuner.js +151 -0
  47. package/dist/engine/meta-learning/runner.d.ts +14 -0
  48. package/dist/engine/meta-learning/runner.js +90 -0
  49. package/dist/engine/meta-learning/scope-promoter.d.ts +21 -0
  50. package/dist/engine/meta-learning/scope-promoter.js +84 -0
  51. package/dist/engine/meta-learning/session-quality-scorer.d.ts +61 -0
  52. package/dist/engine/meta-learning/session-quality-scorer.js +166 -0
  53. package/dist/engine/meta-learning/types.d.ts +114 -0
  54. package/dist/engine/meta-learning/types.js +43 -0
  55. package/dist/engine/solution-format.d.ts +2 -2
  56. package/dist/engine/solution-format.js +249 -34
  57. package/dist/engine/solution-index.d.ts +1 -1
  58. package/dist/engine/solution-matcher.d.ts +7 -1
  59. package/dist/engine/solution-matcher.js +114 -37
  60. package/dist/fgx.js +12 -8
  61. package/dist/hooks/context-guard.d.ts +5 -0
  62. package/dist/hooks/context-guard.js +118 -2
  63. package/dist/hooks/hooks-generator.d.ts +3 -0
  64. package/dist/hooks/hooks-generator.js +23 -6
  65. package/dist/hooks/keyword-detector.js +16 -100
  66. package/dist/hooks/skill-injector.d.ts +4 -3
  67. package/dist/hooks/skill-injector.js +6 -4
  68. package/dist/host/codex-adapter.d.ts +10 -0
  69. package/dist/host/codex-adapter.js +154 -0
  70. package/dist/mcp/solution-reader.d.ts +5 -5
  71. package/dist/mcp/solution-reader.js +34 -24
  72. package/dist/services/session.d.ts +19 -0
  73. package/dist/services/session.js +62 -0
  74. package/hooks/hooks.json +2 -2
  75. package/package.json +2 -1
  76. package/skills/architecture-decision/SKILL.md +113 -257
  77. package/skills/calibrate/SKILL.md +207 -0
  78. package/skills/code-review/SKILL.md +151 -178
  79. package/skills/compound/SKILL.md +126 -68
  80. package/skills/deep-interview/SKILL.md +210 -110
  81. package/skills/docker/SKILL.md +57 -179
  82. package/skills/forge-loop/SKILL.md +198 -0
  83. package/skills/learn/SKILL.md +216 -0
  84. package/skills/retro/SKILL.md +199 -0
  85. package/skills/ship/SKILL.md +259 -0
  86. package/agents/code-simplifier.md +0 -197
  87. package/agents/performance-reviewer.md +0 -172
  88. package/agents/qa-tester.md +0 -158
  89. package/agents/refactoring-expert.md +0 -168
  90. package/agents/scientist.md +0 -144
  91. package/agents/security-reviewer.md +0 -137
  92. package/agents/writer.md +0 -184
  93. package/commands/api-design.md +0 -268
  94. package/commands/ci-cd.md +0 -270
  95. package/commands/database.md +0 -263
  96. package/commands/debug-detective.md +0 -99
  97. package/commands/documentation.md +0 -276
  98. package/commands/ecomode.md +0 -51
  99. package/commands/frontend.md +0 -271
  100. package/commands/git-master.md +0 -90
  101. package/commands/incident-response.md +0 -292
  102. package/commands/migrate.md +0 -101
  103. package/commands/performance.md +0 -288
  104. package/commands/refactor.md +0 -105
  105. package/commands/security-review.md +0 -288
  106. package/commands/specify.md +0 -128
  107. package/commands/tdd.md +0 -183
  108. package/commands/testing-strategy.md +0 -265
  109. package/skills/api-design/SKILL.md +0 -262
  110. package/skills/ci-cd/SKILL.md +0 -264
  111. package/skills/database/SKILL.md +0 -257
  112. package/skills/debug-detective/SKILL.md +0 -95
  113. package/skills/documentation/SKILL.md +0 -270
  114. package/skills/ecomode/SKILL.md +0 -46
  115. package/skills/frontend/SKILL.md +0 -265
  116. package/skills/git-master/SKILL.md +0 -86
  117. package/skills/incident-response/SKILL.md +0 -286
  118. package/skills/migrate/SKILL.md +0 -96
  119. package/skills/performance/SKILL.md +0 -282
  120. package/skills/refactor/SKILL.md +0 -100
  121. package/skills/security-review/SKILL.md +0 -282
  122. package/skills/specify/SKILL.md +0 -122
  123. package/skills/tdd/SKILL.md +0 -178
  124. package/skills/testing-strategy/SKILL.md +0 -260
@@ -1,265 +0,0 @@
1
- ---
2
- name: testing-strategy
3
- description: This skill should be used when the user asks to "testing strategy,테스트 전략,test plan,테스트 계획,coverage plan". Test strategy design, coverage analysis, and quality planning
4
- triggers:
5
- - "testing strategy"
6
- - "테스트 전략"
7
- - "test plan"
8
- - "테스트 계획"
9
- - "coverage plan"
10
- ---
11
- <!-- forgen-managed -->
12
-
13
- <Purpose>
14
- 테스트 전략을 수립하고 커버리지 계획을 설계합니다.
15
- TDD 스킬이 Red-Green-Refactor 워크플로우를 다루는 반면,
16
- 이 스킬은 "무엇을 어떻게 테스트할 것인가"의 전략적 관점을 다룹니다.
17
- 테스트 피라미드, 커버리지 갭 분석, 우선순위 결정을 수행합니다.
18
- </Purpose>
19
-
20
- <Steps>
21
- 1. **현재 커버리지 평가**: 기존 테스트 상태를 분석합니다
22
- - 라인/브랜치/함수 커버리지 측정
23
- - 테스트 피라미드 비율 분석 (unit : integration : e2e)
24
- - 테스트 실행 시간 측정
25
- - 불안정(flaky) 테스트 식별
26
- - 테스트 없는 핵심 경로 식별
27
- - 최근 버그의 테스트 커버리지 분석 (커버 되었는가?)
28
-
29
- 2. **갭 분석**: 테스트가 부족한 영역을 식별합니다
30
- - 비즈니스 로직의 테스트 커버리지 확인
31
- - 에러 핸들링 경로의 테스트 존재 여부
32
- - 엣지 케이스 누락 식별
33
- * 빈 입력, null/undefined
34
- * 경계값 (최소/최대)
35
- * 동시성/경쟁 조건
36
- * 타임아웃/네트워크 에러
37
- - 보안 관련 로직의 테스트 확인 (인증, 인가, 입력 검증)
38
- - 통합 테스트 누락 (모듈 간 상호작용)
39
- - 외부 의존성 모킹의 적절성
40
-
41
- 3. **우선순위 결정**: 테스트 작성 순서를 결정합니다
42
- - 위험도 기반 우선순위 매트릭스:
43
- * [P0] 결제, 인증, 데이터 무결성 -- 반드시 테스트
44
- * [P1] 핵심 비즈니스 로직 -- 높은 우선순위
45
- * [P2] 일반 CRUD 작업 -- 중간 우선순위
46
- * [P3] 유틸리티, 헬퍼 -- 낮은 우선순위
47
- - 변경 빈도가 높은 코드 우선
48
- - 최근 버그가 발생한 모듈 우선
49
- - 복잡도가 높은 함수 우선
50
-
51
- 4. **테스트 전략 수립**: 테스트 유형별 전략을 설계합니다
52
- - Unit Test 전략:
53
- * 순수 함수: 입력/출력 테스트
54
- * 사이드 이펙트: 모킹/스터빙
55
- * 커버리지 목표: 85%+ (브랜치 기준)
56
- - Integration Test 전략:
57
- * 모듈 간 상호작용 검증
58
- * 외부 서비스 모킹 범위
59
- * 데이터베이스 테스트 (인메모리 vs 컨테이너)
60
- - E2E Test 전략:
61
- * 핵심 사용자 시나리오 선정
62
- * 테스트 환경 구성
63
- * 데이터 시딩 전략
64
- - 성능 Test 전략:
65
- * 부하 테스트 시나리오
66
- * 성능 기준값 설정
67
-
68
- 5. **구현 및 추적**: 테스트를 점진적으로 구현합니다
69
- - 테스트 작성 태스크 목록 생성
70
- - 커버리지 추적 대시보드 설정
71
- - CI 파이프라인에 커버리지 게이트 추가
72
- - 정기적인 커버리지 리뷰 일정 설정
73
- - 뮤테이션 테스트 도입 계획 (핵심 비즈니스 로직)
74
- </Steps>
75
-
76
- ## 에이전트 위임
77
-
78
- `test-engineer` 에이전트(Opus 모델)에 위임하여 테스트 전략을 수립합니다:
79
-
80
- ```
81
- Agent(
82
- subagent_type="test-engineer",
83
- model="opus",
84
- prompt="TESTING STRATEGY TASK
85
-
86
- 테스트 전략을 수립하고 커버리지 계획을 설계하세요.
87
-
88
- Project: [프로젝트 설명]
89
- Current Coverage: [현재 커버리지 또는 '미측정']
90
-
91
- Strategy Checklist:
92
- 1. 현재 커버리지 측정 및 분석
93
- 2. 테스트 갭 식별 (에러 경로, 엣지 케이스)
94
- 3. 위험도 기반 우선순위 결정
95
- 4. 테스트 유형별 전략 (unit/integration/e2e)
96
- 5. 구현 로드맵 및 커버리지 목표
97
-
98
- Output: 테스트 전략 문서:
99
- - 현재 커버리지 분석
100
- - 갭 분석 결과
101
- - 우선순위 목록
102
- - 유형별 전략
103
- - 커버리지 목표 및 로드맵"
104
- )
105
- ```
106
-
107
- ## External Consultation (Optional)
108
-
109
- test-engineer 에이전트는 교차 검증을 위해 Claude Task 에이전트에 자문할 수 있습니다.
110
-
111
- ### Protocol
112
- 1. **자체 전략을 먼저 수립** -- 독립적으로 분석 수행
113
- 2. **검증을 위한 자문** -- Claude Task 에이전트를 통해 전략 교차 확인
114
- 3. **비판적 평가** -- 외부 제안을 맹목적으로 수용하지 않음
115
- 4. **우아한 폴백** -- 위임이 불가능할 경우 절대 차단하지 않음
116
-
117
- ### 자문이 필요한 경우
118
- - 복잡한 도메인의 테스트 커버리지 전략
119
- - 마이크로서비스 간 통합 테스트 설계
120
- - 성능/부하 테스트 시나리오 설계
121
- - 뮤테이션 테스트 도입 전략
122
-
123
- ### 자문을 생략하는 경우
124
- - 단순 유닛 테스트 계획
125
- - 명확한 CRUD 테스트
126
- - 기존 패턴 반복
127
- - 소규모 모듈의 테스트
128
-
129
- ## 테스트 피라미드 기준
130
-
131
- ```
132
- / E2E \ 5~10% (핵심 시나리오만)
133
- /----------\
134
- / Integration \ 15~25% (모듈 간 상호작용)
135
- /----------------\
136
- / Unit Tests \ 70~80% (모든 비즈니스 로직)
137
- /--------------------\
138
- ```
139
-
140
- ## 커버리지 목표 가이드
141
-
142
- | 코드 유형 | 라인 | 브랜치 | 뮤테이션 |
143
- |-----------|------|--------|----------|
144
- | 결제/인증 | 95%+ | 90%+ | 80%+ |
145
- | 비즈니스 로직 | 85%+ | 80%+ | 70%+ |
146
- | 유틸리티 | 80%+ | 75%+ | -- |
147
- | UI 컴포넌트 | 70%+ | 60%+ | -- |
148
- | 설정/부트스트랩 | 60%+ | -- | -- |
149
-
150
- ## 테스트 품질 지표
151
-
152
- | 지표 | 건강 | 주의 | 위험 |
153
- |------|------|------|------|
154
- | 브랜치 커버리지 | > 80% | 60~80% | < 60% |
155
- | 테스트 실행 시간 | < 30s | 30s~2m | > 2m |
156
- | Flaky 테스트 비율 | 0% | < 2% | > 2% |
157
- | 뮤테이션 점수 | > 70% | 50~70% | < 50% |
158
-
159
- <Output>
160
- ```
161
- TESTING STRATEGY / 테스트 전략 문서
162
- =====================================
163
-
164
- Project: [프로젝트명]
165
- Date: YYYY-MM-DD
166
- Test Framework: [vitest / jest / playwright]
167
-
168
- CURRENT STATE / 현재 상태
169
- ---------------------------
170
- Line Coverage: 72% (target: 85%)
171
- Branch Coverage: 58% (target: 80%)
172
- Test Count: 142 (unit: 120, integration: 18, e2e: 4)
173
- Execution Time: 24s
174
- Flaky Tests: 2 (src/api/order.test.ts, src/utils/date.test.ts)
175
-
176
- GAP ANALYSIS / 갭 분석
177
- ------------------------
178
- [P0] CRITICAL GAPS (테스트 없는 핵심 경로):
179
- - src/services/payment.ts -- 결제 처리 로직 (0% coverage)
180
- - src/middleware/auth.ts -- 인증 미들웨어 에러 경로 (30% branch)
181
-
182
- [P1] HIGH GAPS (불충분한 커버리지):
183
- - src/services/order.ts -- 할인 계산 엣지 케이스 미테스트
184
- - src/utils/validation.ts -- 경계값 테스트 부재
185
-
186
- [P2] MEDIUM GAPS:
187
- - src/api/users.ts -- 통합 테스트 부재
188
- - src/components/Cart.tsx -- 상태 변경 테스트 부족
189
-
190
- IMPLEMENTATION ROADMAP / 구현 로드맵
191
- --------------------------------------
192
- Week 1: P0 갭 해소 (결제, 인증)
193
- - [ ] payment.ts 유닛 테스트 (15개)
194
- - [ ] auth.ts 에러 경로 테스트 (8개)
195
-
196
- Week 2: P1 갭 해소 (비즈니스 로직)
197
- - [ ] order.ts 엣지 케이스 테스트 (10개)
198
- - [ ] validation.ts 경계값 테스트 (12개)
199
-
200
- Week 3: 통합 테스트 보강
201
- - [ ] API 엔드포인트 통합 테스트 (20개)
202
- - [ ] E2E 핵심 시나리오 (3개)
203
-
204
- TARGET / 목표
205
- --------------
206
- Line Coverage: 72% → 85%
207
- Branch Coverage: 58% → 80%
208
- Test Count: 142 → 210
209
- Flaky Tests: 2 → 0
210
- ```
211
- </Output>
212
-
213
- <Policy>
214
- - 커버리지 숫자보다 테스트 품질을 우선합니다
215
- - 브랜치 커버리지를 라인 커버리지보다 중요하게 봅니다
216
- - 핵심 비즈니스 로직에 뮤테이션 테스트를 권장합니다
217
- - Flaky 테스트는 즉시 수정하거나 격리합니다
218
- - 테스트는 빠르게 실행되어야 합니다 (전체 30초 이내 목표)
219
- - 테스트 작성 계획은 스프린트에 통합하여 추적합니다
220
- </Policy>
221
-
222
- ## 다른 스킬과의 연동
223
-
224
- **TDD 연동:**
225
- ```
226
- /forgen:tdd 전략에서 식별된 갭 구현
227
- ```
228
- 전략에서 식별된 테스트 갭을 TDD로 구현
229
-
230
- **코드 리뷰 연동:**
231
- ```
232
- /forgen:code-review 테스트 코드 품질 확인
233
- ```
234
- 작성된 테스트 코드의 품질 검증
235
-
236
- **CI/CD 연동:**
237
- ```
238
- /forgen:ci-cd 커버리지 게이트 설정
239
- ```
240
- CI에서 커버리지 임계값 강제
241
-
242
- ## Best Practices
243
-
244
- - **전략 먼저** -- 무작정 테스트를 쓰기 전에 어디가 중요한지 파악
245
- - **위험 기반** -- 모든 코드를 균일하게 테스트하지 않음
246
- - **피라미드 유지** -- E2E에 의존하지 않고 유닛 테스트 기반 구축
247
- - **Flaky 제로** -- 불안정한 테스트는 신뢰를 해침
248
- - **지속 추적** -- 커버리지 트렌드를 모니터링
249
-
250
- <Arguments>
251
- ## 사용법
252
- `/forgen:testing-strategy {대상}`
253
-
254
- ### 예시
255
- - `/forgen:testing-strategy 전체 프로젝트 커버리지 분석`
256
- - `/forgen:testing-strategy 결제 모듈 테스트 계획`
257
- - `/forgen:testing-strategy E2E 테스트 전략 수립`
258
- - `/forgen:testing-strategy 현재 테스트의 갭 분석`
259
-
260
- ### 인자
261
- - 분석 대상 모듈, 테스트 유형, 목표 등을 설명
262
- - 인자 없으면 프로젝트 전체의 테스트 전략을 수립
263
- </Arguments>
264
-
265
- $ARGUMENTS
@@ -1,262 +0,0 @@
1
- ---
2
- name: api-design
3
- description: This skill should be used when the user asks to "api design,api 설계,REST,GraphQL,엔드포인트,endpoint". Design REST/GraphQL APIs with resource modeling, error handling, and versioning
4
- ---
5
-
6
- <!-- forgen-managed -->
7
-
8
- <Purpose>
9
- REST 또는 GraphQL API를 체계적으로 설계합니다.
10
- 리소스 모델링부터 엔드포인트 설계, 에러 핸들링, 버전 관리, 문서화까지
11
- API 라이프사이클 전체를 다룹니다.
12
- </Purpose>
13
-
14
- <Steps>
15
- 1. **리소스 모델링**: 도메인 엔티티를 API 리소스로 변환합니다
16
- - 핵심 도메인 엔티티 식별 (명사 기반)
17
- - 리소스 간 관계 매핑 (1:1, 1:N, N:M)
18
- - 중첩 리소스 vs 독립 리소스 결정
19
- - 리소스 표현(representation) 스키마 정의
20
- - 필수/선택 필드 구분 및 타입 명시
21
-
22
- 2. **엔드포인트 설계**: URL 구조와 HTTP 메서드를 결정합니다
23
- - RESTful URL 컨벤션 적용 (복수형 명사, 계층 구조)
24
- - HTTP 메서드 매핑 (GET/POST/PUT/PATCH/DELETE)
25
- - 쿼리 파라미터 설계 (필터링, 정렬, 페이지네이션)
26
- - 페이지네이션 전략 선택 (cursor vs offset)
27
- - 벌크 작업 엔드포인트 필요 여부 결정
28
- - HATEOAS 링크 포함 여부 결정
29
- - GraphQL의 경우: Query/Mutation/Subscription 분리
30
-
31
- 3. **에러 핸들링**: 일관된 에러 응답 체계를 구축합니다
32
- - HTTP 상태 코드 매핑 (400, 401, 403, 404, 409, 422, 429, 500)
33
- - 에러 응답 스키마 정의 (code, message, details, trace_id)
34
- - 비즈니스 에러 코드 체계 설계
35
- - 유효성 검증 에러 상세 포맷 (필드별 에러 목록)
36
- - Rate limiting 응답 헤더 (X-RateLimit-Limit, Remaining, Reset)
37
- - 에러 메시지의 국제화(i18n) 전략
38
-
39
- 4. **버전 관리**: API 진화 전략을 수립합니다
40
- - 버전 관리 방식 선택 (URL path vs Header vs Query param)
41
- - Breaking change 정의 및 마이그레이션 가이드
42
- - Deprecation 정책 (최소 6개월 유예기간 권장)
43
- - Sunset 헤더 및 공지 절차
44
- - 하위 호환성 유지 전략
45
-
46
- 5. **보안 설계**: API 보안 정책을 수립합니다
47
- - 인증 방식 선택 (Bearer Token, API Key, OAuth 2.0)
48
- - 인가 모델 설계 (RBAC, ABAC, Scope 기반)
49
- - Rate limiting 정책 (엔드포인트별 차등 적용)
50
- - CORS 정책 설정
51
- - 입력 검증 규칙 (크기 제한, 타입 검증, 범위 검증)
52
- - 민감 데이터 마스킹 규칙
53
-
54
- 6. **문서화**: API 명세를 작성합니다
55
- - OpenAPI 3.0+ (REST) 또는 GraphQL Schema 작성
56
- - 각 엔드포인트별 요청/응답 예시
57
- - 인증 방법 가이드
58
- - SDK 코드 샘플 (curl, JavaScript, Python)
59
- - 변경 이력(changelog) 관리
60
- </Steps>
61
-
62
- ## 에이전트 위임
63
-
64
- `architect` 에이전트(Opus 모델)에 위임하여 API 아키텍처를 설계합니다:
65
-
66
- ```
67
- Agent(
68
- subagent_type="architect",
69
- model="opus",
70
- prompt="API DESIGN TASK
71
-
72
- API를 체계적으로 설계하세요.
73
-
74
- Domain: [도메인/서비스 설명]
75
- Type: [REST / GraphQL / Both]
76
-
77
- Design Checklist:
78
- 1. 리소스 모델링 (엔티티, 관계, 스키마)
79
- 2. 엔드포인트 설계 (URL, 메서드, 파라미터)
80
- 3. 에러 핸들링 (상태 코드, 에러 스키마)
81
- 4. 버전 관리 전략
82
- 5. 보안 설계 (인증, 인가, Rate limiting)
83
- 6. OpenAPI/GraphQL 스키마 초안
84
-
85
- Output: API 설계 문서:
86
- - 리소스 모델 다이어그램
87
- - 엔드포인트 목록 (메서드, URL, 설명)
88
- - 요청/응답 스키마
89
- - 에러 코드 매핑
90
- - 보안 정책 요약"
91
- )
92
- ```
93
-
94
- ## External Consultation (Optional)
95
-
96
- architect 에이전트는 교차 검증을 위해 Claude Task 에이전트에 자문할 수 있습니다.
97
-
98
- ### Protocol
99
- 1. **자체 API 설계를 먼저 완료** -- 독립적으로 설계 수행
100
- 2. **검증을 위한 자문** -- Claude Task 에이전트를 통해 설계 교차 확인
101
- 3. **비판적 평가** -- 외부 제안을 맹목적으로 수용하지 않음
102
- 4. **우아한 폴백** -- 위임이 불가능할 경우 절대 차단하지 않음
103
-
104
- ### 자문이 필요한 경우
105
- - 대규모 마이크로서비스 간 API 경계 설계
106
- - 복잡한 인증/인가 플로우
107
- - 실시간 통신이 필요한 API (WebSocket, SSE)
108
- - 외부 파트너 공개 API 설계
109
-
110
- ### 자문을 생략하는 경우
111
- - 단순 CRUD API
112
- - 내부 서비스 간 API
113
- - 잘 알려진 패턴의 적용
114
- - 프로토타입 수준의 API
115
-
116
- ## API 설계 체크리스트
117
-
118
- ### 리소스 설계 (5개)
119
- - [ ] 리소스 명명이 복수형 명사로 일관됨
120
- - [ ] 리소스 간 관계가 명확히 정의됨
121
- - [ ] 필수/선택 필드가 구분됨
122
- - [ ] 데이터 타입과 포맷이 명시됨 (ISO 8601 날짜 등)
123
- - [ ] 리소스 표현이 과도한 중첩 없이 평탄화됨
124
-
125
- ### 엔드포인트 설계 (5개)
126
- - [ ] HTTP 메서드가 의미에 맞게 사용됨
127
- - [ ] URL 경로가 계층적이고 예측 가능함
128
- - [ ] 페이지네이션이 목록 엔드포인트에 적용됨
129
- - [ ] 필터링/정렬 파라미터가 일관됨
130
- - [ ] 멱등성(idempotency)이 보장됨 (PUT, DELETE)
131
-
132
- ### 에러 핸들링 (4개)
133
- - [ ] HTTP 상태 코드가 의미에 맞게 사용됨
134
- - [ ] 에러 응답 포맷이 전체 API에서 일관됨
135
- - [ ] 유효성 검증 에러에 필드별 상세 정보 포함
136
- - [ ] 비즈니스 에러 코드가 체계적으로 분류됨
137
-
138
- ### 보안 (4개)
139
- - [ ] 인증 방식이 결정되고 문서화됨
140
- - [ ] Rate limiting이 적용됨
141
- - [ ] 입력 크기 제한이 설정됨
142
- - [ ] CORS 정책이 명시됨
143
-
144
- <Output>
145
- ```
146
- API DESIGN DOCUMENT / API 설계 문서
147
- ====================================
148
-
149
- Service: [서비스명]
150
- API Type: [REST / GraphQL]
151
- Version: v1
152
- Base URL: https://api.example.com/v1
153
-
154
- RESOURCE MODEL / 리소스 모델
155
- -----------------------------
156
- 1. [Resource Name]
157
- - id: string (UUID)
158
- - name: string (required, max 255)
159
- - created_at: string (ISO 8601)
160
- - [관계]: [관계 타입] -> [대상 리소스]
161
-
162
- ENDPOINTS / 엔드포인트
163
- -----------------------
164
- | Method | Path | Description | Auth |
165
- |--------|-----------------------|-------------------|------|
166
- | GET | /resources | 리소스 목록 조회 | Yes |
167
- | POST | /resources | 리소스 생성 | Yes |
168
- | GET | /resources/:id | 리소스 상세 조회 | Yes |
169
- | PUT | /resources/:id | 리소스 전체 수정 | Yes |
170
- | DELETE | /resources/:id | 리소스 삭제 | Yes |
171
-
172
- ERROR SCHEMA / 에러 스키마
173
- ---------------------------
174
- {
175
- "error": {
176
- "code": "VALIDATION_ERROR",
177
- "message": "입력 데이터가 유효하지 않습니다",
178
- "details": [
179
- { "field": "email", "message": "유효한 이메일 형식이 아닙니다" }
180
- ],
181
- "trace_id": "abc-123"
182
- }
183
- }
184
-
185
- ERROR CODES / 에러 코드
186
- -------------------------
187
- | HTTP | Code | Description |
188
- |------|--------------------|--------------------------|
189
- | 400 | VALIDATION_ERROR | 입력 유효성 검증 실패 |
190
- | 401 | UNAUTHORIZED | 인증 필요 |
191
- | 403 | FORBIDDEN | 권한 부족 |
192
- | 404 | NOT_FOUND | 리소스 없음 |
193
- | 409 | CONFLICT | 리소스 충돌 |
194
- | 429 | RATE_LIMITED | 요청 한도 초과 |
195
-
196
- VERSIONING / 버전 관리
197
- -----------------------
198
- Strategy: [URL path / Header / Query param]
199
- Current: v1
200
- Deprecation Policy: [정책 설명]
201
-
202
- SECURITY / 보안
203
- ----------------
204
- Authentication: [Bearer Token / API Key / OAuth 2.0]
205
- Rate Limiting: [요청/분]
206
- CORS: [허용 도메인]
207
- ```
208
- </Output>
209
-
210
- <Policy>
211
- - RESTful 원칙을 준수하되 실용성을 우선합니다
212
- - 일관성이 가장 중요합니다 -- 예외 없는 규칙이 이해하기 쉬운 API를 만듭니다
213
- - 에러 응답은 클라이언트가 자동으로 처리할 수 있을 만큼 구조화합니다
214
- - 보안은 설계 단계에서 반드시 포함합니다 (사후 추가 금지)
215
- - OpenAPI 스키마는 코드와 동기화 상태를 유지합니다
216
- - Breaking change는 반드시 버전 업과 마이그레이션 가이드를 동반합니다
217
- </Policy>
218
-
219
- ## 다른 스킬과의 연동
220
-
221
- **코드 리뷰 연동:**
222
- ```
223
- /forgen:code-review src/api/
224
- ```
225
- 설계된 API의 구현 코드를 리뷰
226
-
227
- **보안 리뷰 연동:**
228
- ```
229
- /forgen:security-review src/api/
230
- ```
231
- API 엔드포인트의 보안 취약점 점검
232
-
233
- **TDD 연동:**
234
- ```
235
- /forgen:tdd API 엔드포인트 통합 테스트
236
- ```
237
- API 엔드포인트별 테스트 작성
238
-
239
- ## Best Practices
240
-
241
- - **API 먼저 설계** -- 구현 전에 명세를 확정
242
- - **일관된 컨벤션** -- 네이밍, 에러 포맷, 페이지네이션을 통일
243
- - **하위 호환성** -- 기존 클라이언트를 깨뜨리지 않는 변경
244
- - **적절한 상태 코드** -- 200으로 모든 것을 처리하지 않음
245
- - **과도한 노출 방지** -- 필요한 필드만 응답에 포함
246
-
247
- <Arguments>
248
- ## 사용법
249
- `/forgen:api-design {설계 대상}`
250
-
251
- ### 예시
252
- - `/forgen:api-design 사용자 관리 REST API`
253
- - `/forgen:api-design 상품 주문 시스템 GraphQL API`
254
- - `/forgen:api-design 기존 /api/users 엔드포인트 v2 설계`
255
- - `/forgen:api-design 외부 파트너용 공개 API`
256
-
257
- ### 인자
258
- - 설계할 API의 도메인, 타입(REST/GraphQL), 요구사항을 설명
259
- - 인자 없으면 프로젝트 컨텍스트에서 API 설계 요구사항을 파악
260
- </Arguments>
261
-
262
- $ARGUMENTS