@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
|
@@ -0,0 +1,231 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: learn
|
|
3
|
+
description: This skill should be used when the user asks to "learn, 학습 관리, compound 정리, 솔루션 정리". Compound 지식의 관리 인터페이스 — 검색, 통계, 가지치기, 내보내기/가져오기.
|
|
4
|
+
argument-hint: "[search {query}|stats|prune|export|import {path}]"
|
|
5
|
+
model: inherit
|
|
6
|
+
allowed-tools:
|
|
7
|
+
- Read
|
|
8
|
+
- Grep
|
|
9
|
+
- Glob
|
|
10
|
+
- Bash
|
|
11
|
+
triggers:
|
|
12
|
+
- "learn"
|
|
13
|
+
- "학습 관리"
|
|
14
|
+
- "compound 정리"
|
|
15
|
+
- "솔루션 정리"
|
|
16
|
+
- "compound 관리"
|
|
17
|
+
- "솔루션 관리"
|
|
18
|
+
- "지식 관리"
|
|
19
|
+
---
|
|
20
|
+
|
|
21
|
+
<Purpose>
|
|
22
|
+
compound에 축적된 솔루션을 관리합니다.
|
|
23
|
+
시간이 지남에 따라 솔루션은 낡거나 중복되거나 모순됩니다.
|
|
24
|
+
learn은 이를 정기적으로 정리하여 compound의 신호 대 잡음 비율을 유지합니다.
|
|
25
|
+
|
|
26
|
+
서브커맨드: search, stats, prune, export, import
|
|
27
|
+
서브커맨드 생략 시: stats 실행
|
|
28
|
+
</Purpose>
|
|
29
|
+
|
|
30
|
+
<Compound_Integration>
|
|
31
|
+
## Compound 데이터 직접 조작
|
|
32
|
+
|
|
33
|
+
learn은 compound의 관리 도구입니다.
|
|
34
|
+
모든 서브커맨드에서 compound MCP 도구를 직접 사용합니다:
|
|
35
|
+
- `compound-stats` -- 전체 현황 조회
|
|
36
|
+
- `compound-list` -- 솔루션 목록 조회
|
|
37
|
+
- `compound-read` -- 개별 솔루션 상세 조회
|
|
38
|
+
- `compound-search` -- 키워드 검색
|
|
39
|
+
|
|
40
|
+
retire/merge 전에 반드시 사용자 확인을 받습니다.
|
|
41
|
+
mature 상태 솔루션은 어떤 경우에도 자동 정리 대상이 아닙니다.
|
|
42
|
+
</Compound_Integration>
|
|
43
|
+
|
|
44
|
+
<Steps>
|
|
45
|
+
## search {query}
|
|
46
|
+
|
|
47
|
+
compound-search MCP로 검색하고 결과를 정리합니다.
|
|
48
|
+
|
|
49
|
+
```
|
|
50
|
+
compound-search("{query}")
|
|
51
|
+
```
|
|
52
|
+
|
|
53
|
+
```
|
|
54
|
+
SEARCH RESULTS / 검색 결과
|
|
55
|
+
===========================
|
|
56
|
+
Query: "{query}"
|
|
57
|
+
Found: {N}개
|
|
58
|
+
|
|
59
|
+
# | Title | Type | Status | Last Used
|
|
60
|
+
----+--------------------------|---------------|------------|----------
|
|
61
|
+
1 | {제목} | {type} | {status} | {date}
|
|
62
|
+
2 | {제목} | {type} | {status} | {date}
|
|
63
|
+
```
|
|
64
|
+
|
|
65
|
+
결과 없으면: "검색 결과 없음. 관련 키워드 제안: {1-3개}"
|
|
66
|
+
|
|
67
|
+
---
|
|
68
|
+
|
|
69
|
+
## stats
|
|
70
|
+
|
|
71
|
+
```
|
|
72
|
+
compound-stats
|
|
73
|
+
compound-list
|
|
74
|
+
```
|
|
75
|
+
|
|
76
|
+
```
|
|
77
|
+
COMPOUND KNOWLEDGE / 복리 지식 현황
|
|
78
|
+
════════════════════════════════════
|
|
79
|
+
Total: {N} solutions
|
|
80
|
+
|
|
81
|
+
By Status:
|
|
82
|
+
mature (3+ hits): {N} ({N}%) {bar}
|
|
83
|
+
verified (2 hits): {N} ({N}%) {bar}
|
|
84
|
+
candidate (1 hit): {N} ({N}%) {bar}
|
|
85
|
+
experiment (0 hits): {N} ({N}%) {bar}
|
|
86
|
+
|
|
87
|
+
By Type:
|
|
88
|
+
pattern: {N} | troubleshoot: {N} | decision: {N} | anti-pattern: {N}
|
|
89
|
+
|
|
90
|
+
By Scope:
|
|
91
|
+
me: {N} | project: {N} | universal: {N}
|
|
92
|
+
|
|
93
|
+
Activity (last 7 days):
|
|
94
|
+
Injected: {N}/{total} ({N}%)
|
|
95
|
+
New: +{N} | Promoted: +{N} | Retired: -{N}
|
|
96
|
+
Top: "{title}" ({N} hits)
|
|
97
|
+
```
|
|
98
|
+
|
|
99
|
+
바 차트는 비율에 따라 `#` 문자로 시각화 (최대 20자).
|
|
100
|
+
|
|
101
|
+
---
|
|
102
|
+
|
|
103
|
+
## prune
|
|
104
|
+
|
|
105
|
+
**prune은 항상 stats를 먼저 실행합니다.**
|
|
106
|
+
|
|
107
|
+
### 감지 기준
|
|
108
|
+
1. STALE: 30일+ 미사용
|
|
109
|
+
2. DUPLICATE: 유사도 80%+ (제목+내용 키워드 비교)
|
|
110
|
+
3. CONTRADICTORY: 같은 주제에 서로 반대 결론
|
|
111
|
+
4. LOW-QUALITY: experiment 상태 60일+ 미승격
|
|
112
|
+
|
|
113
|
+
### 제외 규칙
|
|
114
|
+
- mature 상태는 절대 prune 대상이 아님
|
|
115
|
+
- verified 상태는 STALE일 때만 후보
|
|
116
|
+
|
|
117
|
+
```
|
|
118
|
+
PRUNE CANDIDATES / 정리 후보
|
|
119
|
+
════════════════════════════
|
|
120
|
+
|
|
121
|
+
STALE (30d+ unused):
|
|
122
|
+
1. "{title}" ({N}일 미사용) [retire / keep]
|
|
123
|
+
2. "{title}" ({N}일 미사용) [retire / keep]
|
|
124
|
+
|
|
125
|
+
DUPLICATE (similarity {N}%+):
|
|
126
|
+
3. "{title-a}" ~ "{title-b}" ({N}%) [merge / keep both]
|
|
127
|
+
|
|
128
|
+
CONTRADICTORY:
|
|
129
|
+
4. "{title-a}" vs "{title-b}" [resolve / keep both]
|
|
130
|
+
|
|
131
|
+
LOW-QUALITY (experiment {N}d+):
|
|
132
|
+
5. "{title}" (experiment {N}일 경과) [retire / promote / keep]
|
|
133
|
+
|
|
134
|
+
선택하세요 (번호 + 행동, 예: "1 retire, 3 merge, 4 resolve"):
|
|
135
|
+
```
|
|
136
|
+
|
|
137
|
+
사용자 선택을 받은 후에만 실행합니다.
|
|
138
|
+
|
|
139
|
+
---
|
|
140
|
+
|
|
141
|
+
## export
|
|
142
|
+
|
|
143
|
+
```bash
|
|
144
|
+
# tar.gz (기본)
|
|
145
|
+
tar -czf compound-export-$(date +%Y%m%d).tar.gz ~/.forgen/me/solutions/
|
|
146
|
+
|
|
147
|
+
# markdown (--md 인수)
|
|
148
|
+
# 각 솔루션을 하나의 markdown으로 결합
|
|
149
|
+
```
|
|
150
|
+
|
|
151
|
+
```
|
|
152
|
+
EXPORT COMPLETE / 내보내기 완료
|
|
153
|
+
================================
|
|
154
|
+
Format: {tar.gz / markdown}
|
|
155
|
+
File: {파일 경로}
|
|
156
|
+
Size: {크기}
|
|
157
|
+
Count: {솔루션 수}
|
|
158
|
+
```
|
|
159
|
+
|
|
160
|
+
---
|
|
161
|
+
|
|
162
|
+
## import {path}
|
|
163
|
+
|
|
164
|
+
```bash
|
|
165
|
+
tar -xzf {path} -C /tmp/compound-import/
|
|
166
|
+
```
|
|
167
|
+
|
|
168
|
+
중복 검사 후 처리:
|
|
169
|
+
- 동일 -> skip
|
|
170
|
+
- 유사 -> 사용자에게 merge/skip/replace 선택
|
|
171
|
+
- 신규 -> 추가
|
|
172
|
+
|
|
173
|
+
```
|
|
174
|
+
IMPORT RESULTS / 가져오기 결과
|
|
175
|
+
===============================
|
|
176
|
+
Source: {path}
|
|
177
|
+
Total: {N}개
|
|
178
|
+
Added: {N}개
|
|
179
|
+
Skipped: {N}개 (중복)
|
|
180
|
+
Merged: {N}개
|
|
181
|
+
```
|
|
182
|
+
</Steps>
|
|
183
|
+
|
|
184
|
+
<Failure_Modes>
|
|
185
|
+
**확인 없이 retire**: 각 후보의 선택을 반드시 사용자에게 받는다. 자동 삭제 없음.
|
|
186
|
+
**mature 솔루션 삭제 제안**: mature는 prune 대상에서 제외. 3회 이상 활용된 지식은 가치가 검증됨.
|
|
187
|
+
**stats 없이 prune**: stats 먼저, 그 다음 prune 후보. 전체 맥락 없이 개별 삭제 불가.
|
|
188
|
+
**import 무조건 덮어쓰기**: 기존 솔루션과 충돌 시 반드시 중복 검사 먼저.
|
|
189
|
+
**빈 compound에서 prune 시도**: 솔루션이 없으면 "/compound로 세션 패턴을 축적하세요" 안내.
|
|
190
|
+
</Failure_Modes>
|
|
191
|
+
|
|
192
|
+
<Output>
|
|
193
|
+
## stats 출력
|
|
194
|
+
|
|
195
|
+
```
|
|
196
|
+
COMPOUND KNOWLEDGE / 복리 지식 현황
|
|
197
|
+
════════════════════════════════════
|
|
198
|
+
Total: {N} solutions
|
|
199
|
+
...
|
|
200
|
+
```
|
|
201
|
+
|
|
202
|
+
## prune 출력
|
|
203
|
+
|
|
204
|
+
```
|
|
205
|
+
PRUNE CANDIDATES / 정리 후보
|
|
206
|
+
════════════════════════════
|
|
207
|
+
[stale] "{title}" -- {N}일 미사용 -> retire/keep?
|
|
208
|
+
[duplicate] "{a}" ~ "{b}" -> merge/keep?
|
|
209
|
+
[low-quality] "{title}" -- experiment {N}일 -> retire/promote/keep?
|
|
210
|
+
```
|
|
211
|
+
</Output>
|
|
212
|
+
|
|
213
|
+
<Policy>
|
|
214
|
+
- retire/merge는 반드시 사용자 확인 후 실행.
|
|
215
|
+
- mature 상태 솔루션은 prune 대상이 아님. 예외 없음.
|
|
216
|
+
- prune은 항상 stats 출력 이후에 후보 제시.
|
|
217
|
+
- export는 현재 디렉토리에 날짜 포함 파일명.
|
|
218
|
+
- import는 중복 검사 먼저, 충돌 시 사용자 선택.
|
|
219
|
+
- 서브커맨드 없으면 stats 기본 실행.
|
|
220
|
+
</Policy>
|
|
221
|
+
|
|
222
|
+
<Arguments>
|
|
223
|
+
- `search {query}`: 솔루션 검색
|
|
224
|
+
- `stats`: 전체 현황 통계 (기본값)
|
|
225
|
+
- `prune`: stale/중복/모순/저품질 감지 및 정리
|
|
226
|
+
- `export`: tar.gz 내보내기
|
|
227
|
+
- `export --md`: markdown 내보내기
|
|
228
|
+
- `import {path}`: 외부 compound 가져오기 (중복 검사 후 머지)
|
|
229
|
+
</Arguments>
|
|
230
|
+
|
|
231
|
+
$ARGUMENTS
|
|
@@ -0,0 +1,215 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: retro
|
|
3
|
+
description: This skill should be used when the user asks to "retro, 회고, retrospective, 돌아보기". Git 메트릭 + compound 건강도 + 학습 추세를 교차 분석하는 회고 리포트.
|
|
4
|
+
argument-hint: "[7d|14d|30d] [compare]"
|
|
5
|
+
model: inherit
|
|
6
|
+
allowed-tools:
|
|
7
|
+
- Read
|
|
8
|
+
- Grep
|
|
9
|
+
- Glob
|
|
10
|
+
- Bash
|
|
11
|
+
triggers:
|
|
12
|
+
- "retro"
|
|
13
|
+
- "회고"
|
|
14
|
+
- "retrospective"
|
|
15
|
+
- "돌아보기"
|
|
16
|
+
- "주간 회고"
|
|
17
|
+
- "월간 회고"
|
|
18
|
+
- "주간회고"
|
|
19
|
+
- "월간회고"
|
|
20
|
+
---
|
|
21
|
+
|
|
22
|
+
<Purpose>
|
|
23
|
+
git log + compound 통계 + 교정 기록을 교차 분석하여 최근 기간의 개발 패턴을 파악합니다.
|
|
24
|
+
"잘 하고 있는가"가 아니라 "어디서 반복 마찰이 생기는가"를 발견하는 것이 목적입니다.
|
|
25
|
+
데이터 없이 추측하지 않습니다. 모든 분석은 실제 수집된 데이터에 근거합니다.
|
|
26
|
+
</Purpose>
|
|
27
|
+
|
|
28
|
+
<Compound_Integration>
|
|
29
|
+
## Compound 데이터 활용
|
|
30
|
+
|
|
31
|
+
retro는 compound stats를 핵심 데이터 소스로 사용합니다.
|
|
32
|
+
|
|
33
|
+
분석 신호:
|
|
34
|
+
- 활용률 낮음 -> 축적은 되지만 재사용 안 됨 (검색 키워드 품질 문제)
|
|
35
|
+
- stale 많음 -> 정리 필요 (`/learn prune` 추천)
|
|
36
|
+
- experiment 비율 높음 -> 검증 없이 축적만 됨
|
|
37
|
+
- mature 비율 높음 -> 건강한 지식 베이스
|
|
38
|
+
</Compound_Integration>
|
|
39
|
+
|
|
40
|
+
<Steps>
|
|
41
|
+
## Phase 1: 데이터 수집
|
|
42
|
+
|
|
43
|
+
기간 기본값: 7d
|
|
44
|
+
`$ARGUMENTS`에서 파싱 (7d, 14d, 30d, compare).
|
|
45
|
+
|
|
46
|
+
### 1-1: Git 활동 데이터
|
|
47
|
+
|
|
48
|
+
```bash
|
|
49
|
+
# 커밋 이력
|
|
50
|
+
git log --since="{period}" --oneline --stat --format="%h|%an|%ai|%s"
|
|
51
|
+
|
|
52
|
+
# 기여자별 커밋
|
|
53
|
+
git shortlog --since="{period}" -sn
|
|
54
|
+
|
|
55
|
+
# 핫스팟 (파일별 변경 빈도)
|
|
56
|
+
git log --since="{period}" --name-only --pretty=format: | sort | uniq -c | sort -rn | head -10
|
|
57
|
+
|
|
58
|
+
# 변경 줄 수
|
|
59
|
+
git log --since="{period}" --stat --format="" | tail -1
|
|
60
|
+
```
|
|
61
|
+
|
|
62
|
+
### 1-2: Compound 데이터
|
|
63
|
+
|
|
64
|
+
```
|
|
65
|
+
compound-stats
|
|
66
|
+
compound-list
|
|
67
|
+
```
|
|
68
|
+
|
|
69
|
+
### 1-3: 교정 기록
|
|
70
|
+
|
|
71
|
+
```bash
|
|
72
|
+
ls -la ~/.forgen/me/evidence/ 2>/dev/null || echo "교정 데이터 없음"
|
|
73
|
+
find ~/.forgen/me/evidence/ -name "*.json" -mtime -{period_days} 2>/dev/null | wc -l
|
|
74
|
+
```
|
|
75
|
+
|
|
76
|
+
## Phase 2: 코드 활동 분석
|
|
77
|
+
|
|
78
|
+
- 커밋 수 (일 평균 포함)
|
|
79
|
+
- +추가 / -삭제 비율
|
|
80
|
+
- 핫스팟 Top 5 (3회+ 수정 -> 불안정 영역)
|
|
81
|
+
|
|
82
|
+
## Phase 3: 세션 패턴 분석
|
|
83
|
+
|
|
84
|
+
```
|
|
85
|
+
세션 분리: 45분+ 간격 = 새 세션
|
|
86
|
+
```
|
|
87
|
+
|
|
88
|
+
- 세션 수, 평균 길이
|
|
89
|
+
- 시간대 분포 (정보 제공용, 판단은 사용자에게)
|
|
90
|
+
|
|
91
|
+
## Phase 4: Compound 건강도 분석
|
|
92
|
+
|
|
93
|
+
```
|
|
94
|
+
총 솔루션, 상태별/유형별 비율, 활용률, stale 후보
|
|
95
|
+
```
|
|
96
|
+
|
|
97
|
+
건강도 판정:
|
|
98
|
+
- HEALTHY: mature 20%+, stale < 5, 활용률 30%+
|
|
99
|
+
- ATTENTION: experiment 40%+, 또는 stale 5-10
|
|
100
|
+
- NEEDS CARE: stale 10+, 또는 활용률 10% 미만
|
|
101
|
+
|
|
102
|
+
## Phase 5: 학습 추세 분석
|
|
103
|
+
|
|
104
|
+
- 교정 감소 -> 학습 중 (좋은 신호)
|
|
105
|
+
- 교정 증가 -> 드리프트 발생
|
|
106
|
+
- 동일 축 반복 -> `/calibrate` 권장
|
|
107
|
+
- 데이터 없음 -> "교정 데이터 없음" 표시
|
|
108
|
+
|
|
109
|
+
## Phase 6: 추천 생성 (반드시 3개)
|
|
110
|
+
|
|
111
|
+
데이터 근거 규칙:
|
|
112
|
+
- 핫스팟 존재 -> `/code-review {파일}`
|
|
113
|
+
- stale 5개+ -> `/learn prune`
|
|
114
|
+
- 동일 교정 3회+ -> `/calibrate`
|
|
115
|
+
- experiment 40%+ -> compound 품질 개선
|
|
116
|
+
- 활용률 10% 미만 -> compound 검색 개선
|
|
117
|
+
- 커밋 급감 -> 블로커 확인
|
|
118
|
+
</Steps>
|
|
119
|
+
|
|
120
|
+
<Compare_Mode>
|
|
121
|
+
## Compare 모드
|
|
122
|
+
|
|
123
|
+
`/retro compare` 또는 `/retro 14d compare`
|
|
124
|
+
|
|
125
|
+
```bash
|
|
126
|
+
# 현재 기간
|
|
127
|
+
git log --since="{period}" --oneline --stat
|
|
128
|
+
# 이전 기간
|
|
129
|
+
git log --since="{period*2}" --until="{period}" --oneline --stat
|
|
130
|
+
```
|
|
131
|
+
|
|
132
|
+
```
|
|
133
|
+
COMPARE / 기간 비교
|
|
134
|
+
════════════════════
|
|
135
|
+
Previous {N}d This {N}d Delta
|
|
136
|
+
Commits: {N} {N} {+/-N}%
|
|
137
|
+
LOC: +{N} +{N} {+/-N}%
|
|
138
|
+
Files: {N} {N} {+/-N}%
|
|
139
|
+
Hotspot: {file}({N}) {file}({N}) {NEW/SAME/GONE}
|
|
140
|
+
Sessions: {N} {N} {+/-N}%
|
|
141
|
+
Compound hits: {N} {N} {+/-N}%
|
|
142
|
+
Corrections: {N} {N} {+/-N}% {arrow}
|
|
143
|
+
```
|
|
144
|
+
|
|
145
|
+
Delta 해석:
|
|
146
|
+
- 커밋 증가 + 교정 감소 -> 생산성 + 학습 (최고)
|
|
147
|
+
- 커밋 감소 + 핫스팟 동일 -> 같은 파일에서 막힘 (구조적 문제)
|
|
148
|
+
- Compound hits 증가 -> 복리 효과 발현
|
|
149
|
+
</Compare_Mode>
|
|
150
|
+
|
|
151
|
+
<Failure_Modes>
|
|
152
|
+
**데이터 없이 추측**: git log + compound stats 수집 후 분석. 느낌 기반 회고 금지.
|
|
153
|
+
**긍정만 보고**: 핫스팟, stale, 개선점 반드시 포함. 칭찬 보고서는 가치 없음.
|
|
154
|
+
**추천 없는 보고서**: 반드시 3개 next action. "계속 잘 하세요"는 추천이 아님.
|
|
155
|
+
**기간 무시**: `--since` 파라미터 정확 적용.
|
|
156
|
+
**세션 패턴 판단**: 데이터만 보여주고 판단은 사용자에게.
|
|
157
|
+
</Failure_Modes>
|
|
158
|
+
|
|
159
|
+
<Output>
|
|
160
|
+
```
|
|
161
|
+
RETRO / 회고
|
|
162
|
+
════════════
|
|
163
|
+
기간: {start} ~ {end}
|
|
164
|
+
|
|
165
|
+
CODE ACTIVITY
|
|
166
|
+
─────────────
|
|
167
|
+
커밋: {N}개 (일 평균 {N}개) | +{N} / -{N} | 파일: {N}개
|
|
168
|
+
세션: {N}개 (평균 {N}분)
|
|
169
|
+
|
|
170
|
+
핫스팟:
|
|
171
|
+
1. {file} ({N}회 수정) <- 구조 리뷰 권장
|
|
172
|
+
2. {file} ({N}회 수정)
|
|
173
|
+
3. {file} ({N}회 수정)
|
|
174
|
+
4. {file} ({N}회 수정)
|
|
175
|
+
5. {file} ({N}회 수정)
|
|
176
|
+
|
|
177
|
+
COMPOUND HEALTH [{HEALTHY/ATTENTION/NEEDS CARE}]
|
|
178
|
+
───────────────
|
|
179
|
+
총: {N}개 | mature: {N} | verified: {N} | candidate: {N} | experiment: {N}
|
|
180
|
+
활용률: {N}% (지난주 대비 {+/-N}%)
|
|
181
|
+
Stale 후보: {N}개
|
|
182
|
+
신규: +{N}개 | 승격: +{N}개 | 은퇴: -{N}개
|
|
183
|
+
|
|
184
|
+
LEARNING TREND
|
|
185
|
+
──────────────
|
|
186
|
+
교정: {N} -> {N} ({down/up/flat} {arrow})
|
|
187
|
+
드리프트: {N}회
|
|
188
|
+
|
|
189
|
+
RECOMMENDATIONS
|
|
190
|
+
───────────────
|
|
191
|
+
1. {action} -- {data-backed reason}
|
|
192
|
+
2. {action} -- {data-backed reason}
|
|
193
|
+
3. {action} -- {data-backed reason}
|
|
194
|
+
```
|
|
195
|
+
</Output>
|
|
196
|
+
|
|
197
|
+
<Policy>
|
|
198
|
+
- 데이터 수집 없이 회고 시작하지 않음.
|
|
199
|
+
- 기간 없으면 7d 기본.
|
|
200
|
+
- 추천은 수집된 데이터에만 근거. 추측 금지.
|
|
201
|
+
- 추천 반드시 3개.
|
|
202
|
+
- compare 모드: 두 기간 delta 시각화.
|
|
203
|
+
- 핫스팟 Top 5.
|
|
204
|
+
- compound 건강도 3단계 판정.
|
|
205
|
+
</Policy>
|
|
206
|
+
|
|
207
|
+
<Arguments>
|
|
208
|
+
- `7d`: 최근 7일 회고 (기본값)
|
|
209
|
+
- `14d`: 최근 14일 회고
|
|
210
|
+
- `30d`: 최근 30일 회고
|
|
211
|
+
- `compare`: 현재 기간 vs 이전 동일 기간 비교
|
|
212
|
+
- `14d compare`: 14일 회고 + 기간 비교
|
|
213
|
+
</Arguments>
|
|
214
|
+
|
|
215
|
+
$ARGUMENTS
|