@kodevibe/harness 0.9.3 → 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이 확정된 사항을 재논의하지 않도록 방지 |
@@ -116,10 +116,10 @@ npx @kodevibe/harness validate # state 파일에 실제 내용 확인
116
116
  |-----|---------------------|------|----------|
117
117
  | **VS Code Copilot** | `.github/copilot-instructions.md` | `.github/skills/*/SKILL.md` | `.github/agents/*.agent.md` |
118
118
  | **Claude Code** | `CLAUDE.md` (+ `.claude/rules/core.md`) | `.claude/skills/*/SKILL.md` | `.claude/agents/*.md` |
119
- | **Cursor** | `.cursor/rules/core.mdc` (+ `AGENTS.md`) | `.cursor/skills/*/SKILL.md` | `.cursor/agents/*.md` |
120
- | **Codex** | `AGENTS.md` | `.agents/skills/*/SKILL.md` | `.codex/agents/*.md` |
119
+ | **Cursor** | `.cursor/rules/core.mdc` (+ `AGENTS.md`) | `.agents/skills/*/SKILL.md` (cross-tool) | `.cursor/rules/<agent>.mdc` |
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` (+ `AGENTS.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.2** — state-check 스킬, Iron Law #10 (Self-Verify), Confirmation Gate Defaults, 멀티 IDE 설치 수정, Crew 모드용 CI Artifact Index 도입.
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
  |------|------|------|------|
@@ -309,7 +309,9 @@ kode:harness는 현재 **v0.9.2** — state-check 스킬, Iron Law #10 (Self-Ver
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
311
  | **Naming** | v0.9.0 | ✅ 완료 | 스킬/에이전트 네이밍 재설계 — 직관성과 발견성 강화 |
312
- | **Self-Verify** | v0.9.2 | ✅ 현재 | state-check 스킬, Iron Law #10, Confirmation Gate Defaults, 멀티 IDE 수정, CI Artifact Index |
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) 및 근거 기록 |
313
315
  | **Validation** | v1.0 | 🔜 다음 | 실사용 검증, 사용자 피드백 수집 |
314
316
 
315
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 |
@@ -114,10 +114,10 @@ npx @kodevibe/harness validate # verify state files have real content
114
114
  |-----|----------------------|--------|--------|
115
115
  | **VS Code Copilot** | `.github/copilot-instructions.md` | `.github/skills/*/SKILL.md` | `.github/agents/*.agent.md` |
116
116
  | **Claude Code** | `CLAUDE.md` (+ `.claude/rules/core.md`) | `.claude/skills/*/SKILL.md` | `.claude/agents/*.md` |
117
- | **Cursor** | `.cursor/rules/core.mdc` (+ `AGENTS.md`) | `.cursor/skills/*/SKILL.md` | `.cursor/agents/*.md` |
118
- | **Codex** | `AGENTS.md` | `.agents/skills/*/SKILL.md` | `.codex/agents/*.md` |
117
+ | **Cursor** | `.cursor/rules/core.mdc` (+ `AGENTS.md`) | `.agents/skills/*/SKILL.md` (cross-tool) | `.cursor/rules/<agent>.mdc` |
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` (+ `AGENTS.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.2** — state-check skill, Iron Law #10 (Self-Verify), Confirmation Gate Defaults, multi-IDE installation fixes, and CI Artifact Index for crew mode.
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
  |---|---|---|---|
@@ -283,7 +283,9 @@ kode:harness is at **v0.9.2** — state-check skill, Iron Law #10 (Self-Verify),
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
285
  | **Naming** | v0.9.0 | ✅ Done | Skill/agent naming redesign for clarity and discoverability |
286
- | **Self-Verify** | v0.9.2 | ✅ Current | state-check skill, Iron Law #10, Confirmation Gate Defaults, multi-IDE fix, CI Artifact Index |
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 |
287
289
  | **Validation** | v1.0 | 🔜 Next | Real-world project adoption, user feedback collection |
288
290
 
289
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.**
@@ -234,8 +226,6 @@ After the Post-Approval state writes complete, run the `state-check` skill:
234
226
  3. If state-check returns **WARN** → include the warnings in the plan output, then proceed
235
227
  4. If state-check returns **FAIL** → do NOT output STATUS: DONE. Fix the listed drift, then re-run state-check.
236
228
 
237
- > Iron Law #10 (Self-Verify) applies to every agent. The pm runs state-check **after** state writes — not before — because the writes are what create the consistency to verify.
238
-
239
229
  ## Output Format
240
230
 
241
231
  ### New Feature Plan
@@ -291,9 +281,8 @@ Use this format when Crew Artifact Index exists in project-brief.md. If no Artif
291
281
 
292
282
  ## Sprint Completion Checkpoint
293
283
 
294
- **Trigger**: 현재 Sprint의 모든 Story가 ✅ 완료되었을 때 (reviewer pass → pm checkpoint)
295
-
296
- 이 절차는 Sprint 종료 시 자동으로 실행된다. "계속할까요?"가 아니라 **구체적 선택을 강제**한다.
284
+ **Trigger**: 현재 Sprint의 모든 Story가 ✅ 완료되었을 때 (reviewer pass → pm checkpoint).
285
+ Sprint 종료 시 자동 실행 — **구체적 선택을 강제**한다 ("계속할까요?" 가 아님).
297
286
 
298
287
  ### 절차
299
288
 
@@ -324,7 +313,7 @@ Use this format when Crew Artifact Index exists in project-brief.md. If no Artif
324
313
 
325
314
  🏁 마무리: 현재 상태로 프로젝트를 완료하고 wrap-up 진행
326
315
  ```
327
- > **"계속"은 선택지에 없다.** 사용자는 구체적 기능을 골라야 하거나, 명시적으로 "마무리"를 선택해야 한다.
316
+ **"계속"은 선택지에 없다** 사용자는 구체적 기능 또는 "마무리"를 명시적으로 선택해야 한다.
328
317
 
329
318
  4. **사용자 선택에 따라 분기**:
330
319
  - **기능 선택** → 선택된 기능으로 Sprint 계획 (위의 "For New Feature" 절차 진행)
@@ -217,17 +217,7 @@ STATUS: DONE / DONE_WITH_CONCERNS / BLOCKED
217
217
 
218
218
  ## Embedded Rules
219
219
 
220
- These rules are enforced during every review:
221
-
222
- ### Iron Laws
223
- 1. **Mock Sync**: Interface change → mock updated in same commit (FP-001)
224
- 2. **Type Check**: Verify constructor/factory parameters from source, not memory (FP-002)
225
- 3. **Scope Compliance**: Changes must be within current Story scope (docs/project-state.md)
226
- 4. **Security**: No credentials, passwords, or API keys in code or commits
227
- 5. **3-Failure Stop**: Same approach failed 3 times → stop and report
228
- 6. **Dependency Map**: New/modified module → docs/dependency-map.md updated
229
- 7. **Feature Registry**: New feature → docs/features.md updated
230
- 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.
231
221
 
232
222
  ### Testing Rules
233
223
  - New feature = New test. No feature code without tests.
@@ -83,6 +83,25 @@ This step references the indexed company guide; it does not embed the guide cont
83
83
  2. If yes → verify they include entries for all changes since last release
84
84
  3. If no → generate a summary from `git log --oneline <last-tag>..HEAD`
85
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
+
86
105
  ## Output Format
87
106
 
88
107
  ```
@@ -278,28 +278,6 @@ For projects with fewer than 3 modules (e.g., single-file scripts, small CLI too
278
278
  - `breakdown` Waves may collapse into a single Wave — skip Wave-level pacing
279
279
  - Consider a simplified workflow: `setup → pm → [code] → reviewer → wrap-up` (skip lead for single-story projects)
280
280
 
281
- ## Embedded Knowledge
282
-
283
- ### Session Bootstrap Protocol
284
- When starting a NEW session (not during setup), read these files in order:
285
- 1. `docs/project-state.md` — Quick Summary tells you where we left off
286
- 2. `docs/features.md` — What features exist
287
- 3. `docs/failure-patterns.md` — What mistakes to avoid
288
- 4. `docs/project-brief.md` — Project vision and non-goals
289
-
290
- ### Workflow Pipeline
291
- - New feature: `pm → [code] → reviewer → lead → wrap-up`
292
- - Bug fix: `debug → [fix] → sync-tests → reviewer → wrap-up`
293
- - Session lifecycle: `lead ("where are we?") → [work] → wrap-up`
294
-
295
- ### State File Size Limits
296
- - docs/project-brief.md: Max 200 lines
297
- - docs/project-state.md: Max 300 lines
298
- - docs/failure-patterns.md: Max 50 patterns
299
- - docs/dependency-map.md: Max 100 modules
300
- - docs/features.md: Max 50 features
301
- - docs/agent-memory/*.md: Max 100 lines each
302
-
303
281
  ## Anti-patterns
304
282
 
305
283
  | Anti-pattern | Correct Approach |
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@kodevibe/harness",
3
- "version": "0.9.3",
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
@@ -78,13 +78,16 @@ function hasFrameworkMarker(content) {
78
78
  }
79
79
 
80
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.
81
84
  const requiredByIde = {
82
- vscode: '.github/skills/setup/SKILL.md',
83
- claude: '.claude/skills/setup/SKILL.md',
84
- cursor: '.cursor/skills/setup/SKILL.md',
85
- codex: '.agents/skills/setup/SKILL.md',
86
- windsurf: '.windsurf/skills/setup/SKILL.md',
87
- 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)
88
91
  };
89
92
 
90
93
  const requiredPath = requiredByIde[ide];
@@ -271,37 +274,55 @@ function generateClaude(targetDir, overwrite, mode = 'solo', crew = false) {
271
274
  }
272
275
 
273
276
  function generateCursor(targetDir, overwrite, mode = 'solo', crew = false) {
274
- // .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.
275
285
  const coreRules = resolveContent(readTemplate('core-rules.md'), mode, crew);
276
286
  const coreMdc =
277
287
  '---\ndescription: kode:harness dispatcher — workflow guidance and state file references\nalwaysApply: true\n---\n\n' +
278
288
  coreRules;
279
289
  writeFile(targetDir, '.cursor/rules/core.mdc', coreMdc, true);
280
290
 
281
- // AGENTS.md — Cursor CLI also reads project-root AGENTS.md as a rule
291
+ // AGENTS.md — Cursor reads project-root AGENTS.md as agent instructions
282
292
  writeFile(targetDir, 'AGENTS.md', coreRules, true);
283
293
 
284
- // Skills (.cursor/skills — invokable by mentioning skill name)
285
- writeSkills(targetDir, '.cursor/skills', true, mode, crew);
294
+ // Skills (.agents/skills — open Agent Skills standard, cross-tool)
295
+ writeSkills(targetDir, '.agents/skills', true, mode, crew);
286
296
 
287
- // Agents (.cursor/agents/ Cursor subagent definition files)
288
- 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
+ }
289
307
 
290
308
  // State files (respect user's --overwrite for data files)
291
309
  writeStateFiles(targetDir, overwrite, mode, crew);
292
310
  }
293
311
 
294
312
  function generateCodex(targetDir, overwrite, mode = 'solo', crew = false) {
295
- // AGENTS.md — Codex CLI's canonical project instructions file (the only file
296
- // Codex CLI auto-loads). All skill/agent references must be discoverable from here.
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).
297
318
  writeFile(targetDir, 'AGENTS.md', resolveContent(readTemplate('core-rules.md'), mode, crew), true);
298
319
 
299
- // Skills (SKILL.md with frontmatter invokable via $skill-name)
320
+ // Skills (.agents/skills/<name>/SKILL.md — official cross-tool standard)
300
321
  writeSkills(targetDir, '.agents/skills', true, mode, crew);
301
322
 
302
- // Agents (.codex/agents/markdown subagent files with YAML frontmatter,
303
- // matching the Cursor/Claude convention used as a Codex compat directory)
304
- writeAgentsAsMd(targetDir, '.codex/agents', true, mode, crew);
323
+ // Subagents (.codex/agents/*.tomlCodex CLI's official format with
324
+ // name, description, developer_instructions fields)
325
+ writeAgentsAsToml(targetDir, '.codex/agents', true, mode, crew);
305
326
 
306
327
  // State files (respect user's --overwrite for data files)
307
328
  writeStateFiles(targetDir, overwrite, mode, crew);
@@ -326,20 +347,31 @@ function generateWindsurf(targetDir, overwrite, mode = 'solo', crew = false) {
326
347
  }
327
348
 
328
349
  function generateAntigravity(targetDir, overwrite, mode = 'solo', crew = false) {
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).
329
356
  const coreRules = resolveContent(readTemplate('core-rules.md'), mode, crew);
330
357
 
331
- // GEMINI.md — Gemini CLI / Antigravity's canonical project context file
332
- writeFile(targetDir, 'GEMINI.md', coreRules, true);
333
-
334
- // AGENTS.md — Antigravity also follows the AGENTS.md convention shared by
335
- // Codex / Cursor CLI; emitting it broadens compatibility with no downside
358
+ // AGENTS.md — cross-tool agent instructions (recognized by Codex/Cursor;
359
+ // ignored by Antigravity but provides compatibility for mixed teams)
336
360
  writeFile(targetDir, 'AGENTS.md', coreRules, true);
337
361
 
338
- // Skills (.gemini/skills/ — SKILL.md format)
339
- 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);
340
364
 
341
- // Agents (.gemini/agents/ — Gemini CLI subagent definition files)
342
- 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
+ }
343
375
 
344
376
  // State files (respect user's --overwrite for data files)
345
377
  writeStateFiles(targetDir, overwrite, mode, crew);
@@ -430,7 +462,7 @@ function detectExistingInstall(targetDir) {
430
462
  ['.claude/rules/core.md', 'claude'],
431
463
  ['.cursor/rules/core.mdc', 'cursor'],
432
464
  ['.windsurf/rules/core.md', 'windsurf'],
433
- ['GEMINI.md', 'antigravity'],
465
+ ['.agents/rules/core.md', 'antigravity'],
434
466
  ];
435
467
  // Only count as existing if the file contains a framework marker (not from other frameworks)
436
468
  const existingIde = ideMarkers.filter(([f, ide]) => {
@@ -546,7 +578,8 @@ function runDoctor(targetDir) {
546
578
  ['.claude/rules/core.md', 'claude'],
547
579
  ['.cursor/rules/core.mdc', 'cursor'],
548
580
  ['.windsurf/rules/core.md', 'windsurf'],
549
- ['GEMINI.md', 'antigravity'],
581
+ ['.agents/rules/core.md', 'antigravity'],
582
+ ['.codex/agents/reviewer.toml', 'codex'],
550
583
  ['AGENTS.md', 'codex'],
551
584
  ];
552
585