@kodevibe/harness 0.8.3 → 0.9.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.
@@ -7,7 +7,7 @@ The most common cause of regressions in growing projects is changing one module
7
7
 
8
8
  ## Invoked By
9
9
 
10
- - **planner** agent — Step 10: for each existing module being modified
10
+ - **pm** agent — Step 10: for each existing module being modified
11
11
  - **reviewer** agent — Step 7: when interface changes affect 2+ dependent modules
12
12
  - **architect** agent — when structural validation requires blast radius analysis
13
13
 
@@ -72,22 +72,22 @@ Plan: 4 files to update, all within S3-2 scope
72
72
 
73
73
  After completing the analysis, update these files:
74
74
 
75
- - [ ] **docs/dependency-map.md**: Update the Interface Change Log table with: Date, Module, Change description, Affected Modules, Status ("In Progress" until all dependents updated, then "Updated"). **This is mandatory for ALL interface changes** — do not skip even if the change seems minor. **Status transition**: impact-analysis sets the initial status to "In Progress". After all dependent modules are verified updated (by reviewer Step 7 or test-integrity), update Status to "Updated".
75
+ - [ ] **docs/dependency-map.md**: Update the Interface Change Log table with: Date, Module, Change description, Affected Modules, Status ("In Progress" until all dependents updated, then "Updated"). **This is mandatory for ALL interface changes** — do not skip even if the change seems minor. **Status transition**: check-impact sets the initial status to "In Progress". After all dependent modules are verified updated (by reviewer Step 7 or sync-tests), update Status to "Updated".
76
76
  - [ ] **docs/features.md**: If the interface change affects a feature's Key Files, update the Key Files column. If test files change, update the Test Files column.
77
77
  - [ ] **docs/project-state.md**: If scope exceeds current Story, add a note to Recent Changes.
78
78
 
79
79
  ### 🧭 Navigation — After Impact Analysis
80
80
 
81
- Impact-analysis is invoked BY `planner` (Step 9) or `reviewer` (Step 7). After completion, control returns to the caller's flow.
81
+ Impact-analysis is invoked BY `pm` (Step 9) or `reviewer` (Step 7). After completion, control returns to the caller's flow.
82
82
  If invoked directly by the user, append:
83
83
 
84
84
  ```
85
85
  ---
86
86
  🧭 Next Step
87
- → Next: `planner` or `reviewer`
87
+ → Next: `pm` or `reviewer`
88
88
  → Prompt: "영향도 분석 결과를 반영해줘"
89
89
  → Why: Blast radius mapped — incorporate into plan or review
90
- → Pipeline: N/A (utility skill — invoked by planner Step 9 or reviewer Step 7)
90
+ → Pipeline: N/A (utility skill — invoked by pm Step 9 or reviewer Step 7)
91
91
  ---
92
92
  ```
93
93
 
@@ -3,13 +3,13 @@
3
3
  ## Purpose
4
4
 
5
5
  Debug bugs systematically. Prevent "symptom patching" — fixing without understanding root cause.
6
- 4-phase debugging process inspired by gstack's /investigate.
6
+ 4-phase debugging process inspired by gstack's /debug.
7
7
 
8
8
  ## Invoked By
9
9
 
10
10
  - **User** (direct) — "이 버그 조사해줘", "왜 실패하는지 찾아줘"
11
- - **sprint-manager** — bug blocking progress 시 권장
12
- - **core-rules** (3-Failure Stop) → investigate Recalculating Mode
11
+ - **lead** — bug blocking progress 시 권장
12
+ - **core-rules** (3-Failure Stop) → debug Recalculating Mode
13
13
 
14
14
  ## When to Apply
15
15
 
@@ -38,7 +38,7 @@ If the user reports "weird behavior" but there is no error message or stack trac
38
38
 
39
39
  ### Phase 1: Evidence Collection (NO FIXES)
40
40
 
41
- > **failure-patterns.md responsibility**: investigate READS patterns (Phase 1) to see if this is a known bug, and WRITES updates (Phase 4) to record new patterns. The `reviewer` agent only READS patterns (Step 5) as a warning check. The `learn` skill WRITES patterns only for failures NOT already recorded by investigate in the same session.
41
+ > **failure-patterns.md responsibility**: debug READS patterns (Phase 1) to see if this is a known bug, and WRITES updates (Phase 4) to record new patterns. The `reviewer` agent only READS patterns (Step 5) as a warning check. The `wrap-up` skill WRITES patterns only for failures NOT already recorded by debug in the same session.
42
42
 
43
43
  1. Record the full error message (first 500 chars) and top 5-10 stack frames
44
44
  2. Trace the code path backwards from the error
@@ -101,12 +101,12 @@ Phase 4: Tests pass, null case test added
101
101
 
102
102
  After the fix is verified (Phase 4):
103
103
 
104
- - [ ] **docs/failure-patterns.md**: If the root cause is a repeatable pattern, add a new FP-NNN entry or increment the Frequency of an existing one. Increment Frequency if the ROOT CAUSE is the same (e.g., all SQL injection bugs = same FP-NNN regardless of which module). Different root causes = different patterns. This is NOT optional. **Note**: When investigate updates failure-patterns.md here, the `learn` skill (Step 3) will skip re-incrementing this same pattern for this session to avoid double-counting.
104
+ - [ ] **docs/failure-patterns.md**: If the root cause is a repeatable pattern, add a new FP-NNN entry or increment the Frequency of an existing one. Increment Frequency if the ROOT CAUSE is the same (e.g., all SQL injection bugs = same FP-NNN regardless of which module). Different root causes = different patterns. This is NOT optional. **Note**: When debug updates failure-patterns.md here, the `wrap-up` skill (Step 3) will skip re-incrementing this same pattern for this session to avoid double-counting.
105
105
  - [ ] **docs/project-state.md**: Add the fix to Recent Changes with the root cause hypothesis.
106
106
 
107
107
  ## Recalculating Mode (invoked by 3-Failure Stop)
108
108
 
109
- When investigate is triggered by another skill/agent's 3-Failure Stop (not by a user-reported bug):
109
+ When debug is triggered by another skill/agent's 3-Failure Stop (not by a user-reported bug):
110
110
 
111
111
  **Required input**: The caller MUST provide a failure context summary:
112
112
  ```
@@ -122,7 +122,7 @@ This input is mandatory — if not provided, ask the caller to supply it before
122
122
  3. Complete Phase 1 (Evidence) and Phase 2 (Scope Lock) to diagnose the blocker
123
123
  4. Propose 1-2 **alternative approaches** that are fundamentally different from ALL 3 failed attempts
124
124
  5. Present to the user for decision — do not auto-execute the alternatives
125
- 6. If investigate itself hits 3 failures in this mode → **full stop**, no further recursion
125
+ 6. If debug itself hits 3 failures in this mode → **full stop**, no further recursion
126
126
 
127
127
  ## Enforced Rules
128
128
 
@@ -168,5 +168,5 @@ Example 🧭 block:
168
168
 
169
169
  ### Personal State
170
170
  - Record new failure patterns in your personal .harness/failure-patterns.md
171
- - If the pattern affects the whole team, promote it (see learn skill Team Mode section)
171
+ - If the pattern affects the whole team, promote it (see wrap-up skill Team Mode section)
172
172
  <!-- TEAM_MODE_END -->
@@ -8,7 +8,7 @@ Without this, direction changes create silent inconsistencies:docs/project-brief
8
8
  ## Invoked By
9
9
 
10
10
  - **User** (direct) — "방향을 바꾸자", "GraphQL로 변경해줘"
11
- - **planner** (direction change detected) → BLOCK → pivot required before planning proceeds
11
+ - **pm** (direction change detected) → BLOCK → pivot required before planning proceeds
12
12
 
13
13
  ## When to Apply
14
14
 
@@ -113,15 +113,15 @@ After pivot completes, always append a 🧭 block:
113
113
 
114
114
  | Pivot Result | 🧭 Next Step |
115
115
  |---|---|
116
- | All state files updated | `planner` — "변경된 방향에 맞춰 재계획해줘" |
117
- | Crew artifacts exist for new direction | `bootstrap` (🟣) — "crew 산출물을 기반으로 state를 다시 세팅해줘" |
116
+ | All state files updated | `pm` — "변경된 방향에 맞춰 재계획해줘" |
117
+ | Crew artifacts exist for new direction | `setup` (🟣) — "crew 산출물을 기반으로 state를 다시 세팅해줘" |
118
118
  | User cancelled | 🏁 No action — "기존 방향을 유지합니다" |
119
119
 
120
120
  Example 🧭 block:
121
121
  ```
122
122
  ---
123
123
  🧭 Next Step
124
- → Next: `planner`
124
+ → Next: `pm`
125
125
  → Prompt: "변경된 방향에 맞춰 재계획해줘"
126
126
  → Why: Direction changed — re-plan features for new goals
127
127
  → Pipeline: 🟡 Step 2/2
@@ -3,7 +3,7 @@
3
3
  ## Purpose
4
4
 
5
5
  Review an external Pull Request (PR) for quality, security, and direction alignment before merging.
6
- Unlike the `reviewer` agent (which reviews your own changes pre-commit with full project context), this skill is for reviewing incoming PRs from teammates or external contributors. code-review-pr is a cold review — stricter on state file compliance because the reviewer has less context about the PR author's intent.
6
+ Unlike the `reviewer` agent (which reviews your own changes pre-commit with full project context), this skill is for reviewing incoming PRs from teammates or external contributors. pr-review is a cold review — stricter on state file compliance because the reviewer has less context about the PR author's intent.
7
7
 
8
8
  ## Invoked By
9
9
 
@@ -104,15 +104,15 @@ After PR review completes, always append a 🧭 block:
104
104
 
105
105
  | PR Review Result | 🧭 Next Step |
106
106
  |---|---|
107
- | APPROVE | Merge & `deployment` — "리리즈 준비를 확인해줘" |
108
- | REQUEST_CHANGES | [Fix] — "PR 지적사항을 수정하세요. 완료 후 다시 `code-review-pr` 호출" |
107
+ | APPROVE | Merge & `release` — "리리즈 준비를 확인해줘" |
108
+ | REQUEST_CHANGES | [Fix] — "PR 지적사항을 수정하세요. 완료 후 다시 `pr-review` 호출" |
109
109
  | Direction misaligned | `pivot` — "방향을 전환하고 state 파일을 업데이트해줘" |
110
110
 
111
111
  Example 🧭 block for APPROVE:
112
112
  ```
113
113
  ---
114
114
  🧭 Next Step
115
- → Next: `deployment`
115
+ → Next: `release`
116
116
  → Prompt: "리리즈 준비를 확인해줘"
117
117
  → Why: PR approved — validate deployment readiness
118
118
  → Pipeline: 🟢/🔵 Step 5/6
@@ -48,7 +48,7 @@ Verify all state files are up to date:
48
48
 
49
49
  ### Step 4: Security Scan
50
50
 
51
- 1. Run the `security-checklist` skill
51
+ 1. Run the `secure` skill
52
52
  2. Verify no credentials, API keys, or `.env` files are staged
53
53
  3. Check for known vulnerable dependencies (if applicable)
54
54
 
@@ -96,9 +96,9 @@ After deployment validation completes, always append a 🧭 block:
96
96
  | Deployment Result | 🧭 Next Step |
97
97
  |---|---|
98
98
  | READY | [Deploy] — "배포 명령을 실행하세요" |
99
- | NOT_READY (test failure) | [Fix] — "테스트 실패를 수정해줘. 완료 후 다시 `deployment` 호출" |
100
- | NOT_READY (state files) | `learn` — "state 파일을 정리해줘" |
101
- | NOT_READY (security) | `security-checklist` — "보안 이슈를 해결해줘" |
99
+ | NOT_READY (test failure) | [Fix] — "테스트 실패를 수정해줘. 완료 후 다시 `release` 호출" |
100
+ | NOT_READY (state files) | `wrap-up` — "state 파일을 정리해줘" |
101
+ | NOT_READY (security) | `secure` — "보안 이슈를 해결해줘" |
102
102
 
103
103
  Example 🧭 block for READY:
104
104
  ```
@@ -120,15 +120,15 @@ If a deployment fails or a critical issue is found post-deploy:
120
120
  - Docker: `docker tag <image>:<previous-tag> <image>:latest && docker push`
121
121
  - GitHub: `gh release delete vX.Y.Z` + `git tag -d vX.Y.Z && git push --delete origin vX.Y.Z`
122
122
  2. **Record**: Add entry to `docs/failure-patterns.md` with deployment failure details
123
- 3. **Re-validate**: Run `deployment` skill again on the rollback commit to confirm stability
124
- 4. **Post-mortem**: Run `learn` skill to capture the incident for future sessions
123
+ 3. **Re-validate**: Run `release` skill again on the rollback commit to confirm stability
124
+ 4. **Post-mortem**: Run `wrap-up` skill to capture the incident for future sessions
125
125
 
126
126
  ## Rules
127
127
 
128
128
  - Never deploy with failing tests — no exceptions
129
129
  - Never deploy with unstaged changes in the working directory
130
- - Always verify version bump before deployment
131
- - This skill is read-only — it validates but does not execute the deployment
130
+ - Always verify version bump before release
131
+ - This skill is read-only — it validates but does not execute the release
132
132
 
133
133
  <!-- TEAM_MODE_START -->
134
134
  ## Team Mode: Pre-Deploy Coordination
@@ -104,7 +104,7 @@ Check if external planning artifacts exist:
104
104
 
105
105
  **Original crew documents are NEVER modified. Only the index and tracker are created.**
106
106
 
107
- **Crew Artifact Path Detection** (bootstrap detects all patterns, priority order):
107
+ **Crew Artifact Path Detection** (setup detects all patterns, priority order):
108
108
  1. Pattern C: User-provided paths (explicit in prompt) — highest priority, always authoritative
109
109
  2. Pattern B: `docs/crew/` (consolidated directory)
110
110
  3. Pattern A: `docs/PM/`, `docs/Analyst/`, `docs/ARB/` (kode:crew role-based directories)
@@ -153,7 +153,7 @@ Using data from Phase 1 + Phase 2, fill the following files:
153
153
 
154
154
  **docs/project-state.md**:
155
155
  - Quick Summary: filled with current project state
156
- - Sprint 1 stories: based on what bootstrap discovered
156
+ - Sprint 1 stories: based on what setup discovered
157
157
  - Module Registry: summary from docs/dependency-map.md
158
158
 
159
159
  **docs/failure-patterns.md**:
@@ -198,7 +198,7 @@ In Team mode, state files are split between shared and personal directories:
198
198
  - `.harness/agent-memory/` — agent memory files
199
199
 
200
200
  When filling state files in Phase 3, write to the correct directories based on this split.
201
- After bootstrap completes, remind the user that shared files require `git pull` before editing (Pre-Pull Protocol).
201
+ After setup completes, remind the user that shared files require `git pull` before editing (Pre-Pull Protocol).
202
202
  <!-- TEAM_MODE_END -->
203
203
 
204
204
  ## Output Format
@@ -225,13 +225,13 @@ STATUS: DONE
225
225
 
226
226
  ### 🧭 Navigation — After Bootstrap
227
227
 
228
- Bootstrap always leads to `planner`. Append this block after STATUS: DONE:
228
+ Bootstrap always leads to `pm`. Append this block after STATUS: DONE:
229
229
 
230
230
  **If NO crew artifacts** (🟢 pipeline):
231
231
  ```
232
232
  ---
233
233
  🧭 Next Step
234
- → Next: `planner` (슬래시 메뉴에서 선택하거나, 채팅에 아래 프롬프트 입력)
234
+ → Next: `pm` (슬래시 메뉴에서 선택하거나, 채팅에 아래 프롬프트 입력)
235
235
  → Prompt: "[project]에 [첫 번째 기능]을 추가해줘"
236
236
  → Why: State files are filled — now plan the first feature
237
237
  → Pipeline: 🟢 Step 2/6
@@ -243,9 +243,9 @@ Bootstrap always leads to `planner`. Append this block after STATUS: DONE:
243
243
  ```
244
244
  ---
245
245
  🧭 Next Step
246
- → Next: `planner` (슬래시 메뉴에서 선택하거나, 채팅에 아래 프롬프트 입력)
246
+ → Next: `pm` (슬래시 메뉴에서 선택하거나, 채팅에 아래 프롬프트 입력)
247
247
  → Prompt: "crew 산출물을 기반으로 첫 번째 기능을 계획해줘"
248
- → Why: Artifact Index + Validation Tracker created — planner will map FR→Stories
248
+ → Why: Artifact Index + Validation Tracker created — pm will map FR→Stories
249
249
  → Pipeline: 🟣 Step 2/6
250
250
  ---
251
251
  ```
@@ -264,22 +264,22 @@ Bootstrap always leads to `planner`. Append this block after STATUS: DONE:
264
264
 
265
265
  For projects with fewer than 3 modules (e.g., single-file scripts, small CLI tools):
266
266
  - `docs/dependency-map.md` may have only 1-2 rows — this is normal, not a gap
267
- - `feature-breakdown` Waves may collapse into a single Wave — skip Wave-level pacing
268
- - Consider a simplified workflow: `bootstrapplanner → [code] → reviewer → learn` (skip sprint-manager for single-story projects)
267
+ - `breakdown` Waves may collapse into a single Wave — skip Wave-level pacing
268
+ - Consider a simplified workflow: `setuppm → [code] → reviewer → wrap-up` (skip lead for single-story projects)
269
269
 
270
270
  ## Embedded Knowledge
271
271
 
272
272
  ### Session Bootstrap Protocol
273
- When starting a NEW session (not during bootstrap), read these files in order:
273
+ When starting a NEW session (not during setup), read these files in order:
274
274
  1. `docs/project-state.md` — Quick Summary tells you where we left off
275
275
  2. `docs/features.md` — What features exist
276
276
  3. `docs/failure-patterns.md` — What mistakes to avoid
277
277
  4. `docs/project-brief.md` — Project vision and non-goals
278
278
 
279
279
  ### Workflow Pipeline
280
- - New feature: `planner → [code] → reviewer → sprint-managerlearn`
281
- - Bug fix: `investigate → [fix] → test-integrity → reviewer → learn`
282
- - Session lifecycle: `sprint-manager ("where are we?") → [work] → learn`
280
+ - New feature: `pm → [code] → reviewer → leadwrap-up`
281
+ - Bug fix: `debug → [fix] → sync-tests → reviewer → wrap-up`
282
+ - Session lifecycle: `lead ("where are we?") → [work] → wrap-up`
283
283
 
284
284
  ### State File Size Limits
285
285
  - docs/project-brief.md: Max 200 lines
@@ -304,18 +304,18 @@ When starting a NEW session (not during bootstrap), read these files in order:
304
304
  <!-- TEAM_MODE_START -->
305
305
  ## Team Mode: Onboarding
306
306
 
307
- When running bootstrap in Team mode:
307
+ When running setup in Team mode:
308
308
 
309
309
  ### New Project (first developer)
310
310
  1. Run `musher init --team` to create shared + personal state files
311
- 2. Fill all state files via normal bootstrap procedure
311
+ 2. Fill all state files via normal setup procedure
312
312
  3. Commit shared files (docs/) to git
313
313
  4. Push to remote — teammates will clone this
314
314
 
315
315
  ### Joining Developer (existing project)
316
316
  1. Clone the repository (shared docs/ already exist)
317
317
  2. Run `musher init --team` — only personal files (.harness/) are created; shared files are skipped
318
- 3. **DO NOT re-run bootstrap interviews** — shared state is already filled by the first developer
318
+ 3. **DO NOT re-run setup interviews** — shared state is already filled by the first developer
319
319
  4. Review docs/project-brief.md to understand project goals
320
320
  5. Create your personal .harness/project-state.md with your current Story assignment
321
321
 
@@ -9,8 +9,8 @@ This is Musher's memory mechanism — without it, the same mistakes repeat acros
9
9
  ## Invoked By
10
10
 
11
11
  - **User** (direct) — "세션 마무리해줘", "오늘 배운 것 기록해줘"
12
- - **reviewer** (pass, all done) → learn — 모든 Story 완료 시
13
- - **reviewer** (STATE-AUDIT) → learn — state 파일 정리 후 세션 종료
12
+ - **reviewer** (pass, all done) → wrap-up — 모든 Story 완료 시
13
+ - **reviewer** (STATE-AUDIT) → wrap-up — state 파일 정리 후 세션 종료
14
14
  - Final step in ALL pipelines (🟢/🔵/🔴/🟡)
15
15
 
16
16
  ## When to Apply
@@ -49,8 +49,8 @@ Before recording failures, verify that the session's work stayed aligned with pr
49
49
  - Did the user explicitly change direction during this session? → Note for pivot recommendation
50
50
  3. **If drift detected**:
51
51
  - Add a warning to the Step 7 Report: `⚠️ Direction drift: [description of misalignment]`
52
- - Recommend: "Consider running `pivot` skill to formally update project direction. You can run it AFTER this learn session completes."
53
- - Do NOT block — the learn skill always completes
52
+ - Recommend: "Consider running `pivot` skill to formally update project direction. You can run it AFTER this wrap-up session completes."
53
+ - Do NOT block — the wrap-up skill always completes
54
54
  4. **If no drift**: Proceed silently (no output for this step)
55
55
 
56
56
  <!-- CREW_MODE_START -->
@@ -83,7 +83,7 @@ For each issue/error that occurred in this session:
83
83
 
84
84
  1. Read `docs/failure-patterns.md`
85
85
  2. Check if this matches an existing pattern (FP-NNN):
86
- - **If match found AND already incremented by `investigate` in this session**: Skip — do not double-count. Check `docs/project-state.md` Recent Changes for investigate entries from this session to determine if a pattern was already recorded.
86
+ - **If match found AND already incremented by `debug` in this session**: Skip — do not double-count. Check `docs/project-state.md` Recent Changes for debug entries from this session to determine if a pattern was already recorded.
87
87
  - **If match found AND NOT already incremented this session**: Increment the Frequency counter, add the Sprint/Story to "Occurred"
88
88
  - **If new pattern**: Assign next FP-NNN number, create a new entry using this format:
89
89
 
@@ -146,7 +146,7 @@ If the `reviewer` agent was run in this session and produced `[STATE-AUDIT]` fla
146
146
  State file 변경사항을 커밋합니다. Learn 실행 결과가 커밋되지 않으면 다음 세션에서 유실됩니다.
147
147
 
148
148
  1. Stage state files: `git add docs/project-state.md docs/failure-patterns.md docs/features.md docs/dependency-map.md docs/agent-memory/`
149
- 2. Commit: `git commit -m "learn: session lessons captured"`
149
+ 2. Commit: `git commit -m "wrap-up: session lessons captured"`
150
150
  3. If commit fails (nothing to commit), skip — state files were already committed
151
151
 
152
152
  > **Self-check**: `git status`에 docs/ 아래 unstaged 파일이 없어야 합니다.
@@ -169,14 +169,14 @@ Before ending the session, check for unpushed commits:
169
169
 
170
170
  ### Step 6: Update Agent Memory (if applicable)
171
171
 
172
- If an agent (reviewer, planner, sprint-manager, architect) was used in this session, update its memory file in `docs/agent-memory/`:
172
+ If an agent (reviewer, pm, lead, architect) was used in this session, update its memory file in `docs/agent-memory/`:
173
173
 
174
174
  1. Read `docs/agent-memory/{agent-name}.md`
175
175
  2. **Auto-initialize if needed**: If the file only contains `<!-- Example entries` placeholder comments and no real data:
176
176
  - Replace the placeholder block with actual entries from this session
177
177
  - Initialize statistics counters with real values
178
178
  - If real entries already exist alongside placeholders, APPEND new entries and remove only the placeholder comments. Do not overwrite existing real data.
179
- - **When does initialization happen?**: On the FIRST session where the agent is used AND learn is invoked. If an agent is never used, its memory stays as a placeholder indefinitely — this is expected.
179
+ - **When does initialization happen?**: On the FIRST session where the agent is used AND wrap-up is invoked. If an agent is never used, its memory stays as a placeholder indefinitely — this is expected.
180
180
  - Example transformation:
181
181
  ```
182
182
  Before: <!-- Example entries (replace with real findings after first review):
@@ -184,8 +184,8 @@ If an agent (reviewer, planner, sprint-manager, architect) was used in this sess
184
184
  ```
185
185
  3. **Append session learnings** to the appropriate section:
186
186
  - **reviewer.md**: Add review patterns found, update statistics (total reviews +1, auto-fixes, escalations)
187
- - **planner.md**: Record estimation accuracy (planned vs actual), note architecture discoveries
188
- - **sprint-manager.md**: Update velocity (stories done/planned), record any scope drift incidents
187
+ - **pm.md**: Record estimation accuracy (planned vs actual), note architecture discoveries
188
+ - **lead.md**: Update velocity (stories done/planned), record any scope drift incidents
189
189
  - **architect.md**: Record design decisions made, module boundary insights, anti-patterns observed
190
190
  4. Keep entries concise — one line per learning, prefixed with `[S{sprint}-{story}]`
191
191
  5. Prune entries older than 5 sprints to stay within the 100-line limit
@@ -229,7 +229,7 @@ Learn is the final skill in every pipeline. Append the appropriate 🧭 block:
229
229
  ---
230
230
  🧭 Next Step
231
231
  → 🏁 Session End
232
- → Prompt: "다음 세션 시작 시 `sprint-manager`를 호출하세요"
232
+ → Prompt: "다음 세션 시작 시 `lead`를 호출하세요"
233
233
  → Why: Session lessons captured — state files are up to date
234
234
  → Pipeline:
235
235
  🟢/🔵: Step 6/6 (complete)
@@ -240,7 +240,7 @@ Learn is the final skill in every pipeline. Append the appropriate 🧭 block:
240
240
  <!-- CREW_MODE_START -->
241
241
  If crew artifacts were used this session (🟣 pipeline), also append:
242
242
  ```
243
- → Note: 다음 세션에서 crew 산출물이 업데이트되었다면, `bootstrap`부터 다시 시작하세요
243
+ → Note: 다음 세션에서 crew 산출물이 업데이트되었다면, `setup`부터 다시 시작하세요
244
244
  ```
245
245
  <!-- CREW_MODE_END -->
246
246
 
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@kodevibe/harness",
3
- "version": "0.8.3",
3
+ "version": "0.9.0",
4
4
  "description": "kode:harness — harness engineering for keeping every developer's AI aligned on one project direction.",
5
5
  "keywords": [
6
6
  "llm",
package/src/init.js CHANGED
@@ -28,22 +28,22 @@ function writeFile(targetDir, relPath, content, overwrite) {
28
28
  // ─── Shared definitions ──────────────────────────────────────
29
29
 
30
30
  const SKILLS = [
31
- { id: 'test-integrity', desc: 'Ensure test mocks stay synchronized when interfaces change. Use when modifying repository or service interfaces.' },
32
- { id: 'security-checklist', desc: 'Security risk inspection before commits. Use when reviewing code for security issues.' },
33
- { id: 'investigate', desc: 'Investigate and diagnose issues. Use when debugging or analyzing unexpected behavior.' },
34
- { id: 'impact-analysis', desc: 'Assess change blast radius. Use when modifying shared modules or interfaces.' },
35
- { id: 'feature-breakdown', desc: 'Break down features into implementable stories. Use when planning new features.' },
36
- { id: 'bootstrap', desc: 'Onboard project into kode:harness. Scans codebase and fills state files. Use after harness init or when state files are empty.' },
37
- { id: 'learn', desc: 'Capture session lessons and update state files. Use at the end of every session.' },
31
+ { id: 'sync-tests', desc: 'Ensure test mocks stay synchronized when interfaces change. Use when modifying repository or service interfaces.' },
32
+ { id: 'secure', desc: 'Security risk inspection before commits. Use when reviewing code for security issues.' },
33
+ { id: 'debug', desc: 'Investigate and diagnose issues. Use when debugging or analyzing unexpected behavior.' },
34
+ { id: 'check-impact', desc: 'Assess change blast radius. Use when modifying shared modules or interfaces.' },
35
+ { id: 'breakdown', desc: 'Break down features into implementable stories. Use when planning new features.' },
36
+ { id: 'setup', desc: 'Onboard project into kode:harness. Scans codebase and fills state files. Use after harness init or when state files are empty.' },
37
+ { id: 'wrap-up', desc: 'Capture session lessons and update state files. Use at the end of every session.' },
38
38
  { id: 'pivot', desc: 'Propagate direction changes across all state files. Use when project goals, technology, scope, or architecture changes.' },
39
- { id: 'code-review-pr', desc: 'Review external Pull Requests for quality, security, and direction alignment. Use when reviewing incoming PRs.' },
40
- { id: 'deployment', desc: 'Pre-deployment validation checklist. Use before deploying, publishing, or creating release tags.' },
39
+ { id: 'pr-review', desc: 'Review external Pull Requests for quality, security, and direction alignment. Use when reviewing incoming PRs.' },
40
+ { id: 'release', desc: 'Pre-deployment validation checklist. Use before deploying, publishing, or creating release tags.' },
41
41
  ];
42
42
 
43
43
  const AGENTS = [
44
44
  { id: 'reviewer', file: 'agents/reviewer.md', desc: 'Code review + auto-fix. Validates quality, security, and test integrity before commits.' },
45
- { id: 'sprint-manager', file: 'agents/sprint-manager.md', desc: 'Sprint/Story state tracking, next task guidance, scope drift prevention.' },
46
- { id: 'planner', file: 'agents/planner.md', desc: 'Feature planning and dependency management. Analyze architecture, break down features.' },
45
+ { id: 'lead', file: 'agents/lead.md', desc: 'Sprint/Story state tracking, next task guidance, scope drift prevention.' },
46
+ { id: 'pm', file: 'agents/pm.md', desc: 'Feature planning and dependency management. Analyze architecture, break down features.' },
47
47
  { id: 'architect', file: 'agents/architect.md', desc: 'Design review gate. Validates structural changes against project direction and module boundaries.' },
48
48
  ];
49
49
 
@@ -57,8 +57,8 @@ const STATE_FILES = [
57
57
 
58
58
  const AGENT_MEMORY_FILES = [
59
59
  'agent-memory/reviewer.md',
60
- 'agent-memory/planner.md',
61
- 'agent-memory/sprint-manager.md',
60
+ 'agent-memory/pm.md',
61
+ 'agent-memory/lead.md',
62
62
  'agent-memory/architect.md',
63
63
  ];
64
64
 
@@ -78,12 +78,12 @@ function hasFrameworkMarker(content) {
78
78
 
79
79
  function hasIdeLayout(targetDir, ide) {
80
80
  const requiredByIde = {
81
- vscode: '.github/skills/bootstrap/SKILL.md',
82
- claude: '.claude/skills/bootstrap/SKILL.md',
83
- cursor: '.cursor/skills/bootstrap/SKILL.md',
84
- codex: '.agents/skills/bootstrap/SKILL.md',
85
- windsurf: '.windsurf/skills/bootstrap/SKILL.md',
86
- antigravity: '.gemini/skills/bootstrap/SKILL.md',
81
+ vscode: '.github/skills/setup/SKILL.md',
82
+ claude: '.claude/skills/setup/SKILL.md',
83
+ cursor: '.cursor/skills/setup/SKILL.md',
84
+ codex: '.agents/skills/setup/SKILL.md',
85
+ windsurf: '.windsurf/skills/setup/SKILL.md',
86
+ antigravity: '.gemini/skills/setup/SKILL.md',
87
87
  };
88
88
 
89
89
  const requiredPath = requiredByIde[ide];
@@ -466,7 +466,7 @@ function showPostInstallGuide(ideName, mode) {
466
466
  lines.push(
467
467
  '',
468
468
  ' 🚀 Next steps:',
469
- ' 1. Ask your AI: "Run bootstrap to onboard this project"',
469
+ ' 1. Ask your AI: "Run setup to onboard this project"',
470
470
  ' 2. AI scans your codebase and fills state files automatically',
471
471
  ' 3. Start coding: ask your AI to plan a new feature',
472
472
  '',
@@ -573,7 +573,7 @@ function runValidate(targetDir) {
573
573
 
574
574
  // Each state file has a known sentinel that only exists in unfilled templates.
575
575
  // failure-patterns.md is excluded: it intentionally keeps FP-001~004 as templates
576
- // after bootstrap (Frequency: 0 is the normal initial state, not a placeholder).
576
+ // after setup (Frequency: 0 is the normal initial state, not a placeholder).
577
577
  const templateSentinels = {
578
578
  'project-state.md': 'S1-1 | Project scaffolding',
579
579
  'dependency-map.md': 'Add new modules above this line',
@@ -599,7 +599,7 @@ function runValidate(targetDir) {
599
599
  // failure-patterns.md: no sentinel check — template state is normal
600
600
  results.push(` ✅ ${file} — ok (no failures logged yet is normal)`);
601
601
  } else if (content.includes(sentinel)) {
602
- results.push(` ⚠️ ${file} — placeholder only. Run \`bootstrap\` to fill.`);
602
+ results.push(` ⚠️ ${file} — placeholder only. Run \`setup\` to fill.`);
603
603
  warnings++;
604
604
  } else {
605
605
  results.push(` ✅ ${file} — has content`);