@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,105 +0,0 @@
1
- ---
2
- name: refactor
3
- description: This skill should be used when the user asks to "refactor,리팩토링,리팩터,코드정리". Safe refactoring with test-first approach and SOLID principles
4
- triggers:
5
- - "refactor"
6
- - "리팩토링"
7
- - "리팩터"
8
- - "코드정리"
9
- ---
10
-
11
- <Purpose>
12
- 테스트 확보→변경→검증의 3단계를 통해 기능을 유지하면서 코드 구조를 개선합니다.
13
- 코드 스멜 식별, SOLID 원칙 적용, 리팩토링 카탈로그를 활용해 체계적으로 진행합니다.
14
- </Purpose>
15
-
16
- <Steps>
17
- 1. **테스트 확보 (Test First)**
18
- - 리팩토링 전 기존 동작을 테스트로 고정
19
- - 테스트 없는 코드: 특성화 테스트(Characterization Test) 먼저 작성
20
- ```typescript
21
- // 현재 동작을 그대로 문서화하는 테스트
22
- it('현재 동작 특성화', () => {
23
- expect(legacyFunction(input)).toMatchSnapshot();
24
- });
25
- ```
26
- - 커버리지 확인: 변경할 코드 경로가 모두 테스트에 포함됐는지 검증
27
-
28
- 2. **코드 스멜 식별**
29
- - **긴 함수**: 50줄 초과 → 추출(Extract) 대상
30
- - **중복 코드**: DRY 원칙 위반 → 공통 추출
31
- - **복잡한 조건**: 중첩 if/else 3단계 초과 → Early Return 또는 전략 패턴
32
- - **긴 매개변수 목록**: 4개 초과 → 객체로 묶기
33
- - **거대한 클래스**: 단일 책임 원칙 위반 → 분리
34
- - **주석으로 설명이 필요한 코드**: 코드 자체를 명확하게 개선
35
-
36
- 3. **SOLID 원칙 적용**
37
- - **S** (단일 책임): 클래스/함수는 하나의 이유로만 변경
38
- - **O** (개방-폐쇄): 확장에 열려 있고 수정에 닫혀 있도록 설계
39
- - **L** (리스코프 치환): 하위 타입은 상위 타입을 완전히 대체 가능
40
- - **I** (인터페이스 분리): 사용하지 않는 메서드를 강요하지 않음
41
- - **D** (의존성 역전): 구체 클래스가 아닌 추상화에 의존
42
-
43
- 4. **리팩토링 카탈로그 (Fowler)**
44
- - **Extract Method**: 코드 블록을 독립적인 함수로 추출
45
- ```typescript
46
- // Before
47
- function processOrder(order) {
48
- // 가격 계산 (20줄)
49
- let total = 0;
50
- for (const item of order.items) { total += item.price * item.qty; }
51
- // ...
52
- }
53
- // After
54
- function processOrder(order) {
55
- const total = calculateTotal(order.items);
56
- // ...
57
- }
58
- function calculateTotal(items) { /* ... */ }
59
- ```
60
- - **Move Method**: 다른 클래스에서 더 많이 사용하는 메서드 이동
61
- - **Replace Conditional with Polymorphism**: switch/if-else 체인 → 다형성
62
- ```typescript
63
- // Before: if (type === 'A') ... else if (type === 'B') ...
64
- // After: strategy[type].execute()
65
- ```
66
- - **Introduce Parameter Object**: 매개변수 그룹 → 객체
67
- - **Replace Magic Number with Constant**: 리터럴 → 명명된 상수
68
- - **Inline Variable**: 불필요한 중간 변수 제거
69
-
70
- 5. **변경 (Refactor)**
71
- - 한 번에 하나의 리팩토링만 적용
72
- - 각 단계 후 테스트 실행 (`npm test` / `vitest run`)
73
- - 작은 커밋으로 이력 추적: `refactor: Extract calculateTotal from processOrder`
74
- - 동작 변경과 구조 변경을 같은 커밋에 섞지 않음
75
-
76
- 6. **검증 (Verify)**
77
- - 전체 테스트 스위트 통과 확인
78
- - 타입 검사: `tsc --noEmit`
79
- - 린트: `eslint src/`
80
- - 성능 회귀 없음 확인 (주요 경로 벤치마크)
81
- </Steps>
82
-
83
- <Policy>
84
- - 리팩토링과 기능 추가를 동시에 하지 않는다
85
- - 테스트 없이 리팩토링 시작 금지
86
- - 각 단계 후 테스트 통과 확인 필수
87
- - 한 세션에서 수정하는 파일은 최대 5개로 제한
88
- </Policy>
89
-
90
- <Arguments>
91
- ## 사용법
92
- `/forgen:refactor {리팩토링 대상}`
93
-
94
- ### 예시
95
- - `/forgen:refactor src/services/PaymentService.ts — 200줄 함수 분리`
96
- - `/forgen:refactor 주문 처리 로직의 중복 코드 제거`
97
- - `/forgen:refactor UserController를 SOLID 원칙에 맞게 재설계`
98
-
99
- ### 인자
100
- - 리팩토링할 파일/함수/모듈 명시
101
- - 목표 (성능, 가독성, 유지보수성, 특정 패턴 적용)
102
- - 제약 조건 (하위 호환성 유지, 특정 인터페이스 유지 등)
103
- </Arguments>
104
-
105
- $ARGUMENTS
@@ -1,288 +0,0 @@
1
- ---
2
- name: security-review
3
- description: This skill should be used when the user asks to "security review,보안 리뷰,보안 검토,security audit,취약점 점검". Security-focused code audit with OWASP Top 10 and supply chain checks
4
- triggers:
5
- - "security review"
6
- - "보안 리뷰"
7
- - "보안 검토"
8
- - "security audit"
9
- - "취약점 점검"
10
- ---
11
-
12
- <Purpose>
13
- 보안 중심 코드 감사를 수행합니다. OWASP Top 10, 공급망 보안,
14
- 시크릿 노출, 안전하지 않은 패턴을 체계적으로 점검합니다.
15
- </Purpose>
16
-
17
- <Steps>
18
- 1. **OWASP Top 10 전체 스캔**
19
- - A01: Broken Access Control — 접근 제어 우회, 권한 에스컬레이션
20
- - A02: Cryptographic Failures — 약한 해싱(MD5/SHA1), 평문 전송, 키 노출
21
- - A03: Injection — SQL, NoSQL, Command, XSS, LDAP 인젝션
22
- - A04: Insecure Design — 보안이 고려되지 않은 설계, 위협 모델링 부재
23
- - A05: Security Misconfiguration — 기본 설정 미변경, 불필요한 기능 활성화, 에러 정보 노출
24
- - A06: Vulnerable and Outdated Components — 알려진 CVE가 있는 의존성 사용
25
- - A07: Identification and Authentication Failures — 약한 인증, 세션 고정, 크리덴셜 스터핑
26
- - A08: Software and Data Integrity Failures — 서명 미검증, 안전하지 않은 역직렬화
27
- - A09: Security Logging and Monitoring Failures — 로깅 부재, 침입 탐지 미흡
28
- - A10: Server-Side Request Forgery (SSRF) — 서버에서 외부 URL 요청 시 검증 부재
29
-
30
- 2. **시크릿 탐지**
31
- - 하드코딩된 API 키, 비밀번호, 토큰
32
- - 개인 키(private key)가 레포에 포함되었는지
33
- - 커넥션 스트링에 시크릿 포함 여부
34
- - .env, credentials 파일 커밋 여부
35
- - 로그에 민감 정보 출력
36
-
37
- 3. **입력 검증**
38
- - 모든 외부 입력의 살균/검증 확인
39
- - SQL/NoSQL Injection 방지 (파라미터화 쿼리)
40
- - Command Injection 방지
41
- - XSS 방지 (출력 이스케이핑)
42
- - Path Traversal 방지
43
- - SSRF 방지 (URL 화이트리스트)
44
-
45
- 4. **인증/인가**
46
- - 비밀번호 해싱 (bcrypt, argon2 등 강력한 알고리즘)
47
- - 세션 관리 보안 (토큰 암호학적 난수 생성)
48
- - JWT 구현 보안 (서명 검증, 만료 설정)
49
- - 접근 제어가 모든 보호 리소스에 적용되는지
50
-
51
- 5. **암호화**
52
- - 강력한 알고리즘 사용 (AES-256, RSA-2048+)
53
- - 적절한 키 관리
54
- - 암호학적으로 안전한 난수 생성
55
- - TLS/HTTPS 강제 적용
56
-
57
- 6. **의존성 보안**
58
- - `npm audit` 실행하여 알려진 취약점 검사
59
- - 오래된 의존성 확인
60
- - CRITICAL/HIGH CVE 식별
61
- - 의존성 출처 검증
62
- - 의심스러운 패키지, 과도한 권한 요구 점검
63
- </Steps>
64
-
65
- ## 에이전트 위임
66
-
67
- `security-reviewer` 에이전트(Opus 모델)에 위임하여 심층 보안 분석을 수행합니다:
68
-
69
- ```
70
- Agent(
71
- subagent_type="security-reviewer",
72
- model="opus",
73
- prompt="SECURITY REVIEW TASK
74
-
75
- 보안 감사를 수행하세요.
76
-
77
- Scope: [특정 파일 또는 전체 코드베이스]
78
-
79
- Security Checklist:
80
- 1. OWASP Top 10 전체 스캔 (A01~A10)
81
- 2. 하드코딩된 시크릿 탐지
82
- 3. 입력 검증 검토
83
- 4. 인증/인가 검토
84
- 5. 의존성 취약점 스캔 (npm audit)
85
-
86
- Output: 보안 리뷰 리포트:
87
- - 심각도별 발견 사항 요약 (CRITICAL, HIGH, MEDIUM, LOW)
88
- - 구체적인 파일:라인 위치
89
- - CVE 참조 (해당 시)
90
- - 각 이슈별 수정 방안
91
- - 전체 보안 상태 평가"
92
- )
93
- ```
94
-
95
- ## External Consultation (Optional)
96
-
97
- security-reviewer 에이전트는 교차 검증을 위해 Claude Task 에이전트에 자문할 수 있습니다.
98
-
99
- ### Protocol
100
- 1. **자체 보안 분석을 먼저 완료** — 독립적으로 리뷰 수행
101
- 2. **검증을 위한 자문** — Claude Task 에이전트를 통해 발견 사항 교차 확인
102
- 3. **비판적 평가** — 외부 발견 사항을 맹목적으로 수용하지 않음
103
- 4. **우아한 폴백** — 위임이 불가능할 경우 절대 차단하지 않음
104
-
105
- ### 자문이 필요한 경우
106
- - 인증/인가 코드
107
- - 암호화 구현
108
- - 신뢰할 수 없는 데이터의 입력 검증
109
- - 고위험 취약점 패턴
110
- - 프로덕션 배포 코드
111
-
112
- ### 자문을 생략하는 경우
113
- - 저위험 유틸리티 코드
114
- - 이미 감사된 패턴
115
- - 시간이 촉박한 보안 평가
116
- - 기존 보안 테스트가 있는 코드
117
-
118
- **참고:** 보안 세컨드 오피니언은 높은 가치를 가집니다. CRITICAL/HIGH 발견 시 자문을 고려하세요.
119
-
120
- ## 보안 체크리스트
121
-
122
- ### 인증 및 인가
123
- - [ ] 비밀번호가 강력한 알고리즘으로 해싱 (bcrypt/argon2)
124
- - [ ] 세션 토큰이 암호학적으로 무작위
125
- - [ ] JWT 토큰이 적절히 서명 및 검증됨
126
- - [ ] 모든 보호 리소스에 접근 제어 적용
127
- - [ ] 인증 우회 취약점 없음
128
-
129
- ### 입력 검증
130
- - [ ] 모든 사용자 입력이 검증 및 살균됨
131
- - [ ] SQL 쿼리가 파라미터화 사용 (문자열 연결 금지)
132
- - [ ] NoSQL 쿼리 인젝션 방지
133
- - [ ] 파일 업로드 검증 (타입, 크기, 콘텐츠)
134
- - [ ] URL 검증으로 SSRF 방지
135
-
136
- ### 출력 인코딩
137
- - [ ] HTML 출력이 XSS 방지를 위해 이스케이핑됨
138
- - [ ] JSON 응답이 적절히 인코딩됨
139
- - [ ] 에러 메시지에 사용자 데이터 미포함
140
- - [ ] Content-Security-Policy 헤더 설정
141
-
142
- ### 시크릿 관리
143
- - [ ] 하드코딩된 API 키 없음
144
- - [ ] 소스 코드에 비밀번호 없음
145
- - [ ] 레포에 개인 키 없음
146
- - [ ] 시크릿은 환경변수로 관리
147
- - [ ] 시크릿이 로그나 에러에 노출되지 않음
148
-
149
- ### 암호화
150
- - [ ] 강력한 알고리즘 사용 (AES-256, RSA-2048+)
151
- - [ ] 적절한 키 관리
152
- - [ ] 암호학적으로 안전한 난수 생성
153
- - [ ] 민감 데이터에 TLS/HTTPS 강제
154
-
155
- ### 의존성
156
- - [ ] 의존성에 알려진 취약점 없음
157
- - [ ] 의존성이 최신 상태
158
- - [ ] CRITICAL 또는 HIGH CVE 없음
159
- - [ ] 의존성 출처 검증됨
160
-
161
- ## 심각도 정의
162
-
163
- | 심각도 | 설명 |
164
- |--------|------|
165
- | **CRITICAL** | 악용 가능한 취약점으로 심각한 영향 (데이터 유출, RCE, 크리덴셜 탈취) |
166
- | **HIGH** | 특정 조건이 필요하지만 심각한 영향을 주는 취약점 |
167
- | **MEDIUM** | 제한적 영향 또는 악용이 어려운 보안 약점 |
168
- | **LOW** | 모범 사례 위반 또는 경미한 보안 우려 |
169
-
170
- ## Remediation Priority (수정 우선순위)
171
-
172
- | 우선순위 | 타임라인 | 대상 |
173
- |----------|----------|------|
174
- | 1. 노출된 시크릿 교체 | **즉시 (1시간 이내)** | 하드코딩된 키, 비밀번호, 토큰 |
175
- | 2. CRITICAL 수정 | **긴급 (24시간 이내)** | 악용 가능한 취약점 |
176
- | 3. HIGH 수정 | **중요 (1주일 이내)** | 조건부 취약점 |
177
- | 4. MEDIUM 수정 | **계획 (1개월 이내)** | 보안 약점 |
178
- | 5. LOW 수정 | **백로그 (여유 시)** | 모범 사례 위반 |
179
-
180
- <Output>
181
- ```
182
- SECURITY REVIEW REPORT / 보안 리뷰 리포트
183
- ==========================================
184
-
185
- Scope: [전체 코드베이스 / 특정 디렉토리] (N개 파일 스캔)
186
- Scan Date: YYYY-MM-DDTHH:MM:SSZ
187
-
188
- CRITICAL (N)
189
- ------------
190
- 1. src/api/auth.ts:89 - 하드코딩된 API 키
191
- Finding: AWS API 키가 소스 코드에 하드코딩됨
192
- Impact: 코드 공개 또는 유출 시 크리덴셜 노출
193
- Remediation: 환경변수로 이동, 키 즉시 교체
194
- Reference: OWASP A02:2021 - Cryptographic Failures
195
- CVE: (해당 시 CVE 번호)
196
-
197
- 2. src/db/query.ts:45 - SQL Injection 취약점
198
- Finding: 사용자 입력이 SQL 쿼리에 직접 연결됨
199
- Impact: 공격자가 임의의 SQL 명령을 실행 가능
200
- Remediation: 파라미터화 쿼리 또는 ORM 사용
201
- Reference: OWASP A03:2021 - Injection
202
-
203
- HIGH (N)
204
- --------
205
- ...
206
-
207
- MEDIUM (N)
208
- ----------
209
- ...
210
-
211
- LOW (N)
212
- -------
213
- ...
214
-
215
- DEPENDENCY VULNERABILITIES / 의존성 취약점
216
- ------------------------------------------
217
- Found N vulnerabilities via npm audit:
218
-
219
- CRITICAL: axios@0.21.0 - Server-Side Request Forgery (CVE-2021-3749)
220
- Installed: axios@0.21.0
221
- Fix: npm install axios@0.21.2
222
-
223
- HIGH: lodash@4.17.19 - Prototype Pollution (CVE-2020-8203)
224
- Installed: lodash@4.17.19
225
- Fix: npm install lodash@4.17.21
226
-
227
- ...
228
-
229
- OVERALL ASSESSMENT / 종합 평가
230
- -------------------------------
231
- Security Posture: [EXCELLENT / GOOD / FAIR / POOR]
232
- (N CRITICAL, N HIGH issues)
233
-
234
- Immediate Actions Required:
235
- 1. [즉시 조치 사항]
236
- 2. [긴급 수정 사항]
237
-
238
- Recommendation: [배포 가능 / CRITICAL 및 HIGH 이슈 해결 전 배포 금지]
239
- ```
240
- </Output>
241
-
242
- <Policy>
243
- - 취약점 발견 시 구체적인 공격 시나리오와 수정 방안을 함께 제시
244
- - False positive를 최소화하되, 의심스러운 패턴은 빠짐없이 보고
245
- - 보안 수정은 기능 동작에 영향을 주지 않도록 주의
246
- - OWASP A01~A10 각 항목에 대해 명시적으로 검사 수행
247
- - npm audit을 반드시 실행하여 의존성 취약점을 정량적으로 보고
248
- - CVE 참조를 가능한 한 포함하여 추적 가능성 확보
249
- </Policy>
250
-
251
- ## 다른 스킬과의 연동
252
-
253
- **Pipeline 연동:**
254
- ```
255
- /forgen:pipeline security "인증 모듈 리뷰"
256
- ```
257
- 사용 흐름: explore -> security-reviewer -> executor -> security-reviewer (재검증)
258
-
259
- **팀 기반 병렬 리뷰:**
260
- ```
261
- /forgen:team 4:security-reviewer "모든 API 엔드포인트 감사"
262
- ```
263
- 여러 엔드포인트에 대해 병렬 보안 리뷰 수행
264
-
265
- ## Best Practices
266
-
267
- - **조기 리뷰** — 보안은 사후 점검이 아닌 설계 단계부터
268
- - **자주 리뷰** — 주요 기능 변경이나 API 변경마다
269
- - **자동화** — CI/CD 파이프라인에서 보안 스캔 실행
270
- - **즉시 수정** — 보안 부채를 축적하지 않음
271
- - **수정 검증** — 수정 후 반드시 보안 리뷰 재실행
272
-
273
- <Arguments>
274
- ## 사용법
275
- `/forgen:security-review {점검 대상}`
276
-
277
- ### 예시
278
- - `/forgen:security-review` (기본: 전체 프로젝트)
279
- - `/forgen:security-review src/api/`
280
- - `/forgen:security-review 인증 관련 코드만 집중 점검`
281
- - `/forgen:security-review 최근 변경사항의 보안 영향 분석`
282
-
283
- ### 인자
284
- - 디렉토리, 파일, 또는 관심 영역을 지정
285
- - 인자 없으면 프로젝트 전체를 점검
286
- </Arguments>
287
-
288
- $ARGUMENTS
@@ -1,128 +0,0 @@
1
- ---
2
- name: specify
3
- description: This skill should be used when the user asks to "specify,명세,요구사항 정리,스펙,spec,requirements". Structured requirement specification with resolved/provisional/unresolved 3-level evaluation
4
- triggers:
5
- - "specify"
6
- - "명세"
7
- - "요구사항 정리"
8
- - "스펙 정리"
9
- - "spec"
10
- ---
11
-
12
- <Purpose>
13
- 사용자의 모호한 요청을 구조화된 요구사항 명세로 변환합니다.
14
- 각 요구사항을 resolved/provisional/unresolved 3단계로 평가하여
15
- 무엇이 확정되었고, 무엇이 아직 불명확한지를 투명하게 보여줍니다.
16
- </Purpose>
17
-
18
- <Steps>
19
- 1. **요청 분해**: 사용자 프롬프트에서 개별 요구사항을 추출합니다
20
- - 기능 요구사항 (무엇을 해야 하는가)
21
- - 비기능 요구사항 (성능, 보안, 접근성 등)
22
- - 제약 조건 (기술 스택, 호환성, 기한 등)
23
-
24
- 2. **3단계 평가**: 각 요구사항의 명확성을 평가합니다
25
-
26
- 3. **갭 분석**: unresolved/provisional 항목에 대해 구체적 질문을 생성합니다
27
- - 각 질문은 답변 시 해당 항목을 한 단계 승격시킬 수 있어야 함
28
- - 예/아니오로 답할 수 있는 폐쇄형 질문 우선
29
-
30
- 4. **명세서 출력**: 구조화된 형식으로 전체 명세를 제시합니다
31
- </Steps>
32
-
33
- ## 3단계 평가 기준
34
-
35
- | 상태 | 기호 | 기준 | 예시 |
36
- |------|------|------|------|
37
- | **Resolved** | `[R]` | 구현에 필요한 모든 정보가 확정됨. 코드 작성 가능. | "JWT 토큰, 만료 15분, RS256 알고리즘" |
38
- | **Provisional** | `[P]` | 작업 가능한 가정이 있으나 검증 필요. 가정을 명시. | "인증 방식은 JWT로 가정 (확인 필요)" |
39
- | **Unresolved** | `[U]` | 핵심 정보 부재. 구현 전 반드시 명확화 필요. | "에러 시 사용자에게 어떻게 알릴지 미정" |
40
-
41
- ### 승격 규칙
42
-
43
- ```
44
- [U] → [P]: 합리적 가정이 도출되면 가정과 함께 승격
45
- [P] → [R]: 사용자가 가정을 확인하거나 구체적 값을 제공하면 승격
46
- [R] → [P]: 사용자가 확정 사항을 재검토 요청하면 강등
47
- ```
48
-
49
- ## 명세서 출력 형식
50
-
51
- ```
52
- SPECIFICATION REPORT / 요구사항 명세서
53
- ======================================
54
-
55
- Summary: [요구사항 한 줄 요약]
56
- Status: R:[N] P:[N] U:[N] — 진행 가능도: [%]
57
-
58
- RESOLVED ([N])
59
- --------------
60
- [R] REQ-01: 로그인 API 엔드포인트 — POST /api/auth/login
61
- → 이메일+비밀번호 입력, JWT 반환, 만료 15분
62
-
63
- [R] REQ-02: 비밀번호 해싱 — bcrypt, salt rounds 12
64
- → 회원가입 시 해싱, 로그인 시 비교
65
-
66
- PROVISIONAL ([N])
67
- -----------------
68
- [P] REQ-03: 소셜 로그인 — Google OAuth 2.0 (가정)
69
- 가정: Google만 지원, 추후 확장 가능
70
- → 확인 필요: 지원할 소셜 프로바이더 목록
71
-
72
- [P] REQ-04: 세션 관리 — Redis 기반 (가정)
73
- 가정: 인메모리 대신 Redis 사용
74
- → 확인 필요: 인프라에 Redis가 있는지
75
-
76
- UNRESOLVED ([N])
77
- ----------------
78
- [U] REQ-05: 비밀번호 정책
79
- → 질문: 최소 길이, 특수문자 요구, 만료 주기는?
80
-
81
- [U] REQ-06: 다중 기기 로그인 처리
82
- → 질문: 동시 세션 허용? 최대 몇 개?
83
-
84
- GAP QUESTIONS (우선순위순)
85
- --------------------------
86
- Q1. [REQ-05] 비밀번호 최소 요구사항은? (길이, 복잡도)
87
- Q2. [REQ-06] 한 계정에서 동시 로그인 가능한 기기 수는?
88
- Q3. [REQ-03] Google 외에 지원할 소셜 로그인은?
89
- Q4. [REQ-04] 현재 인프라에 Redis가 구성되어 있나요?
90
-
91
- NEXT STEP
92
- ---------
93
- [위 질문에 답변하면 명세를 업데이트합니다]
94
- ```
95
-
96
- ## 진행 가능도 계산
97
-
98
- ```
99
- 진행 가능도(%) = (R×1.0 + P×0.5 + U×0.0) / 총 요구사항 × 100
100
- ```
101
-
102
- - **80% 이상**: 구현 착수 가능 (U 항목은 후순위로)
103
- - **50-79%**: provisional 항목 검증 후 착수 권장
104
- - **50% 미만**: 추가 명확화 필수, 구현 착수 비권장
105
-
106
- <Policy>
107
- - 사용자가 답변하면 즉시 해당 항목의 상태를 승격하고 명세를 갱신합니다
108
- - 가정을 세울 때는 반드시 "가정:" 레이블을 붙여 투명하게 표시합니다
109
- - 요구사항 ID(REQ-xx)를 부여하여 후속 대화에서 참조 가능하게 합니다
110
- - 기술적 판단이 가능한 항목은 provisional로 가정을 세워 진행 가능도를 높입니다
111
- - 비즈니스 판단이 필요한 항목은 unresolved로 유지하고 질문을 생성합니다
112
- </Policy>
113
-
114
- <Arguments>
115
- ## 사용법
116
- `specify {구현하려는 기능 설명}`
117
-
118
- ### 예시
119
- - `specify 사용자 인증 시스템 구현`
120
- - `specify 결제 API 연동`
121
- - `specify 대시보드 페이지 리디자인`
122
-
123
- ### 인자
124
- - 구현하려는 기능이나 작업의 자연어 설명
125
- - 기존 코드베이스가 있으면 자동으로 제약 조건 추출
126
- </Arguments>
127
-
128
- $ARGUMENTS
package/commands/tdd.md DELETED
@@ -1,183 +0,0 @@
1
- ---
2
- name: tdd
3
- description: This skill should be used when the user asks to "tdd,test first,테스트 먼저,테스트 주도". Test-Driven Development workflow with Red-Green-Refactor cycle
4
- triggers:
5
- - "tdd"
6
- - "test first"
7
- - "테스트 먼저"
8
- - "테스트 주도"
9
- ---
10
-
11
- <Purpose>
12
- TDD(Test-Driven Development) 워크플로우를 실행합니다.
13
- Red-Green-Refactor 사이클을 통해 견고한 코드를 점진적으로 구축합니다.
14
- </Purpose>
15
-
16
- ## The Iron Law / 철의 법칙
17
-
18
- **실패하는 테스트 없이 프로덕션 코드를 작성하지 않는다**
19
-
20
- 테스트 전에 코드를 작성했다면? **삭제하고 처음부터 다시 시작한다.** 예외 없음.
21
-
22
- <Steps>
23
- 1. **RED**: 실패하는 테스트를 먼저 작성합니다
24
- - 요구사항을 테스트 케이스로 변환
25
- - 엣지 케이스와 에러 케이스 포함
26
- - 테스트 실행 — **반드시 실패해야 함**
27
- - 첫 실행에 통과하면 테스트가 잘못된 것 — 수정 필요
28
-
29
- 2. **GREEN**: 테스트를 통과하는 최소한의 코드를 작성합니다
30
- - 가장 단순한 구현으로 시작
31
- - "하는 김에" 추가 기능 금지
32
- - 모든 테스트가 통과하는 것을 확인
33
- - 불필요한 최적화나 추상화는 하지 않음
34
-
35
- 3. **REFACTOR**: 코드를 정리합니다
36
- - 중복 제거
37
- - 네이밍 개선
38
- - 필요 시 추상화 도입
39
- - **변경할 때마다** 테스트 실행
40
- - 모든 테스트가 여전히 통과해야 함
41
-
42
- 4. **REPEAT**: 다음 요구사항으로 사이클 반복
43
- </Steps>
44
-
45
- ## Enforcement Rules / 시행 규칙
46
-
47
- | 감지 상황 | 조치 |
48
- |-----------|------|
49
- | 테스트보다 코드가 먼저 작성됨 | **중단. 코드 삭제. 테스트 먼저 작성.** |
50
- | 테스트가 첫 실행에 통과 | **테스트가 잘못됨. 실패하도록 수정.** |
51
- | 한 사이클에 여러 기능 | **중단. 하나의 테스트, 하나의 기능.** |
52
- | Refactor 단계 건너뜀 | **돌아가서 정리. 다음 기능 전에 리팩터.** |
53
- | Refactor에서 동작 변경 | **중단. Refactor는 동작 보존만.** |
54
- | 테스트를 수정하여 통과시킴 | **금지. 테스트는 요구사항. 코드를 수정.** |
55
-
56
- ## 에이전트 위임
57
-
58
- `test-engineer` 에이전트에 위임하여 TDD 사이클을 수행합니다:
59
-
60
- ```
61
- Agent(
62
- subagent_type="test-engineer",
63
- model="opus",
64
- prompt="TDD TASK
65
-
66
- Red-Green-Refactor 사이클로 기능을 구현하세요.
67
-
68
- Feature: [구현할 기능]
69
-
70
- Iron Law: 실패하는 테스트 없이 프로덕션 코드를 절대 작성하지 않는다.
71
-
72
- 각 사이클에서:
73
- 1. RED: 실패하는 테스트 작성 및 실행 (실패 확인)
74
- 2. GREEN: 최소한의 코드로 테스트 통과
75
- 3. REFACTOR: 코드 정리 (테스트 유지)
76
-
77
- Output: 각 사이클별 RED/GREEN/REFACTOR 결과 리포트"
78
- )
79
- ```
80
-
81
- ## External Consultation (Optional)
82
-
83
- test-engineer 에이전트는 테스트 전략 검증을 위해 Claude Task 에이전트에 자문할 수 있습니다.
84
-
85
- ### Protocol
86
- 1. **자체 테스트 전략을 먼저 수립** — 독립적으로 테스트 설계
87
- 2. **검증을 위한 자문** — Claude Task 에이전트를 통해 테스트 커버리지 전략 교차 확인
88
- 3. **비판적 평가** — 외부 제안을 맹목적으로 수용하지 않음
89
- 4. **우아한 폴백** — 위임이 불가능할 경우 절대 차단하지 않음
90
-
91
- ### 자문이 필요한 경우
92
- - 복잡한 도메인 로직의 포괄적 테스트 커버리지
93
- - 핵심 경로의 엣지 케이스 식별
94
- - 대규모 기능의 테스트 아키텍처
95
- - 익숙하지 않은 테스팅 패턴
96
-
97
- ### 자문을 생략하는 경우
98
- - 단순 유닛 테스트
99
- - 잘 알려진 테스팅 패턴
100
- - 시간이 촉박한 TDD 사이클
101
- - 작고 격리된 기능
102
-
103
- ## Phase별 출력 형식 템플릿
104
-
105
- ```
106
- ## TDD Cycle: [기능 이름]
107
-
108
- === RED Phase ===
109
- Test File: [테스트 파일 경로]
110
- Test Code:
111
- [테스트 코드]
112
-
113
- Expected Failure: [예상되는 에러 메시지]
114
- Actual Result:
115
- FAIL: [실제 실행 결과]
116
- X failing, Y passing
117
-
118
- Status: RED (테스트 실패 확인)
119
-
120
- === GREEN Phase ===
121
- Implementation File: [구현 파일 경로]
122
- Implementation Code:
123
- [최소한의 구현 코드]
124
-
125
- Test Result:
126
- PASS: [실행 결과]
127
- All tests passing
128
-
129
- Status: GREEN (테스트 통과 확인)
130
-
131
- === REFACTOR Phase ===
132
- Changes:
133
- - [변경 사항 1]
134
- - [변경 사항 2]
135
-
136
- Test Result:
137
- PASS: All tests still passing
138
-
139
- Status: REFACTOR COMPLETE
140
-
141
- === Cycle Summary ===
142
- Feature: [구현된 기능]
143
- Tests Added: N
144
- Tests Passing: N/N
145
- Next: [다음 사이클 기능]
146
- ```
147
-
148
- ## 명령어
149
-
150
- 각 구현 전:
151
- ```bash
152
- # 프로젝트의 테스트 명령어 실행 — 새 실패 테스트가 하나여야 함
153
- ```
154
-
155
- 구현 후:
156
- ```bash
157
- # 프로젝트의 테스트 명령어 실행 — 새 테스트 통과, 기존 테스트도 모두 통과
158
- ```
159
-
160
- <Policy>
161
- - 테스트 없이 프로덕션 코드를 작성하지 않습니다
162
- - 한 번에 하나의 실패하는 테스트만 추가합니다
163
- - Refactor 단계에서 동작을 변경하지 않습니다
164
- - 매 사이클 완료 후 테스트 스위트 전체 실행
165
- - 테스트를 수정하여 통과시키는 행위는 금지 (test hack 금지)
166
- - 규율 자체가 가치입니다 — 지름길은 이점을 파괴합니다
167
- </Policy>
168
-
169
- <Arguments>
170
- ## 사용법
171
- `/forgen:tdd {구현할 기능}`
172
-
173
- ### 예시
174
- - `/forgen:tdd 이메일 유효성 검증 함수`
175
- - `/forgen:tdd 장바구니 할인 계산 로직`
176
- - `/forgen:tdd src/utils/parser.ts에 JSON 파싱 에러 핸들링 추가`
177
-
178
- ### 인자
179
- - 구현할 기능이나 요구사항을 설명
180
- - 테스트 프레임워크는 프로젝트 설정에서 자동 감지 (jest, vitest 등)
181
- </Arguments>
182
-
183
- $ARGUMENTS