@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.
- package/CHANGELOG.md +44 -0
- package/README.ko.md +25 -14
- package/README.md +61 -17
- package/agents/analyst.md +48 -4
- package/agents/architect.md +39 -4
- package/agents/code-reviewer.md +107 -77
- package/agents/critic.md +47 -4
- package/agents/debugger.md +46 -4
- package/agents/designer.md +40 -4
- package/agents/executor.md +112 -30
- package/agents/explore.md +45 -5
- package/agents/git-master.md +48 -4
- package/agents/planner.md +121 -18
- package/agents/test-engineer.md +58 -4
- package/agents/verifier.md +92 -77
- package/commands/architecture-decision.md +127 -258
- package/commands/calibrate.md +225 -0
- package/commands/code-review.md +163 -178
- package/commands/compound.md +127 -68
- package/commands/deep-interview.md +212 -110
- package/commands/docker.md +68 -178
- package/commands/forge-loop.md +215 -0
- package/commands/learn.md +231 -0
- package/commands/retro.md +215 -0
- package/commands/ship.md +277 -0
- package/dist/cli.js +17 -9
- package/dist/core/auto-compound-runner.js +14 -0
- package/dist/core/config-injector.d.ts +2 -1
- package/dist/core/config-injector.js +2 -1
- package/dist/core/dashboard.d.ts +17 -0
- package/dist/core/dashboard.js +112 -2
- package/dist/core/harness.d.ts +6 -1
- package/dist/core/harness.js +75 -19
- package/dist/core/paths.d.ts +6 -1
- package/dist/core/paths.js +18 -2
- package/dist/core/spawn.d.ts +3 -2
- package/dist/core/spawn.js +27 -8
- package/dist/core/types.d.ts +34 -0
- package/dist/engine/compound-lifecycle.d.ts +4 -3
- package/dist/engine/compound-lifecycle.js +91 -46
- package/dist/engine/meta-learning/adaptive-thresholds.d.ts +20 -0
- package/dist/engine/meta-learning/adaptive-thresholds.js +126 -0
- package/dist/engine/meta-learning/extraction-tuner.d.ts +15 -0
- package/dist/engine/meta-learning/extraction-tuner.js +99 -0
- package/dist/engine/meta-learning/matcher-weight-tuner.d.ts +21 -0
- package/dist/engine/meta-learning/matcher-weight-tuner.js +151 -0
- package/dist/engine/meta-learning/runner.d.ts +14 -0
- package/dist/engine/meta-learning/runner.js +90 -0
- package/dist/engine/meta-learning/scope-promoter.d.ts +21 -0
- package/dist/engine/meta-learning/scope-promoter.js +84 -0
- package/dist/engine/meta-learning/session-quality-scorer.d.ts +61 -0
- package/dist/engine/meta-learning/session-quality-scorer.js +166 -0
- package/dist/engine/meta-learning/types.d.ts +114 -0
- package/dist/engine/meta-learning/types.js +43 -0
- package/dist/engine/solution-format.d.ts +2 -2
- package/dist/engine/solution-format.js +249 -34
- package/dist/engine/solution-index.d.ts +1 -1
- package/dist/engine/solution-matcher.d.ts +7 -1
- package/dist/engine/solution-matcher.js +114 -37
- package/dist/fgx.js +12 -8
- package/dist/hooks/context-guard.d.ts +5 -0
- package/dist/hooks/context-guard.js +118 -2
- package/dist/hooks/hooks-generator.d.ts +3 -0
- package/dist/hooks/hooks-generator.js +23 -6
- package/dist/hooks/keyword-detector.js +16 -100
- package/dist/hooks/skill-injector.d.ts +4 -3
- package/dist/hooks/skill-injector.js +6 -4
- package/dist/host/codex-adapter.d.ts +10 -0
- package/dist/host/codex-adapter.js +154 -0
- package/dist/mcp/solution-reader.d.ts +5 -5
- package/dist/mcp/solution-reader.js +34 -24
- package/dist/services/session.d.ts +19 -0
- package/dist/services/session.js +62 -0
- package/hooks/hooks.json +2 -2
- package/package.json +2 -1
- package/skills/architecture-decision/SKILL.md +113 -257
- package/skills/calibrate/SKILL.md +207 -0
- package/skills/code-review/SKILL.md +151 -178
- package/skills/compound/SKILL.md +126 -68
- package/skills/deep-interview/SKILL.md +210 -110
- package/skills/docker/SKILL.md +57 -179
- package/skills/forge-loop/SKILL.md +198 -0
- package/skills/learn/SKILL.md +216 -0
- package/skills/retro/SKILL.md +199 -0
- package/skills/ship/SKILL.md +259 -0
- package/agents/code-simplifier.md +0 -197
- package/agents/performance-reviewer.md +0 -172
- package/agents/qa-tester.md +0 -158
- package/agents/refactoring-expert.md +0 -168
- package/agents/scientist.md +0 -144
- package/agents/security-reviewer.md +0 -137
- package/agents/writer.md +0 -184
- package/commands/api-design.md +0 -268
- package/commands/ci-cd.md +0 -270
- package/commands/database.md +0 -263
- package/commands/debug-detective.md +0 -99
- package/commands/documentation.md +0 -276
- package/commands/ecomode.md +0 -51
- package/commands/frontend.md +0 -271
- package/commands/git-master.md +0 -90
- package/commands/incident-response.md +0 -292
- package/commands/migrate.md +0 -101
- package/commands/performance.md +0 -288
- package/commands/refactor.md +0 -105
- package/commands/security-review.md +0 -288
- package/commands/specify.md +0 -128
- package/commands/tdd.md +0 -183
- package/commands/testing-strategy.md +0 -265
- package/skills/api-design/SKILL.md +0 -262
- package/skills/ci-cd/SKILL.md +0 -264
- package/skills/database/SKILL.md +0 -257
- package/skills/debug-detective/SKILL.md +0 -95
- package/skills/documentation/SKILL.md +0 -270
- package/skills/ecomode/SKILL.md +0 -46
- package/skills/frontend/SKILL.md +0 -265
- package/skills/git-master/SKILL.md +0 -86
- package/skills/incident-response/SKILL.md +0 -286
- package/skills/migrate/SKILL.md +0 -96
- package/skills/performance/SKILL.md +0 -282
- package/skills/refactor/SKILL.md +0 -100
- package/skills/security-review/SKILL.md +0 -282
- package/skills/specify/SKILL.md +0 -122
- package/skills/tdd/SKILL.md +0 -178
- package/skills/testing-strategy/SKILL.md +0 -260
package/skills/ci-cd/SKILL.md
DELETED
|
@@ -1,264 +0,0 @@
|
|
|
1
|
-
---
|
|
2
|
-
name: ci-cd
|
|
3
|
-
description: This skill should be used when the user asks to "ci cd,ci/cd,파이프라인,github actions,배포 자동화,pipeline design". CI/CD pipeline design, implementation, and optimization
|
|
4
|
-
---
|
|
5
|
-
|
|
6
|
-
<!-- forgen-managed -->
|
|
7
|
-
|
|
8
|
-
<Purpose>
|
|
9
|
-
CI/CD 파이프라인을 설계하고 구현합니다.
|
|
10
|
-
빌드, 테스트, 린트, 보안 스캔, 배포까지의 자동화 파이프라인을 구축하고
|
|
11
|
-
안정적이고 빠른 배포 사이클을 확립합니다.
|
|
12
|
-
</Purpose>
|
|
13
|
-
|
|
14
|
-
<Steps>
|
|
15
|
-
1. **요구사항 분석**: 프로젝트의 CI/CD 요구사항을 파악합니다
|
|
16
|
-
- 현재 배포 프로세스 파악 (수동/자동)
|
|
17
|
-
- 배포 대상 환경 (staging, production, preview)
|
|
18
|
-
- 브랜치 전략 확인 (gitflow, trunk-based, GitHub flow)
|
|
19
|
-
- 필요한 품질 게이트 식별
|
|
20
|
-
- 배포 빈도 목표
|
|
21
|
-
- 롤백 요구사항
|
|
22
|
-
- 시크릿 관리 방식
|
|
23
|
-
- 알림/모니터링 연동 대상
|
|
24
|
-
|
|
25
|
-
2. **파이프라인 스테이지 설계**: 단계별 작업을 정의합니다
|
|
26
|
-
- **Install**: 의존성 설치 (캐시 활용)
|
|
27
|
-
- **Lint**: 코드 스타일 검사 (ESLint, Prettier)
|
|
28
|
-
- **Type Check**: 타입 검사 (TypeScript)
|
|
29
|
-
- **Unit Test**: 유닛 테스트 실행 + 커버리지
|
|
30
|
-
- **Integration Test**: 통합 테스트 (DB, 외부 서비스)
|
|
31
|
-
- **Build**: 프로덕션 빌드
|
|
32
|
-
- **Security Scan**: 의존성 취약점 검사 (npm audit, Snyk)
|
|
33
|
-
- **E2E Test**: End-to-End 테스트 (Playwright, Cypress)
|
|
34
|
-
- **Deploy**: 배포 (환경별 차등)
|
|
35
|
-
- **Smoke Test**: 배포 후 기본 동작 확인
|
|
36
|
-
- **Notify**: 결과 알림 (Slack, Discord)
|
|
37
|
-
|
|
38
|
-
3. **구현**: 파이프라인 설정 파일을 작성합니다
|
|
39
|
-
- CI 플랫폼 선택 (GitHub Actions, GitLab CI, CircleCI)
|
|
40
|
-
- 워크플로우 파일 작성
|
|
41
|
-
- 병렬 실행 가능한 작업 식별 및 설정
|
|
42
|
-
- 캐싱 전략 (node_modules, 빌드 아티팩트)
|
|
43
|
-
- 매트릭스 빌드 (여러 Node 버전, OS)
|
|
44
|
-
- 환경별 배포 조건 설정
|
|
45
|
-
- 시크릿 설정 (환경 변수, 시크릿 스토어)
|
|
46
|
-
- 재사용 가능한 워크플로우 분리
|
|
47
|
-
|
|
48
|
-
4. **품질 게이트 설정**: 머지/배포 차단 조건을 설정합니다
|
|
49
|
-
- 테스트 커버리지 임계값 (85%+)
|
|
50
|
-
- 린트 에러 제로
|
|
51
|
-
- 타입 에러 제로
|
|
52
|
-
- 보안 취약점 제로 (CRITICAL/HIGH)
|
|
53
|
-
- 빌드 성공 필수
|
|
54
|
-
- PR 리뷰 승인 필수
|
|
55
|
-
- 커밋 메시지 컨벤션 검사
|
|
56
|
-
|
|
57
|
-
5. **모니터링 및 최적화**: 파이프라인 성능을 관리합니다
|
|
58
|
-
- 파이프라인 실행 시간 추적
|
|
59
|
-
- 실패율 모니터링
|
|
60
|
-
- Flaky 테스트 추적 및 제거
|
|
61
|
-
- 캐시 히트율 최적화
|
|
62
|
-
- 불필요한 재실행 방지 (경로 필터링)
|
|
63
|
-
- 비용 최적화 (러너 크기, 병렬화)
|
|
64
|
-
</Steps>
|
|
65
|
-
|
|
66
|
-
## 에이전트 위임
|
|
67
|
-
|
|
68
|
-
`executor` 에이전트(Sonnet 모델)에 위임하여 파이프라인을 구현합니다:
|
|
69
|
-
|
|
70
|
-
```
|
|
71
|
-
Agent(
|
|
72
|
-
subagent_type="executor",
|
|
73
|
-
model="sonnet",
|
|
74
|
-
prompt="CI/CD PIPELINE TASK
|
|
75
|
-
|
|
76
|
-
CI/CD 파이프라인을 설계하고 구현하세요.
|
|
77
|
-
|
|
78
|
-
Project: [프로젝트 설명]
|
|
79
|
-
Platform: [GitHub Actions / GitLab CI / etc.]
|
|
80
|
-
Branch Strategy: [gitflow / trunk-based / GitHub flow]
|
|
81
|
-
|
|
82
|
-
Pipeline Checklist:
|
|
83
|
-
1. 스테이지 설계 (lint, test, build, deploy)
|
|
84
|
-
2. 워크플로우 파일 작성
|
|
85
|
-
3. 캐싱 및 병렬화 최적화
|
|
86
|
-
4. 품질 게이트 설정
|
|
87
|
-
5. 시크릿 및 환경 변수 관리
|
|
88
|
-
6. 배포 전략 (환경별)
|
|
89
|
-
|
|
90
|
-
Output: CI/CD 구성 파일 및 문서:
|
|
91
|
-
- 워크플로우 파일(들)
|
|
92
|
-
- 환경별 배포 설정
|
|
93
|
-
- 품질 게이트 목록
|
|
94
|
-
- 파이프라인 다이어그램"
|
|
95
|
-
)
|
|
96
|
-
```
|
|
97
|
-
|
|
98
|
-
## External Consultation (Optional)
|
|
99
|
-
|
|
100
|
-
executor 에이전트는 교차 검증을 위해 Claude Task 에이전트에 자문할 수 있습니다.
|
|
101
|
-
|
|
102
|
-
### Protocol
|
|
103
|
-
1. **자체 파이프라인 설계를 먼저 완료** -- 독립적으로 구현
|
|
104
|
-
2. **검증을 위한 자문** -- Claude Task 에이전트를 통해 설계 교차 확인
|
|
105
|
-
3. **비판적 평가** -- 외부 제안을 맹목적으로 수용하지 않음
|
|
106
|
-
4. **우아한 폴백** -- 위임이 불가능할 경우 절대 차단하지 않음
|
|
107
|
-
|
|
108
|
-
### 자문이 필요한 경우
|
|
109
|
-
- 멀티 환경 배포 전략 (dev/staging/prod)
|
|
110
|
-
- Blue-Green 또는 Canary 배포 설정
|
|
111
|
-
- 모노레포 CI 최적화
|
|
112
|
-
- 보안이 중요한 배포 파이프라인
|
|
113
|
-
|
|
114
|
-
### 자문을 생략하는 경우
|
|
115
|
-
- 단순 린트/테스트 파이프라인
|
|
116
|
-
- 단일 환경 배포
|
|
117
|
-
- 잘 알려진 CI 템플릿 적용
|
|
118
|
-
- 기존 파이프라인의 경미한 수정
|
|
119
|
-
|
|
120
|
-
## 파이프라인 체크리스트
|
|
121
|
-
|
|
122
|
-
### CI (Continuous Integration) (6개)
|
|
123
|
-
- [ ] 의존성 설치에 캐시 적용
|
|
124
|
-
- [ ] 린트가 모든 PR에서 실행됨
|
|
125
|
-
- [ ] 타입 체크가 모든 PR에서 실행됨
|
|
126
|
-
- [ ] 테스트가 커버리지와 함께 실행됨
|
|
127
|
-
- [ ] 보안 스캔이 포함됨
|
|
128
|
-
- [ ] 빌드가 성공해야 머지 가능
|
|
129
|
-
|
|
130
|
-
### CD (Continuous Deployment) (5개)
|
|
131
|
-
- [ ] staging 환경에 자동 배포
|
|
132
|
-
- [ ] production 배포에 수동 승인 또는 자동 게이트
|
|
133
|
-
- [ ] 배포 후 스모크 테스트 실행
|
|
134
|
-
- [ ] 롤백 절차가 문서화/자동화됨
|
|
135
|
-
- [ ] 배포 알림이 설정됨
|
|
136
|
-
|
|
137
|
-
### 보안 (4개)
|
|
138
|
-
- [ ] 시크릿이 CI 플랫폼의 시크릿 스토어에 저장됨
|
|
139
|
-
- [ ] 워크플로우 파일에 하드코딩된 시크릿 없음
|
|
140
|
-
- [ ] 의존성 취약점 스캔 포함
|
|
141
|
-
- [ ] 최소 권한 원칙으로 배포 토큰 설정
|
|
142
|
-
|
|
143
|
-
### 성능 (3개)
|
|
144
|
-
- [ ] 병렬 실행으로 총 실행 시간 최소화
|
|
145
|
-
- [ ] 경로 필터로 불필요한 실행 방지
|
|
146
|
-
- [ ] 캐시 히트율이 80% 이상
|
|
147
|
-
|
|
148
|
-
## 배포 전략 비교
|
|
149
|
-
|
|
150
|
-
| 전략 | 다운타임 | 롤백 속도 | 복잡도 | 적합한 경우 |
|
|
151
|
-
|------|----------|-----------|--------|-------------|
|
|
152
|
-
| **Rolling** | 없음 | 느림 | 낮음 | 일반 웹 서비스 |
|
|
153
|
-
| **Blue-Green** | 없음 | 즉시 | 중간 | 빠른 롤백 필요 |
|
|
154
|
-
| **Canary** | 없음 | 빠름 | 높음 | 대규모 트래픽 |
|
|
155
|
-
| **Recreate** | 있음 | 느림 | 낮음 | 비프로덕션 환경 |
|
|
156
|
-
|
|
157
|
-
<Output>
|
|
158
|
-
```
|
|
159
|
-
CI/CD PIPELINE DOCUMENT / CI/CD 파이프라인 문서
|
|
160
|
-
================================================
|
|
161
|
-
|
|
162
|
-
Project: [프로젝트명]
|
|
163
|
-
Platform: [GitHub Actions / GitLab CI]
|
|
164
|
-
Branch Strategy: [gitflow / trunk-based]
|
|
165
|
-
|
|
166
|
-
PIPELINE DIAGRAM / 파이프라인 다이어그램
|
|
167
|
-
-----------------------------------------
|
|
168
|
-
PR → [Install] → [Lint + Type Check + Unit Test] → [Build] → [Security Scan]
|
|
169
|
-
(parallel)
|
|
170
|
-
main → [Install] → [Full Test] → [Build] → [Deploy Staging] → [Smoke Test]
|
|
171
|
-
↓ (manual approve)
|
|
172
|
-
[Deploy Production] → [Smoke Test]
|
|
173
|
-
|
|
174
|
-
STAGES / 스테이지
|
|
175
|
-
------------------
|
|
176
|
-
| Stage | Trigger | Duration | Parallel |
|
|
177
|
-
|---------------|-------------|----------|----------|
|
|
178
|
-
| Install | PR, push | ~30s | - |
|
|
179
|
-
| Lint | PR, push | ~15s | Yes |
|
|
180
|
-
| Type Check | PR, push | ~20s | Yes |
|
|
181
|
-
| Unit Test | PR, push | ~45s | Yes |
|
|
182
|
-
| Build | PR, push | ~60s | - |
|
|
183
|
-
| Security Scan | PR, push | ~30s | Yes |
|
|
184
|
-
| Deploy Staging| main push | ~120s | - |
|
|
185
|
-
| Smoke Test | after deploy| ~30s | - |
|
|
186
|
-
| Deploy Prod | manual | ~120s | - |
|
|
187
|
-
|
|
188
|
-
QUALITY GATES / 품질 게이트
|
|
189
|
-
-----------------------------
|
|
190
|
-
- Test Coverage: >= 85%
|
|
191
|
-
- Lint Errors: 0
|
|
192
|
-
- Type Errors: 0
|
|
193
|
-
- Security Vulnerabilities (CRITICAL/HIGH): 0
|
|
194
|
-
- Build: Success
|
|
195
|
-
- PR Review: >= 1 approval
|
|
196
|
-
|
|
197
|
-
WORKFLOW FILES / 워크플로우 파일
|
|
198
|
-
---------------------------------
|
|
199
|
-
.github/workflows/
|
|
200
|
-
ci.yml -- PR 검증 (lint, test, build)
|
|
201
|
-
cd-staging.yml -- staging 자동 배포
|
|
202
|
-
cd-prod.yml -- production 수동 배포
|
|
203
|
-
security.yml -- 주간 보안 스캔
|
|
204
|
-
|
|
205
|
-
ESTIMATED TOTAL RUNTIME / 예상 총 실행 시간
|
|
206
|
-
---------------------------------------------
|
|
207
|
-
PR Pipeline: ~2m30s
|
|
208
|
-
Deploy Pipeline: ~5m
|
|
209
|
-
```
|
|
210
|
-
</Output>
|
|
211
|
-
|
|
212
|
-
<Policy>
|
|
213
|
-
- 파이프라인은 10분 이내에 완료되어야 합니다 (PR 기준 5분 목표)
|
|
214
|
-
- 시크릿은 절대 워크플로우 파일에 하드코딩하지 않습니다
|
|
215
|
-
- 프로덕션 배포에는 반드시 승인 프로세스를 포함합니다
|
|
216
|
-
- 롤백 절차를 반드시 문서화하고 테스트합니다
|
|
217
|
-
- Flaky 테스트는 파이프라인 신뢰성을 해치므로 즉시 수정합니다
|
|
218
|
-
- 비용 효율성을 고려하여 불필요한 실행을 방지합니다
|
|
219
|
-
</Policy>
|
|
220
|
-
|
|
221
|
-
## 다른 스킬과의 연동
|
|
222
|
-
|
|
223
|
-
**테스트 전략 연동:**
|
|
224
|
-
```
|
|
225
|
-
/forgen:testing-strategy CI에서 실행할 테스트 구성
|
|
226
|
-
```
|
|
227
|
-
테스트 전략에 맞는 CI 테스트 단계 구성
|
|
228
|
-
|
|
229
|
-
**보안 리뷰 연동:**
|
|
230
|
-
```
|
|
231
|
-
/forgen:security-review .github/workflows/
|
|
232
|
-
```
|
|
233
|
-
워크플로우 파일의 보안 점검
|
|
234
|
-
|
|
235
|
-
**Docker 연동:**
|
|
236
|
-
```
|
|
237
|
-
/forgen:docker CI에서 컨테이너 빌드
|
|
238
|
-
```
|
|
239
|
-
CI 파이프라인에 Docker 이미지 빌드 통합
|
|
240
|
-
|
|
241
|
-
## Best Practices
|
|
242
|
-
|
|
243
|
-
- **빠르게 실패** -- 가장 빠른 검사를 먼저 실행 (lint > type > test > build)
|
|
244
|
-
- **병렬화** -- 독립적인 작업은 동시에 실행
|
|
245
|
-
- **캐시 활용** -- 의존성과 빌드 아티팩트를 캐싱
|
|
246
|
-
- **경로 필터링** -- 관련 파일 변경 시에만 실행
|
|
247
|
-
- **알림 최적화** -- 실패 시에만 알림 (성공 알림은 노이즈)
|
|
248
|
-
|
|
249
|
-
<Arguments>
|
|
250
|
-
## 사용법
|
|
251
|
-
`/forgen:ci-cd {파이프라인 대상}`
|
|
252
|
-
|
|
253
|
-
### 예시
|
|
254
|
-
- `/forgen:ci-cd GitHub Actions 파이프라인 설계`
|
|
255
|
-
- `/forgen:ci-cd staging 자동 배포 설정`
|
|
256
|
-
- `/forgen:ci-cd 기존 파이프라인 실행 시간 최적화`
|
|
257
|
-
- `/forgen:ci-cd Vercel 배포 + Preview 환경 구성`
|
|
258
|
-
|
|
259
|
-
### 인자
|
|
260
|
-
- CI 플랫폼, 배포 대상, 최적화 목표 등을 설명
|
|
261
|
-
- 인자 없으면 프로젝트에 적합한 CI/CD 파이프라인을 설계
|
|
262
|
-
</Arguments>
|
|
263
|
-
|
|
264
|
-
$ARGUMENTS
|
package/skills/database/SKILL.md
DELETED
|
@@ -1,257 +0,0 @@
|
|
|
1
|
-
---
|
|
2
|
-
name: database
|
|
3
|
-
description: This skill should be used when the user asks to "database,db 설계,schema,migration,마이그레이션,스키마". Database schema design, migration planning, and optimization
|
|
4
|
-
---
|
|
5
|
-
|
|
6
|
-
<!-- forgen-managed -->
|
|
7
|
-
|
|
8
|
-
<Purpose>
|
|
9
|
-
데이터베이스 스키마 설계와 마이그레이션을 체계적으로 수행합니다.
|
|
10
|
-
요구사항 분석부터 정규화, 인덱싱, 마이그레이션 스크립트 작성,
|
|
11
|
-
롤백 계획까지 데이터 레이어의 전체 라이프사이클을 다룹니다.
|
|
12
|
-
</Purpose>
|
|
13
|
-
|
|
14
|
-
<Steps>
|
|
15
|
-
1. **요구사항 분석**: 데이터 요구사항을 수집하고 정리합니다
|
|
16
|
-
- 비즈니스 엔티티와 관계 식별
|
|
17
|
-
- 읽기/쓰기 비율 추정 (read-heavy vs write-heavy)
|
|
18
|
-
- 예상 데이터 볼륨 추정 (행 수, 증가율)
|
|
19
|
-
- 트랜잭션 요구사항 (ACID, eventual consistency)
|
|
20
|
-
- 보존 정책 (데이터 수명, 아카이빙 규칙)
|
|
21
|
-
- 규제 요구사항 (GDPR, 개인정보보호법)
|
|
22
|
-
|
|
23
|
-
2. **스키마 설계**: 정규화된 스키마를 설계합니다
|
|
24
|
-
- ERD(Entity-Relationship Diagram) 작성
|
|
25
|
-
- 정규화 수준 결정 (3NF 기본, 필요 시 역정규화)
|
|
26
|
-
- 데이터 타입 선택 (정확한 크기, nullable 여부)
|
|
27
|
-
- 기본 키 전략 (UUID vs auto-increment vs ULID)
|
|
28
|
-
- 외래 키 제약 조건 및 cascade 정책
|
|
29
|
-
- 소프트 삭제(soft delete) vs 하드 삭제 결정
|
|
30
|
-
- 감사(audit) 필드 포함 (created_at, updated_at, created_by)
|
|
31
|
-
- enum 값의 저장 전략 (DB enum vs string vs lookup table)
|
|
32
|
-
|
|
33
|
-
3. **인덱싱 전략**: 쿼리 성능을 위한 인덱스를 설계합니다
|
|
34
|
-
- 주요 쿼리 패턴 분석 (WHERE, JOIN, ORDER BY)
|
|
35
|
-
- 단일 컬럼 인덱스 vs 복합 인덱스 결정
|
|
36
|
-
- 커버링 인덱스 활용 가능성 검토
|
|
37
|
-
- 부분 인덱스(partial index) 적용 가능성
|
|
38
|
-
- 인덱스 카디널리티와 선택도 분석
|
|
39
|
-
- 인덱스의 쓰기 성능 영향 평가
|
|
40
|
-
- EXPLAIN ANALYZE로 쿼리 플랜 검증 계획
|
|
41
|
-
|
|
42
|
-
4. **마이그레이션 스크립트 작성**: 안전한 마이그레이션을 구현합니다
|
|
43
|
-
- 마이그레이션 도구 선택 (Prisma, Knex, TypeORM, raw SQL)
|
|
44
|
-
- UP 마이그레이션 작성 (스키마 변경 적용)
|
|
45
|
-
- DOWN 마이그레이션 작성 (변경 롤백)
|
|
46
|
-
- 데이터 마이그레이션 포함 (기존 데이터 변환)
|
|
47
|
-
- 대용량 테이블 변경 시 무중단 전략 (온라인 DDL)
|
|
48
|
-
- 마이그레이션 순서 의존성 확인
|
|
49
|
-
|
|
50
|
-
5. **롤백 계획**: 장애 시 복구 절차를 수립합니다
|
|
51
|
-
- 롤백 스크립트 테스트 (UP -> DOWN -> UP 사이클)
|
|
52
|
-
- 데이터 손실 없는 롤백 가능 여부 확인
|
|
53
|
-
- 백업/복원 절차 문서화
|
|
54
|
-
- 마이그레이션 실패 시 수동 복구 절차
|
|
55
|
-
- Point-in-Time Recovery 설정 확인
|
|
56
|
-
|
|
57
|
-
6. **성능 검증**: 스키마 변경의 성능 영향을 검증합니다
|
|
58
|
-
- 마이그레이션 실행 시간 추정
|
|
59
|
-
- 테이블 잠금(lock) 영향 범위 확인
|
|
60
|
-
- 인덱스 생성의 동시성 영향 (CONCURRENTLY 옵션)
|
|
61
|
-
- 스테이징 환경에서 실데이터 볼륨 테스트
|
|
62
|
-
</Steps>
|
|
63
|
-
|
|
64
|
-
## 에이전트 위임
|
|
65
|
-
|
|
66
|
-
`architect` 에이전트(Opus 모델)에 위임하여 데이터베이스 아키텍처를 설계합니다:
|
|
67
|
-
|
|
68
|
-
```
|
|
69
|
-
Agent(
|
|
70
|
-
subagent_type="architect",
|
|
71
|
-
model="opus",
|
|
72
|
-
prompt="DATABASE DESIGN TASK
|
|
73
|
-
|
|
74
|
-
데이터베이스 스키마를 설계하고 마이그레이션 계획을 수립하세요.
|
|
75
|
-
|
|
76
|
-
Domain: [도메인/서비스 설명]
|
|
77
|
-
Database: [PostgreSQL / MySQL / MongoDB / etc.]
|
|
78
|
-
|
|
79
|
-
Design Checklist:
|
|
80
|
-
1. ERD 및 엔티티 관계 설계
|
|
81
|
-
2. 정규화 및 데이터 타입 결정
|
|
82
|
-
3. 인덱싱 전략 수립
|
|
83
|
-
4. 마이그레이션 스크립트 (UP/DOWN)
|
|
84
|
-
5. 롤백 계획 및 백업 절차
|
|
85
|
-
6. 성능 영향 분석
|
|
86
|
-
|
|
87
|
-
Output: 데이터베이스 설계 문서:
|
|
88
|
-
- ERD (텍스트 기반)
|
|
89
|
-
- 테이블/컬렉션 정의
|
|
90
|
-
- 인덱스 목록
|
|
91
|
-
- 마이그레이션 스크립트
|
|
92
|
-
- 롤백 절차"
|
|
93
|
-
)
|
|
94
|
-
```
|
|
95
|
-
|
|
96
|
-
## External Consultation (Optional)
|
|
97
|
-
|
|
98
|
-
architect 에이전트는 교차 검증을 위해 Claude Task 에이전트에 자문할 수 있습니다.
|
|
99
|
-
|
|
100
|
-
### Protocol
|
|
101
|
-
1. **자체 스키마 설계를 먼저 완료** -- 독립적으로 설계 수행
|
|
102
|
-
2. **검증을 위한 자문** -- Claude Task 에이전트를 통해 설계 교차 확인
|
|
103
|
-
3. **비판적 평가** -- 외부 제안을 맹목적으로 수용하지 않음
|
|
104
|
-
4. **우아한 폴백** -- 위임이 불가능할 경우 절대 차단하지 않음
|
|
105
|
-
|
|
106
|
-
### 자문이 필요한 경우
|
|
107
|
-
- 대규모 스키마 마이그레이션 (10+ 테이블 변경)
|
|
108
|
-
- 성능이 중요한 인덱싱 전략
|
|
109
|
-
- 프로덕션 환경의 무중단 마이그레이션
|
|
110
|
-
- 데이터 일관성이 중요한 트랜잭션 설계
|
|
111
|
-
|
|
112
|
-
### 자문을 생략하는 경우
|
|
113
|
-
- 단순 테이블 추가/수정
|
|
114
|
-
- 잘 알려진 스키마 패턴 적용
|
|
115
|
-
- 개발 환경의 마이그레이션
|
|
116
|
-
- 소규모 인덱스 추가
|
|
117
|
-
|
|
118
|
-
## 데이터베이스 설계 체크리스트
|
|
119
|
-
|
|
120
|
-
### 스키마 설계 (6개)
|
|
121
|
-
- [ ] 모든 테이블에 적절한 기본 키 존재
|
|
122
|
-
- [ ] 외래 키 제약 조건이 설정됨
|
|
123
|
-
- [ ] 데이터 타입이 정확한 크기로 선택됨
|
|
124
|
-
- [ ] nullable 필드가 명시적으로 결정됨
|
|
125
|
-
- [ ] 감사 필드 포함 (created_at, updated_at)
|
|
126
|
-
- [ ] 소프트 삭제 전략이 결정됨
|
|
127
|
-
|
|
128
|
-
### 인덱싱 (4개)
|
|
129
|
-
- [ ] 주요 쿼리 패턴에 인덱스 적용됨
|
|
130
|
-
- [ ] 복합 인덱스의 컬럼 순서가 최적화됨
|
|
131
|
-
- [ ] 과도한 인덱스로 인한 쓰기 성능 저하 없음
|
|
132
|
-
- [ ] 유니크 제약 조건이 비즈니스 규칙과 일치
|
|
133
|
-
|
|
134
|
-
### 마이그레이션 (4개)
|
|
135
|
-
- [ ] UP/DOWN 마이그레이션 모두 작성됨
|
|
136
|
-
- [ ] 데이터 마이그레이션이 포함됨 (필요 시)
|
|
137
|
-
- [ ] 롤백 테스트 완료
|
|
138
|
-
- [ ] 마이그레이션 실행 시간이 허용 범위 내
|
|
139
|
-
|
|
140
|
-
### 보안 (4개)
|
|
141
|
-
- [ ] 민감 데이터가 암호화됨
|
|
142
|
-
- [ ] 접근 권한이 최소 권한 원칙으로 설정됨
|
|
143
|
-
- [ ] PII 데이터의 보존/삭제 정책이 정의됨
|
|
144
|
-
- [ ] 감사 로그가 중요 변경에 대해 기록됨
|
|
145
|
-
|
|
146
|
-
<Output>
|
|
147
|
-
```
|
|
148
|
-
DATABASE DESIGN DOCUMENT / 데이터베이스 설계 문서
|
|
149
|
-
==================================================
|
|
150
|
-
|
|
151
|
-
Service: [서비스명]
|
|
152
|
-
Database: [PostgreSQL / MySQL / MongoDB]
|
|
153
|
-
Migration Tool: [Prisma / Knex / TypeORM]
|
|
154
|
-
|
|
155
|
-
ERD / 엔티티 관계
|
|
156
|
-
-------------------
|
|
157
|
-
[User] 1---N [Order] N---M [Product]
|
|
158
|
-
| |
|
|
159
|
-
1---N [Address] 1---N [Review]
|
|
160
|
-
|
|
161
|
-
TABLES / 테이블 정의
|
|
162
|
-
---------------------
|
|
163
|
-
Table: users
|
|
164
|
-
id UUID PK, DEFAULT gen_random_uuid()
|
|
165
|
-
email VARCHAR(255) NOT NULL, UNIQUE
|
|
166
|
-
name VARCHAR(100) NOT NULL
|
|
167
|
-
password VARCHAR(255) NOT NULL
|
|
168
|
-
role VARCHAR(20) NOT NULL, DEFAULT 'user'
|
|
169
|
-
created_at TIMESTAMPTZ NOT NULL, DEFAULT NOW()
|
|
170
|
-
updated_at TIMESTAMPTZ NOT NULL, DEFAULT NOW()
|
|
171
|
-
deleted_at TIMESTAMPTZ NULL
|
|
172
|
-
|
|
173
|
-
INDEXES / 인덱스
|
|
174
|
-
-----------------
|
|
175
|
-
| Table | Name | Columns | Type | Reason |
|
|
176
|
-
|--------|---------------------|----------------|--------|---------------------|
|
|
177
|
-
| users | idx_users_email | email | UNIQUE | 로그인 조회 |
|
|
178
|
-
| orders | idx_orders_user_date| user_id, date | BTREE | 사용자별 주문 조회 |
|
|
179
|
-
|
|
180
|
-
MIGRATION / 마이그레이션
|
|
181
|
-
-------------------------
|
|
182
|
-
File: 20260402_001_create_users.sql
|
|
183
|
-
|
|
184
|
-
-- UP
|
|
185
|
-
CREATE TABLE users ( ... );
|
|
186
|
-
CREATE INDEX idx_users_email ON users(email);
|
|
187
|
-
|
|
188
|
-
-- DOWN
|
|
189
|
-
DROP TABLE IF EXISTS users;
|
|
190
|
-
|
|
191
|
-
ROLLBACK PLAN / 롤백 계획
|
|
192
|
-
---------------------------
|
|
193
|
-
1. 마이그레이션 실패 시: DOWN 스크립트 실행
|
|
194
|
-
2. 데이터 손실 위험 시: pg_dump 백업에서 복원
|
|
195
|
-
3. 긴급 시: Point-in-Time Recovery 사용
|
|
196
|
-
|
|
197
|
-
PERFORMANCE IMPACT / 성능 영향
|
|
198
|
-
-------------------------------
|
|
199
|
-
- 마이그레이션 예상 시간: [N분]
|
|
200
|
-
- 테이블 잠금: [있음/없음]
|
|
201
|
-
- 인덱스 생성: [CONCURRENTLY 사용 여부]
|
|
202
|
-
```
|
|
203
|
-
</Output>
|
|
204
|
-
|
|
205
|
-
<Policy>
|
|
206
|
-
- 마이그레이션은 반드시 UP/DOWN 양방향으로 작성합니다
|
|
207
|
-
- 프로덕션 마이그레이션 전 스테이징에서 실행 테스트 필수
|
|
208
|
-
- 데이터 손실 가능성이 있는 변경은 백업 확인 후 진행
|
|
209
|
-
- 인덱스 변경은 EXPLAIN ANALYZE로 효과를 검증합니다
|
|
210
|
-
- 대용량 테이블의 ALTER는 무중단 전략을 사용합니다
|
|
211
|
-
- 롤백 불가능한 마이그레이션은 명시적으로 경고합니다
|
|
212
|
-
</Policy>
|
|
213
|
-
|
|
214
|
-
## 다른 스킬과의 연동
|
|
215
|
-
|
|
216
|
-
**API 설계 연동:**
|
|
217
|
-
```
|
|
218
|
-
/forgen:api-design 데이터 모델 기반 REST API
|
|
219
|
-
```
|
|
220
|
-
데이터베이스 스키마와 일관된 API 설계
|
|
221
|
-
|
|
222
|
-
**보안 리뷰 연동:**
|
|
223
|
-
```
|
|
224
|
-
/forgen:security-review 마이그레이션 스크립트
|
|
225
|
-
```
|
|
226
|
-
마이그레이션의 보안 영향 점검
|
|
227
|
-
|
|
228
|
-
**성능 최적화 연동:**
|
|
229
|
-
```
|
|
230
|
-
/forgen:performance 쿼리 성능 분석
|
|
231
|
-
```
|
|
232
|
-
인덱스 효과 및 쿼리 최적화
|
|
233
|
-
|
|
234
|
-
## Best Practices
|
|
235
|
-
|
|
236
|
-
- **점진적 마이그레이션** -- 대규모 변경을 작은 단계로 분할
|
|
237
|
-
- **데이터 먼저 백업** -- 프로덕션 변경 전 반드시 백업
|
|
238
|
-
- **테스트 환경 검증** -- 실 데이터 볼륨으로 성능 확인
|
|
239
|
-
- **문서화** -- 스키마 변경 이유와 영향을 기록
|
|
240
|
-
- **무중단 우선** -- 서비스 중단 없는 마이그레이션 전략
|
|
241
|
-
|
|
242
|
-
<Arguments>
|
|
243
|
-
## 사용법
|
|
244
|
-
`/forgen:database {설계/마이그레이션 대상}`
|
|
245
|
-
|
|
246
|
-
### 예시
|
|
247
|
-
- `/forgen:database 사용자 관리 시스템 스키마 설계`
|
|
248
|
-
- `/forgen:database orders 테이블에 discount 컬럼 추가 마이그레이션`
|
|
249
|
-
- `/forgen:database 기존 스키마의 인덱싱 최적화`
|
|
250
|
-
- `/forgen:database PostgreSQL에서 MongoDB로 마이그레이션 계획`
|
|
251
|
-
|
|
252
|
-
### 인자
|
|
253
|
-
- 설계할 도메인, 변경할 스키마, 마이그레이션 목적 등을 설명
|
|
254
|
-
- 인자 없으면 프로젝트의 현재 스키마를 분석
|
|
255
|
-
</Arguments>
|
|
256
|
-
|
|
257
|
-
$ARGUMENTS
|
|
@@ -1,95 +0,0 @@
|
|
|
1
|
-
---
|
|
2
|
-
name: debug-detective
|
|
3
|
-
description: This skill should be used when the user asks to "debug-detective,디버그탐정,체계적디버깅". Systematic debugging with reproduce-isolate-fix-verify loop
|
|
4
|
-
---
|
|
5
|
-
|
|
6
|
-
<Purpose>
|
|
7
|
-
재현→격리→수정→검증의 4단계 루프를 통해 버그를 체계적으로 추적합니다.
|
|
8
|
-
에러 분류, git bisect, 최소 재현 사례 구성으로 근본 원인을 신속히 파악합니다.
|
|
9
|
-
</Purpose>
|
|
10
|
-
|
|
11
|
-
<Steps>
|
|
12
|
-
1. **재현 (Reproduce)**
|
|
13
|
-
- 버그 재현 조건을 최대한 구체적으로 문서화
|
|
14
|
-
```
|
|
15
|
-
환경: Node 20.x, macOS 14.3
|
|
16
|
-
입력값: { userId: null, action: "delete" }
|
|
17
|
-
예상 동작: 422 Validation Error
|
|
18
|
-
실제 동작: 500 Internal Server Error
|
|
19
|
-
재현율: 100% / 간헐적 (~30%)
|
|
20
|
-
```
|
|
21
|
-
- 간헐적 버그: 로그 레벨 높이고 반복 실행으로 패턴 포착
|
|
22
|
-
- 환경 차이 확인: 로컬 vs CI vs 프로덕션
|
|
23
|
-
|
|
24
|
-
2. **격리 (Isolate)**
|
|
25
|
-
- **에러 분류**:
|
|
26
|
-
- **런타임 에러**: TypeError, ReferenceError → 스택 트레이스 추적
|
|
27
|
-
- **타입 에러**: TS 컴파일 에러 → 타입 정의 불일치 확인
|
|
28
|
-
- **논리 에러**: 잘못된 계산/조건 → 중간값 로깅
|
|
29
|
-
- **비동기 에러**: Promise rejection, race condition → async/await 추적
|
|
30
|
-
- **Bisect 전략**:
|
|
31
|
-
```bash
|
|
32
|
-
# git bisect로 버그 도입 커밋 이진 탐색
|
|
33
|
-
git bisect start
|
|
34
|
-
git bisect bad # 현재 커밋은 버그 있음
|
|
35
|
-
git bisect good <마지막_정상_sha> # 정상 커밋 지정
|
|
36
|
-
# Git이 자동으로 중간 커밋 체크아웃
|
|
37
|
-
# 테스트 후 good/bad 판정 반복
|
|
38
|
-
git bisect run npm test # 자동화 가능
|
|
39
|
-
git bisect reset # 완료 후 원상복구
|
|
40
|
-
```
|
|
41
|
-
- **최소 재현 사례 구성**: 관련 없는 코드를 제거해 가장 단순한 형태로 축소
|
|
42
|
-
|
|
43
|
-
3. **로그 분석 패턴**
|
|
44
|
-
```typescript
|
|
45
|
-
// 구조화 로그로 맥락 추가
|
|
46
|
-
logger.error('결제 처리 실패', {
|
|
47
|
-
userId, orderId, amount,
|
|
48
|
-
stack: err.stack,
|
|
49
|
-
timestamp: new Date().toISOString(),
|
|
50
|
-
});
|
|
51
|
-
|
|
52
|
-
// 조건부 디버그 로그 (프로덕션 영향 최소화)
|
|
53
|
-
if (process.env.DEBUG_PAYMENT) {
|
|
54
|
-
console.log('[DEBUG]', JSON.stringify({ state, payload }, null, 2));
|
|
55
|
-
}
|
|
56
|
-
```
|
|
57
|
-
- 타임스탬프 정렬 → 이벤트 순서 파악
|
|
58
|
-
- 상관관계 ID(correlation ID)로 분산 로그 추적
|
|
59
|
-
|
|
60
|
-
4. **수정 (Fix)**
|
|
61
|
-
- 근본 원인(root cause)을 먼저 명시
|
|
62
|
-
- 증상만 치료하는 패치 금지 → 원인 제거
|
|
63
|
-
- 수정 범위를 최소화 (side effect 방지)
|
|
64
|
-
- 수정 전후 코드 diff를 커밋 메시지에 설명
|
|
65
|
-
|
|
66
|
-
5. **검증 (Verify)**
|
|
67
|
-
- 버그 재현 시나리오를 회귀 테스트로 추가
|
|
68
|
-
- 원래 문제가 해결됐는지 확인
|
|
69
|
-
- 관련 기능에 새 버그가 생기지 않았는지 확인
|
|
70
|
-
- 스테이징 → 프로덕션 순서로 검증
|
|
71
|
-
</Steps>
|
|
72
|
-
|
|
73
|
-
<Policy>
|
|
74
|
-
- 추측 기반 수정 금지 — 반드시 재현 먼저
|
|
75
|
-
- 로그 추가 시 민감 정보(비밀번호, 토큰) 절대 출력 금지
|
|
76
|
-
- 수정 후 해당 버그의 회귀 테스트 1개 이상 추가
|
|
77
|
-
- 간헐적 버그는 최소 10회 연속 통과 후 수정 완료 판정
|
|
78
|
-
</Policy>
|
|
79
|
-
|
|
80
|
-
<Arguments>
|
|
81
|
-
## 사용법
|
|
82
|
-
`/forgen:debug-detective {버그 설명}`
|
|
83
|
-
|
|
84
|
-
### 예시
|
|
85
|
-
- `/forgen:debug-detective 로그인 후 가끔 401 에러가 발생함 (재현율 20%)`
|
|
86
|
-
- `/forgen:debug-detective 최근 배포 후 결제 API 응답 시간이 3배 증가`
|
|
87
|
-
- `/forgen:debug-detective TypeScript 컴파일은 되는데 런타임에서 undefined 에러`
|
|
88
|
-
|
|
89
|
-
### 인자
|
|
90
|
-
- 버그 증상과 재현 조건
|
|
91
|
-
- 발생 환경 (로컬/스테이징/프로덕션)
|
|
92
|
-
- 관련 에러 메시지나 스택 트레이스
|
|
93
|
-
</Arguments>
|
|
94
|
-
|
|
95
|
-
$ARGUMENTS
|