@kodevibe/harness 0.9.0 → 0.9.3

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
@@ -9,83 +9,33 @@
9
9
  [![CI](https://github.com/AIDD-Projects/harness/actions/workflows/ci.yml/badge.svg)](https://github.com/AIDD-Projects/harness/actions/workflows/ci.yml)
10
10
  [![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](https://opensource.org/licenses/MIT)
11
11
 
12
- **모든 개발자의 AI 하나의 프로젝트 방향으로 정렬합니다.**
12
+ > **AI 코딩 에이전트는 세션이 끝나면 모든 것을 잊습니다. kode:harness는 목표, 결정, 실패, 프로젝트 방향을 기억하게 합니다.**
13
13
 
14
- kode:harness는 **harness engineering** 원칙을 기반으로 합니다. 멀티 개발자와 엔터프라이즈급 환경, 그리고 solo 개발 흐름까지 고려한 AI 개발 엔지니어링 방식을 제품 형태로 제공하는 구조입니다.
15
-
16
- > **v0.9.0** — 네이밍 재설계 (스킬/에이전트 이름 직관화), 6개 IDE 지원, Navigation Dispatcher, 5개 파이프라인 (🟢🔵🔴🟡🟣), Crew Artifact Integration.
17
-
18
- ---
19
-
20
- ## Harness에서 Enterprise Harness Engineering으로
21
-
22
- AI "harness" — LLM 코딩 에이전트를 안내하는 구조화된 마크다운 파일 — 는 AI 기반 개발의 기본 패턴이 되었습니다. BMAD, gstack, GSD 같은 프레임워크가 **1인 개발자**를 위해 이 접근법을 개척했습니다.
23
-
24
- 이 접근은 harness 엔지니어링을 1인 도구 수준에서 멀티 개발자 팀과 solo 개발자까지 포괄하는 **엔터프라이즈급 방향 관리 기법**으로 확장합니다. **kode:harness**는 이 접근을 제품 형태로 구현한 실행 프레임워크입니다.
25
-
26
- | | 기존 Harness | kode:harness + harness engineering |
27
- |---|---|---|
28
- | 대상 | 1인 개발자 | **멀티 개발자 팀** |
29
- | 초점 | AI가 무엇을 하는지 | **AI가 어디로 가는지** |
30
- | 방향 관리 | ❌ | ✅ Direction Guard + pivot + Decision Log |
31
- | 팀 상태 공유 | ❌ | ✅ 공유/개인 상태 분리 |
32
- | 토큰 예산 | 200+ 파일 | **~25개 파일 (~17K 토큰)** — 소형 LLM도 작동 |
33
-
34
- ## 어떤 문제를 해결하나요?
35
-
36
- 혼자 개발할 때는 AI 코딩 어시스턴트의 방향이 일관됩니다. 하지만 **기업 팀**에서는 각 개발자가 독립된 AI 세션을 실행하고, 각 AI는 제각각 다른 방향으로 흘러갑니다.
37
-
38
- - 개발자 A의 AI → 마이크로서비스로 리팩토링
39
- - 개발자 B의 AI → 모놀리스를 강화
40
- - 개발자 C의 AI → 이미 결정된 사항을 다시 논의
41
-
42
- 공유된 방향 관리 없이는 **여러 개발자의 AI가 프로젝트를 분리시킵니다.**
43
-
44
- kode:harness는 모든 개발자의 AI에게 동일한 목표·비목표·결정사항·프로젝트 상태를 제공하여, 누가 코딩하든 어떤 IDE를 쓰든 **하나의 방향**으로 수렴하게 합니다.
45
-
46
- ## 핵심 설계 원칙
47
-
48
- > **경량성**: Claude Sonnet이나 GPT-4o 같은 대형 LLM뿐 아니라, 프라이빗 망의 소형 LLM(GPT OSS 120B급, 로컬 LLM 등)도 kode:harness 파일을 읽고 프로젝트 방향을 유지할 수 있어야 합니다. BMAD의 200개 이상 파일 대비 **~25개 파일, ~17K 토큰**으로 동일한 효과를 달성합니다.
49
-
50
- ---
51
-
52
- ## 주요 기능
53
-
54
- | 기능 | 설명 |
55
- |------|------|
56
- | 🧭 **Direction Guard** | 모든 코딩 요청을 프로젝트 목표/비목표와 대조 후 실행 |
57
- | 🧭 **Navigation Dispatcher** | Turn-by-Turn 네비게이션으로 5개 파이프라인을 따라 다음 단계 프롬프트를 자동 안내 |
58
- | 🟢🔵🔴🟡🟣 **5개 파이프라인** | New Dev → Continue → Bug Fix → Direction Change → Crew-Driven |
59
- | 🟣 **Crew Artifact Integration** | 외부 기획 도구 산출물(PRD, Architecture, ARB Checklist)을 직접 읽기 — 수동 복사 불필요 |
60
- | 📝 **State Files** | LLM 세션 간 프로젝트 지식을 유지하는 5개 마크다운 파일 |
61
- | 🛠️ **Skills** | 기획, 리뷰, 디버깅, 방향 전환을 위한 단계별 절차 10개 |
62
- | 🤖 **Agents** | 워크플로를 강제하는 역할 기반 페르소나 4개 |
63
- | ⚠️ **Failure Patterns** | 동일 실수 반복을 방지하는 프로젝트별 실패 기록 |
64
- | 📝 **Decision Log** | 결정의 이유를 기록해 LLM이 확정된 사항을 재논의하지 않도록 방지 |
14
+ AI 코딩 에이전트를 위한 프로덕션급 가드레일. 컨텍스트 부패를 방지하고, 프로젝트 방향을 강제하며, 세션 상태를 유지합니다. **Copilot, Claude, Cursor, Codex, Windsurf, Gemini** 지원. 의존성 제로.
65
15
 
66
16
  ---
67
17
 
68
18
  ## 빠른 시작
69
19
 
70
20
  ```bash
71
- # Solo 모드 (기본)
72
- npx @kodevibe/harness init
73
-
74
- # Team 모드 (멀티 개발자)
75
- npx @kodevibe/harness init --team
21
+ npx @kodevibe/harness init # IDE 선택
76
22
  ```
77
23
 
78
- 프롬프트에서 IDE를 선택하면 현재 디렉토리에 파일이 설치됩니다.
79
-
80
- 설치 후, LLM에게 `setup` 스킬을 실행하도록 요청하세요:
81
-
24
+ ```bash
25
+ # 그 후 AI 에이전트에게:
82
26
  > "setup을 실행해서 이 프로젝트를 온보딩해줘."
27
+ ```
83
28
 
84
- 코드베이스를 스캔하고 5개 State 파일을 자동으로 채웁니다.
29
+ 끝입니다. 이제 AI는 영속적인 메모리, 방향 가드레일, 자기 교정 루프를 갖게 됩니다.
85
30
 
86
- ### 비대화형 모드
31
+ <details>
32
+ <summary>추가 설치 옵션</summary>
87
33
 
88
34
  ```bash
35
+ # Team 모드 (멀티 개발자 방향 정렬)
36
+ npx @kodevibe/harness init --team
37
+
38
+ # 비대화형 (CI/스크립트)
89
39
  npx @kodevibe/harness init --ide vscode
90
40
  npx @kodevibe/harness init --ide claude
91
41
  npx @kodevibe/harness init --ide cursor
@@ -94,8 +44,6 @@ npx @kodevibe/harness init --ide windsurf
94
44
  npx @kodevibe/harness init --ide antigravity
95
45
  ```
96
46
 
97
- ### 옵션
98
-
99
47
  | 플래그 | 설명 |
100
48
  |--------|------|
101
49
  | `--ide <이름>` | 대상 IDE: `vscode`, `claude`, `cursor`, `codex`, `windsurf`, `antigravity` |
@@ -106,14 +54,58 @@ npx @kodevibe/harness init --ide antigravity
106
54
  | `--overwrite` | 기존 파일 덮어쓰기 (state 파일 포함) |
107
55
  | `--version` | 버전 번호 표시 |
108
56
 
109
- ### 헬스체크
57
+ </details>
110
58
 
111
- ```bash
112
- # kode:harness 파일 설치 상태 확인
113
- npx @kodevibe/harness doctor
59
+ ---
60
+
61
+ ## 문제: 컨텍스트 부패 (Context Rot)
62
+
63
+ AI 코딩 에이전트는 매 세션 제로에서 시작합니다. 세션 3에서는 세션 1의 아키텍처 결정을 잊고, 세션 10에서는 이미 확정된 사항을 다시 논의하며 자신의 이전 작업과 모순됩니다.
64
+
65
+ 팀에서는 더 심각합니다 — 개발자 A의 AI는 마이크로서비스로 리팩토링하고, 개발자 B의 AI는 모놀리스를 강화합니다. **공유 가드레일 없이는 AI 에이전트가 프로젝트를 분리시킵니다.**
66
+
67
+ kode:harness는 세 가지 메커니즘으로 해결합니다:
68
+
69
+ | 메커니즘 | 방지하는 문제 |
70
+ |---------|-------------|
71
+ | **상태 영속성** | AI가 세션 간 목표, 결정, 진행 상황을 잊는 것 |
72
+ | **방향 가드** | AI가 프로젝트 목표에서 이탈하거나 과거 결정과 모순되는 것 |
73
+ | **실패 패턴** | AI가 세션 간 같은 실수를 반복하는 것 |
74
+
75
+ ---
114
76
 
115
- # State 파일에 실제 내용이 있는지 검증 (플레이스홀더가 아닌지)
116
- npx @kodevibe/harness validate
77
+ ## 그냥 ...을 쓰면 되나요?
78
+
79
+ | 접근법 | 한계 | kode:harness 차이점 |
80
+ |--------|------|---------------------|
81
+ | **`.cursorrules` / `copilot-instructions.md`** | 정적. 상태 영속성 없음, 자기 교정 없음, 세션 간 기억 없음. | 매 세션 업데이트되는 살아있는 state 파일. Direction Guard가 매 요청을 목표와 대조. |
82
+ | **LangChain / CrewAI** | AI 앱 구축용 런타임 오케스트레이션. AI 코딩 에이전트 방향 관리용이 아님. | IDE 안에서 작동하는 마크다운 네이티브 가드레일. 런타임 없음, SDK 없음. |
83
+ | **BMAD / gstack / GSD** | 1인 개발자용. 200+ 파일. 방향 관리 없음. | ~25개 파일 (~17K 토큰). Direction Guard + Decision Log. 멀티 개발자 팀 지원. |
84
+ | **"조심하면 되지"** | 잊을 때까지만 동작. LLM은 과거 세션에서 배우지 않음. | 자동화: `wrap-up`이 교훈 캡처, `debug`가 실패 추적, `reviewer`가 state 감사. |
85
+
86
+ ---
87
+
88
+ ## 주요 기능
89
+
90
+ | 기능 | 설명 |
91
+ |------|------|
92
+ | 🛡️ **Direction Guard** | 모든 코딩 요청을 프로젝트 목표/비목표와 대조 후 실행 |
93
+ | 🧭 **Navigation Dispatcher** | 5개 파이프라인을 따라 다음 단계 프롬프트를 자동 안내 |
94
+ | 📝 **상태 영속성** | LLM 세션 간 프로젝트 지식을 유지하는 5개 마크다운 파일 |
95
+ | 🔄 **5개 파이프라인** | 🟢 신규 → 🔵 계속 → 🔴 버그 수정 → 🟡 방향 전환 → 🟣 Crew 기반 |
96
+ | 🛠️ **10개 스킬** | 단계별 절차: setup, debug, breakdown, review, pivot 등 |
97
+ | 🤖 **4개 에이전트** | 역할 기반 페르소나: pm, reviewer, lead, architect |
98
+ | ⚠️ **실패 패턴** | 세션 간 같은 실수를 방지하는 프로젝트별 실패 기록 |
99
+ | 📋 **Decision Log** | 결정의 이유를 기록해 LLM이 확정된 사항을 재논의하지 않도록 방지 |
100
+ | 🟣 **Crew Artifact Integration** | 외부 기획 산출물 (PRD, Architecture, ARB Checklist) 직접 읽기 |
101
+
102
+ ---
103
+
104
+ ## 헬스체크
105
+
106
+ ```bash
107
+ npx @kodevibe/harness doctor # 파일 설치 상태 확인
108
+ npx @kodevibe/harness validate # state 파일에 실제 내용 확인
117
109
  ```
118
110
 
119
111
  ---
@@ -123,11 +115,11 @@ npx @kodevibe/harness validate
123
115
  | IDE | 디스패처 (always-on) | 스킬 | 에이전트 |
124
116
  |-----|---------------------|------|----------|
125
117
  | **VS Code Copilot** | `.github/copilot-instructions.md` | `.github/skills/*/SKILL.md` | `.github/agents/*.agent.md` |
126
- | **Claude Code** | `.claude/rules/core.md` | `.claude/skills/*/SKILL.md` | `.claude/agents/*.md` |
127
- | **Cursor** | `.cursor/rules/core.mdc` | `.cursor/skills/*/SKILL.md` | `.cursor/agents/*.md` |
128
- | **Codex** | `AGENTS.md` | `.agents/skills/*/SKILL.md` | `.codex/agents/*.toml` |
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` |
129
121
  | **Windsurf** | `.windsurf/rules/core.md` | `.windsurf/skills/*/SKILL.md` | *(스킬로 설치)* |
130
- | **Antigravity** | `GEMINI.md` | `.gemini/skills/*/SKILL.md` | `.gemini/agents/*.md` |
122
+ | **Antigravity** | `GEMINI.md` (+ `AGENTS.md`) | `.gemini/skills/*/SKILL.md` | `.gemini/agents/*.md` |
131
123
 
132
124
  모든 IDE에 `docs/` 디렉토리에 State 파일(`project-state.md`, `project-brief.md`, `features.md`, `failure-patterns.md`, `dependency-map.md`)도 함께 설치됩니다.
133
125
 
@@ -267,14 +259,13 @@ npx @kodevibe/harness init --team
267
259
 
268
260
  ---
269
261
 
270
- ## 왜 kode:harness인가?
262
+ ## 왜 만들었나
271
263
 
272
- ### 핵심 통찰
264
+ 기존 AI 코딩 프레임워크는 **AI가 무엇을 하는지** — 코드 생성, 테스트 실행, 배포에 집중합니다. 하지만 진짜 문제는 능력이 아닙니다. **방향**입니다.
273
265
 
274
- 기존 AI 코딩 프레임워크는 **AI가 무엇을 하는지**(코드 생성, 테스트 실행, 배포) 집중합니다.
275
- kode:harness는 **AI가 어디로 가는지** — 모든 개발자의 AI가 같은 방향으로 움직이는지에 집중합니다.
266
+ 혼자 개발하면 방향이 일관됩니다. 하지만 팀에서는 각 개발자의 AI가 독립적으로 이탈합니다. 그리고 혼자 개발해도 세션 간 방향을 잃습니다 — 우리가 **컨텍스트 부패(Context Rot)**라 부르는 현상입니다. AI는 아키텍처 결정을 잊고, 확정된 사항을 재논의하며, 자신의 이전 작업과 모순됩니다.
276
267
 
277
- 이것은 개별 AI가 제멋대로 움직이는 것과, harness 기반 방향 관리 기법이 전체를 방향으로 이끄는 것의 차이입니다.
268
+ kode:harness는 **AI가 어디로 가는지**에 집중합니다. 개발자, IDE, 시간을 넘어 모든 AI 세션에 동일한 목표, 결정, 프로젝트 상태를 제공합니다. 이 근간이 되는 원칙이 **harness engineering** 어떤 LLM이든 읽을 있는 경량 마크다운 네이티브 가드레일입니다.
278
269
 
279
270
  ### Crew Artifact Integration (🟣 파이프라인)
280
271
 
@@ -292,7 +283,7 @@ Bootstrap이 `docs/crew/`, `docs/PM/`, `docs/Analyst/`, `docs/ARB/`에서 crew
292
283
 
293
284
  원본 crew 문서는 **절대 수정되지 않습니다**. 인덱스와 트래커만 생성됩니다.
294
285
 
295
- ### 비교
286
+ ### 다른 프레임워크와의 비교
296
287
 
297
288
  | | BMAD v6.2.2 | gstack v0.15.1 | GSD v1.33.0 | **kode:harness** |
298
289
  |---|---|---|---|---|
@@ -309,7 +300,7 @@ Bootstrap이 `docs/crew/`, `docs/PM/`, `docs/Analyst/`, `docs/ARB/`에서 crew
309
300
 
310
301
  ## 로드맵
311
302
 
312
- kode:harness는 현재 **v0.9.0** — 네이밍 재설계 완료, 6개 IDE 지원, Navigation Dispatcher와 Crew Artifact Integration 안정화.
303
+ kode:harness는 현재 **v0.9.2** — state-check 스킬, Iron Law #10 (Self-Verify), Confirmation Gate Defaults, 멀티 IDE 설치 수정, Crew 모드용 CI Artifact Index 도입.
313
304
 
314
305
  | 단계 | 버전 | 상태 | 초점 |
315
306
  |------|------|------|------|
@@ -317,7 +308,8 @@ kode:harness는 현재 **v0.9.0** — 네이밍 재설계 완료, 6개 IDE 지
317
308
  | **Hardening** | v0.6.5 | ✅ 완료 | 10 스킬, 4 에이전트, Iron Laws, CLI batch/doctor/validate, 방향 드리프트 감지 |
318
309
  | **Flexibility** | v0.7.x | ✅ 완료 | 팀 컨벤션을 project-brief.md에 위임, prescriptive 규칙 제거 |
319
310
  | **Navigation** | v0.8.x | ✅ 완료 | 🧭 Navigation Dispatcher, 5개 파이프라인, Crew Artifact Integration, 100점 품질 감사, Confirm-First 게이트, Wave-Level Pacing, Recalculating Mode |
320
- | **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 |
321
313
  | **Validation** | v1.0 | 🔜 다음 | 실사용 검증, 사용자 피드백 수집 |
322
314
 
323
315
  ### 다음 단계
package/README.md CHANGED
@@ -9,67 +9,33 @@
9
9
  [![CI](https://github.com/AIDD-Projects/harness/actions/workflows/ci.yml/badge.svg)](https://github.com/AIDD-Projects/harness/actions/workflows/ci.yml)
10
10
  [![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](https://opensource.org/licenses/MIT)
11
11
 
12
- **Keep every developer's AI aligned on one project direction.**
12
+ > **Your AI coding agent forgets everything between sessions. kode:harness makes it remember — goals, decisions, failures, and project direction.**
13
13
 
14
- kode:harness is built on **harness engineering** for multi-developer, enterprise-grade AI-assisted development.
14
+ Production-grade guardrails for AI coding agents. Prevents context rot, enforces project direction, and persists state across sessions. Works with **Copilot, Claude, Cursor, Codex, Windsurf, and Gemini**. Zero dependencies.
15
15
 
16
- > **v0.9.0** — Naming redesign (clearer skill/agent names), 6 IDE support, Navigation Dispatcher, 5 Pipelines (🟢🔵🔴🟡🟣), Crew Artifact Integration.
17
-
18
- ## From Harness to Enterprise Harness Engineering
19
-
20
- The concept of an AI "harness" — structured markdown files that guide LLM coding agents — has become a foundational pattern in AI-assisted development. Frameworks like BMAD, gstack, and GSD pioneered this approach for **solo developers**.
21
-
22
- This approach takes harness engineering beyond solo tooling. It evolves the harness concept into an **enterprise-grade direction management method** for both multi-developer teams and solo developers. **kode:harness** is the product form of that approach.
23
-
24
- | | Traditional Harness | kode:harness + harness engineering |
25
- |---|---|---|
26
- | Target | Solo developer | **Multi-developer teams** |
27
- | Focus | What the AI does | **Where the AI is going** |
28
- | Direction management | ❌ | ✅ Direction Guard + pivot + Decision Log |
29
- | Team state sharing | ❌ | ✅ Shared/personal state separation |
30
- | Token budget | 200+ files | **~25 files (~17K tokens)** — works with small LLMs too |
31
-
32
- ## The Problem
33
-
34
- When one developer uses an AI coding assistant, direction stays consistent. But in **enterprise teams**, each developer runs their own AI sessions — and each AI drifts independently. Developer A's AI refactors toward microservices while Developer B's AI doubles down on the monolith. Without shared direction management, **AI agents across multiple developers pull the project apart.**
35
-
36
- kode:harness solves this. It gives every developer's AI the same goals, non-goals, decisions, and project state — so all AI sessions converge on **one direction**, regardless of who's coding or which IDE they use.
37
-
38
- ## What It Does
39
-
40
- kode:harness manages your **project's direction** — goals, decisions, scope — so LLM coding agents stay aligned **across developers and sessions**. Zero dependencies, 6 IDE support, native format generation. The underlying approach is harness engineering for multi-developer and enterprise-grade execution.
41
-
42
- - **Direction Guard** — Every coding request is checked against project goals/non-goals before execution
43
- - **Navigation Dispatcher** — 🧭 Turn-by-Turn navigation guides developers through 5 pipelines with explicit next-step prompts
44
- - **5 Pipelines** — 🟢 New Dev → 🟕 Continue → 🟤 Bug Fix → 🟡 Direction Change → 🟣 Crew-Driven (external planning artifact integration)
45
- - **Crew Artifact Integration** — Reads external planning output (PRD, Architecture, ARB Checklist) directly — no manual copy needed
46
- - **State Files** — 5 markdown files that persist project knowledge across LLM sessions
47
- - **Skills** — Step-by-step procedures for planning, review, debugging, and direction changes
48
- - **Agents** — Role-based personas that enforce the workflow (pm, reviewer, lead)
49
- - **Failure Patterns** — Project-specific failure log that prevents repeat mistakes
50
- - **Decision Log** — Records why decisions were made so LLMs don't re-debate settled choices
16
+ ---
51
17
 
52
18
  ## Quick Start
53
19
 
54
20
  ```bash
55
- # Solo mode (default)
56
- npx @kodevibe/harness init
57
-
58
- # Team mode (multi-developer)
59
- npx @kodevibe/harness init --team
21
+ npx @kodevibe/harness init # pick your IDE
60
22
  ```
61
23
 
62
- Select your IDE when prompted. Files are installed into the current directory.
63
-
64
- After installation, ask your LLM to run the `setup` skill:
65
-
24
+ ```bash
25
+ # Then tell your AI agent:
66
26
  > "Run setup to onboard this project."
27
+ ```
67
28
 
68
- This scans your codebase and fills all 5 state files automatically.
29
+ That's it. Your AI now has persistent memory, direction guardrails, and self-correction loops.
69
30
 
70
- ### Non-interactive
31
+ <details>
32
+ <summary>More install options</summary>
71
33
 
72
34
  ```bash
35
+ # Team mode (multi-developer direction alignment)
36
+ npx @kodevibe/harness init --team
37
+
38
+ # Non-interactive (CI/scripts)
73
39
  npx @kodevibe/harness init --ide vscode
74
40
  npx @kodevibe/harness init --ide claude
75
41
  npx @kodevibe/harness init --ide cursor
@@ -78,8 +44,6 @@ npx @kodevibe/harness init --ide windsurf
78
44
  npx @kodevibe/harness init --ide antigravity
79
45
  ```
80
46
 
81
- ### Options
82
-
83
47
  | Flag | Description |
84
48
  |------|-------------|
85
49
  | `--ide <name>` | Target IDE: `vscode`, `claude`, `cursor`, `codex`, `windsurf`, `antigravity` |
@@ -90,39 +54,70 @@ npx @kodevibe/harness init --ide antigravity
90
54
  | `--overwrite` | Overwrite existing files (including state files) |
91
55
  | `--version` | Show version number |
92
56
 
93
- ### Health Check
57
+ </details>
94
58
 
95
- ```bash
96
- # Verify kode:harness files are installed
97
- npx @kodevibe/harness doctor
59
+ ---
98
60
 
99
- # Verify state files have real content (not just placeholders)
100
- npx @kodevibe/harness validate
101
- ```
61
+ ## The Problem: Context Rot
62
+
63
+ Your AI coding agent starts every session from zero. By session 3, it's forgotten the architecture decisions from session 1. By session 10, it's re-debating settled choices and contradicting its own earlier work.
64
+
65
+ In teams, it's worse — Developer A's AI refactors toward microservices while Developer B's AI doubles down on the monolith. **Without shared guardrails, AI agents pull the project apart.**
66
+
67
+ kode:harness solves this with three mechanisms:
68
+
69
+ | Mechanism | What it prevents |
70
+ |-----------|-----------------|
71
+ | **State Persistence** | AI forgetting goals, decisions, and progress between sessions |
72
+ | **Direction Guard** | AI drifting away from project goals or contradicting past decisions |
73
+ | **Failure Patterns** | AI repeating the same mistakes across sessions |
102
74
 
103
- ### IDE Configuration (Optional)
75
+ ---
104
76
 
105
- Large projects with crew artifacts may require increased turn limits:
77
+ ## Why not just...?
106
78
 
107
- | IDE | Setting | Recommended |
108
- |-----|---------|-------------|
109
- | VS Code | `chat.agent.maxRequests` in settings.json | `100` |
110
- | Cursor | Auto-managed | Default OK |
111
- | Windsurf | Auto-managed | Default OK |
112
- | Claude Code | Terminal-based | Default OK |
79
+ | Approach | Limitation | kode:harness difference |
80
+ |----------|-----------|------------------------|
81
+ | **`.cursorrules` / `copilot-instructions.md`** | Static. No state persistence, no self-correction, no cross-session memory. | Living state files that update every session. Direction Guard checks every request against goals. |
82
+ | **LangChain / CrewAI** | Runtime orchestration for building AI apps. Not for directing AI coding agents. | Markdown-native guardrails that work inside your IDE. No runtime, no SDK. |
83
+ | **BMAD / gstack / GSD** | Built for solo developers. 200+ files. No direction management. | ~25 files (~17K tokens). Direction Guard + Decision Log. Multi-developer team support. |
84
+ | **"I'll just be careful"** | Works until you forget. LLMs don't learn from past sessions. | Automated: `wrap-up` captures lessons, `debug` tracks failures, `reviewer` audits state. |
113
85
 
114
- > This is only needed when running `setup` with crew artifacts on projects that have many existing frameworks. Normal coding/review operations work within default limits.
86
+ ---
87
+
88
+ ## What It Does
89
+
90
+ | Feature | Description |
91
+ |---------|-------------|
92
+ | 🛡️ **Direction Guard** | Every coding request is checked against project goals/non-goals before execution |
93
+ | 🧭 **Navigation Dispatcher** | Turn-by-Turn navigation through 5 pipelines with copy-paste next-step prompts |
94
+ | 📝 **State Persistence** | 5 markdown files that persist project knowledge across LLM sessions |
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 |
97
+ | 🤖 **4 Agents** | Role-based personas: pm, reviewer, lead, architect |
98
+ | ⚠️ **Failure Patterns** | Project-specific failure log that prevents repeat mistakes across sessions |
99
+ | 📋 **Decision Log** | Records why decisions were made so LLMs don't re-debate settled choices |
100
+ | 🟣 **Crew Artifact Integration** | Reads external planning output (PRD, Architecture, ARB Checklist) directly |
101
+
102
+ ---
103
+
104
+ ## Health Check
105
+
106
+ ```bash
107
+ npx @kodevibe/harness doctor # verify files are installed
108
+ npx @kodevibe/harness validate # verify state files have real content
109
+ ```
115
110
 
116
111
  ## Supported IDEs
117
112
 
118
113
  | IDE | Dispatcher (always-on) | Skills | Agents |
119
114
  |-----|----------------------|--------|--------|
120
115
  | **VS Code Copilot** | `.github/copilot-instructions.md` | `.github/skills/*/SKILL.md` | `.github/agents/*.agent.md` |
121
- | **Claude Code** | `.claude/rules/core.md` | `.claude/skills/*/SKILL.md` | `.claude/agents/*.md` |
122
- | **Cursor** | `.cursor/rules/core.mdc` | `.cursor/skills/*/SKILL.md` | `.cursor/agents/*.md` |
123
- | **Codex** | `AGENTS.md` | `.agents/skills/*/SKILL.md` | `.codex/agents/*.toml` |
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` |
124
119
  | **Windsurf** | `.windsurf/rules/core.md` | `.windsurf/skills/*/SKILL.md` | *(agents installed as skills)* |
125
- | **Antigravity** | `GEMINI.md` | `.gemini/skills/*/SKILL.md` | `.gemini/agents/*.md` |
120
+ | **Antigravity** | `GEMINI.md` (+ `AGENTS.md`) | `.gemini/skills/*/SKILL.md` | `.gemini/agents/*.md` |
126
121
 
127
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.
128
123
 
@@ -240,11 +235,13 @@ These 8 rules are enforced across all skills and agents. They form the quality b
240
235
 
241
236
  See [docs/reference.md](docs/reference.md) for detailed descriptions of every skill, agent, rule, and state file.
242
237
 
243
- ## Why kode:harness?
238
+ ## Why We Built This
239
+
240
+ Existing AI coding frameworks focus on **what the AI does** — generate code, run tests, deploy. But the real problem isn't capability. It's **direction**.
244
241
 
245
- ### The Core Insight
242
+ When one developer uses AI, direction stays consistent. But in teams, each developer's AI drifts independently. And even solo developers lose direction across sessions — what we call **Context Rot**. The AI forgets architecture decisions, re-debates settled choices, and contradicts its own earlier work.
246
243
 
247
- Existing AI coding frameworks focus on **what the AI does** (generate code, run tests, deploy). kode:harness focuses on **where the AI is going**ensuring every developer's AI moves in the same direction. harness engineering is the discipline that keeps the whole team on course.
244
+ kode:harness focuses on **where the AI is going**. It gives every AI session across developers, across IDEs, across timethe same goals, decisions, and project state. The underlying discipline is **harness engineering**: lightweight, markdown-native guardrails that any LLM can read.
248
245
 
249
246
  ### Crew Artifact Integration (🟣 Pipeline)
250
247
 
@@ -262,7 +259,7 @@ Bootstrap auto-detects crew artifacts in `docs/crew/`, `docs/PM/`, `docs/Analyst
262
259
 
263
260
  Original crew documents are **never modified**. Only the index and tracker are created.
264
261
 
265
- ### Comparison
262
+ ### How It Compares
266
263
 
267
264
  | | BMAD v6.2.2 | gstack v0.15.1 | GSD v1.33.0 | kode:harness |
268
265
  |---|---|---|---|---|
@@ -277,7 +274,7 @@ Original crew documents are **never modified**. Only the index and tracker are c
277
274
 
278
275
  ## Roadmap
279
276
 
280
- 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.2** — state-check skill, Iron Law #10 (Self-Verify), Confirmation Gate Defaults, multi-IDE installation fixes, and CI Artifact Index for crew mode.
281
278
 
282
279
  | Phase | Version | Status | Focus |
283
280
  |---|---|---|---|
@@ -285,7 +282,8 @@ kode:harness is at **v0.9.0** — naming redesign complete, 6 IDE support, Navig
285
282
  | **Hardening** | v0.6.5 | ✅ Done | 10 skills, 4 agents, Iron Laws, CLI batch/doctor/validate, merge conflict SOP, direction drift detection |
286
283
  | **Flexibility** | v0.7.x | ✅ Done | Delegate team conventions to project-brief.md, remove prescriptive rules |
287
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 |
288
- | **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 | ✅ Current | state-check skill, Iron Law #10, Confirmation Gate Defaults, multi-IDE fix, CI Artifact Index |
289
287
  | **Validation** | v1.0 | 🔜 Next | Real-world project adoption, user feedback collection |
290
288
 
291
289
  ### What's Next
@@ -63,6 +63,36 @@ Apply these insights when creating the implementation plan. If the memory file i
63
63
 
64
64
  > **Team Mode**: In Team mode, agent memory is personal (`.harness/agent-memory/`). Each developer accumulates their own planning insights.
65
65
 
66
+ ### Step 0.7: Feature Roadmap Planning (Draft & Correct)
67
+
68
+ **Trigger**: `docs/project-brief.md`에 `## Feature Roadmap` 섹션이 없을 때
69
+
70
+ <!-- CREW_MODE_START -->
71
+ **Crew 파이프라인(🟣)**: FR목록이 이미 Roadmap 역할을 하므로 이 Step을 skip한다.
72
+ <!-- CREW_MODE_END -->
73
+
74
+ 1. `docs/project-brief.md`의 Goals + `docs/dependency-map.md`의 현재 모듈 구조를 읽는다
75
+ 2. Phase 구조의 Feature Roadmap **초안**을 생성한다:
76
+ ```
77
+ ## Feature Roadmap
78
+
79
+ ### Phase 1 — Core (Goal 달성 필수)
80
+ - [ ] F-001: [기능명] — [어떤 Goal에 대응하는지]
81
+ - [ ] F-002: ...
82
+
83
+ ### Phase 2 — Enhancement (사용성/완성도)
84
+ - [ ] F-003: ...
85
+
86
+ ### Phase 3 — Nice-to-have
87
+ - [ ] F-004: ...
88
+ ```
89
+ 3. 사용자에게 초안을 제시한다: **"이 Feature Roadmap을 검토하고, 추가/삭제/순서 변경을 알려주세요."**
90
+ > **물어보지 말고, 초안을 만들어서 교정받는다.** 빈 칸을 채우는 것보다 틀린 것을 고치는 것이 쉽다.
91
+ 4. 사용자 교정을 반영한 최종 Roadmap을 `docs/project-brief.md`에 `## Feature Roadmap` 섹션으로 기록한다
92
+ 5. Feature Roadmap이 확정되면 아래 "For New Feature" 절차로 진행한다
93
+
94
+ > **pivot 이후**: pivot이 `project-brief.md`를 업데이트하면, pm은 변경된 Roadmap을 읽고 Checkpoint에서 반영한다.
95
+
66
96
  ### For New Feature
67
97
 
68
98
  1. Read `docs/project-brief.md` to understand project vision, goals, **non-goals**, and **Decision Log**
@@ -196,6 +226,16 @@ After user approves the plan, perform these writes in order:
196
226
 
197
227
  If any write fails, report the failure and retry. Do NOT proceed to 🧭 with incomplete state files.
198
228
 
229
+ ### ✅ MANDATORY: Self-Verify with state-check (Iron Law #10)
230
+
231
+ After the Post-Approval state writes complete, run the `state-check` skill:
232
+ 1. Invoke `state-check` skill — deterministic verification of state file consistency
233
+ 2. If state-check returns **PASS** → proceed to output 🧭 Next Step
234
+ 3. If state-check returns **WARN** → include the warnings in the plan output, then proceed
235
+ 4. If state-check returns **FAIL** → do NOT output STATUS: DONE. Fix the listed drift, then re-run state-check.
236
+
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
+
199
239
  ## Output Format
200
240
 
201
241
  ### New Feature Plan
@@ -249,6 +289,50 @@ Use this format when Crew Artifact Index exists in project-brief.md. If no Artif
249
289
  ```
250
290
  <!-- CREW_MODE_END -->
251
291
 
292
+ ## Sprint Completion Checkpoint
293
+
294
+ **Trigger**: 현재 Sprint의 모든 Story가 ✅ 완료되었을 때 (reviewer pass → pm checkpoint)
295
+
296
+ 이 절차는 Sprint 종료 시 자동으로 실행된다. "계속할까요?"가 아니라 **구체적 선택을 강제**한다.
297
+
298
+ ### 절차
299
+
300
+ 1. **진척 현황 읽기**:
301
+ <!-- CREW_MODE_START -->
302
+ - 🟣 crew 파이프라인: `docs/project-brief.md`의 Validation Tracker에서 FR Coverage를 읽는다
303
+ <!-- CREW_MODE_END -->
304
+ - 🟢🔵 no-crew 파이프라인: `docs/project-brief.md`의 Feature Roadmap을 읽는다
305
+
306
+ 2. **Phase별 진척 표시**:
307
+ ```
308
+ 📊 Feature Roadmap Progress
309
+ Phase 1 (Core): ████████░░ 4/5
310
+ Phase 2 (Enhancement): ░░░░░░░░░░ 0/3
311
+ Phase 3 (Nice-to-have): ░░░░░░░░░░ 0/2
312
+ ```
313
+
314
+ 3. **선택지 제시** (Yes/No 아님 — Selection Forcing):
315
+ ```
316
+ 다음 Sprint에 포함할 기능을 선택하세요:
317
+
318
+ Phase 1 (Core) — 미완료:
319
+ [ ] F-005: [기능명]
320
+
321
+ Phase 2 (Enhancement):
322
+ [ ] F-006: [기능명]
323
+ [ ] F-007: [기능명]
324
+
325
+ 🏁 마무리: 현재 상태로 프로젝트를 완료하고 wrap-up 진행
326
+ ```
327
+ > **"계속"은 선택지에 없다.** 사용자는 구체적 기능을 골라야 하거나, 명시적으로 "마무리"를 선택해야 한다.
328
+
329
+ 4. **사용자 선택에 따라 분기**:
330
+ - **기능 선택** → 선택된 기능으로 Sprint 계획 (위의 "For New Feature" 절차 진행)
331
+ - **"마무리" 선택** → 🧭 Next Step을 `wrap-up`으로 출력
332
+ - Feature Roadmap에 없는 기능 추가 요청 → Roadmap에 먼저 추가한 후 Sprint 계획
333
+
334
+ 5. **Roadmap 업데이트**: 완료된 기능의 체크박스를 `[x]`로 변경하고 `docs/project-brief.md`에 기록
335
+
252
336
  ### Architecture Query Response
253
337
  ```markdown
254
338
  ## Module: [name]
@@ -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,6 +208,9 @@ 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
  ```
@@ -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
 
@@ -98,7 +99,7 @@ When a skill or agent reports STATUS: DONE, output the next step in this format:
98
99
  | `lead` (story started) | [Coding] | "S{N}-{M} 구현을 시작해줘" → 완료 후 **새 채팅**에서 `@reviewer` 호출 |
99
100
  | [Coding done] | `reviewer` | "S{N}-{M} 코드를 리뷰해줘" |
100
101
  | `reviewer` (pass, more stories) | Commit → `lead` | \"커밋 후 다음 Story는?\" |
101
- | `reviewer` (pass, all done) | Commit → `wrap-up` | \"커밋 후 세션 마무리해줘\" |
102
+ | `reviewer` (pass, sprint all done) | Commit → `pm` checkpoint | \"커밋 후 Sprint 완료 — pm checkpoint 실행\" |
102
103
  | `reviewer` (STATE-AUDIT) | `wrap-up` | "state 파일을 정리하고 세션 마무리해줘" |
103
104
  | `debug` | `reviewer` | "수정한 코드를 리뷰해줘" |
104
105
  | `pivot` | `pm` | "변경된 방향에 맞춰 재계획해줘" |
@@ -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
@@ -77,6 +95,9 @@ Verify all state files are up to date:
77
95
  - [x/✗] Security scan clean
78
96
  - [x/✗] Git status clean
79
97
  - [x/✗] Release notes prepared
98
+ <!-- CREW_MODE_START -->
99
+ - [x/✗/–] CI standards (🟣): [verdict] — `–` if no CI Artifact Index
100
+ <!-- CREW_MODE_END -->
80
101
 
81
102
  ### Verdict: READY / NOT_READY
82
103
  [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
 
@@ -307,14 +318,14 @@ When starting a NEW session (not during setup), read these files in order:
307
318
  When running setup in Team mode:
308
319
 
309
320
  ### New Project (first developer)
310
- 1. Run `musher init --team` to create shared + personal state files
321
+ 1. Run `@kodevibe/harness init --team` to create shared + personal state files
311
322
  2. Fill all state files via normal setup procedure
312
323
  3. Commit shared files (docs/) to git
313
324
  4. Push to remote — teammates will clone this
314
325
 
315
326
  ### Joining Developer (existing project)
316
327
  1. Clone the repository (shared docs/ already exist)
317
- 2. Run `musher init --team` — only personal files (.harness/) are created; shared files are skipped
328
+ 2. Run `@kodevibe/harness init --team` — only personal files (.harness/) are created; shared files are skipped
318
329
  3. **DO NOT re-run setup interviews** — shared state is already filled by the first developer
319
330
  4. Review docs/project-brief.md to understand project goals
320
331
  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.0",
3
+ "version": "0.9.3",
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 = [
@@ -250,8 +251,14 @@ function generateVscode(targetDir, overwrite, mode = 'solo', crew = false) {
250
251
  }
251
252
 
252
253
  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);
254
+ const coreRules = resolveContent(readTemplate('core-rules.md'), mode, crew);
255
+
256
+ // CLAUDE.md — Claude Code's canonical project memory file (auto-loaded at session start)
257
+ writeFile(targetDir, 'CLAUDE.md', coreRules, true);
258
+
259
+ // .claude/rules/core.md — secondary dispatcher (also auto-loaded by Claude Code's
260
+ // InstructionsLoaded mechanism; kept for redundancy and rule-discovery tooling)
261
+ writeFile(targetDir, '.claude/rules/core.md', coreRules, true);
255
262
 
256
263
  // Skills (SKILL.md with frontmatter)
257
264
  writeSkills(targetDir, '.claude/skills', true, mode, crew);
@@ -271,6 +278,9 @@ function generateCursor(targetDir, overwrite, mode = 'solo', crew = false) {
271
278
  coreRules;
272
279
  writeFile(targetDir, '.cursor/rules/core.mdc', coreMdc, true);
273
280
 
281
+ // AGENTS.md — Cursor CLI also reads project-root AGENTS.md as a rule
282
+ writeFile(targetDir, 'AGENTS.md', coreRules, true);
283
+
274
284
  // Skills (.cursor/skills — invokable by mentioning skill name)
275
285
  writeSkills(targetDir, '.cursor/skills', true, mode, crew);
276
286
 
@@ -282,14 +292,16 @@ function generateCursor(targetDir, overwrite, mode = 'solo', crew = false) {
282
292
  }
283
293
 
284
294
  function generateCodex(targetDir, overwrite, mode = 'solo', crew = false) {
285
- // AGENTS.md — dispatcher only
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.
286
297
  writeFile(targetDir, 'AGENTS.md', resolveContent(readTemplate('core-rules.md'), mode, crew), true);
287
298
 
288
299
  // Skills (SKILL.md with frontmatter — invokable via $skill-name)
289
300
  writeSkills(targetDir, '.agents/skills', true, mode, crew);
290
301
 
291
- // Agents (.codex/agents/ — Codex TOML agent definition files)
292
- writeAgentsAsToml(targetDir, '.codex/agents', true, mode, crew);
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);
293
305
 
294
306
  // State files (respect user's --overwrite for data files)
295
307
  writeStateFiles(targetDir, overwrite, mode, crew);
@@ -314,8 +326,14 @@ function generateWindsurf(targetDir, overwrite, mode = 'solo', crew = false) {
314
326
  }
315
327
 
316
328
  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);
329
+ const coreRules = resolveContent(readTemplate('core-rules.md'), mode, crew);
330
+
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
336
+ writeFile(targetDir, 'AGENTS.md', coreRules, true);
319
337
 
320
338
  // Skills (.gemini/skills/ — SKILL.md format)
321
339
  writeSkills(targetDir, '.gemini/skills', true, mode, crew);
@@ -520,14 +538,16 @@ function runDoctor(targetDir) {
520
538
  }
521
539
  }
522
540
 
523
- // Check for IDE-specific files (detect which IDE was used)
541
+ // Check for IDE-specific files (detect which IDE was used).
542
+ // Order matters: IDE-unique markers MUST be checked before AGENTS.md,
543
+ // because Cursor and Antigravity now also emit AGENTS.md for compat.
524
544
  const ideChecks = [
525
545
  ['.github/copilot-instructions.md', 'vscode'],
526
546
  ['.claude/rules/core.md', 'claude'],
527
547
  ['.cursor/rules/core.mdc', 'cursor'],
528
- ['AGENTS.md', 'codex'],
529
548
  ['.windsurf/rules/core.md', 'windsurf'],
530
549
  ['GEMINI.md', 'antigravity'],
550
+ ['AGENTS.md', 'codex'],
531
551
  ];
532
552
 
533
553
  let detectedIde = null;