@kodevibe/harness 0.9.1 → 0.9.5

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/README.ko.md CHANGED
@@ -93,7 +93,7 @@ kode:harness는 세 가지 메커니즘으로 해결합니다:
93
93
  | 🧭 **Navigation Dispatcher** | 5개 파이프라인을 따라 다음 단계 프롬프트를 자동 안내 |
94
94
  | 📝 **상태 영속성** | LLM 세션 간 프로젝트 지식을 유지하는 5개 마크다운 파일 |
95
95
  | 🔄 **5개 파이프라인** | 🟢 신규 → 🔵 계속 → 🔴 버그 수정 → 🟡 방향 전환 → 🟣 Crew 기반 |
96
- | 🛠️ **10개 스킬** | 단계별 절차: setup, debug, breakdown, review, pivot 등 |
96
+ | 🛠️ **11개 스킬** | 단계별 절차: setup, debug, breakdown, review, pivot, state-check 등 |
97
97
  | 🤖 **4개 에이전트** | 역할 기반 페르소나: pm, reviewer, lead, architect |
98
98
  | ⚠️ **실패 패턴** | 세션 간 같은 실수를 방지하는 프로젝트별 실패 기록 |
99
99
  | 📋 **Decision Log** | 결정의 이유를 기록해 LLM이 확정된 사항을 재논의하지 않도록 방지 |
@@ -115,11 +115,11 @@ npx @kodevibe/harness validate # state 파일에 실제 내용 확인
115
115
  | IDE | 디스패처 (always-on) | 스킬 | 에이전트 |
116
116
  |-----|---------------------|------|----------|
117
117
  | **VS Code Copilot** | `.github/copilot-instructions.md` | `.github/skills/*/SKILL.md` | `.github/agents/*.agent.md` |
118
- | **Claude Code** | `.claude/rules/core.md` | `.claude/skills/*/SKILL.md` | `.claude/agents/*.md` |
119
- | **Cursor** | `.cursor/rules/core.mdc` | `.cursor/skills/*/SKILL.md` | `.cursor/agents/*.md` |
118
+ | **Claude Code** | `CLAUDE.md` (+ `.claude/rules/core.md`) | `.claude/skills/*/SKILL.md` | `.claude/agents/*.md` |
119
+ | **Cursor** | `.cursor/rules/core.mdc` (+ `AGENTS.md`) | `.agents/skills/*/SKILL.md` (cross-tool) | `.cursor/rules/<agent>.mdc` |
120
120
  | **Codex** | `AGENTS.md` | `.agents/skills/*/SKILL.md` | `.codex/agents/*.toml` |
121
121
  | **Windsurf** | `.windsurf/rules/core.md` | `.windsurf/skills/*/SKILL.md` | *(스킬로 설치)* |
122
- | **Antigravity** | `GEMINI.md` | `.gemini/skills/*/SKILL.md` | `.gemini/agents/*.md` |
122
+ | **Antigravity** | `AGENTS.md` | `.agents/skills/*/SKILL.md` (cross-tool) | `.agents/rules/<agent>.md` |
123
123
 
124
124
  모든 IDE에 `docs/` 디렉토리에 State 파일(`project-state.md`, `project-brief.md`, `features.md`, `failure-patterns.md`, `dependency-map.md`)도 함께 설치됩니다.
125
125
 
@@ -244,7 +244,7 @@ npx @kodevibe/harness init --team
244
244
 
245
245
  ## Iron Laws
246
246
 
247
- 8개 규칙이 모든 스킬과 에이전트에 적용됩니다. kode:harness로 관리되는 프로젝트의 품질 근간을 형성합니다.
247
+ 10개 규칙이 모든 스킬과 에이전트에 적용됩니다. kode:harness로 관리되는 프로젝트의 품질 근간을 형성합니다.
248
248
 
249
249
  | # | 규칙 | 적용 대상 |
250
250
  |---|------|----------|
@@ -292,7 +292,7 @@ Bootstrap이 `docs/crew/`, `docs/PM/`, `docs/Analyst/`, `docs/ARB/`에서 crew
292
292
  | 의존성 | Node 20+ | Bun + Node + Playwright | Node 18+ | **Zero** |
293
293
  | IDE 지원 | 20+ (installer) | 5 (setup --host) | 13 (runtime select) | 6 (네이티브 포맷) |
294
294
  | 방향 관리 | ❌ | ❌ | ❌ | ✅ (Direction Guard + pivot + Decision Log) |
295
- | Iron Laws (코드 품질 규칙) | ❌ | ❌ | ❌ | ✅ (8개 규칙이 스킬에 임베딩) |
295
+ | Iron Laws (코드 품질 규칙) | ❌ | ❌ | ❌ | ✅ (10개 규칙이 스킬에 임베딩) |
296
296
  | Cold start | ❌ | ❌ | `/gsd-new-project` | ✅ (`setup` 스킬) |
297
297
  | 태스크당 컨텍스트 | 4-6 파일 | 1 파일 | 매번 200k 플랜 | **2-3 파일 (136줄 디스패처)** |
298
298
 
@@ -300,7 +300,7 @@ Bootstrap이 `docs/crew/`, `docs/PM/`, `docs/Analyst/`, `docs/ARB/`에서 crew
300
300
 
301
301
  ## 로드맵
302
302
 
303
- kode:harness는 현재 **v0.9.0** — 네이밍 재설계 완료, 6개 IDE 지원, Navigation Dispatcher와 Crew Artifact Integration 안정화.
303
+ kode:harness는 현재 **v0.9.5** — 경량성 예산 재교정(40K/1500/2500), reviewer.md의 Iron Laws 정합성 수정, `harness/core-rules.md` ↔ `.github/copilot-instructions.md` 디스패처 동기화. v0.9.4는 6개 IDE 어댑터 공식 문서 정합(Antigravity `.agents/`, Codex `.toml`, Cursor `.cursor/rules/`).
304
304
 
305
305
  | 단계 | 버전 | 상태 | 초점 |
306
306
  |------|------|------|------|
@@ -308,7 +308,10 @@ kode:harness는 현재 **v0.9.0** — 네이밍 재설계 완료, 6개 IDE 지
308
308
  | **Hardening** | v0.6.5 | ✅ 완료 | 10 스킬, 4 에이전트, Iron Laws, CLI batch/doctor/validate, 방향 드리프트 감지 |
309
309
  | **Flexibility** | v0.7.x | ✅ 완료 | 팀 컨벤션을 project-brief.md에 위임, prescriptive 규칙 제거 |
310
310
  | **Navigation** | v0.8.x | ✅ 완료 | 🧭 Navigation Dispatcher, 5개 파이프라인, Crew Artifact Integration, 100점 품질 감사, Confirm-First 게이트, Wave-Level Pacing, Recalculating Mode |
311
- | **Naming** | v0.9.0 | ✅ 현재 | 스킬/에이전트 네이밍 재설계 — 직관성과 발견성 강화 |
311
+ | **Naming** | v0.9.0 | ✅ 완료 | 스킬/에이전트 네이밍 재설계 — 직관성과 발견성 강화 |
312
+ | **Self-Verify** | v0.9.2 | ✅ 완료 | state-check 스킬, Iron Law #10, Confirmation Gate Defaults, 멀티 IDE 수정, CI Artifact Index |
313
+ | **IDE Realignment** | v0.9.4 | ✅ 완료 | 6개 IDE 어댑터 공식 문서 정합; Antigravity `.agents/`, Codex `.toml`, Cursor `.cursor/rules/`; release 스킬 Step 6.5 + qa-check.sh §10 회귀 가드 |
314
+ | **Consistency & Budget** | v0.9.5 | ✅ 현재 | reviewer.md Iron Laws stale 수정, 디스패처 동기화, 경량성 예산 재교정(40K/1500/2500) 및 근거 기록 |
312
315
  | **Validation** | v1.0 | 🔜 다음 | 실사용 검증, 사용자 피드백 수집 |
313
316
 
314
317
  ### 다음 단계
package/README.md CHANGED
@@ -93,7 +93,7 @@ kode:harness solves this with three mechanisms:
93
93
  | 🧭 **Navigation Dispatcher** | Turn-by-Turn navigation through 5 pipelines with copy-paste next-step prompts |
94
94
  | 📝 **State Persistence** | 5 markdown files that persist project knowledge across LLM sessions |
95
95
  | 🔄 **5 Pipelines** | 🟢 New Dev → 🔵 Continue → 🔴 Bug Fix → 🟡 Direction Change → 🟣 Crew-Driven |
96
- | 🛠️ **10 Skills** | Step-by-step procedures: setup, debug, breakdown, review, pivot, and more |
96
+ | 🛠️ **11 Skills** | Step-by-step procedures: setup, debug, breakdown, review, pivot, state-check, and more |
97
97
  | 🤖 **4 Agents** | Role-based personas: pm, reviewer, lead, architect |
98
98
  | ⚠️ **Failure Patterns** | Project-specific failure log that prevents repeat mistakes across sessions |
99
99
  | 📋 **Decision Log** | Records why decisions were made so LLMs don't re-debate settled choices |
@@ -113,11 +113,11 @@ npx @kodevibe/harness validate # verify state files have real content
113
113
  | IDE | Dispatcher (always-on) | Skills | Agents |
114
114
  |-----|----------------------|--------|--------|
115
115
  | **VS Code Copilot** | `.github/copilot-instructions.md` | `.github/skills/*/SKILL.md` | `.github/agents/*.agent.md` |
116
- | **Claude Code** | `.claude/rules/core.md` | `.claude/skills/*/SKILL.md` | `.claude/agents/*.md` |
117
- | **Cursor** | `.cursor/rules/core.mdc` | `.cursor/skills/*/SKILL.md` | `.cursor/agents/*.md` |
116
+ | **Claude Code** | `CLAUDE.md` (+ `.claude/rules/core.md`) | `.claude/skills/*/SKILL.md` | `.claude/agents/*.md` |
117
+ | **Cursor** | `.cursor/rules/core.mdc` (+ `AGENTS.md`) | `.agents/skills/*/SKILL.md` (cross-tool) | `.cursor/rules/<agent>.mdc` |
118
118
  | **Codex** | `AGENTS.md` | `.agents/skills/*/SKILL.md` | `.codex/agents/*.toml` |
119
119
  | **Windsurf** | `.windsurf/rules/core.md` | `.windsurf/skills/*/SKILL.md` | *(agents installed as skills)* |
120
- | **Antigravity** | `GEMINI.md` | `.gemini/skills/*/SKILL.md` | `.gemini/agents/*.md` |
120
+ | **Antigravity** | `AGENTS.md` | `.agents/skills/*/SKILL.md` (cross-tool) | `.agents/rules/<agent>.md` |
121
121
 
122
122
  All IDEs also get state files (`project-state.md`, `project-brief.md`, `features.md`, `failure-patterns.md`, `dependency-map.md`) in the `docs/` directory.
123
123
 
@@ -218,7 +218,7 @@ npx @kodevibe/harness init --team
218
218
 
219
219
  ## Iron Laws
220
220
 
221
- These 8 rules are enforced across all skills and agents. They form the quality backbone of every kode:harness project managed with harness engineering.
221
+ These 10 rules are enforced across all skills and agents. They form the quality backbone of every kode:harness project managed with harness engineering.
222
222
 
223
223
  | # | Law | Enforced By |
224
224
  |---|-----|-------------|
@@ -268,13 +268,13 @@ Original crew documents are **never modified**. Only the index and tracker are c
268
268
  | Dependencies | Node 20+ | Bun + Node + Playwright | Node 18+ | Zero |
269
269
  | IDE support | 20+ (installer) | 5 (setup --host) | 13 (runtime select) | 6 (native format) |
270
270
  | Direction management | ❌ | ❌ | ❌ | ✅ (Direction Guard + pivot + Decision Log) |
271
- | Iron Laws (code quality rules) | ❌ | ❌ | ❌ | ✅ (8 laws embedded in skills) |
271
+ | Iron Laws (code quality rules) | ❌ | ❌ | ❌ | ✅ (10 laws embedded in skills) |
272
272
  | Cold start | ❌ | ❌ | `/gsd-new-project` | ✅ (`setup` skill) |
273
273
  | Context per task | 4-6 files | 1 file | Fresh 200k per plan | 2-3 files (136-line dispatcher) |
274
274
 
275
275
  ## Roadmap
276
276
 
277
- kode:harness is at **v0.9.0** — naming redesign complete, 6 IDE support, Navigation Dispatcher and Crew Artifact Integration stable.
277
+ kode:harness is at **v0.9.5** — lightness budget recalibrated (40K/1500/2500), Iron Laws consistency fix in reviewer.md, dispatcher synchronization between `harness/core-rules.md` and `.github/copilot-instructions.md`. v0.9.4 brought all 6 IDE adapters into alignment with official documentation (Antigravity `.agents/`, Codex `.toml`, Cursor `.cursor/rules/`).
278
278
 
279
279
  | Phase | Version | Status | Focus |
280
280
  |---|---|---|---|
@@ -282,7 +282,10 @@ kode:harness is at **v0.9.0** — naming redesign complete, 6 IDE support, Navig
282
282
  | **Hardening** | v0.6.5 | ✅ Done | 10 skills, 4 agents, Iron Laws, CLI batch/doctor/validate, merge conflict SOP, direction drift detection |
283
283
  | **Flexibility** | v0.7.x | ✅ Done | Delegate team conventions to project-brief.md, remove prescriptive rules |
284
284
  | **Navigation** | v0.8.x | ✅ Done | 🧭 Navigation Dispatcher, 5 Pipelines, Crew Artifact Integration, 100-point quality audit, Confirm-First gate, Wave-Level Pacing, Recalculating Mode |
285
- | **Naming** | v0.9.0 | ✅ Current | Skill/agent naming redesign for clarity and discoverability |
285
+ | **Naming** | v0.9.0 | ✅ Done | Skill/agent naming redesign for clarity and discoverability |
286
+ | **Self-Verify** | v0.9.2 | ✅ Done | state-check skill, Iron Law #10, Confirmation Gate Defaults, multi-IDE fix, CI Artifact Index |
287
+ | **IDE Realignment** | v0.9.4 | ✅ Done | All 6 IDE adapters aligned with official docs; Antigravity `.agents/`, Codex `.toml`, Cursor `.cursor/rules/`; release skill Step 6.5 + qa-check.sh §10 regression guards |
288
+ | **Consistency & Budget** | v0.9.5 | ✅ Current | Iron Laws stale-copy fix (reviewer.md), dispatcher sync (core-rules.md ↔ copilot-instructions.md), lightness budgets recalibrated (40K/1500/2500) with rationale |
286
289
  | **Validation** | v1.0 | 🔜 Next | Real-world project adoption, user feedback collection |
287
290
 
288
291
  ### What's Next
@@ -61,8 +61,6 @@ Read `docs/agent-memory/pm.md` for past learnings:
61
61
 
62
62
  Apply these insights when creating the implementation plan. If the memory file is empty or contains only placeholders, skip this step.
63
63
 
64
- > **Team Mode**: In Team mode, agent memory is personal (`.harness/agent-memory/`). Each developer accumulates their own planning insights.
65
-
66
64
  ### Step 0.7: Feature Roadmap Planning (Draft & Correct)
67
65
 
68
66
  **Trigger**: `docs/project-brief.md`에 `## Feature Roadmap` 섹션이 없을 때
@@ -87,12 +85,9 @@ Apply these insights when creating the implementation plan. If the memory file i
87
85
  - [ ] F-004: ...
88
86
  ```
89
87
  3. 사용자에게 초안을 제시한다: **"이 Feature Roadmap을 검토하고, 추가/삭제/순서 변경을 알려주세요."**
90
- > **물어보지 말고, 초안을 만들어서 교정받는다.** 빈 칸을 채우는 것보다 틀린 것을 고치는 것이 쉽다.
91
88
  4. 사용자 교정을 반영한 최종 Roadmap을 `docs/project-brief.md`에 `## Feature Roadmap` 섹션으로 기록한다
92
89
  5. Feature Roadmap이 확정되면 아래 "For New Feature" 절차로 진행한다
93
90
 
94
- > **pivot 이후**: pivot이 `project-brief.md`를 업데이트하면, pm은 변경된 Roadmap을 읽고 Checkpoint에서 반영한다.
95
-
96
91
  ### For New Feature
97
92
 
98
93
  1. Read `docs/project-brief.md` to understand project vision, goals, **non-goals**, and **Decision Log**
@@ -133,12 +128,11 @@ Apply these insights when creating the implementation plan. If the memory file i
133
128
  If no Crew Artifact Index → proceed with normal user-driven planning below.
134
129
  <!-- CREW_MODE_END -->
135
130
 
136
- 3. **Direction Alignment**: Verify the requested feature against three checkpoints.
137
- > This check intentionally duplicates architect’s direction validation (Step 2). The redundancy is by design: architect validates STRUCTURAL proposals (module boundaries, layer rules), while pm validates FEATURE-level alignment (goals, non-goals, decisions). When both are used in the same session, this provides defense-in-depth.
138
- - **Goal Alignment**: Does it serve a listed Goal? If no clear link → **warn but proceed**. Include the warning in the plan output under a `### Direction Alignment` section: `⚠️ Goal Alignment: [feature] does not directly map to listed goals`.
139
- - **Non-Goal Violation**: Does it fall into Non-Goals? If yes → **stop and ask the user**. Do not proceed until the user confirms this is intentional (may need `pivot` skill).
140
- - **Decision Consistency**: Does it contradict any Decision Log entry? If yes → **stop and warn**. Recommend running the `pivot` skill before proceeding.
141
- If the request represents a clear direction change → **stop and require the `pivot` skill** before proceeding with any planning. Do not proceed even if the user insists — direction changes must be formally tracked.
131
+ 3. **Direction Alignment**: Verify against three checkpoints (architect validates STRUCTURE; pm validates FEATURE-level alignment):
132
+ - **Goal Alignment**: Serves a listed Goal? If no clear link **warn but proceed**. Add `⚠️ Goal Alignment: [feature] does not directly map to listed goals` under `### Direction Alignment` in the plan output.
133
+ - **Non-Goal Violation**: Falls into Non-Goals? → **stop and ask the user**. May need `pivot`.
134
+ - **Decision Consistency**: Contradicts a Decision Log entry? → **stop and warn**. Recommend `pivot`.
135
+ If the request represents a clear direction change → **stop and require `pivot`** before planning. Do not proceed even if the user insists.
142
136
  3. Read `docs/features.md` to understand what already exists
143
137
  4. Read `docs/dependency-map.md` to understand current architecture
144
138
  5. Read `docs/project-state.md` for current Sprint context
@@ -153,7 +147,7 @@ Apply these insights when creating the implementation plan. If the memory file i
153
147
  13. **After user approves** → Update `docs/project-state.md` with the new Story
154
148
  14. **After user approves** → Update `docs/features.md` with the new feature entry
155
149
 
156
- > **State File Write Deferral**: Steps 13-14 execute ONLY after user confirms the plan. If the user rejects or requests changes, no state files are modified — the plan is revised and re-presented. This prevents state file pollution from rejected plans.
150
+ State file writes (Steps 13-14) execute ONLY after user approval. Rejected plans never touch state.
157
151
 
158
152
  ### For Architecture Query
159
153
 
@@ -187,8 +181,6 @@ After producing ANY plan (New Feature, Refactor, or Crew-Driven), **do NOT proce
187
181
  4. **Only after approval** → execute **MANDATORY State File Write** (below), then output 🧭 Next Step pointing to `lead`
188
182
  5. If the user requests changes → revise the plan and re-confirm. **No state files are written until approval.**
189
183
 
190
- > **Why**: The pm is planning a route, not driving. The user must confirm the route before the engine starts. This prevents irreversible code changes based on a misunderstood plan.
191
-
192
184
  ### ⚠️ MANDATORY: Post-Approval State File Write
193
185
 
194
186
  **This section executes IMMEDIATELY after user approval. Do NOT skip. Do NOT output the 🧭 Next Step block until ALL writes below are complete.**
@@ -226,6 +218,14 @@ After user approves the plan, perform these writes in order:
226
218
 
227
219
  If any write fails, report the failure and retry. Do NOT proceed to 🧭 with incomplete state files.
228
220
 
221
+ ### ✅ MANDATORY: Self-Verify with state-check (Iron Law #10)
222
+
223
+ After the Post-Approval state writes complete, run the `state-check` skill:
224
+ 1. Invoke `state-check` skill — deterministic verification of state file consistency
225
+ 2. If state-check returns **PASS** → proceed to output 🧭 Next Step
226
+ 3. If state-check returns **WARN** → include the warnings in the plan output, then proceed
227
+ 4. If state-check returns **FAIL** → do NOT output STATUS: DONE. Fix the listed drift, then re-run state-check.
228
+
229
229
  ## Output Format
230
230
 
231
231
  ### New Feature Plan
@@ -281,9 +281,8 @@ Use this format when Crew Artifact Index exists in project-brief.md. If no Artif
281
281
 
282
282
  ## Sprint Completion Checkpoint
283
283
 
284
- **Trigger**: 현재 Sprint의 모든 Story가 ✅ 완료되었을 때 (reviewer pass → pm checkpoint)
285
-
286
- 이 절차는 Sprint 종료 시 자동으로 실행된다. "계속할까요?"가 아니라 **구체적 선택을 강제**한다.
284
+ **Trigger**: 현재 Sprint의 모든 Story가 ✅ 완료되었을 때 (reviewer pass → pm checkpoint).
285
+ Sprint 종료 시 자동 실행 — **구체적 선택을 강제**한다 ("계속할까요?" 가 아님).
287
286
 
288
287
  ### 절차
289
288
 
@@ -314,7 +313,7 @@ Use this format when Crew Artifact Index exists in project-brief.md. If no Artif
314
313
 
315
314
  🏁 마무리: 현재 상태로 프로젝트를 완료하고 wrap-up 진행
316
315
  ```
317
- > **"계속"은 선택지에 없다.** 사용자는 구체적 기능을 골라야 하거나, 명시적으로 "마무리"를 선택해야 한다.
316
+ **"계속"은 선택지에 없다** 사용자는 구체적 기능 또는 "마무리"를 명시적으로 선택해야 한다.
318
317
 
319
318
  4. **사용자 선택에 따라 분기**:
320
319
  - **기능 선택** → 선택된 기능으로 Sprint 계획 (위의 "For New Feature" 절차 진행)
@@ -65,6 +65,30 @@ Changed file list (user-provided or from `git diff --name-only`)
65
65
  - [ ] Constructor parameters match actual source (FP-002)
66
66
  - [ ] **Common First (Iron Law #9)**: No crew-specific logic outside crew marker blocks. All features must work without crew artifacts.
67
67
 
68
+ <!-- CREW_MODE_START -->
69
+ **Step 2.5: CI Standards Compliance (🟣 Pipeline only)**
70
+
71
+ **Trigger**: Changed files include any build/CI artifacts:
72
+ - `Dockerfile`, `.dockerignore`
73
+ - `.github/workflows/*.yml`, `.gitlab-ci.yml`, `Jenkinsfile`
74
+ - `pom.xml`, `build.gradle`, `gradle.properties`
75
+ - `package.json` (scripts changes), `yarn.lock`, `package-lock.json`
76
+ - `pyproject.toml`, `requirements.txt`, `Pipfile`, `poetry.lock`
77
+ - `go.mod`, `go.sum`
78
+
79
+ **Procedure**:
80
+ 1. Check if `docs/project-brief.md` has a `## CI Artifact Index` section (or `.harness/ci-index.md` exists). If neither → skip this step.
81
+ 2. Read the project's primary language/build tool from `docs/project-brief.md` Key Technical Decisions.
82
+ 3. Match the language/build tool to a row in the CI Artifact Index → get the reference URL and Key Constraints.
83
+ 4. Surface the reference in review output under a `### CI Standards Compliance` section:
84
+ - Reference URL (the indexed guide)
85
+ - Key Constraints listed in the index (echoed back so the user does not need to re-read the guide)
86
+ - `[CI-STANDARD]` flag if any obvious mismatch is detected against a listed constraint (best-effort LLM judgment based only on the changed files)
87
+ 5. **Warning only — do NOT block commit**. The user (or a human reviewer) decides whether the changes meet company standards. The reviewer agent never asserts compliance; it only points to the authoritative guide.
88
+
89
+ If neither `## CI Artifact Index` nor `.harness/ci-index.md` is present → skip this step entirely (also true for 🟢/🔵/🔴 pipelines).
90
+ <!-- CREW_MODE_END -->
91
+
68
92
  **Step 3: Test Integrity (sync-tests skill)**
69
93
  - [ ] Interface changes have synchronized mocks (FP-001)
70
94
  - [ ] New features have tests
@@ -125,7 +149,11 @@ If no Crew Artifact Index → skip this step entirely.
125
149
 
126
150
  **Step 8: State File Audit**
127
151
 
128
- Verify that state file updates actually happened. Check each:
152
+ Verify that state file updates actually happened. **Run the `state-check` skill first** (Iron Law #10) for deterministic cross-checks, then perform the human-judgment items below that state-check cannot mechanically verify.
153
+
154
+ > `state-check` covers: file existence, Story↔Feature consistency, dependency-map↔src/ drift, and agent-memory legacy names. The items below complement it with semantic checks the skill cannot perform.
155
+
156
+ After running state-check, also verify:
129
157
  - [ ] **docs/project-state.md**: If stories were worked on, is Quick Summary current? Are story statuses updated?
130
158
  - [ ] **docs/features.md**: If new features were added, are they registered? If features were completed, is status updated?
131
159
  - [ ] **Cross-check features ↔ stories**: If a feature status is `✅ done` in features.md, verify all related stories in project-state.md are also `done`. If stories are `done` but their feature is still `🔄 in-progress`, flag as `[STATE-AUDIT]`.
@@ -180,23 +208,16 @@ If review is BLOCKED → do NOT suggest commit. Fix first.
180
208
  - Test integrity: ✅ / ⚠️ (detail)
181
209
  - Security check: ✅ / ❌ (detail)
182
210
  - Failure pattern check: ✅ / ⚠️ (FP-NNN)
211
+ <!-- CREW_MODE_START -->
212
+ - CI standards (🟣): ✅ / ⚠️ [CI-STANDARD] (detail) — included only when CI Artifact Index exists
213
+ <!-- CREW_MODE_END -->
183
214
 
184
215
  STATUS: DONE / DONE_WITH_CONCERNS / BLOCKED
185
216
  ```
186
217
 
187
218
  ## Embedded Rules
188
219
 
189
- These rules are enforced during every review:
190
-
191
- ### Iron Laws
192
- 1. **Mock Sync**: Interface change → mock updated in same commit (FP-001)
193
- 2. **Type Check**: Verify constructor/factory parameters from source, not memory (FP-002)
194
- 3. **Scope Compliance**: Changes must be within current Story scope (docs/project-state.md)
195
- 4. **Security**: No credentials, passwords, or API keys in code or commits
196
- 5. **3-Failure Stop**: Same approach failed 3 times → stop and report
197
- 6. **Dependency Map**: New/modified module → docs/dependency-map.md updated
198
- 7. **Feature Registry**: New feature → docs/features.md updated
199
- 8. **Session Handoff**: Session end → docs/project-state.md Quick Summary updated
220
+ These rules are enforced during every review. The full Iron Laws (10) are defined in `harness/core-rules.md` — reviewer enforces all of them. Below are review-specific rules that supplement the Iron Laws.
200
221
 
201
222
  ### Testing Rules
202
223
  - New feature = New test. No feature code without tests.
@@ -1,6 +1,6 @@
1
- # Musher
1
+ # kode:harness
2
2
 
3
- This project uses Musher for structured AI-assisted development.
3
+ This project uses kode:harness for structured AI-assisted development.
4
4
  Skills and agents work together through shared state files.
5
5
  **Every response must end with a 🧭 Next Step block** — guide the user to the next action.
6
6
 
@@ -54,6 +54,7 @@ When external planning artifacts exist (requirements, analysis, design documents
54
54
 
55
55
  > Crew artifacts are detected by: `docs/crew/` directory, `docs/PM/`+`docs/Analyst/`+`docs/ARB/` directories, or user explicitly provides requirements/design documents (e.g., mentions "PRD", "산출물", "설계서", or provides file paths to planning artifacts).
56
56
  > **Reference, don't summarize**: setup creates a Crew Artifact Index (path table) in project-brief.md — each skill reads the original artifact directly via the indexed path.
57
+ > Crew mode also enables the **CI Artifact Index** reference layer: if `docs/project-brief.md` contains `## CI Artifact Index`, reviewer Step 2.5 and release Step 3.5 surface the indexed company CI/CD guide when build/CI files change. The guide content stays external; only the path and key constraints are indexed.
57
58
  > This pipeline produces the same state files as 🟢 — the difference is the INPUT source and the addition of Validation Tracker for traceability.
58
59
  <!-- CREW_MODE_END -->
59
60
 
@@ -134,3 +135,16 @@ These laws are enforced across all skills and agents. Violations should be flagg
134
135
  7. **Feature Registry**: When adding a feature, register it in features.md in the same commit.
135
136
  8. **Session Handoff**: At session end, update project-state.md Quick Summary so the next session has context.
136
137
  9. **Common First**: All features must work at Common level (🟢🔵🔴) without crew dependency. Crew-specific logic must be inside crew marker blocks only. Never add crew-only code to Common paths.
138
+ 10. **Self-Verify**: Every agent MUST run the `state-check` skill before reporting STATUS: DONE. If state-check returns FAIL, the agent must NOT report DONE — fix the listed drift first. WARN may proceed but warnings must be included in the agent's output.
139
+
140
+ ## Confirmation Gate Defaults
141
+
142
+ When the user does not respond to a confirmation prompt within the conversation, agents must apply the SAFE default — never assume implicit approval. The SAFE default for each gate:
143
+
144
+ | Gate | Owner | SAFE default (no response) | Rationale |
145
+ |------|-------|---------------------------|-----------|
146
+ | Plan Confirmation | `pm` | Do NOT write `features.md` / `project-state.md` / `dependency-map.md`. Hold the plan and re-prompt. | Prevents state file pollution from rejected plans. |
147
+ | Scope Check | `lead` | NO — block edits outside the current Story scope. | Iron Law #3 (Scope Compliance) cannot be silently bypassed. |
148
+ | Commit Approval | `reviewer` | Hold the commit. Output the proposed commit command but do NOT execute it. | Code commits are hard to reverse without `git reset` — user must explicitly approve. |
149
+
150
+ Any agent that wants to proceed past one of these gates without explicit approval is in violation of Iron Law #10 and must STOP.
@@ -1,6 +1,6 @@
1
1
  # Project Brief
2
2
 
3
- > **Fill this out immediately after running `musher init`.** The Planner agent uses this file for Direction Guard — without it, scope drift cannot be prevented.
3
+ > **Fill this out immediately after running `@kodevibe/harness init`.** The Planner agent uses this file for Direction Guard — without it, scope drift cannot be prevented.
4
4
 
5
5
  ## Vision
6
6
 
@@ -106,6 +106,28 @@
106
106
  Status legend: ⬜ Not started, 🟡 In progress, ✅ Done
107
107
  Update flow: setup creates → pm fills Story column → wrap-up updates Status
108
108
  -->
109
+
110
+ ## CI Artifact Index
111
+
112
+ <!-- 🟣 Pipeline only — references to company CI/CD standard guides.
113
+ reviewer Step 2.5 and release Step 3.5 read this index to surface the relevant guide
114
+ when build/CI files change or before deploy.
115
+
116
+ Reference Layer pattern: the original guide lives outside this repo (Confluence,
117
+ internal wiki, etc.). This index stores ONLY the path/URL and the key constraints
118
+ so that AI agents do not need to re-read the guide every time. The actual guide
119
+ content is never copied into this repository.
120
+
121
+ | Language | Build Tool | Reference URL | Key Constraints |
122
+ |----------|-----------|---------------|-----------------|
123
+ | _(예: Java)_ | _(예: Maven)_ | _(URL placeholder — fill with the company guide URL)_ | _(예: 표준 base image 사용, ACR 캐시 사용, 보안 스캔 단계 포함)_ |
124
+
125
+ Tips for filling this table:
126
+ - 1행만 채워도 충분 — 프로젝트의 주 언어/빌드도구만 기재
127
+ - 다중 서비스 (모놀리식 X, 멀티 모듈 O)인 경우 서비스/모듈별로 한 행씩
128
+ - Key Constraints는 LLM이 변경된 파일 대비 자동 점검할 수 있도록 짧고 검증 가능한 형태로 작성 (e.g., "base image: company-base:latest", "cache: 회사 ACR 미러 사용")
129
+ - Reference URL은 회사 내부 가이드 위치 (Confluence, wiki 등). OSS 코드베이스에는 절대 회사 URL을 커밋하지 않음 — 이 파일은 사용자 로컬 또는 사내 저장소에서만 채움.
130
+ -->
109
131
  <!-- CREW_MODE_END -->
110
132
 
111
133
  ## Key Technical Decisions
@@ -44,6 +44,24 @@ Verify all state files are up to date:
44
44
  - [ ] **Validation Tracker FR Coverage**: All Functional Requirements (FR) have at least one mapped Story (`docs/project-brief.md` → Validation Tracker)
45
45
  - [ ] **Validation Tracker ARB Fail Resolution**: All ARB Fail items resolved (✅) or explicitly deferred with rationale
46
46
  - [ ] **KPI Coverage**: All KPIs addressed or deferred with documented reason
47
+ - [ ] **CI Standards (🟣)**: If `docs/project-brief.md` has `## CI Artifact Index`, deploy artifacts (Dockerfile, CI workflow, build config) match the indexed guide's Key Constraints (see Step 3.5)
48
+ <!-- CREW_MODE_END -->
49
+
50
+ <!-- CREW_MODE_START -->
51
+ ### Step 3.5: CI Standards Compliance (🟣 Pipeline only)
52
+
53
+ If `docs/project-brief.md` has a `## CI Artifact Index` section:
54
+
55
+ 1. Read the indexed reference URL and Key Constraints for the project's primary language/build tool.
56
+ 2. Verify the deployed configuration matches each Key Constraint listed in the index:
57
+ - Base image (e.g., must use the standard company base image)
58
+ - Build cache strategy (e.g., must use the company-approved cache mirror)
59
+ - Required CI stages (e.g., security scan, signing)
60
+ - Any other constraint listed in the index row
61
+ 3. If **any** constraint is unmet → mark **NOT_READY** and list the unmet constraints in the verdict.
62
+ 4. If `## CI Artifact Index` does not exist (or is empty) → skip this step entirely.
63
+
64
+ This step references the indexed company guide; it does not embed the guide content itself. The reviewer agent (Step 2.5) catches CI standard issues earlier in the cycle; this step is the final gate before deploy.
47
65
  <!-- CREW_MODE_END -->
48
66
 
49
67
  ### Step 4: Security Scan
@@ -65,6 +83,25 @@ Verify all state files are up to date:
65
83
  2. If yes → verify they include entries for all changes since last release
66
84
  3. If no → generate a summary from `git log --oneline <last-tag>..HEAD`
67
85
 
86
+ ### Step 6.5: IDE Adapter 공식 문서 정합성 (IDE-targeting 프로젝트만)
87
+
88
+ If the project ships IDE-specific adapters or generators (e.g., `src/init.js` with multiple `generate<IDE>` functions, OR distributes templates installed under IDE-specific directories like `.cursor/`, `.codex/`, `.windsurf/`, `.agents/`):
89
+
90
+ 1. **List all IDEs supported** by the project (read source — do not guess).
91
+ 2. For **each IDE**, fetch the **official current documentation** for that IDE's agent/rules/skills layout. Do not rely on training data.
92
+ 3. **Diff** the project's generated paths/file formats against the official docs:
93
+ - File extensions (e.g., Codex requires `.toml`, not `.md`)
94
+ - Directory locations (e.g., Antigravity uses `.agents/`, not `.gemini/`)
95
+ - Frontmatter schema (required fields per IDE)
96
+ - Cross-tool standards (e.g., `AGENTS.md`, `.agents/skills/`)
97
+ 4. If **any drift** is detected → mark **NOT_READY**. Block the release until adapters match official docs.
98
+ 5. Verify regression tests assert the **absence** of stale paths (e.g., `assert(!exists('.gemini/'))` if the IDE moved off Gemini).
99
+ 6. Cite the official doc URL inline in the generator code as a comment (source-of-truth pointer).
100
+
101
+ **Rationale**: IDE vendors change their layouts (e.g., Cursor's skills location, Antigravity's `.gemini/` → `.agents/` migration). Without this gate, every IDE update silently breaks `harness init` for that IDE's users.
102
+
103
+ If the project does not ship IDE adapters → skip this step entirely.
104
+
68
105
  ## Output Format
69
106
 
70
107
  ```
@@ -77,6 +114,9 @@ Verify all state files are up to date:
77
114
  - [x/✗] Security scan clean
78
115
  - [x/✗] Git status clean
79
116
  - [x/✗] Release notes prepared
117
+ <!-- CREW_MODE_START -->
118
+ - [x/✗/–] CI standards (🟣): [verdict] — `–` if no CI Artifact Index
119
+ <!-- CREW_MODE_END -->
80
120
 
81
121
  ### Verdict: READY / NOT_READY
82
122
  [blockers if not ready]
@@ -2,13 +2,13 @@
2
2
 
3
3
  ## Purpose
4
4
 
5
- Onboard a new or existing project into Musher by filling **state files AND rules files** automatically.
5
+ Onboard a new or existing project into kode:harness by filling **state files AND rules files** automatically.
6
6
  Solves the cold-start problem: users don't know which `.md` files to fill or how.
7
7
  One command does everything — no manual editing required.
8
8
 
9
9
  ## When to Apply
10
10
 
11
- - Right after running `musher init` on a new project
11
+ - Right after running `@kodevibe/harness init` on a new project
12
12
  - When joining an existing project that has empty state files
13
13
  - When state files are outdated and need a refresh
14
14
  - When any agent reports "state files are empty"
@@ -49,6 +49,16 @@ One command does everything — no manual editing required.
49
49
 
50
50
  4. **Scan for existing tests**: Find test files and map them to source modules
51
51
  5. **Scan imports/dependencies**: Trace module relationships from import statements
52
+ 6. **Detect legacy agent-memory files** (v0.9 migration):
53
+ - Look in `docs/agent-memory/` and `.harness/agent-memory/` for these legacy names from earlier framework versions:
54
+ - `planner.md` → should be renamed to `pm.md`
55
+ - `sprint-manager.md` → should be renamed to `lead.md`
56
+ - `navigator.md` → should be renamed to `lead.md`
57
+ - `builder.md` → should be renamed to `pm.md`
58
+ - For each legacy file found:
59
+ - If the new name does NOT exist → offer to rename: `mv {legacy}.md {new}.md` (preserves history)
60
+ - If BOTH exist → ask the user which to keep, or merge contents into the new name and delete the legacy
61
+ - Confirm with the user before renaming. Record the migration in `docs/project-state.md` Recent Changes.
52
62
 
53
63
  **Do NOT modify any code files in this phase.**
54
64
 
@@ -137,6 +147,7 @@ Using data from Phase 1 + Phase 2, fill the following files:
137
147
  <!-- CREW_MODE_START -->
138
148
  - Crew Artifact Index → from Phase 1.5 (🟣 pipeline only — leave as template comment for 🟢 pipeline)
139
149
  - Validation Tracker → from Phase 1.5 (🟣 pipeline only — leave as template comment for 🟢 pipeline)
150
+ - CI Artifact Index → 🟣 pipeline only. After filling crew fields, ask the user: "회사 CI/CD 표준 가이드(Dockerfile/CI 파이프라인 규약)가 있다면 한 줄로 인덱싱하시겠습니까? (URL과 Key Constraints만 기록 — 가이드 본문은 외부에 둠)". If yes, fill one row in the CI Artifact Index table with their primary language/build tool, the guide URL, and 2-3 short Key Constraints. If no or skip → leave template comment as-is. Never commit company-specific URLs to the OSS template — this row is meant to be filled in the user's local/private project-brief.md only.
140
151
  <!-- CREW_MODE_END -->
141
152
  - Key Technical Decisions → from Phase 1 scan + user answer #4, #5
142
153
 
@@ -267,28 +278,6 @@ For projects with fewer than 3 modules (e.g., single-file scripts, small CLI too
267
278
  - `breakdown` Waves may collapse into a single Wave — skip Wave-level pacing
268
279
  - Consider a simplified workflow: `setup → pm → [code] → reviewer → wrap-up` (skip lead for single-story projects)
269
280
 
270
- ## Embedded Knowledge
271
-
272
- ### Session Bootstrap Protocol
273
- When starting a NEW session (not during setup), read these files in order:
274
- 1. `docs/project-state.md` — Quick Summary tells you where we left off
275
- 2. `docs/features.md` — What features exist
276
- 3. `docs/failure-patterns.md` — What mistakes to avoid
277
- 4. `docs/project-brief.md` — Project vision and non-goals
278
-
279
- ### Workflow Pipeline
280
- - New feature: `pm → [code] → reviewer → lead → wrap-up`
281
- - Bug fix: `debug → [fix] → sync-tests → reviewer → wrap-up`
282
- - Session lifecycle: `lead ("where are we?") → [work] → wrap-up`
283
-
284
- ### State File Size Limits
285
- - docs/project-brief.md: Max 200 lines
286
- - docs/project-state.md: Max 300 lines
287
- - docs/failure-patterns.md: Max 50 patterns
288
- - docs/dependency-map.md: Max 100 modules
289
- - docs/features.md: Max 50 features
290
- - docs/agent-memory/*.md: Max 100 lines each
291
-
292
281
  ## Anti-patterns
293
282
 
294
283
  | Anti-pattern | Correct Approach |
@@ -307,14 +296,14 @@ When starting a NEW session (not during setup), read these files in order:
307
296
  When running setup in Team mode:
308
297
 
309
298
  ### New Project (first developer)
310
- 1. Run `musher init --team` to create shared + personal state files
299
+ 1. Run `@kodevibe/harness init --team` to create shared + personal state files
311
300
  2. Fill all state files via normal setup procedure
312
301
  3. Commit shared files (docs/) to git
313
302
  4. Push to remote — teammates will clone this
314
303
 
315
304
  ### Joining Developer (existing project)
316
305
  1. Clone the repository (shared docs/ already exist)
317
- 2. Run `musher init --team` — only personal files (.harness/) are created; shared files are skipped
306
+ 2. Run `@kodevibe/harness init --team` — only personal files (.harness/) are created; shared files are skipped
318
307
  3. **DO NOT re-run setup interviews** — shared state is already filled by the first developer
319
308
  4. Review docs/project-brief.md to understand project goals
320
309
  5. Create your personal .harness/project-state.md with your current Story assignment
@@ -0,0 +1,189 @@
1
+ # State Check
2
+
3
+ ## Purpose
4
+
5
+ Deterministic verification that state files are internally consistent and not silently drifting.
6
+ This skill exists because LLM self-checks miss state drift — every Iron Law #10 self-verify pass should run this skill before reporting STATUS: DONE.
7
+
8
+ ## Invoked By
9
+
10
+ - **pm** agent — Post-Approval step (after writing features.md / project-state.md / dependency-map.md)
11
+ - **reviewer** agent — Step 8 (State File Audit) — supplements existing STATE-AUDIT logic
12
+ - **wrap-up** skill — Step 5.5 (after dependency-map verify)
13
+ - **User** (direct) — "state 파일 일관성 점검해줘"
14
+
15
+ ## When to Apply
16
+
17
+ - After ANY agent writes to state files (mandatory before STATUS: DONE)
18
+ - Before committing changes that touch `docs/` or `.harness/`
19
+ - When the user reports state files "feel out of sync"
20
+ - Periodically — even when nothing recently changed (drift accumulates silently)
21
+
22
+ ## Procedure
23
+
24
+ > **Philosophy**: Use deterministic cross-checks, not LLM intuition. Each check has a single PASS/WARN/FAIL outcome that does not depend on judgment. The LLM performs the file reads and comparisons listed below — no shell scripts, no external dependencies.
25
+
26
+ ### Check 1: Required State Files Exist with Non-Placeholder Content
27
+
28
+ For each required state file, verify it exists and is not just a template stub:
29
+
30
+ | File | Placeholder Sentinel (FAIL if present) |
31
+ |------|----------------------------------------|
32
+ | `docs/project-state.md` (or `.harness/`) | `S1-1 \| Project scaffolding` |
33
+ | `docs/project-brief.md` | `This is the north star for all decisions` |
34
+ | `docs/dependency-map.md` | `Add new modules above this line` |
35
+ | `docs/features.md` | `Add new features above this line` |
36
+
37
+ For each file:
38
+ - **Missing** → FAIL: `[FAIL] {file} not found`
39
+ - **Sentinel present** → WARN: `[WARN] {file} contains template placeholder — run setup`
40
+ - **Real content** → PASS
41
+
42
+ > `failure-patterns.md` is excluded — FP-001~004 templates with Frequency: 0 are normal initial state.
43
+
44
+ ### Check 2: features.md ↔ project-state.md Story Consistency
45
+
46
+ 1. Read all `✅ done` Stories from `docs/project-state.md` (or `.harness/project-state.md` in Team mode) Story Status table
47
+ 2. Read `docs/features.md` Feature Registry
48
+ 3. For each `✅ done` Story:
49
+ - If Story has `[FR-NNN]` prefix → must map to a feature row with that FR reference
50
+ - Otherwise → must map to at least one feature row whose Key Files overlap with the Story's Scope
51
+ 4. Outcomes:
52
+ - Story ✅ done but no matching feature row → FAIL: `[FAIL] Story {S-N-M} done but no feature registered`
53
+ - Story ✅ done but feature still `⬜ planned` → FAIL: `[FAIL] Feature status drift — {feature} is planned but Story {S-N-M} is done`
54
+ - All consistent → PASS
55
+
56
+ ### Check 3: dependency-map.md vs Actual src/ Directory Count
57
+
58
+ > **Goal**: detect orphan modules (in src/ but not registered) and stale entries (registered but deleted).
59
+
60
+ 1. Read `docs/dependency-map.md` and count rows in the Module table (excluding header / comment lines like `Add new modules above this line`)
61
+ 2. Inspect the source root (priority order — first existing path wins):
62
+ - `src/`
63
+ - `lib/`
64
+ - `app/`
65
+ - Project root (if no src-like directory)
66
+ 3. Count direct child directories of the source root that look like modules (skip `__pycache__/`, `node_modules/`, `dist/`, `build/`, `.next/`, hidden dirs)
67
+ 4. Compare:
68
+ - `|map_count - dir_count| / max(map_count, dir_count) <= 0.20` → PASS
69
+ - Difference > 20% → WARN: `[WARN] dependency-map has {map_count} modules but src/ has {dir_count} directories — likely drift`
70
+ - One side is 0 and the other > 0 → FAIL: `[FAIL] dependency-map empty but {dir_count} src directories exist (or vice versa)`
71
+
72
+ > For tiny projects (<3 modules), this check always passes — see setup.md "Small Project Guidance".
73
+
74
+ ### Check 4: agent-memory Legacy Names
75
+
76
+ Verify no legacy agent-memory file names remain after the v0.9 rename (planner→pm, sprint-manager→lead, navigator→lead, builder→pm):
77
+
78
+ 1. Scan `docs/agent-memory/` (and `.harness/agent-memory/` in Team mode)
79
+ 2. If any of these legacy names exist → WARN with rename suggestion:
80
+ - `planner.md` → rename to `pm.md`
81
+ - `sprint-manager.md` → rename to `lead.md`
82
+ - `navigator.md` → rename to `lead.md`
83
+ - `builder.md` → rename to `pm.md`
84
+ 3. If both legacy and new names exist for the same role → FAIL: `[FAIL] Both {legacy} and {new} exist — merge then delete legacy`
85
+
86
+ ### Check 5: Iron Law #10 Self-Verify Marker
87
+
88
+ When invoked from another agent (pm, reviewer, wrap-up), confirm the calling agent declared its self-verify intent:
89
+ - The calling agent should have written nothing else after invoking state-check
90
+ - If the agent already produced STATUS: DONE before calling state-check → WARN: `[WARN] Iron Law #10 violation — STATUS: DONE issued before state-check`
91
+
92
+ This check is informational — humans calling the skill directly can ignore it.
93
+
94
+ <!-- CREW_MODE_START -->
95
+ ### Check 6 (🟣 Pipeline only): Validation Tracker Coverage
96
+
97
+ If `docs/project-brief.md` contains a `## Validation Tracker` section:
98
+
99
+ 1. Read FR Coverage table — for each FR with at least one Story, that Story must exist in project-state.md Story Status
100
+ 2. Read ARB Fail Resolution table — for each Fail item with a Story link, the Story must exist
101
+ 3. Outcomes:
102
+ - Tracker references missing Story → FAIL: `[FAIL] Validation Tracker references {S-N-M} but Story not found in project-state.md`
103
+ - Story marked ✅ done in project-state but Tracker still shows ⬜ → WARN: `[WARN] Validation Tracker out of sync — {Story} done but {KPI/FR/ARB} status unchanged`
104
+
105
+ If no Validation Tracker → skip.
106
+ <!-- CREW_MODE_END -->
107
+
108
+ ## Output Format
109
+
110
+ ```
111
+ ## State Check Result
112
+
113
+ ### Check 1: Required Files
114
+ - [x] docs/project-state.md — has content
115
+ - [x] docs/project-brief.md — has content
116
+ - [x] docs/dependency-map.md — has content
117
+ - [x] docs/features.md — has content
118
+
119
+ ### Check 2: Story ↔ Feature Consistency
120
+ - {N} ✅ done Stories cross-checked
121
+ - {M} matched / {K} drifted
122
+
123
+ ### Check 3: dependency-map ↔ src/ Coverage
124
+ - map: {N} modules, src/: {M} directories — {diff}% drift
125
+
126
+ ### Check 4: Agent Memory Legacy Names
127
+ - No legacy names found (or list of legacy files to rename)
128
+
129
+ <!-- CREW_MODE_START -->
130
+ ### Check 6: Validation Tracker (🟣)
131
+ - {N} FR references checked / {M} drifted
132
+ <!-- CREW_MODE_END -->
133
+
134
+ ### Findings
135
+ - [PASS] {N} checks passed
136
+ - [WARN] {N} warnings: {list}
137
+ - [FAIL] {N} failures: {list}
138
+
139
+ STATUS: PASS | WARN | FAIL
140
+ ```
141
+
142
+ ### Result Interpretation
143
+
144
+ - **PASS** — all checks passed; calling agent may proceed with STATUS: DONE
145
+ - **WARN** — non-blocking issues; calling agent should include warnings in its output but may proceed
146
+ - **FAIL** — blocking; calling agent must NOT report STATUS: DONE until failures are resolved
147
+
148
+ ### 🧭 Navigation — After State Check
149
+
150
+ When invoked directly (not by another agent), append:
151
+
152
+ ```
153
+ ---
154
+ 🧭 Next Step
155
+ → Result: {PASS | WARN | FAIL}
156
+ → Next: {fix the listed issues, then re-run state-check} or {return to caller}
157
+ → Why: state-check is the deterministic gate before STATUS: DONE
158
+ → Pipeline: utility skill (no pipeline step)
159
+ ---
160
+ ```
161
+
162
+ When invoked by another agent (pm/reviewer/wrap-up), control returns to the caller — no separate 🧭 block.
163
+
164
+ ## Rules
165
+
166
+ - Do NOT invent data. Read the files and report exactly what you find.
167
+ - Do NOT modify state files in this skill — diagnosis only. Caller decides remediation.
168
+ - Do NOT run shell scripts. All checks are markdown-described file reads + comparisons.
169
+ - If a check cannot be performed (e.g., `docs/` missing entirely), report it as FAIL and stop — further checks are meaningless.
170
+
171
+ ## Anti-patterns
172
+
173
+ | Anti-pattern | Correct Approach |
174
+ |---|---|
175
+ | Skip state-check because "I just wrote those files" | Run it anyway — Iron Law #10 mandates self-verify |
176
+ | Report PASS when one check could not be performed | Report FAIL with reason; PASS requires all applicable checks ran |
177
+ | Auto-fix drift inside this skill | This skill is read-only diagnosis — caller fixes drift |
178
+
179
+ <!-- TEAM_MODE_START -->
180
+ ## Team Mode: State Check
181
+
182
+ In Team mode:
183
+ - Personal state files live in `.harness/` (project-state.md, failure-patterns.md, agent-memory/)
184
+ - Shared files live in `docs/` (project-brief.md, features.md, dependency-map.md)
185
+ - Check 1 looks in BOTH directories — file exists if either path has it
186
+ - Check 2 (Story ↔ Feature) reads `.harness/project-state.md` (personal) against `docs/features.md` (shared) — drift is per-developer
187
+ - Check 4 (legacy agent-memory) scans `.harness/agent-memory/` only
188
+ - If `git pull` was skipped before this run, shared-file checks may report stale data — note this in WARN output
189
+ <!-- TEAM_MODE_END -->
@@ -4,7 +4,7 @@
4
4
 
5
5
  Capture lessons from the current session before ending.
6
6
  Updates docs/failure-patterns.md with new patterns and refreshes docs/project-state.md Quick Summary.
7
- This is Musher's memory mechanism — without it, the same mistakes repeat across sessions.
7
+ This is kode:harness's memory mechanism — without it, the same mistakes repeat across sessions.
8
8
 
9
9
  ## Invoked By
10
10
 
@@ -131,8 +131,12 @@ For each issue/error that occurred in this session:
131
131
  - New module without dependency-map entry → **add it now**
132
132
  - Interface change without Interface Change Log entry → **add it now**
133
133
  4. Cross-reference `docs/features.md` Key Files against `docs/dependency-map.md` modules — flag orphaned modules
134
+ 5. **Run `state-check` skill** (Iron Law #10 — mandatory before STATUS: DONE):
135
+ - PASS → proceed to Step 5.6
136
+ - WARN → include warnings in the final wrap-up report, then proceed
137
+ - FAIL → fix the listed drift (update affected state files), then re-run state-check until PASS or WARN
134
138
 
135
- > **Self-check**: `docs/dependency-map.md`에 이 세션에서 새로 추가한 모듈이 모두 등록되었는지 확인. 누락 시 즉시 추가.
139
+ > **Self-check**: `docs/dependency-map.md`에 이 세션에서 새로 추가한 모듈이 모두 등록되었는지 확인. 누락 시 즉시 추가. state-check가 PASS 또는 WARN을 반환해야 다음 단계로 진행합니다.
136
140
 
137
141
  ### Step 5.6: Resolve STATE-AUDIT Flags (if applicable)
138
142
 
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@kodevibe/harness",
3
- "version": "0.9.1",
3
+ "version": "0.9.5",
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
@@ -38,6 +38,7 @@ const SKILLS = [
38
38
  { id: 'pivot', desc: 'Propagate direction changes across all state files. Use when project goals, technology, scope, or architecture changes.' },
39
39
  { id: 'pr-review', desc: 'Review external Pull Requests for quality, security, and direction alignment. Use when reviewing incoming PRs.' },
40
40
  { id: 'release', desc: 'Pre-deployment validation checklist. Use before deploying, publishing, or creating release tags.' },
41
+ { id: 'state-check', desc: 'Deterministic verification of state file consistency. Use before STATUS: DONE (Iron Law #10) and when state drift is suspected.' },
41
42
  ];
42
43
 
43
44
  const AGENTS = [
@@ -77,13 +78,16 @@ function hasFrameworkMarker(content) {
77
78
  }
78
79
 
79
80
  function hasIdeLayout(targetDir, ide) {
81
+ // IDE-unique layout markers — used to disambiguate when multiple IDEs share
82
+ // common files (e.g., AGENTS.md, .agents/skills/). Each marker MUST be unique
83
+ // to its IDE and aligned with the IDE's official docs.
80
84
  const requiredByIde = {
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',
85
+ vscode: '.github/skills/setup/SKILL.md', // VS Code: .github/skills/ (official)
86
+ claude: '.claude/skills/setup/SKILL.md', // Claude Code: .claude/skills/ (official)
87
+ cursor: '.cursor/rules/core.mdc', // Cursor: .cursor/rules/*.mdc (official)
88
+ codex: '.codex/agents/reviewer.toml', // Codex CLI: .codex/agents/*.toml (official)
89
+ windsurf: '.windsurf/skills/setup/SKILL.md', // Windsurf: .windsurf/skills/ (official)
90
+ antigravity: '.agents/rules/core.md', // Antigravity: .agents/rules/ (official)
87
91
  };
88
92
 
89
93
  const requiredPath = requiredByIde[ide];
@@ -250,8 +254,14 @@ function generateVscode(targetDir, overwrite, mode = 'solo', crew = false) {
250
254
  }
251
255
 
252
256
  function generateClaude(targetDir, overwrite, mode = 'solo', crew = false) {
253
- // .claude/rules/core.md dispatcher only (no paths = always loaded)
254
- writeFile(targetDir, '.claude/rules/core.md', resolveContent(readTemplate('core-rules.md'), mode, crew), true);
257
+ const coreRules = resolveContent(readTemplate('core-rules.md'), mode, crew);
258
+
259
+ // CLAUDE.md — Claude Code's canonical project memory file (auto-loaded at session start)
260
+ writeFile(targetDir, 'CLAUDE.md', coreRules, true);
261
+
262
+ // .claude/rules/core.md — secondary dispatcher (also auto-loaded by Claude Code's
263
+ // InstructionsLoaded mechanism; kept for redundancy and rule-discovery tooling)
264
+ writeFile(targetDir, '.claude/rules/core.md', coreRules, true);
255
265
 
256
266
  // Skills (SKILL.md with frontmatter)
257
267
  writeSkills(targetDir, '.claude/skills', true, mode, crew);
@@ -264,31 +274,54 @@ function generateClaude(targetDir, overwrite, mode = 'solo', crew = false) {
264
274
  }
265
275
 
266
276
  function generateCursor(targetDir, overwrite, mode = 'solo', crew = false) {
267
- // .cursor/rules/core.mdc — dispatcher only (always active)
277
+ // Cursor official docs: https://cursor.com/docs/context/rules
278
+ // Officially supported surfaces ONLY:
279
+ // - .cursor/rules/*.mdc (with frontmatter: alwaysApply, description, globs)
280
+ // - AGENTS.md at project root (and nested directories)
281
+ // Cursor does NOT publicly document custom skills/agents directories, so we
282
+ // emit Skills via the open Agent Skills standard path .agents/skills/
283
+ // (also recognized by VS Code, Codex, Antigravity), and skip a Cursor-specific
284
+ // agents directory entirely.
268
285
  const coreRules = resolveContent(readTemplate('core-rules.md'), mode, crew);
269
286
  const coreMdc =
270
287
  '---\ndescription: kode:harness dispatcher — workflow guidance and state file references\nalwaysApply: true\n---\n\n' +
271
288
  coreRules;
272
289
  writeFile(targetDir, '.cursor/rules/core.mdc', coreMdc, true);
273
290
 
274
- // Skills (.cursor/skillsinvokable by mentioning skill name)
275
- writeSkills(targetDir, '.cursor/skills', true, mode, crew);
291
+ // AGENTS.mdCursor reads project-root AGENTS.md as agent instructions
292
+ writeFile(targetDir, 'AGENTS.md', coreRules, true);
293
+
294
+ // Skills (.agents/skills — open Agent Skills standard, cross-tool)
295
+ writeSkills(targetDir, '.agents/skills', true, mode, crew);
276
296
 
277
- // Agents (.cursor/agents/ Cursor subagent definition files)
278
- writeAgentsAsMd(targetDir, '.cursor/agents', true, mode, crew);
297
+ // Agents as additional rules (.cursor/rules/) so they auto-load with Cursor
298
+ // and are user-invocable via @rule-name. We use .md plain (no frontmatter
299
+ // beyond alwaysApply omitted → default "manual" activation).
300
+ for (const agent of AGENTS) {
301
+ const content = resolveContent(readTemplate(agent.file), mode, crew);
302
+ const ruleMd =
303
+ `---\ndescription: ${agent.desc}\nalwaysApply: false\n---\n\n` +
304
+ content;
305
+ writeFile(targetDir, `.cursor/rules/${agent.id}.mdc`, ruleMd, true);
306
+ }
279
307
 
280
308
  // State files (respect user's --overwrite for data files)
281
309
  writeStateFiles(targetDir, overwrite, mode, crew);
282
310
  }
283
311
 
284
312
  function generateCodex(targetDir, overwrite, mode = 'solo', crew = false) {
285
- // AGENTS.md dispatcher only
313
+ // Codex CLI official docs:
314
+ // - AGENTS.md: https://developers.openai.com/codex/guides/agents-md
315
+ // - Skills: https://developers.openai.com/codex/skills (.agents/skills/SKILL.md)
316
+ // - Subagents: https://developers.openai.com/codex/subagents (.codex/agents/*.toml)
317
+ // AGENTS.md — Codex CLI's canonical project instructions file (auto-loaded).
286
318
  writeFile(targetDir, 'AGENTS.md', resolveContent(readTemplate('core-rules.md'), mode, crew), true);
287
319
 
288
- // Skills (SKILL.md with frontmatter invokable via $skill-name)
320
+ // Skills (.agents/skills/<name>/SKILL.md — official cross-tool standard)
289
321
  writeSkills(targetDir, '.agents/skills', true, mode, crew);
290
322
 
291
- // Agents (.codex/agents/ — Codex TOML agent definition files)
323
+ // Subagents (.codex/agents/*.toml — Codex CLI's official format with
324
+ // name, description, developer_instructions fields)
292
325
  writeAgentsAsToml(targetDir, '.codex/agents', true, mode, crew);
293
326
 
294
327
  // State files (respect user's --overwrite for data files)
@@ -314,14 +347,31 @@ function generateWindsurf(targetDir, overwrite, mode = 'solo', crew = false) {
314
347
  }
315
348
 
316
349
  function generateAntigravity(targetDir, overwrite, mode = 'solo', crew = false) {
317
- // GEMINI.md project context (always loaded by Gemini CLI)
318
- writeFile(targetDir, 'GEMINI.md', resolveContent(readTemplate('core-rules.md'), mode, crew), true);
350
+ // Antigravity official docs:
351
+ // - Skills: https://antigravity.google/docs/skills (.agents/skills/<name>/SKILL.md)
352
+ // - Rules: https://antigravity.google/docs/rules-workflows (.agents/rules/*.md)
353
+ // Note: Antigravity does NOT recognize a project-root GEMINI.md — the global
354
+ // GEMINI.md lives only at ~/.gemini/GEMINI.md. We emit AGENTS.md for cross-tool
355
+ // compat (harmless to Antigravity, useful when Codex/Cursor share the repo).
356
+ const coreRules = resolveContent(readTemplate('core-rules.md'), mode, crew);
357
+
358
+ // AGENTS.md — cross-tool agent instructions (recognized by Codex/Cursor;
359
+ // ignored by Antigravity but provides compatibility for mixed teams)
360
+ writeFile(targetDir, 'AGENTS.md', coreRules, true);
319
361
 
320
- // Skills (.gemini/skills/ — SKILL.md format)
321
- writeSkills(targetDir, '.gemini/skills', true, mode, crew);
362
+ // .agents/rules/core.mdworkspace rules (Antigravity's official location)
363
+ writeFile(targetDir, '.agents/rules/core.md', coreRules, true);
322
364
 
323
- // Agents (.gemini/agents/ — Gemini CLI subagent definition files)
324
- writeAgentsAsMd(targetDir, '.gemini/agents', true, mode, crew);
365
+ // Skills (.agents/skills/<name>/SKILL.mdAntigravity's official location)
366
+ writeSkills(targetDir, '.agents/skills', true, mode, crew);
367
+
368
+ // Agents → Rules (Antigravity has no separate agents directory; agents
369
+ // are persistent rule prompts. We emit one rule file per agent under
370
+ // .agents/rules/, with alwaysApply implied — manual @-mention also works.)
371
+ for (const agent of AGENTS) {
372
+ const content = resolveContent(readTemplate(agent.file), mode, crew);
373
+ writeFile(targetDir, `.agents/rules/${agent.id}.md`, content, true);
374
+ }
325
375
 
326
376
  // State files (respect user's --overwrite for data files)
327
377
  writeStateFiles(targetDir, overwrite, mode, crew);
@@ -412,7 +462,7 @@ function detectExistingInstall(targetDir) {
412
462
  ['.claude/rules/core.md', 'claude'],
413
463
  ['.cursor/rules/core.mdc', 'cursor'],
414
464
  ['.windsurf/rules/core.md', 'windsurf'],
415
- ['GEMINI.md', 'antigravity'],
465
+ ['.agents/rules/core.md', 'antigravity'],
416
466
  ];
417
467
  // Only count as existing if the file contains a framework marker (not from other frameworks)
418
468
  const existingIde = ideMarkers.filter(([f, ide]) => {
@@ -520,14 +570,17 @@ function runDoctor(targetDir) {
520
570
  }
521
571
  }
522
572
 
523
- // Check for IDE-specific files (detect which IDE was used)
573
+ // Check for IDE-specific files (detect which IDE was used).
574
+ // Order matters: IDE-unique markers MUST be checked before AGENTS.md,
575
+ // because Cursor and Antigravity now also emit AGENTS.md for compat.
524
576
  const ideChecks = [
525
577
  ['.github/copilot-instructions.md', 'vscode'],
526
578
  ['.claude/rules/core.md', 'claude'],
527
579
  ['.cursor/rules/core.mdc', 'cursor'],
528
- ['AGENTS.md', 'codex'],
529
580
  ['.windsurf/rules/core.md', 'windsurf'],
530
- ['GEMINI.md', 'antigravity'],
581
+ ['.agents/rules/core.md', 'antigravity'],
582
+ ['.codex/agents/reviewer.toml', 'codex'],
583
+ ['AGENTS.md', 'codex'],
531
584
  ];
532
585
 
533
586
  let detectedIde = null;