@wooojin/forgen 0.2.1 → 0.3.1
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 +76 -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/solution-evolver.md +115 -0
- 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 +25 -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 +158 -2
- package/dist/core/harness.d.ts +6 -1
- package/dist/core/harness.js +75 -19
- package/dist/core/paths.d.ts +31 -1
- package/dist/core/paths.js +43 -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/learn-cli.d.ts +1 -0
- package/dist/engine/learn-cli.js +182 -0
- 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-candidate.d.ts +30 -0
- package/dist/engine/solution-candidate.js +124 -0
- package/dist/engine/solution-fitness.d.ts +52 -0
- package/dist/engine/solution-fitness.js +95 -0
- package/dist/engine/solution-fixup.d.ts +30 -0
- package/dist/engine/solution-fixup.js +116 -0
- package/dist/engine/solution-format.d.ts +10 -2
- package/dist/engine/solution-format.js +287 -57
- package/dist/engine/solution-index.d.ts +1 -1
- package/dist/engine/solution-index.js +10 -0
- package/dist/engine/solution-matcher.d.ts +7 -1
- package/dist/engine/solution-matcher.js +137 -37
- package/dist/engine/solution-outcomes.d.ts +70 -0
- package/dist/engine/solution-outcomes.js +242 -0
- package/dist/engine/solution-quarantine.d.ts +36 -0
- package/dist/engine/solution-quarantine.js +172 -0
- package/dist/engine/solution-weakness.d.ts +45 -0
- package/dist/engine/solution-weakness.js +225 -0
- package/dist/engine/solution-writer.d.ts +5 -0
- package/dist/engine/solution-writer.js +18 -0
- 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/post-tool-failure.js +7 -0
- package/dist/hooks/skill-injector.d.ts +4 -3
- package/dist/hooks/skill-injector.js +6 -4
- package/dist/hooks/solution-injector.js +20 -0
- 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/mcp/tools.js +8 -0
- 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
|
@@ -1,305 +1,161 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: architecture-decision
|
|
3
|
-
description: This skill should be used when the user asks to "adr,architecture decision,아키텍처 결정,설계 결정,기술 결정".
|
|
3
|
+
description: This skill should be used when the user asks to "adr,ch-architecture decision,아키텍처 결정,설계 결정,기술 결정". ADR 생성 -- 대안 평가, 가중 트레이드오프 매트릭스, 결정 라이프사이클 관리
|
|
4
4
|
---
|
|
5
5
|
|
|
6
|
-
<!-- forgen-managed -->
|
|
7
|
-
|
|
8
6
|
<Purpose>
|
|
9
7
|
아키텍처 결정 기록(ADR)을 체계적으로 작성합니다.
|
|
10
|
-
의사결정의 컨텍스트, 대안 평가,
|
|
8
|
+
의사결정의 컨텍스트, 대안 평가, 가중 트레이드오프 매트릭스, 결과를 구조화하여 기록하고
|
|
11
9
|
미래의 개발자가 "왜 이렇게 결정했는가"를 이해할 수 있도록 합니다.
|
|
10
|
+
|
|
11
|
+
핵심 차별점:
|
|
12
|
+
- 정량적 가중 트레이드오프 매트릭스 (직관이 아닌 점수)
|
|
13
|
+
- ADR 라이프사이클 관리 (Proposed → Accepted → Deprecated → Superseded)
|
|
14
|
+
- Type 1/Type 2 가역성 분류에 따른 분석 심도 조절
|
|
15
|
+
- Compound를 통한 결정 이력 추적 및 일관성 보장
|
|
12
16
|
</Purpose>
|
|
13
17
|
|
|
14
|
-
<
|
|
15
|
-
|
|
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>
|
|
18
|
+
<Compound_Integration>
|
|
19
|
+
## 시작 전: 이전 ADR 및 결정 이력 검색
|
|
69
20
|
|
|
70
|
-
|
|
21
|
+
결정을 내리기 전에 compound-search MCP 도구로 유사한 과거 결정을 검색합니다.
|
|
71
22
|
|
|
72
|
-
|
|
23
|
+
```
|
|
24
|
+
compound-search("[결정 주제 키워드]")
|
|
25
|
+
compound-search("아키텍처 결정 [관련 기술명]")
|
|
26
|
+
```
|
|
73
27
|
|
|
28
|
+
### 검색 결과가 있을 경우
|
|
29
|
+
컨텍스트 섹션 앞에 이전 결정을 표시합니다:
|
|
74
30
|
```
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
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
|
-
)
|
|
31
|
+
이전에 유사한 결정:
|
|
32
|
+
- [ADR 제목]: [핵심 결론 요약] (날짜: YYYY-MM-DD)
|
|
33
|
+
- 당시 선택한 이유: [주요 근거]
|
|
34
|
+
- 현재와의 차이점: [컨텍스트 변화가 있으면 명시]
|
|
101
35
|
```
|
|
102
36
|
|
|
103
|
-
|
|
37
|
+
같은 주제의 이전 결정이 있으면:
|
|
38
|
+
"Note: 이전에 이 주제에 대한 결정이 있습니다 (ADR-{N}). 변경하려면 Supersede 사유가 필요합니다."
|
|
104
39
|
|
|
105
|
-
|
|
40
|
+
### 완료 후: 결정 축적
|
|
41
|
+
ADR 작성이 완료되면 compound에 결정 핵심 요약을 저장합니다.
|
|
42
|
+
</Compound_Integration>
|
|
106
43
|
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
2. **검증을 위한 자문** -- Claude Task 에이전트를 통해 분석 교차 확인
|
|
110
|
-
3. **비판적 평가** -- 외부 제안을 맹목적으로 수용하지 않음
|
|
111
|
-
4. **우아한 폴백** -- 위임이 불가능할 경우 절대 차단하지 않음
|
|
44
|
+
<Steps>
|
|
45
|
+
## 6단계 ADR 프로세스
|
|
112
46
|
|
|
113
|
-
###
|
|
114
|
-
-
|
|
115
|
-
-
|
|
116
|
-
-
|
|
117
|
-
- 팀 내 의견이 분분한 결정
|
|
47
|
+
### Step 1: Context (컨텍스트)
|
|
48
|
+
- 해결하려는 문제/요구사항 정의
|
|
49
|
+
- 현재 시스템 상태 및 제약 조건
|
|
50
|
+
- 비기능 요구사항 (성능, 보안, 확장성, 비용)
|
|
118
51
|
|
|
119
|
-
###
|
|
120
|
-
-
|
|
121
|
-
-
|
|
122
|
-
-
|
|
123
|
-
- 쉽게 되돌릴 수 있는 결정
|
|
52
|
+
### Step 2: Alternatives (대안 탐색)
|
|
53
|
+
- 최소 2개 실질 대안 (반드시 "최소형"과 "이상형" 각 1개 포함)
|
|
54
|
+
- "현상 유지" 옵션 포함
|
|
55
|
+
- 각 대안의 장단점, 호환성, 비용
|
|
124
56
|
|
|
125
|
-
|
|
57
|
+
### Step 3: Trade-off Matrix (가중 트레이드오프 매트릭스)
|
|
58
|
+
```
|
|
59
|
+
| 기준 | 가중치 | Option A | Option B | Option C |
|
|
60
|
+
|------------------|--------|----------|----------|----------|
|
|
61
|
+
| 성능 | 30% | ★★★ | ★★ | ★★★★ |
|
|
62
|
+
| 복잡도 | 25% | ★★ | ★★★★ | ★ |
|
|
63
|
+
| 유지보수성 | 25% | ★★★ | ★★★ | ★★ |
|
|
64
|
+
| 마이그레이션 비용 | 20% | ★★★★ | ★★ | ★ |
|
|
65
|
+
| 가중 합계 | 100% | 2.95 | 2.85 | 2.15 |
|
|
66
|
+
```
|
|
67
|
+
규칙: 기준 4~6개, 가중치 합계 100%, 점수 통일, 산술 검증 필수.
|
|
126
68
|
|
|
127
|
-
###
|
|
128
|
-
-
|
|
129
|
-
-
|
|
130
|
-
-
|
|
131
|
-
- [ ] 선택 근거가 구체적으로 설명됨
|
|
132
|
-
- [ ] 트레이드오프가 명시적으로 기록됨
|
|
69
|
+
### Step 4: Decision (결정)
|
|
70
|
+
- 선택된 대안과 핵심 이유
|
|
71
|
+
- 수용한 트레이드오프 명시
|
|
72
|
+
- 거부된 대안과 거부 이유
|
|
133
73
|
|
|
134
|
-
###
|
|
135
|
-
-
|
|
136
|
-
-
|
|
137
|
-
- [ ] 결정을 뒤집을 수 있는 조건이 명시됨
|
|
138
|
-
- [ ] 후속 결정 사항이 식별됨
|
|
74
|
+
### Step 5: Consequences (결과 분석)
|
|
75
|
+
- Positive/Negative/Risks + 완화 전략
|
|
76
|
+
- Follow-up decisions
|
|
139
77
|
|
|
140
|
-
###
|
|
141
|
-
-
|
|
142
|
-
-
|
|
143
|
-
|
|
78
|
+
### Step 6: Reversibility (가역성 분류)
|
|
79
|
+
- Type 1 (비가역): 심층 분석, PoC 권장, Reversal condition 필수
|
|
80
|
+
- Type 2 (가역): 신속 결정, 결과로 검증
|
|
81
|
+
</Steps>
|
|
144
82
|
|
|
145
|
-
|
|
83
|
+
<Failure_Modes>
|
|
84
|
+
## 피해야 할 실패 패턴
|
|
146
85
|
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
|
|
86
|
+
- 대안 없는 결정: 최소형+이상형을 포함한 2개 이상 실질 대안 없이 단순 선언으로 끝냄.
|
|
87
|
+
- 트레이드오프 누락: 장점만 나열하고 수용한 단점과 리스크를 기록하지 않음.
|
|
88
|
+
- 가역성 미검토: Type 1/Type 2 분류를 생략하여 비가역 결정에 충분한 분석 없이 결론.
|
|
89
|
+
- 가중치 합계 오류: 가중치 합계가 100%가 아니거나 가중 합계 산술이 틀림.
|
|
90
|
+
- 이전 ADR 무시: compound에 같은 주제의 이전 결정이 있는데 참조하지 않음.
|
|
91
|
+
- ADR 상태 미관리: Superseded된 ADR의 상태를 업데이트하지 않아 충돌 발생.
|
|
92
|
+
</Failure_Modes>
|
|
151
93
|
|
|
152
|
-
|
|
94
|
+
<Output>
|
|
95
|
+
```markdown
|
|
96
|
+
# ADR-{N}: {Title}
|
|
153
97
|
|
|
154
|
-
|
|
155
|
-
|
|
156
|
-
|
|
157
|
-
| **Type 2** (가역) | 비교적 쉽게 되돌릴 수 있음 | 라이브러리, 내부 패턴 | 신속한 결정 가능 |
|
|
98
|
+
**Status**: Proposed | Accepted | Deprecated | Superseded by ADR-{M}
|
|
99
|
+
**Date**: YYYY-MM-DD
|
|
100
|
+
**Reversibility**: Type 1 (비가역) | Type 2 (가역)
|
|
158
101
|
|
|
159
|
-
##
|
|
102
|
+
## Context
|
|
103
|
+
{상황과 배경}
|
|
160
104
|
|
|
161
|
-
|
|
162
|
-
|
|
163
|
-
|
|
164
|
-
|
|
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** |
|
|
105
|
+
## Alternatives Considered
|
|
106
|
+
### Option A: {name} (최소형)
|
|
107
|
+
### Option B: {name} (이상형)
|
|
108
|
+
### Option C: 현상 유지
|
|
170
109
|
|
|
171
|
-
|
|
172
|
-
|
|
173
|
-
|
|
174
|
-
|
|
175
|
-
|
|
176
|
-
|
|
177
|
-
|
|
178
|
-
|
|
179
|
-
|
|
180
|
-
|
|
181
|
-
|
|
182
|
-
|
|
183
|
-
|
|
184
|
-
|
|
185
|
-
|
|
186
|
-
-
|
|
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개월 후 재검토)
|
|
110
|
+
## Trade-off Matrix
|
|
111
|
+
| 기준 | 가중치 | Option A | Option B | Option C |
|
|
112
|
+
|------|--------|----------|----------|----------|
|
|
113
|
+
| ... | ... | ... | ... | ... |
|
|
114
|
+
|
|
115
|
+
## Decision
|
|
116
|
+
**Option {X}를 선택합니다.**
|
|
117
|
+
Trade-offs accepted: ...
|
|
118
|
+
Reversal condition: ...
|
|
119
|
+
|
|
120
|
+
## Consequences
|
|
121
|
+
Positive / Negative / Risks / Follow-up
|
|
122
|
+
|
|
123
|
+
## Related
|
|
124
|
+
- Supersedes: ADR-{M}
|
|
125
|
+
- Review date: YYYY-MM-DD
|
|
254
126
|
```
|
|
255
127
|
</Output>
|
|
256
128
|
|
|
257
129
|
<Policy>
|
|
258
|
-
- 최소
|
|
259
|
-
-
|
|
260
|
-
- 트레이드오프를 명시적으로
|
|
261
|
-
-
|
|
262
|
-
- ADR
|
|
263
|
-
-
|
|
130
|
+
- 최소 2개 실질 대안 비교 (최소형 + 이상형 필수)
|
|
131
|
+
- 가중 트레이드오프 매트릭스 가중치 합계 100%, 산술 검증
|
|
132
|
+
- 트레이드오프를 명시적으로 기록 -- 모든 결정에는 대가가 있음
|
|
133
|
+
- Type 1 결정에는 Reversal condition 필수
|
|
134
|
+
- 이전 ADR 검색 후 관계 명시 (Supersede 등)
|
|
135
|
+
- ADR은 코드와 함께 버전 관리 (docs/adr/)
|
|
136
|
+
- 폐기된 ADR도 삭제하지 않음 -- 역사적 맥락 보존
|
|
264
137
|
</Policy>
|
|
265
138
|
|
|
266
|
-
##
|
|
139
|
+
## ADR 라이프사이클
|
|
267
140
|
|
|
268
|
-
**코드 리뷰 연동:**
|
|
269
141
|
```
|
|
270
|
-
|
|
142
|
+
[Proposed] → [Accepted] → [Deprecated] | [Superseded by ADR-{M}]
|
|
271
143
|
```
|
|
272
|
-
아키텍처 결정이 구현에 올바르게 반영되었는지 검증
|
|
273
144
|
|
|
274
|
-
|
|
275
|
-
|
|
276
|
-
|
|
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 상태를 업데이트
|
|
145
|
+
## 다른 스킬과의 연동
|
|
146
|
+
- `/forgen:code-review` -- ADR에 따른 구현 검증
|
|
147
|
+
- `/forgen:documentation` -- ADR 기반 아키텍처 문서 작성
|
|
148
|
+
- `/forgen:security-review` -- 아키텍처 결정의 보안 관점 검토
|
|
293
149
|
|
|
294
150
|
<Arguments>
|
|
295
151
|
## 사용법
|
|
296
|
-
`/forgen:architecture-decision {결정 주제}`
|
|
152
|
+
`/forgen:ch-architecture-decision {결정 주제}`
|
|
297
153
|
|
|
298
154
|
### 예시
|
|
299
|
-
- `/forgen:architecture-decision 상태 관리 라이브러리 선택`
|
|
300
|
-
- `/forgen:architecture-decision 모놀리스 → 마이크로서비스 전환`
|
|
301
|
-
- `/forgen:architecture-decision 인증 방식 결정 (JWT vs Session)`
|
|
302
|
-
- `/forgen:architecture-decision 데이터베이스 선택 (PostgreSQL vs MongoDB)`
|
|
155
|
+
- `/forgen:ch-architecture-decision 상태 관리 라이브러리 선택`
|
|
156
|
+
- `/forgen:ch-architecture-decision 모놀리스 → 마이크로서비스 전환`
|
|
157
|
+
- `/forgen:ch-architecture-decision 인증 방식 결정 (JWT vs Session)`
|
|
158
|
+
- `/forgen:ch-architecture-decision 데이터베이스 선택 (PostgreSQL vs MongoDB)`
|
|
303
159
|
|
|
304
160
|
### 인자
|
|
305
161
|
- 결정이 필요한 주제, 배경, 제약 조건 등을 설명
|
|
@@ -0,0 +1,207 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: calibrate
|
|
3
|
+
description: This skill should be used when the user asks to "calibrate, 캘리브레이트, 프로필 보정, 프로필 조정, 프로필 확인". 축적된 evidence(교정 기록)를 분석하여 4축 프로필 조정을 제안합니다.
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
<Purpose>
|
|
7
|
+
사용자가 Claude의 행동을 교정한 기록(evidence)을 분석하여
|
|
8
|
+
4축 프로필(quality_safety / autonomy / judgment_philosophy / communication_style)의
|
|
9
|
+
조정 방향을 데이터 기반으로 제안합니다.
|
|
10
|
+
|
|
11
|
+
이 스킬은 forgen에만 존재하는 고유 기능입니다.
|
|
12
|
+
"Claude가 나의 스타일을 얼마나 잘 학습하고 있는가"를 정량적으로 확인하고,
|
|
13
|
+
축적된 교정 패턴을 바탕으로 프로필을 보정합니다.
|
|
14
|
+
|
|
15
|
+
핵심 원칙: 추측이 아닌 증거, 점진적 조정, 반드시 사용자 동의.
|
|
16
|
+
</Purpose>
|
|
17
|
+
|
|
18
|
+
<Compound_Integration>
|
|
19
|
+
## Evidence 수집 및 Compound 교차 검증
|
|
20
|
+
|
|
21
|
+
calibrate는 두 가지 데이터 소스를 사용합니다:
|
|
22
|
+
|
|
23
|
+
### 1차 소스: Evidence 파일
|
|
24
|
+
`~/.forgen/me/evidence/` 디렉토리의 JSON 파일을 읽습니다.
|
|
25
|
+
각 파일의 구조:
|
|
26
|
+
```json
|
|
27
|
+
{
|
|
28
|
+
"kind": "fix-now | prefer-from-now | avoid-this",
|
|
29
|
+
"axis_hint": "quality_safety | autonomy | judgment_philosophy | communication_style",
|
|
30
|
+
"description": "사용자가 교정한 내용",
|
|
31
|
+
"timestamp": "ISO-8601"
|
|
32
|
+
}
|
|
33
|
+
```
|
|
34
|
+
|
|
35
|
+
### 2차 소스: Compound 교정 패턴
|
|
36
|
+
compound-search MCP 도구로 교정 관련 축적 패턴을 검색합니다:
|
|
37
|
+
```
|
|
38
|
+
compound-search("correction profile")
|
|
39
|
+
compound-search("교정 패턴")
|
|
40
|
+
```
|
|
41
|
+
|
|
42
|
+
compound에서 발견된 교정 패턴은 evidence와 교차 검증하여
|
|
43
|
+
일관된 방향성이 있는지 확인합니다.
|
|
44
|
+
|
|
45
|
+
### 데이터 부족 시
|
|
46
|
+
evidence 0건 + compound 교정 패턴 0건이면:
|
|
47
|
+
"아직 교정 데이터가 부족합니다. 더 사용하면서 교정이 쌓이면 다시 실행하세요."
|
|
48
|
+
보고 후 즉시 종료합니다.
|
|
49
|
+
</Compound_Integration>
|
|
50
|
+
|
|
51
|
+
<Steps>
|
|
52
|
+
## Phase 1: Evidence 로드 및 검증
|
|
53
|
+
|
|
54
|
+
```bash
|
|
55
|
+
ls ~/.forgen/me/evidence/ 2>/dev/null || echo "EMPTY"
|
|
56
|
+
cat ~/.forgen/me/evidence/*.json 2>/dev/null || echo "NO_FILES"
|
|
57
|
+
```
|
|
58
|
+
|
|
59
|
+
로드한 JSON 파일마다 다음을 검증합니다:
|
|
60
|
+
- `kind` 필드가 유효한 값인지 (fix-now, prefer-from-now, avoid-this)
|
|
61
|
+
- `axis_hint` 필드가 4축 중 하나인지
|
|
62
|
+
- `timestamp`가 지정된 기간 내인지 (기본 30일)
|
|
63
|
+
|
|
64
|
+
기간 외의 evidence는 분석에서 제외하되, 총 건수는 참고로 표시합니다.
|
|
65
|
+
|
|
66
|
+
## Phase 2: 현재 프로필 확인
|
|
67
|
+
|
|
68
|
+
```bash
|
|
69
|
+
cat ~/.forgen/me/forge-profile.json 2>/dev/null || echo "프로필 파일 없음"
|
|
70
|
+
```
|
|
71
|
+
|
|
72
|
+
프로필 파일이 없으면 기본값을 사용합니다:
|
|
73
|
+
```json
|
|
74
|
+
{
|
|
75
|
+
"quality_safety": "balanced",
|
|
76
|
+
"autonomy": "balanced",
|
|
77
|
+
"judgment_philosophy": "balanced",
|
|
78
|
+
"communication_style": "balanced"
|
|
79
|
+
}
|
|
80
|
+
```
|
|
81
|
+
|
|
82
|
+
## Phase 3: Compound 교차 검색
|
|
83
|
+
|
|
84
|
+
```
|
|
85
|
+
compound-search("correction profile")
|
|
86
|
+
compound-search("교정 행동 패턴")
|
|
87
|
+
```
|
|
88
|
+
|
|
89
|
+
compound 솔루션에서 교정 관련 패턴이 발견되면,
|
|
90
|
+
evidence와 방향이 일치하는지 검증합니다.
|
|
91
|
+
일치하면 신뢰도를 높이고, 상충하면 별도 표기합니다.
|
|
92
|
+
|
|
93
|
+
## Phase 4: 축별 교정 분석 (정량 프로토콜)
|
|
94
|
+
|
|
95
|
+
각 축에 대해 다음 절차를 수행합니다:
|
|
96
|
+
|
|
97
|
+
### 4-1. 교정 건수 집계
|
|
98
|
+
지정 기간 내 해당 axis_hint의 evidence 건수를 셉니다.
|
|
99
|
+
|
|
100
|
+
### 4-2. 방향 감지
|
|
101
|
+
교정 내용의 키워드와 kind를 분석하여 방향을 판별합니다:
|
|
102
|
+
|
|
103
|
+
**quality_safety**: 보수형("확인 더 해줘","테스트 먼저") vs 속도형("그냥 해","빨리")
|
|
104
|
+
**autonomy**: 자율실행형("왜 물어봐","알아서 해") vs 확인우선형("먼저 물어봐","확인하고")
|
|
105
|
+
**judgment_philosophy**: 최소변경형("너무 많이 바꿨어","최소한만") vs 구조적접근형("근본적으로","구조적으로")
|
|
106
|
+
**communication_style**: 간결형("너무 길어","짧게","코드만") vs 상세형("더 자세히","왜인지 설명")
|
|
107
|
+
|
|
108
|
+
### 4-3. 방향 점수 계산
|
|
109
|
+
```
|
|
110
|
+
방향 점수 = (해당 방향 교정 건수) - (반대 방향 교정 건수)
|
|
111
|
+
kind 보정: fix-now은 1.5배, prefer-from-now과 avoid-this는 1.0배
|
|
112
|
+
```
|
|
113
|
+
|
|
114
|
+
### 4-4. 임계값 판정
|
|
115
|
+
- 같은 방향 교정 3건 이상 AND 방향 점수 >= 2 --> 변경 제안
|
|
116
|
+
- 같은 방향 교정 1~2건 --> "데이터 부족, 유지" (관찰 중 표기)
|
|
117
|
+
- 교정 0건 --> "현재 설정 유지"
|
|
118
|
+
|
|
119
|
+
## Phase 5: 조정 제안 구성 (최대 2축 제한)
|
|
120
|
+
|
|
121
|
+
변경 제안 대상이 3개 이상이면 방향 점수 상위 2개만 제안합니다.
|
|
122
|
+
한 번에 한 단계만 이동합니다 (balanced→conservative, 두 단계 점프 금지).
|
|
123
|
+
|
|
124
|
+
## Phase 6: 사용자 확인 및 적용
|
|
125
|
+
|
|
126
|
+
선택지: Y(전체 적용) / n(취소) / 커스텀(축별 개별 선택)
|
|
127
|
+
동의 시에만 forge-profile.json을 업데이트하고, 변경 이력을 calibration-log로 저장합니다.
|
|
128
|
+
</Steps>
|
|
129
|
+
|
|
130
|
+
<Failure_Modes>
|
|
131
|
+
## 피해야 할 실패 패턴
|
|
132
|
+
|
|
133
|
+
- evidence 없이 추측: 교정 데이터 0건이면 분석하지 않는다. "느낌상" 조정을 절대 제안하지 않는다.
|
|
134
|
+
- 단일 교정으로 변경 제안: 같은 방향 3건 이상일 때만 제안한다. 1건은 과적합이다.
|
|
135
|
+
- 모든 축 동시 변경: 한 번에 최대 2개 축만 조정 제안한다.
|
|
136
|
+
- 두 단계 이상 점프: balanced에서 strict로 한 번에 뛰지 않는다.
|
|
137
|
+
- 확인 없이 프로필 변경: 반드시 사용자 동의 후 수정한다. 자동 적용은 절대 없다.
|
|
138
|
+
- 방향 상충 무시: 같은 축에서 양방향 교정이 혼재되면 변경하지 않고 명확화를 요청한다.
|
|
139
|
+
- compound 데이터 맹신: evidence와 교차 검증 후에만 신뢰도 보조로 사용한다.
|
|
140
|
+
</Failure_Modes>
|
|
141
|
+
|
|
142
|
+
<Output>
|
|
143
|
+
```
|
|
144
|
+
PROFILE CALIBRATION / 프로필 보정
|
|
145
|
+
═════════════════════════════════
|
|
146
|
+
기간: 최근 30일 | 세션: {N}개 | 교정: {N}개
|
|
147
|
+
|
|
148
|
+
현재 프로필:
|
|
149
|
+
quality_safety: {value} ({facet_detail})
|
|
150
|
+
autonomy: {value} ({facet_detail})
|
|
151
|
+
judgment_philosophy: {value} ({facet_detail})
|
|
152
|
+
communication_style: {value} ({facet_detail})
|
|
153
|
+
|
|
154
|
+
교정 분석:
|
|
155
|
+
quality_safety:
|
|
156
|
+
교정 {N}건: "{example1}", "{example2}"
|
|
157
|
+
방향: {direction} (점수: +{score})
|
|
158
|
+
→ {new_value}(으)로 변경 제안? [Y/n]
|
|
159
|
+
|
|
160
|
+
autonomy:
|
|
161
|
+
교정 0건 → 현재 설정 유지
|
|
162
|
+
|
|
163
|
+
judgment_philosophy:
|
|
164
|
+
교정 1건 → 충분하지 않음 (3건 이상 필요). 유지 (관찰 중)
|
|
165
|
+
|
|
166
|
+
communication_style:
|
|
167
|
+
교정 4건: "너무 길어", "간결하게", "코드만", "설명 줄여"
|
|
168
|
+
방향: 간결형 (점수: +4)
|
|
169
|
+
→ 간결형으로 변경 제안? [Y/n]
|
|
170
|
+
|
|
171
|
+
Compound 교차 검증:
|
|
172
|
+
quality_safety: compound에서 "테스트 우선" 패턴 2건 발견 → evidence와 일치
|
|
173
|
+
communication_style: compound에서 "간결 선호" 패턴 1건 발견 → evidence와 일치
|
|
174
|
+
|
|
175
|
+
변경 요약: 2개 축 조정 제안 (quality_safety, communication_style)
|
|
176
|
+
적용하시겠습니까? [Y/n/커스텀]
|
|
177
|
+
```
|
|
178
|
+
</Output>
|
|
179
|
+
|
|
180
|
+
<Policy>
|
|
181
|
+
- 교정 데이터 0건이면 "데이터 부족" 보고 후 즉시 종료합니다.
|
|
182
|
+
- 같은 방향 교정 3건 이상, 방향 점수 2 이상일 때만 변경을 제안합니다.
|
|
183
|
+
- 한 번에 최대 2개 축만 조정을 제안합니다.
|
|
184
|
+
- 한 번에 한 단계만 이동합니다 (두 단계 점프 금지).
|
|
185
|
+
- forge-profile.json 수정은 반드시 사용자 동의 후 진행합니다.
|
|
186
|
+
- 방향이 혼재된 축은 변경하지 않고 사용자에게 명확화를 요청합니다.
|
|
187
|
+
- compound 데이터는 evidence와 교차 검증 후에만 신뢰도 보조로 사용합니다.
|
|
188
|
+
</Policy>
|
|
189
|
+
|
|
190
|
+
<Arguments>
|
|
191
|
+
## 사용법
|
|
192
|
+
`/forgen:calibrate [기간]`
|
|
193
|
+
|
|
194
|
+
### 기간 옵션
|
|
195
|
+
- 인수 없음: 최근 30일 (기본값)
|
|
196
|
+
- `7d`: 최근 7일
|
|
197
|
+
- `30d`: 최근 30일
|
|
198
|
+
- `90d`: 최근 90일
|
|
199
|
+
- `all`: 전체 기간
|
|
200
|
+
|
|
201
|
+
### 예시
|
|
202
|
+
- `/forgen:calibrate` -- 최근 30일 기본 분석
|
|
203
|
+
- `/forgen:calibrate 7d` -- 최근 1주일 집중 분석
|
|
204
|
+
- `/forgen:calibrate 90d` -- 분기별 종합 보정
|
|
205
|
+
</Arguments>
|
|
206
|
+
|
|
207
|
+
$ARGUMENTS
|