@wooojin/forgen 0.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.
- package/.claude-plugin/plugin.json +20 -0
- package/CHANGELOG.md +353 -0
- package/CONTRIBUTING.md +98 -0
- package/LICENSE +21 -0
- package/README.ja.md +469 -0
- package/README.ko.md +469 -0
- package/README.md +483 -0
- package/README.zh.md +469 -0
- package/agents/analyst.md +98 -0
- package/agents/architect.md +62 -0
- package/agents/code-reviewer.md +120 -0
- package/agents/code-simplifier.md +197 -0
- package/agents/critic.md +70 -0
- package/agents/debugger.md +117 -0
- package/agents/designer.md +131 -0
- package/agents/executor.md +54 -0
- package/agents/explore.md +145 -0
- package/agents/git-master.md +212 -0
- package/agents/performance-reviewer.md +172 -0
- package/agents/planner.md +29 -0
- package/agents/qa-tester.md +158 -0
- package/agents/refactoring-expert.md +168 -0
- package/agents/scientist.md +144 -0
- package/agents/security-reviewer.md +137 -0
- package/agents/test-engineer.md +153 -0
- package/agents/verifier.md +133 -0
- package/agents/writer.md +184 -0
- package/commands/api-design.md +268 -0
- package/commands/architecture-decision.md +314 -0
- package/commands/ci-cd.md +270 -0
- package/commands/code-review.md +233 -0
- package/commands/compound.md +117 -0
- package/commands/database.md +263 -0
- package/commands/debug-detective.md +99 -0
- package/commands/docker.md +274 -0
- package/commands/documentation.md +276 -0
- package/commands/ecomode.md +51 -0
- package/commands/frontend.md +271 -0
- package/commands/git-master.md +90 -0
- package/commands/incident-response.md +292 -0
- package/commands/migrate.md +101 -0
- package/commands/performance.md +288 -0
- package/commands/refactor.md +105 -0
- package/commands/security-review.md +288 -0
- package/commands/tdd.md +183 -0
- package/commands/testing-strategy.md +265 -0
- package/dist/cli.d.ts +2 -0
- package/dist/cli.js +295 -0
- package/dist/core/auto-compound-runner.d.ts +12 -0
- package/dist/core/auto-compound-runner.js +460 -0
- package/dist/core/config-hooks.d.ts +10 -0
- package/dist/core/config-hooks.js +112 -0
- package/dist/core/config-injector.d.ts +50 -0
- package/dist/core/config-injector.js +455 -0
- package/dist/core/doctor.d.ts +1 -0
- package/dist/core/doctor.js +163 -0
- package/dist/core/errors.d.ts +81 -0
- package/dist/core/errors.js +133 -0
- package/dist/core/global-config.d.ts +43 -0
- package/dist/core/global-config.js +25 -0
- package/dist/core/harness.d.ts +24 -0
- package/dist/core/harness.js +621 -0
- package/dist/core/init.d.ts +7 -0
- package/dist/core/init.js +37 -0
- package/dist/core/inspect-cli.d.ts +7 -0
- package/dist/core/inspect-cli.js +47 -0
- package/dist/core/legacy-detector.d.ts +33 -0
- package/dist/core/legacy-detector.js +66 -0
- package/dist/core/logger.d.ts +34 -0
- package/dist/core/logger.js +121 -0
- package/dist/core/mcp-config.d.ts +44 -0
- package/dist/core/mcp-config.js +177 -0
- package/dist/core/notepad.d.ts +31 -0
- package/dist/core/notepad.js +88 -0
- package/dist/core/paths.d.ts +85 -0
- package/dist/core/paths.js +101 -0
- package/dist/core/plugin-detector.d.ts +44 -0
- package/dist/core/plugin-detector.js +226 -0
- package/dist/core/runtime-detector.d.ts +8 -0
- package/dist/core/runtime-detector.js +49 -0
- package/dist/core/scope-resolver.d.ts +8 -0
- package/dist/core/scope-resolver.js +45 -0
- package/dist/core/session-logger.d.ts +6 -0
- package/dist/core/session-logger.js +111 -0
- package/dist/core/session-store.d.ts +28 -0
- package/dist/core/session-store.js +218 -0
- package/dist/core/settings-lock.d.ts +18 -0
- package/dist/core/settings-lock.js +125 -0
- package/dist/core/spawn.d.ts +3 -0
- package/dist/core/spawn.js +135 -0
- package/dist/core/types.d.ts +108 -0
- package/dist/core/types.js +1 -0
- package/dist/core/uninstall.d.ts +4 -0
- package/dist/core/uninstall.js +307 -0
- package/dist/core/v1-bootstrap.d.ts +26 -0
- package/dist/core/v1-bootstrap.js +155 -0
- package/dist/engine/compound-cli.d.ts +24 -0
- package/dist/engine/compound-cli.js +250 -0
- package/dist/engine/compound-extractor.d.ts +68 -0
- package/dist/engine/compound-extractor.js +860 -0
- package/dist/engine/compound-lifecycle.d.ts +32 -0
- package/dist/engine/compound-lifecycle.js +305 -0
- package/dist/engine/compound-loop.d.ts +32 -0
- package/dist/engine/compound-loop.js +511 -0
- package/dist/engine/match-eval-log.d.ts +139 -0
- package/dist/engine/match-eval-log.js +270 -0
- package/dist/engine/phrase-blocklist.d.ts +119 -0
- package/dist/engine/phrase-blocklist.js +208 -0
- package/dist/engine/skill-promoter.d.ts +20 -0
- package/dist/engine/skill-promoter.js +115 -0
- package/dist/engine/solution-format.d.ts +160 -0
- package/dist/engine/solution-format.js +432 -0
- package/dist/engine/solution-index.d.ts +13 -0
- package/dist/engine/solution-index.js +252 -0
- package/dist/engine/solution-matcher.d.ts +364 -0
- package/dist/engine/solution-matcher.js +656 -0
- package/dist/engine/solution-writer.d.ts +76 -0
- package/dist/engine/solution-writer.js +157 -0
- package/dist/engine/term-matcher.d.ts +81 -0
- package/dist/engine/term-matcher.js +268 -0
- package/dist/engine/term-normalizer.d.ts +116 -0
- package/dist/engine/term-normalizer.js +171 -0
- package/dist/fgx.d.ts +6 -0
- package/dist/fgx.js +42 -0
- package/dist/forge/cli.d.ts +11 -0
- package/dist/forge/cli.js +100 -0
- package/dist/forge/evidence-processor.d.ts +21 -0
- package/dist/forge/evidence-processor.js +87 -0
- package/dist/forge/mismatch-detector.d.ts +44 -0
- package/dist/forge/mismatch-detector.js +83 -0
- package/dist/forge/onboarding-cli.d.ts +6 -0
- package/dist/forge/onboarding-cli.js +89 -0
- package/dist/forge/onboarding.d.ts +25 -0
- package/dist/forge/onboarding.js +122 -0
- package/dist/hooks/compound-reflection.d.ts +45 -0
- package/dist/hooks/compound-reflection.js +82 -0
- package/dist/hooks/context-guard.d.ts +24 -0
- package/dist/hooks/context-guard.js +156 -0
- package/dist/hooks/dangerous-patterns.json +18 -0
- package/dist/hooks/db-guard.d.ts +17 -0
- package/dist/hooks/db-guard.js +105 -0
- package/dist/hooks/hook-config.d.ts +29 -0
- package/dist/hooks/hook-config.js +92 -0
- package/dist/hooks/hook-registry.d.ts +43 -0
- package/dist/hooks/hook-registry.js +31 -0
- package/dist/hooks/hooks-generator.d.ts +49 -0
- package/dist/hooks/hooks-generator.js +99 -0
- package/dist/hooks/intent-classifier.d.ts +12 -0
- package/dist/hooks/intent-classifier.js +62 -0
- package/dist/hooks/keyword-detector.d.ts +25 -0
- package/dist/hooks/keyword-detector.js +389 -0
- package/dist/hooks/notepad-injector.d.ts +18 -0
- package/dist/hooks/notepad-injector.js +51 -0
- package/dist/hooks/permission-handler.d.ts +14 -0
- package/dist/hooks/permission-handler.js +114 -0
- package/dist/hooks/post-tool-failure.d.ts +11 -0
- package/dist/hooks/post-tool-failure.js +118 -0
- package/dist/hooks/post-tool-handlers.d.ts +17 -0
- package/dist/hooks/post-tool-handlers.js +115 -0
- package/dist/hooks/post-tool-use.d.ts +29 -0
- package/dist/hooks/post-tool-use.js +151 -0
- package/dist/hooks/pre-compact.d.ts +10 -0
- package/dist/hooks/pre-compact.js +165 -0
- package/dist/hooks/pre-tool-use.d.ts +31 -0
- package/dist/hooks/pre-tool-use.js +325 -0
- package/dist/hooks/prompt-injection-filter.d.ts +56 -0
- package/dist/hooks/prompt-injection-filter.js +287 -0
- package/dist/hooks/rate-limiter.d.ts +21 -0
- package/dist/hooks/rate-limiter.js +86 -0
- package/dist/hooks/secret-filter.d.ts +14 -0
- package/dist/hooks/secret-filter.js +65 -0
- package/dist/hooks/session-recovery.d.ts +27 -0
- package/dist/hooks/session-recovery.js +406 -0
- package/dist/hooks/shared/atomic-write.d.ts +41 -0
- package/dist/hooks/shared/atomic-write.js +148 -0
- package/dist/hooks/shared/context-budget.d.ts +37 -0
- package/dist/hooks/shared/context-budget.js +45 -0
- package/dist/hooks/shared/file-lock.d.ts +56 -0
- package/dist/hooks/shared/file-lock.js +253 -0
- package/dist/hooks/shared/hook-response.d.ts +33 -0
- package/dist/hooks/shared/hook-response.js +62 -0
- package/dist/hooks/shared/injection-caps.d.ts +39 -0
- package/dist/hooks/shared/injection-caps.js +52 -0
- package/dist/hooks/shared/plugin-signal.d.ts +23 -0
- package/dist/hooks/shared/plugin-signal.js +104 -0
- package/dist/hooks/shared/read-stdin.d.ts +8 -0
- package/dist/hooks/shared/read-stdin.js +63 -0
- package/dist/hooks/shared/sanitize-id.d.ts +7 -0
- package/dist/hooks/shared/sanitize-id.js +9 -0
- package/dist/hooks/shared/sanitize.d.ts +7 -0
- package/dist/hooks/shared/sanitize.js +22 -0
- package/dist/hooks/skill-injector.d.ts +38 -0
- package/dist/hooks/skill-injector.js +285 -0
- package/dist/hooks/slop-detector.d.ts +18 -0
- package/dist/hooks/slop-detector.js +93 -0
- package/dist/hooks/solution-injector.d.ts +58 -0
- package/dist/hooks/solution-injector.js +436 -0
- package/dist/hooks/subagent-tracker.d.ts +10 -0
- package/dist/hooks/subagent-tracker.js +90 -0
- package/dist/i18n/index.d.ts +43 -0
- package/dist/i18n/index.js +224 -0
- package/dist/lib.d.ts +14 -0
- package/dist/lib.js +14 -0
- package/dist/mcp/server.d.ts +8 -0
- package/dist/mcp/server.js +40 -0
- package/dist/mcp/solution-reader.d.ts +90 -0
- package/dist/mcp/solution-reader.js +273 -0
- package/dist/mcp/tools.d.ts +16 -0
- package/dist/mcp/tools.js +302 -0
- package/dist/preset/facet-catalog.d.ts +17 -0
- package/dist/preset/facet-catalog.js +46 -0
- package/dist/preset/preset-manager.d.ts +31 -0
- package/dist/preset/preset-manager.js +111 -0
- package/dist/renderer/inspect-renderer.d.ts +11 -0
- package/dist/renderer/inspect-renderer.js +123 -0
- package/dist/renderer/rule-renderer.d.ts +18 -0
- package/dist/renderer/rule-renderer.js +159 -0
- package/dist/store/evidence-store.d.ts +23 -0
- package/dist/store/evidence-store.js +58 -0
- package/dist/store/profile-store.d.ts +12 -0
- package/dist/store/profile-store.js +53 -0
- package/dist/store/recommendation-store.d.ts +22 -0
- package/dist/store/recommendation-store.js +64 -0
- package/dist/store/rule-store.d.ts +22 -0
- package/dist/store/rule-store.js +62 -0
- package/dist/store/session-state-store.d.ts +11 -0
- package/dist/store/session-state-store.js +44 -0
- package/dist/store/types.d.ts +159 -0
- package/dist/store/types.js +7 -0
- package/hooks/hook-registry.json +21 -0
- package/hooks/hooks.json +185 -0
- package/package.json +89 -0
- package/plugin.json +20 -0
- package/scripts/postinstall.js +826 -0
- package/skills/api-design/SKILL.md +262 -0
- package/skills/architecture-decision/SKILL.md +309 -0
- package/skills/ci-cd/SKILL.md +264 -0
- package/skills/code-review/SKILL.md +228 -0
- package/skills/compound/SKILL.md +101 -0
- package/skills/database/SKILL.md +257 -0
- package/skills/debug-detective/SKILL.md +95 -0
- package/skills/docker/SKILL.md +268 -0
- package/skills/documentation/SKILL.md +270 -0
- package/skills/ecomode/SKILL.md +46 -0
- package/skills/frontend/SKILL.md +265 -0
- package/skills/git-master/SKILL.md +86 -0
- package/skills/incident-response/SKILL.md +286 -0
- package/skills/migrate/SKILL.md +96 -0
- package/skills/performance/SKILL.md +282 -0
- package/skills/refactor/SKILL.md +100 -0
- package/skills/security-review/SKILL.md +282 -0
- package/skills/tdd/SKILL.md +178 -0
- package/skills/testing-strategy/SKILL.md +260 -0
- package/starter-pack/solutions/starter-api-error-responses.md +37 -0
- package/starter-pack/solutions/starter-async-patterns.md +40 -0
- package/starter-pack/solutions/starter-caching-strategy.md +40 -0
- package/starter-pack/solutions/starter-code-review-checklist.md +39 -0
- package/starter-pack/solutions/starter-debugging-systematic.md +40 -0
- package/starter-pack/solutions/starter-dependency-injection.md +40 -0
- package/starter-pack/solutions/starter-error-handling-patterns.md +38 -0
- package/starter-pack/solutions/starter-git-atomic-commits.md +36 -0
- package/starter-pack/solutions/starter-input-validation.md +40 -0
- package/starter-pack/solutions/starter-n-plus-one-queries.md +37 -0
- package/starter-pack/solutions/starter-refactor-safely.md +38 -0
- package/starter-pack/solutions/starter-secret-management.md +37 -0
- package/starter-pack/solutions/starter-separation-of-concerns.md +36 -0
- package/starter-pack/solutions/starter-tdd-red-green-refactor.md +40 -0
- package/starter-pack/solutions/starter-typescript-strict-types.md +39 -0
|
@@ -0,0 +1,262 @@
|
|
|
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
|
|
@@ -0,0 +1,309 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: architecture-decision
|
|
3
|
+
description: This skill should be used when the user asks to "adr,architecture decision,아키텍처 결정,설계 결정,기술 결정". Architecture Decision Record (ADR) creation with alternatives evaluation and consequence analysis
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
<!-- forgen-managed -->
|
|
7
|
+
|
|
8
|
+
<Purpose>
|
|
9
|
+
아키텍처 결정 기록(ADR)을 체계적으로 작성합니다.
|
|
10
|
+
의사결정의 컨텍스트, 대안 평가, 결정, 결과를 구조화하여 기록하고
|
|
11
|
+
미래의 개발자가 "왜 이렇게 결정했는가"를 이해할 수 있도록 합니다.
|
|
12
|
+
</Purpose>
|
|
13
|
+
|
|
14
|
+
<Steps>
|
|
15
|
+
1. **컨텍스트 수집**: 결정이 필요한 배경을 정리합니다
|
|
16
|
+
- 해결하려는 문제/요구사항 정의
|
|
17
|
+
- 현재 시스템 상태 및 제약 조건
|
|
18
|
+
- 비즈니스 요구사항과 기술 요구사항 구분
|
|
19
|
+
- 이해관계자 식별 (누가 영향을 받는가)
|
|
20
|
+
- 결정의 긴급도와 중요도
|
|
21
|
+
- 관련 기존 ADR 참조
|
|
22
|
+
- 비기능 요구사항 (성능, 보안, 확장성, 비용)
|
|
23
|
+
|
|
24
|
+
2. **대안 탐색**: 가능한 선택지를 열거합니다
|
|
25
|
+
- 최소 3개 이상의 대안 도출
|
|
26
|
+
- 각 대안에 대한 간략한 설명
|
|
27
|
+
- "아무것도 하지 않기" 옵션 포함 (현상 유지)
|
|
28
|
+
- 업계 사례 및 벤치마크 조사
|
|
29
|
+
- 기존 기술 스택과의 호환성 확인
|
|
30
|
+
- 팀 역량 및 학습 곡선 고려
|
|
31
|
+
- 라이선스/비용 확인
|
|
32
|
+
|
|
33
|
+
3. **대안 평가**: 정량적/정성적 기준으로 비교합니다
|
|
34
|
+
- 평가 기준 정의:
|
|
35
|
+
* 기술 적합성 (요구사항 충족도)
|
|
36
|
+
* 복잡도 (구현 난이도, 운영 부담)
|
|
37
|
+
* 성능 (응답 시간, 처리량, 리소스)
|
|
38
|
+
* 확장성 (수평/수직 확장 가능성)
|
|
39
|
+
* 보안 (취약점, 인증/인가)
|
|
40
|
+
* 비용 (초기 비용, 운영 비용, 기회 비용)
|
|
41
|
+
* 생태계 (커뮤니티, 문서, 도구)
|
|
42
|
+
* 팀 역량 (경험, 학습 곡선)
|
|
43
|
+
- 가중치 부여 (프로젝트별 우선순위에 따라)
|
|
44
|
+
- 각 대안의 장단점 분석
|
|
45
|
+
- PoC(Proof of Concept) 필요 여부 결정
|
|
46
|
+
|
|
47
|
+
4. **결정**: 최종 선택과 근거를 명시합니다
|
|
48
|
+
- 선택된 대안과 핵심 이유
|
|
49
|
+
- 결정을 뒤집을 수 있는 조건 (reversibility)
|
|
50
|
+
- 수용한 트레이드오프 명시
|
|
51
|
+
- 거부된 대안과 거부 이유
|
|
52
|
+
- 결정에 대한 팀 합의 수준
|
|
53
|
+
|
|
54
|
+
5. **결과 분석**: 결정의 예상 영향을 기록합니다
|
|
55
|
+
- 긍정적 결과 (해결되는 문제)
|
|
56
|
+
- 부정적 결과 (새로 발생하는 제약/부담)
|
|
57
|
+
- 리스크 (무엇이 잘못될 수 있는가)
|
|
58
|
+
- 리스크 완화 전략
|
|
59
|
+
- 후속 결정이 필요한 사항
|
|
60
|
+
- 모니터링 포인트 (결정의 효과를 어떻게 측정할 것인가)
|
|
61
|
+
|
|
62
|
+
6. **기록 및 공유**: ADR을 작성하고 공유합니다
|
|
63
|
+
- ADR 번호 및 제목 부여 (ADR-NNN: [제목])
|
|
64
|
+
- 상태 설정 (Proposed → Accepted → Deprecated → Superseded)
|
|
65
|
+
- ADR 저장소에 등록 (docs/adr/ 또는 .adr/)
|
|
66
|
+
- 이해관계자에게 공유 및 피드백 수집
|
|
67
|
+
- 관련 코드에 ADR 참조 주석 추가
|
|
68
|
+
</Steps>
|
|
69
|
+
|
|
70
|
+
## 에이전트 위임
|
|
71
|
+
|
|
72
|
+
`architect` 에이전트(Opus 모델)에 위임하여 아키텍처 분석을 수행합니다:
|
|
73
|
+
|
|
74
|
+
```
|
|
75
|
+
Agent(
|
|
76
|
+
subagent_type="architect",
|
|
77
|
+
model="opus",
|
|
78
|
+
prompt="ARCHITECTURE DECISION TASK
|
|
79
|
+
|
|
80
|
+
아키텍처 결정 기록(ADR)을 작성하세요.
|
|
81
|
+
|
|
82
|
+
Decision: [결정 주제]
|
|
83
|
+
Context: [배경 및 제약 조건]
|
|
84
|
+
|
|
85
|
+
ADR Checklist:
|
|
86
|
+
1. 컨텍스트 정리 (문제, 제약, 요구사항)
|
|
87
|
+
2. 대안 탐색 (최소 3개 + 현상 유지)
|
|
88
|
+
3. 대안 평가 (기준별 비교표)
|
|
89
|
+
4. 결정 및 근거 (선택 이유, 트레이드오프)
|
|
90
|
+
5. 결과 분석 (긍정/부정, 리스크)
|
|
91
|
+
6. ADR 문서 작성
|
|
92
|
+
|
|
93
|
+
Output: ADR 문서:
|
|
94
|
+
- 번호 및 제목
|
|
95
|
+
- 상태 (Proposed/Accepted)
|
|
96
|
+
- 컨텍스트
|
|
97
|
+
- 대안 비교표
|
|
98
|
+
- 결정 및 근거
|
|
99
|
+
- 결과 및 리스크"
|
|
100
|
+
)
|
|
101
|
+
```
|
|
102
|
+
|
|
103
|
+
## External Consultation (Optional)
|
|
104
|
+
|
|
105
|
+
architect 에이전트는 교차 검증을 위해 Claude Task 에이전트에 자문할 수 있습니다.
|
|
106
|
+
|
|
107
|
+
### Protocol
|
|
108
|
+
1. **자체 분석을 먼저 완료** -- 독립적으로 대안 평가
|
|
109
|
+
2. **검증을 위한 자문** -- Claude Task 에이전트를 통해 분석 교차 확인
|
|
110
|
+
3. **비판적 평가** -- 외부 제안을 맹목적으로 수용하지 않음
|
|
111
|
+
4. **우아한 폴백** -- 위임이 불가능할 경우 절대 차단하지 않음
|
|
112
|
+
|
|
113
|
+
### 자문이 필요한 경우
|
|
114
|
+
- 되돌리기 어려운 결정 (데이터베이스 선택, 프레임워크 변경)
|
|
115
|
+
- 조직 전체에 영향을 미치는 결정
|
|
116
|
+
- 비용이 큰 기술 투자 결정
|
|
117
|
+
- 팀 내 의견이 분분한 결정
|
|
118
|
+
|
|
119
|
+
### 자문을 생략하는 경우
|
|
120
|
+
- 단순 라이브러리 선택 (유사한 기능, 낮은 영향)
|
|
121
|
+
- 내부 구현 세부 사항
|
|
122
|
+
- 잘 알려진 패턴 적용
|
|
123
|
+
- 쉽게 되돌릴 수 있는 결정
|
|
124
|
+
|
|
125
|
+
## ADR 체크리스트
|
|
126
|
+
|
|
127
|
+
### 완전성 (5개)
|
|
128
|
+
- [ ] 문제/요구사항이 명확히 정의됨
|
|
129
|
+
- [ ] 최소 3개 대안이 탐색됨
|
|
130
|
+
- [ ] 평가 기준이 명시됨
|
|
131
|
+
- [ ] 선택 근거가 구체적으로 설명됨
|
|
132
|
+
- [ ] 트레이드오프가 명시적으로 기록됨
|
|
133
|
+
|
|
134
|
+
### 품질 (4개)
|
|
135
|
+
- [ ] 비기능 요구사항 (성능, 보안, 비용)이 고려됨
|
|
136
|
+
- [ ] 리스크와 완화 전략이 포함됨
|
|
137
|
+
- [ ] 결정을 뒤집을 수 있는 조건이 명시됨
|
|
138
|
+
- [ ] 후속 결정 사항이 식별됨
|
|
139
|
+
|
|
140
|
+
### 프로세스 (3개)
|
|
141
|
+
- [ ] 이해관계자와 공유됨
|
|
142
|
+
- [ ] 피드백이 수집되고 반영됨
|
|
143
|
+
- [ ] 관련 코드에 ADR 참조가 추가됨
|
|
144
|
+
|
|
145
|
+
## ADR 상태 흐름
|
|
146
|
+
|
|
147
|
+
```
|
|
148
|
+
[Proposed] → [Accepted] → [Deprecated] (더 이상 관련 없음)
|
|
149
|
+
→ [Superseded by ADR-NNN] (새 결정으로 대체)
|
|
150
|
+
```
|
|
151
|
+
|
|
152
|
+
## 결정 되돌림 가능성 분류
|
|
153
|
+
|
|
154
|
+
| 분류 | 설명 | 예시 | 투자 수준 |
|
|
155
|
+
|------|------|------|-----------|
|
|
156
|
+
| **Type 1** (비가역) | 되돌리기 매우 어렵거나 불가능 | DB 엔진, 프로그래밍 언어 | 심층 분석 필요 |
|
|
157
|
+
| **Type 2** (가역) | 비교적 쉽게 되돌릴 수 있음 | 라이브러리, 내부 패턴 | 신속한 결정 가능 |
|
|
158
|
+
|
|
159
|
+
## 평가 매트릭스 템플릿
|
|
160
|
+
|
|
161
|
+
| 기준 (가중치) | 대안 A | 대안 B | 대안 C | 현상 유지 |
|
|
162
|
+
|---------------|--------|--------|--------|-----------|
|
|
163
|
+
| 기술 적합성 (30%) | 9 | 7 | 8 | 3 |
|
|
164
|
+
| 복잡도 (20%) | 6 | 8 | 5 | 10 |
|
|
165
|
+
| 성능 (15%) | 8 | 7 | 9 | 5 |
|
|
166
|
+
| 확장성 (15%) | 9 | 6 | 8 | 4 |
|
|
167
|
+
| 비용 (10%) | 5 | 8 | 6 | 10 |
|
|
168
|
+
| 팀 역량 (10%) | 7 | 9 | 5 | 10 |
|
|
169
|
+
| **가중 합계** | **7.6** | **7.3** | **7.0** | **5.8** |
|
|
170
|
+
|
|
171
|
+
<Output>
|
|
172
|
+
```
|
|
173
|
+
ARCHITECTURE DECISION RECORD / 아키텍처 결정 기록
|
|
174
|
+
===================================================
|
|
175
|
+
|
|
176
|
+
ADR-NNN: [결정 제목]
|
|
177
|
+
Status: [Proposed / Accepted / Deprecated / Superseded by ADR-NNN]
|
|
178
|
+
Date: YYYY-MM-DD
|
|
179
|
+
Deciders: [결정 참여자]
|
|
180
|
+
|
|
181
|
+
CONTEXT / 컨텍스트
|
|
182
|
+
--------------------
|
|
183
|
+
[해결하려는 문제와 배경 설명]
|
|
184
|
+
|
|
185
|
+
Requirements:
|
|
186
|
+
- [기능 요구사항 1]
|
|
187
|
+
- [비기능 요구사항 (성능, 보안, 비용)]
|
|
188
|
+
|
|
189
|
+
Constraints:
|
|
190
|
+
- [제약 조건 1]
|
|
191
|
+
- [제약 조건 2]
|
|
192
|
+
|
|
193
|
+
ALTERNATIVES / 대안
|
|
194
|
+
---------------------
|
|
195
|
+
### 대안 A: [이름]
|
|
196
|
+
[설명]
|
|
197
|
+
- Pros: [장점]
|
|
198
|
+
- Cons: [단점]
|
|
199
|
+
|
|
200
|
+
### 대안 B: [이름]
|
|
201
|
+
[설명]
|
|
202
|
+
- Pros: [장점]
|
|
203
|
+
- Cons: [단점]
|
|
204
|
+
|
|
205
|
+
### 대안 C: [이름] (현상 유지)
|
|
206
|
+
[설명]
|
|
207
|
+
- Pros: [장점]
|
|
208
|
+
- Cons: [단점]
|
|
209
|
+
|
|
210
|
+
EVALUATION / 평가
|
|
211
|
+
-------------------
|
|
212
|
+
| 기준 (가중치) | 대안 A | 대안 B | 대안 C |
|
|
213
|
+
|---------------|--------|--------|--------|
|
|
214
|
+
| [기준 1] (N%) | N/10 | N/10 | N/10 |
|
|
215
|
+
| [기준 2] (N%) | N/10 | N/10 | N/10 |
|
|
216
|
+
| **합계** | **N** | **N** | **N** |
|
|
217
|
+
|
|
218
|
+
DECISION / 결정
|
|
219
|
+
-----------------
|
|
220
|
+
**대안 A를 선택합니다.**
|
|
221
|
+
|
|
222
|
+
Rationale: [핵심 선택 이유]
|
|
223
|
+
|
|
224
|
+
Trade-offs accepted:
|
|
225
|
+
- [수용한 트레이드오프 1]
|
|
226
|
+
- [수용한 트레이드오프 2]
|
|
227
|
+
|
|
228
|
+
Reversibility: [Type 1 (비가역) / Type 2 (가역)]
|
|
229
|
+
Reversal condition: [이 결정을 뒤집어야 하는 조건]
|
|
230
|
+
|
|
231
|
+
CONSEQUENCES / 결과
|
|
232
|
+
---------------------
|
|
233
|
+
Positive:
|
|
234
|
+
- [긍정적 결과 1]
|
|
235
|
+
- [긍정적 결과 2]
|
|
236
|
+
|
|
237
|
+
Negative:
|
|
238
|
+
- [부정적 결과 1]
|
|
239
|
+
- [부정적 결과 2]
|
|
240
|
+
|
|
241
|
+
Risks:
|
|
242
|
+
- [리스크 1] → 완화: [완화 전략]
|
|
243
|
+
- [리스크 2] → 완화: [완화 전략]
|
|
244
|
+
|
|
245
|
+
Follow-up decisions needed:
|
|
246
|
+
- [후속 결정 1]
|
|
247
|
+
- [후속 결정 2]
|
|
248
|
+
|
|
249
|
+
MONITORING / 모니터링
|
|
250
|
+
-----------------------
|
|
251
|
+
- [효과 측정 지표 1]
|
|
252
|
+
- [효과 측정 지표 2]
|
|
253
|
+
- Review date: YYYY-MM-DD (3개월 후 재검토)
|
|
254
|
+
```
|
|
255
|
+
</Output>
|
|
256
|
+
|
|
257
|
+
<Policy>
|
|
258
|
+
- 최소 3개 대안을 비교합니다 ("현상 유지" 포함)
|
|
259
|
+
- 정량적 평가 기준을 사용합니다 (직관이 아닌 데이터 기반)
|
|
260
|
+
- 트레이드오프를 명시적으로 기록합니다 -- 모든 결정에는 대가가 있음
|
|
261
|
+
- 결정을 뒤집을 수 있는 조건을 미리 정의합니다
|
|
262
|
+
- ADR은 코드와 함께 버전 관리합니다 (docs/adr/)
|
|
263
|
+
- 폐기된 ADR도 삭제하지 않습니다 -- 역사적 맥락을 보존
|
|
264
|
+
</Policy>
|
|
265
|
+
|
|
266
|
+
## 다른 스킬과의 연동
|
|
267
|
+
|
|
268
|
+
**코드 리뷰 연동:**
|
|
269
|
+
```
|
|
270
|
+
/forgen:code-review ADR에 따른 구현 검증
|
|
271
|
+
```
|
|
272
|
+
아키텍처 결정이 구현에 올바르게 반영되었는지 검증
|
|
273
|
+
|
|
274
|
+
**문서화 연동:**
|
|
275
|
+
```
|
|
276
|
+
/forgen:documentation ADR 기반 아키텍처 문서
|
|
277
|
+
```
|
|
278
|
+
ADR을 바탕으로 아키텍처 설명 문서 작성
|
|
279
|
+
|
|
280
|
+
**보안 리뷰 연동:**
|
|
281
|
+
```
|
|
282
|
+
/forgen:security-review ADR의 보안 영향 분석
|
|
283
|
+
```
|
|
284
|
+
아키텍처 결정의 보안 관점 검토
|
|
285
|
+
|
|
286
|
+
## Best Practices
|
|
287
|
+
|
|
288
|
+
- **결정 기록** -- 구두 합의보다 문서화된 ADR
|
|
289
|
+
- **미래의 나를 위해** -- 6개월 후 맥락을 잊은 자신을 독자로 상정
|
|
290
|
+
- **간결하게** -- ADR은 1~2페이지가 적당
|
|
291
|
+
- **적시에** -- 결정 시점에 작성, 나중에 "기억해서" 쓰지 않음
|
|
292
|
+
- **갱신** -- 상황 변화 시 ADR 상태를 업데이트
|
|
293
|
+
|
|
294
|
+
<Arguments>
|
|
295
|
+
## 사용법
|
|
296
|
+
`/forgen:architecture-decision {결정 주제}`
|
|
297
|
+
|
|
298
|
+
### 예시
|
|
299
|
+
- `/forgen:architecture-decision 상태 관리 라이브러리 선택`
|
|
300
|
+
- `/forgen:architecture-decision 모놀리스 → 마이크로서비스 전환`
|
|
301
|
+
- `/forgen:architecture-decision 인증 방식 결정 (JWT vs Session)`
|
|
302
|
+
- `/forgen:architecture-decision 데이터베이스 선택 (PostgreSQL vs MongoDB)`
|
|
303
|
+
|
|
304
|
+
### 인자
|
|
305
|
+
- 결정이 필요한 주제, 배경, 제약 조건 등을 설명
|
|
306
|
+
- 인자 없으면 현재 프로젝트에서 문서화가 필요한 아키텍처 결정을 식별
|
|
307
|
+
</Arguments>
|
|
308
|
+
|
|
309
|
+
$ARGUMENTS
|