@kodevibe/harness 0.9.6 → 0.11.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.ko.md +32 -13
- package/README.md +32 -13
- package/harness/agents/lead.md +31 -8
- package/harness/agents/pm.md +42 -35
- package/harness/agents/reviewer.md +25 -3
- package/harness/core-rules.md +28 -14
- package/harness/project-brief.md +38 -28
- package/harness/project-state.md +31 -5
- package/harness/skills/breakdown.md +1 -0
- package/harness/skills/pivot.md +2 -0
- package/harness/skills/setup.md +19 -1
- package/harness/skills/state-check.md +15 -2
- package/harness/skills/wrap-up.md +12 -0
- package/package.json +4 -2
- package/src/init.js +1 -1
package/README.ko.md
CHANGED
|
@@ -13,6 +13,10 @@
|
|
|
13
13
|
|
|
14
14
|
AI 코딩 에이전트를 위한 프로덕션급 가드레일. 컨텍스트 부패를 방지하고, 프로젝트 방향을 강제하며, 세션 간 상태를 유지합니다. **Copilot, Claude, Cursor, Codex, Windsurf, Gemini** 지원. 의존성 제로.
|
|
15
15
|
|
|
16
|
+
> **에코시스템 내 위치.** kode:harness는 **kode:vibe** 에코시스템의 *실행(execution)* 레이어입니다 — 계획 레이어(PRD / 아키텍처 / ARB)와 인프라 레이어(CI / 런타임) 사이에 위치하며, 코딩 중 AI의 방향을 잡아주는 역할을 합니다. 다른 레이어는 선택이며, kode:harness만 독립적으로 쓸 수 있습니다.
|
|
17
|
+
|
|
18
|
+
> **Pre-1.0 안정성 고지.** 0.x 활발 개발 단계. CLI 플래그·상태 파일·스킬/에이전트 계약은 minor 버전 간 변경될 수 있습니다. v1.0.0은 IDE 호환·외부 production 사용이 30일 이상 동결된 후에야 컷합니다.
|
|
19
|
+
|
|
16
20
|
---
|
|
17
21
|
|
|
18
22
|
## 빠른 시작
|
|
@@ -28,6 +32,8 @@ npx @kodevibe/harness init # IDE 선택
|
|
|
28
32
|
|
|
29
33
|
끝입니다. 이제 AI는 영속적인 메모리, 방향 가드레일, 자기 교정 루프를 갖게 됩니다.
|
|
30
34
|
|
|
35
|
+
v0.11부터는 **Proof-First Enforcement**가 Common Mode Confidence Loop 위에 추가됩니다. pm은 실행 가능한 proof를 계획해야 하고, lead는 증거 없이 Story를 완료 처리하지 않으며, reviewer는 proof가 없거나 실패하면 커밋 안내 전에 멈추고, state-check는 Proof Ledger 누락을 점검합니다.
|
|
36
|
+
|
|
31
37
|
<details>
|
|
32
38
|
<summary>추가 설치 옵션</summary>
|
|
33
39
|
|
|
@@ -71,6 +77,7 @@ kode:harness는 세 가지 메커니즘으로 해결합니다:
|
|
|
71
77
|
| **상태 영속성** | AI가 세션 간 목표, 결정, 진행 상황을 잊는 것 |
|
|
72
78
|
| **방향 가드** | AI가 프로젝트 목표에서 이탈하거나 과거 결정과 모순되는 것 |
|
|
73
79
|
| **실패 패턴** | AI가 세션 간 같은 실수를 반복하는 것 |
|
|
80
|
+
| **Proof Ledger** | 테스트·스모크 증거 없이 진행됐다고 착각하는 것 |
|
|
74
81
|
|
|
75
82
|
---
|
|
76
83
|
|
|
@@ -90,7 +97,10 @@ kode:harness는 세 가지 메커니즘으로 해결합니다:
|
|
|
90
97
|
| 기능 | 설명 |
|
|
91
98
|
|------|------|
|
|
92
99
|
| 🛡️ **Direction Guard** | 모든 코딩 요청을 프로젝트 목표/비목표와 대조 후 실행 |
|
|
93
|
-
| 🧭 **
|
|
100
|
+
| 🧭 **Quiet Navigator** | 현재 목표와 필요한 증거 중심의 짧은 다음 행동 안내 |
|
|
101
|
+
| ✅ **Evidence-Gated Progress Board** | 테스트/스모크 증거가 있어야 Planned → Proof Pending → Proven으로 진행 |
|
|
102
|
+
| 📒 **Proof Ledger** | review/wrap-up 출력에 명령어, 결과, 관찰 증거를 짧게 기록 |
|
|
103
|
+
| 🔒 **Proof-First Enforcement** | pm/lead/reviewer/state-check가 모호한 계획, 증거 없는 완료, 실패한 테스트, 누락된 proof 기록을 막음 |
|
|
94
104
|
| 📝 **상태 영속성** | LLM 세션 간 프로젝트 지식을 유지하는 5개 마크다운 파일 |
|
|
95
105
|
| 🔄 **5개 파이프라인** | 🟢 신규 → 🔵 계속 → 🔴 버그 수정 → 🟡 방향 전환 → 🟣 Crew 기반 |
|
|
96
106
|
| 🛠️ **11개 스킬** | 단계별 절차: setup, debug, breakdown, review, pivot, state-check 등 |
|
|
@@ -112,14 +122,16 @@ npx @kodevibe/harness validate # state 파일에 실제 내용 확인
|
|
|
112
122
|
|
|
113
123
|
## 지원 IDE
|
|
114
124
|
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
|
118
|
-
|
|
119
|
-
| **
|
|
120
|
-
| **
|
|
121
|
-
| **
|
|
122
|
-
| **
|
|
125
|
+
어떤 걸 고를지 모르겠다면? 이미 코딩하고 있는 IDE를 그대로 고르면 됩니다 — 모든 경로는 동일한 `harness/` 소스에서 생성되므로 스킬/에이전트 내용은 동일합니다:
|
|
126
|
+
|
|
127
|
+
| IDE | 이럴 때 고르세요 | 디스패처 (always-on) | 스킬 | 에이전트 |
|
|
128
|
+
|-----|--------------------|---------------------|------|----------|
|
|
129
|
+
| **VS Code Copilot** | VS Code를 주로 쓰고 GitHub Copilot Chat 사용. | `.github/copilot-instructions.md` | `.github/skills/*/SKILL.md` | `.github/agents/*.agent.md` |
|
|
130
|
+
| **Claude Code** | 터미널/Claude Code CLI 선호. | `CLAUDE.md` (+ `.claude/rules/core.md`) | `.claude/skills/*/SKILL.md` | `.claude/agents/*.md` |
|
|
131
|
+
| **Cursor** | Cursor 에디터 사용. | `.cursor/rules/core.mdc` (+ `AGENTS.md`) | `.agents/skills/*/SKILL.md` (cross-tool) | `.cursor/rules/<agent>.mdc` |
|
|
132
|
+
| **Codex** | OpenAI Codex CLI 서브에이전트 사용. | `AGENTS.md` | `.agents/skills/*/SKILL.md` | `.codex/agents/*.toml` |
|
|
133
|
+
| **Windsurf** | Codeium/Windsurf 사용. | `.windsurf/rules/core.md` | `.windsurf/skills/*/SKILL.md` | *(스킬로 설치)* |
|
|
134
|
+
| **Antigravity** | Google Antigravity / Gemini 사용. | `AGENTS.md` | `.agents/skills/*/SKILL.md` (cross-tool) | `.agents/rules/<agent>.md` |
|
|
123
135
|
|
|
124
136
|
모든 IDE에 `docs/` 디렉토리에 State 파일(`project-state.md`, `project-brief.md`, `features.md`, `failure-patterns.md`, `dependency-map.md`)도 함께 설치됩니다.
|
|
125
137
|
|
|
@@ -244,7 +256,7 @@ npx @kodevibe/harness init --team
|
|
|
244
256
|
|
|
245
257
|
## Iron Laws
|
|
246
258
|
|
|
247
|
-
|
|
259
|
+
11개 규칙이 모든 스킬과 에이전트에 적용됩니다. kode:harness로 관리되는 프로젝트의 품질 근간을 형성합니다.
|
|
248
260
|
|
|
249
261
|
| # | 규칙 | 적용 대상 |
|
|
250
262
|
|---|------|----------|
|
|
@@ -256,6 +268,9 @@ npx @kodevibe/harness init --team
|
|
|
256
268
|
| 6 | **의존성 맵** — 모듈 추가/수정 → 같은 커밋에서 `dependency-map.md` 업데이트 | `reviewer`, `wrap-up` |
|
|
257
269
|
| 7 | **기능 레지스트리** — 새 기능 → 같은 커밋에서 `features.md`에 등록 | `reviewer`, `wrap-up` |
|
|
258
270
|
| 8 | **세션 핸드오프** — 세션 종료 → `project-state.md` Quick Summary 업데이트 | `wrap-up` |
|
|
271
|
+
| 9 | **Common First** — Common 모드는 crew 산출물 없이 동작해야 하며 crew-only 로직은 marker block 안에만 둠 | 모든 에이전트 |
|
|
272
|
+
| 10 | **Self-Verify** — DONE 보고 전 `state-check` 실행. FAIL이면 DONE 금지 | 모든 에이전트 |
|
|
273
|
+
| 11 | **Proof First** — passing proof 없이는 Story를 Proven, Reviewed, DONE, commit guidance로 이동 금지 | `pm`, `lead`, `reviewer`, `state-check` |
|
|
259
274
|
|
|
260
275
|
---
|
|
261
276
|
|
|
@@ -292,7 +307,7 @@ Bootstrap이 `docs/crew/`, `docs/PM/`, `docs/Analyst/`, `docs/ARB/`에서 crew
|
|
|
292
307
|
| 의존성 | Node 20+ | Bun + Node + Playwright | Node 18+ | **Zero** |
|
|
293
308
|
| IDE 지원 | 20+ (installer) | 5 (setup --host) | 13 (runtime select) | 6 (네이티브 포맷) |
|
|
294
309
|
| 방향 관리 | ❌ | ❌ | ❌ | ✅ (Direction Guard + pivot + Decision Log) |
|
|
295
|
-
| Iron Laws (코드 품질 규칙) | ❌ | ❌ | ❌ | ✅ (
|
|
310
|
+
| Iron Laws (코드 품질 규칙) | ❌ | ❌ | ❌ | ✅ (11개 규칙이 스킬에 임베딩) |
|
|
296
311
|
| Cold start | ❌ | ❌ | `/gsd-new-project` | ✅ (`setup` 스킬) |
|
|
297
312
|
| 태스크당 컨텍스트 | 4-6 파일 | 1 파일 | 매번 200k 플랜 | **2-3 파일 (136줄 디스패처)** |
|
|
298
313
|
|
|
@@ -300,7 +315,7 @@ Bootstrap이 `docs/crew/`, `docs/PM/`, `docs/Analyst/`, `docs/ARB/`에서 crew
|
|
|
300
315
|
|
|
301
316
|
## 로드맵
|
|
302
317
|
|
|
303
|
-
kode:harness는 현재 **v0.
|
|
318
|
+
kode:harness는 현재 **v0.11.0** — Common Mode의 proof-first 동작을 강제합니다. Proof Plan은 정확한 명령/체크여야 하고, Story 완료는 증거 없이는 막히며, reviewer는 proof 실패/누락 시 멈추고, state-check는 Proof Ledger 누락을 점검합니다.
|
|
304
319
|
|
|
305
320
|
| 단계 | 버전 | 상태 | 초점 |
|
|
306
321
|
|------|------|------|------|
|
|
@@ -312,11 +327,15 @@ kode:harness는 현재 **v0.9.6** — init이 덮어쓰는 IDE 파일을 `.harne
|
|
|
312
327
|
| **Self-Verify** | v0.9.2 | ✅ 완료 | state-check 스킬, Iron Law #10, Confirmation Gate Defaults, 멀티 IDE 수정, CI Artifact Index |
|
|
313
328
|
| **IDE Realignment** | v0.9.4 | ✅ 완료 | 6개 IDE 어댑터 공식 문서 정합; Antigravity `.agents/`, Codex `.toml`, Cursor `.cursor/rules/`; release 스킬 Step 6.5 + qa-check.sh §10 회귀 가드 |
|
|
314
329
|
| **Consistency & Budget** | v0.9.5 | ✅ 완료 | reviewer.md Iron Laws stale 수정, 디스패처 동기화, 경량성 예산 재교정(40K/1500/2500) 및 근거 기록 |
|
|
315
|
-
| **
|
|
330
|
+
| **Drift Guard & Positioning** | v0.9.7 | ✅ 완료 | `harness/`↔`.github/` drift 가드, reviewer working-proof 게이트, kode:vibe 위치 안내, IDE 선택 가이드, project-brief 예시 |
|
|
331
|
+
| **Confidence Loop** | v0.10.0 | ✅ 완료 | Goal Card, Quiet Navigator, Evidence-Gated Progress Board, Proof Ledger, QA/content 회귀 테스트 |
|
|
332
|
+
| **Proof-First Enforcement** | v0.11.0 | ✅ 현재 | Mandatory Proof Plan, lead proof blocker, reviewer proof blocker, state-check Proof Ledger coverage |
|
|
333
|
+
| **Safety & Branding** | v0.9.6 | ✅ 완료 | init overwrite 백업, 배포 파일 pm 네이밍 정리, LICENSE 브랜딩 정리 |
|
|
316
334
|
| **Validation** | v1.0 | 🔜 다음 | 실사용 검증, 사용자 피드백 수집 |
|
|
317
335
|
|
|
318
336
|
### 다음 단계
|
|
319
337
|
|
|
338
|
+
- [ ] 파일럿: 실제 프로젝트에서 v0.11 Common Mode proof coverage 측정
|
|
320
339
|
- [ ] 파일럿: 외부 기획 산출물을 kode:harness의 🟣 파이프라인으로 실제 프로젝트에 적용
|
|
321
340
|
- [ ] 실제 프로젝트에 kode:harness를 적용하고 사용 데이터 수집
|
|
322
341
|
- [ ] 사용 사례 문서화: Solo vs Team, crew vs no-crew
|
package/README.md
CHANGED
|
@@ -13,6 +13,10 @@
|
|
|
13
13
|
|
|
14
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
|
+
> **Where this fits.** kode:harness is the *execution* layer of the **kode:vibe** ecosystem — it sits between a planning layer (PRD / architecture / ARB) and an infrastructure layer (CI / runtime). kode:harness keeps the AI on direction while you code; the other layers are optional. You can use kode:harness alone.
|
|
17
|
+
|
|
18
|
+
> **Pre-1.0 stability notice.** Active 0.x development. CLI flags, state files, and skill/agent contracts may change between minor versions. v1.0.0 ships only after 30 days of frozen IDE compatibility matrix + external production usage.
|
|
19
|
+
|
|
16
20
|
---
|
|
17
21
|
|
|
18
22
|
## Quick Start
|
|
@@ -28,6 +32,8 @@ npx @kodevibe/harness init # pick your IDE
|
|
|
28
32
|
|
|
29
33
|
That's it. Your AI now has persistent memory, direction guardrails, and self-correction loops.
|
|
30
34
|
|
|
35
|
+
v0.11 adds **Proof-First Enforcement** on top of the Common Mode Confidence Loop: pm must define runnable proof, lead cannot mark a Story done without passing evidence, reviewer blocks commit guidance when proof is missing or failing, and state-check audits Proof Ledger coverage.
|
|
36
|
+
|
|
31
37
|
<details>
|
|
32
38
|
<summary>More install options</summary>
|
|
33
39
|
|
|
@@ -71,6 +77,7 @@ kode:harness solves this with three mechanisms:
|
|
|
71
77
|
| **State Persistence** | AI forgetting goals, decisions, and progress between sessions |
|
|
72
78
|
| **Direction Guard** | AI drifting away from project goals or contradicting past decisions |
|
|
73
79
|
| **Failure Patterns** | AI repeating the same mistakes across sessions |
|
|
80
|
+
| **Proof Ledger** | AI claiming progress without tests, smoke proof, or user-visible evidence |
|
|
74
81
|
|
|
75
82
|
---
|
|
76
83
|
|
|
@@ -90,7 +97,10 @@ kode:harness solves this with three mechanisms:
|
|
|
90
97
|
| Feature | Description |
|
|
91
98
|
|---------|-------------|
|
|
92
99
|
| 🛡️ **Direction Guard** | Every coding request is checked against project goals/non-goals before execution |
|
|
93
|
-
| 🧭 **
|
|
100
|
+
| 🧭 **Quiet Navigator** | Short next-action guidance centered on current goal and required evidence |
|
|
101
|
+
| ✅ **Evidence-Gated Progress Board** | Stories move from Planned → Proof Pending → Proven only when tests or smoke proof exist |
|
|
102
|
+
| 📒 **Proof Ledger** | Review and wrap-up outputs record compact proof: command, result, and observation |
|
|
103
|
+
| 🔒 **Proof-First Enforcement** | pm/lead/reviewer/state-check block vague plans, unproven completion, failing tests, and missing proof records |
|
|
94
104
|
| 📝 **State Persistence** | 5 markdown files that persist project knowledge across LLM sessions |
|
|
95
105
|
| 🔄 **5 Pipelines** | 🟢 New Dev → 🔵 Continue → 🔴 Bug Fix → 🟡 Direction Change → 🟣 Crew-Driven |
|
|
96
106
|
| 🛠️ **11 Skills** | Step-by-step procedures: setup, debug, breakdown, review, pivot, state-check, and more |
|
|
@@ -110,14 +120,16 @@ npx @kodevibe/harness validate # verify state files have real content
|
|
|
110
120
|
|
|
111
121
|
## Supported IDEs
|
|
112
122
|
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
|
116
|
-
|
|
117
|
-
| **
|
|
118
|
-
| **
|
|
119
|
-
| **
|
|
120
|
-
| **
|
|
123
|
+
Not sure which to pick? Use the IDE you already code in — each install path is generated from the same `harness/` source, so the underlying skills/agents are identical:
|
|
124
|
+
|
|
125
|
+
| IDE | Pick this if… | Dispatcher (always-on) | Skills | Agents |
|
|
126
|
+
|-----|---------------|----------------------|--------|--------|
|
|
127
|
+
| **VS Code Copilot** | You use VS Code daily and have GitHub Copilot Chat. | `.github/copilot-instructions.md` | `.github/skills/*/SKILL.md` | `.github/agents/*.agent.md` |
|
|
128
|
+
| **Claude Code** | You prefer Claude in the terminal / Claude Code CLI. | `CLAUDE.md` (+ `.claude/rules/core.md`) | `.claude/skills/*/SKILL.md` | `.claude/agents/*.md` |
|
|
129
|
+
| **Cursor** | You use Cursor as your editor. | `.cursor/rules/core.mdc` (+ `AGENTS.md`) | `.agents/skills/*/SKILL.md` (cross-tool) | `.cursor/rules/<agent>.mdc` |
|
|
130
|
+
| **Codex** | You use OpenAI Codex CLI subagents. | `AGENTS.md` | `.agents/skills/*/SKILL.md` | `.codex/agents/*.toml` |
|
|
131
|
+
| **Windsurf** | You use Codeium/Windsurf. | `.windsurf/rules/core.md` | `.windsurf/skills/*/SKILL.md` | *(agents installed as skills)* |
|
|
132
|
+
| **Antigravity** | You use Google Antigravity / Gemini. | `AGENTS.md` | `.agents/skills/*/SKILL.md` (cross-tool) | `.agents/rules/<agent>.md` |
|
|
121
133
|
|
|
122
134
|
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
135
|
|
|
@@ -218,7 +230,7 @@ npx @kodevibe/harness init --team
|
|
|
218
230
|
|
|
219
231
|
## Iron Laws
|
|
220
232
|
|
|
221
|
-
These
|
|
233
|
+
These 11 rules are enforced across all skills and agents. They form the quality backbone of every kode:harness project managed with harness engineering.
|
|
222
234
|
|
|
223
235
|
| # | Law | Enforced By |
|
|
224
236
|
|---|-----|-------------|
|
|
@@ -230,6 +242,9 @@ These 10 rules are enforced across all skills and agents. They form the quality
|
|
|
230
242
|
| 6 | **Dependency Map** — New/modified module → update `dependency-map.md` in the same commit. | `reviewer`, `wrap-up` |
|
|
231
243
|
| 7 | **Feature Registry** — New feature → register in `features.md` in the same commit. | `reviewer`, `wrap-up` |
|
|
232
244
|
| 8 | **Session Handoff** — Session end → update `project-state.md` Quick Summary. | `wrap-up` |
|
|
245
|
+
| 9 | **Common First** — Common mode must work without crew artifacts; crew-only logic stays in crew marker blocks. | All agents |
|
|
246
|
+
| 10 | **Self-Verify** — Run `state-check` before reporting DONE. FAIL blocks DONE. | All agents |
|
|
247
|
+
| 11 | **Proof First** — No Story moves to Proven, Reviewed, DONE, or commit guidance without passing proof. | `pm`, `lead`, `reviewer`, `state-check` |
|
|
233
248
|
|
|
234
249
|
## Documentation
|
|
235
250
|
|
|
@@ -268,13 +283,13 @@ Original crew documents are **never modified**. Only the index and tracker are c
|
|
|
268
283
|
| Dependencies | Node 20+ | Bun + Node + Playwright | Node 18+ | Zero |
|
|
269
284
|
| IDE support | 20+ (installer) | 5 (setup --host) | 13 (runtime select) | 6 (native format) |
|
|
270
285
|
| Direction management | ❌ | ❌ | ❌ | ✅ (Direction Guard + pivot + Decision Log) |
|
|
271
|
-
| Iron Laws (code quality rules) | ❌ | ❌ | ❌ | ✅ (
|
|
286
|
+
| Iron Laws (code quality rules) | ❌ | ❌ | ❌ | ✅ (11 laws embedded in skills) |
|
|
272
287
|
| Cold start | ❌ | ❌ | `/gsd-new-project` | ✅ (`setup` skill) |
|
|
273
288
|
| Context per task | 4-6 files | 1 file | Fresh 200k per plan | 2-3 files (136-line dispatcher) |
|
|
274
289
|
|
|
275
290
|
## Roadmap
|
|
276
291
|
|
|
277
|
-
kode:harness is at **v0.
|
|
292
|
+
kode:harness is at **v0.11.0** — makes Common Mode proof-first behavior enforceable: Proof Plans need exact commands/checklists, Story completion is blocked without evidence, reviewer must stop on missing/failing proof, and state-check audits Proof Ledger coverage.
|
|
278
293
|
|
|
279
294
|
| Phase | Version | Status | Focus |
|
|
280
295
|
|---|---|---|---|
|
|
@@ -286,11 +301,15 @@ kode:harness is at **v0.9.6** — init now backs up overwritten IDE files under
|
|
|
286
301
|
| **Self-Verify** | v0.9.2 | ✅ Done | state-check skill, Iron Law #10, Confirmation Gate Defaults, multi-IDE fix, CI Artifact Index |
|
|
287
302
|
| **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
303
|
| **Consistency & Budget** | v0.9.5 | ✅ Done | Iron Laws stale-copy fix (reviewer.md), dispatcher sync (core-rules.md ↔ copilot-instructions.md), lightness budgets recalibrated (40K/1500/2500) with rationale |
|
|
289
|
-
| **
|
|
304
|
+
| **Drift Guard & Positioning** | v0.9.7 | ✅ Done | `harness/`↔`.github/` drift detector, reviewer working-proof gate, kode:vibe positioning, IDE selection guide, project-brief example |
|
|
305
|
+
| **Confidence Loop** | v0.10.0 | ✅ Done | Goal Card, Quiet Navigator, Evidence-Gated Progress Board, Proof Ledger, QA/content regression tests |
|
|
306
|
+
| **Proof-First Enforcement** | v0.11.0 | ✅ Current | Mandatory Proof Plan, lead proof blockers, reviewer proof blockers, state-check Proof Ledger coverage |
|
|
307
|
+
| **Safety & Branding** | v0.9.6 | ✅ Done | init overwrite backups, shipped pm naming cleanup, LICENSE branding cleanup |
|
|
290
308
|
| **Validation** | v1.0 | 🔜 Next | Real-world project adoption, user feedback collection |
|
|
291
309
|
|
|
292
310
|
### What's Next
|
|
293
311
|
|
|
312
|
+
- [ ] Pilot: Run v0.11 proof-first Common Mode on a real project and measure proof coverage
|
|
294
313
|
- [ ] Pilot: Run external planning artifacts through kode:harness's 🟣 pipeline on a real project
|
|
295
314
|
- [ ] Adopt kode:harness in real projects and collect usage data
|
|
296
315
|
- [ ] Document case studies: solo vs team, crew vs no-crew
|
package/harness/agents/lead.md
CHANGED
|
@@ -67,7 +67,12 @@ User request: "next task", "current status", "story done", "new sprint", "scope
|
|
|
67
67
|
After every status check, recommend the next action based on current context:
|
|
68
68
|
|
|
69
69
|
1. Read `docs/project-state.md`, `docs/features.md`, `docs/project-brief.md`, `docs/failure-patterns.md`
|
|
70
|
-
2.
|
|
70
|
+
2. MUST render a compact **Evidence-Gated Progress Board** before recommending action:
|
|
71
|
+
- Goal: one-line Goal Card from project-brief or current Story
|
|
72
|
+
- State: `Planned | Implementing | Proof Pending | Proven | Reviewed | Blocked`
|
|
73
|
+
- Evidence: last passing test/smoke proof, or `missing`
|
|
74
|
+
- Blocker: one line, or `none`
|
|
75
|
+
3. Determine the project phase and recommend accordingly:
|
|
71
76
|
|
|
72
77
|
| Situation | Recommendation |
|
|
73
78
|
|-----------|---------------|
|
|
@@ -83,10 +88,12 @@ After every status check, recommend the next action based on current context:
|
|
|
83
88
|
| All ARB Fail items resolved | → "ARB Fail items all resolved — deployment readiness can be checked" |
|
|
84
89
|
<!-- CREW_MODE_END -->
|
|
85
90
|
|
|
86
|
-
|
|
91
|
+
4. Format the recommendation as a quiet 🧭 Next Step block. Prefer one next action and one required evidence item; do not restate the full pipeline unless the user asks.
|
|
87
92
|
```
|
|
88
93
|
---
|
|
89
94
|
🧭 Next Step
|
|
95
|
+
→ Goal: [Goal Card in one line]
|
|
96
|
+
→ Evidence: [test command / smoke proof / state-check needed]
|
|
90
97
|
→ Next: `[skill or agent name]` (슬래시 메뉴에서 선택하거나, 채팅에 아래 프롬프트 입력)
|
|
91
98
|
→ Prompt: "[copy-paste ready prompt]"
|
|
92
99
|
→ Why: [one-sentence reason]
|
|
@@ -96,12 +103,16 @@ After every status check, recommend the next action based on current context:
|
|
|
96
103
|
```
|
|
97
104
|
|
|
98
105
|
**Request: "story done" / "S{N}-{M} done"**
|
|
99
|
-
1.
|
|
100
|
-
2.
|
|
101
|
-
|
|
106
|
+
1. Read the Story's Proof Plan and current Evidence-Gated Progress Board row.
|
|
107
|
+
2. Require proof before marking done:
|
|
108
|
+
- Passing proof → set state to `Proven`, update Story status to `✅ done`, append Proof Ledger / Evidence Summary row.
|
|
109
|
+
- Missing proof → keep state `Proof Pending`, output `[BLOCKER: PROOF_MISSING]`, and do not advance to the next Story.
|
|
110
|
+
- Failing proof → keep state `Implementing`, output `[BLOCKER: PROOF_FAILING]`, and fix within current Story.
|
|
111
|
+
3. Add completion record to "Recent Changes" section only after passing proof.
|
|
112
|
+
4. **Commit/Push check**: If changes are uncommitted, remind:
|
|
102
113
|
- "⚠️ S{N}-{M} 완료 — 커밋하셨나요? `git add <files> && git commit -m \"S{N}-{M}: {description}\"`"
|
|
103
114
|
- Team mode: Also remind to push — "팀원에게 공유하려면 `git push origin {branch}` 실행"
|
|
104
|
-
|
|
115
|
+
5. Guide to next Story only after proof passes.
|
|
105
116
|
|
|
106
117
|
**Request: "new story" / "next task"**
|
|
107
118
|
1. Find next `todo` Story in docs/project-state.md
|
|
@@ -136,9 +147,10 @@ When invoked after pm approval, verify that pm wrote state files correctly:
|
|
|
136
147
|
|
|
137
148
|
When a Story contains multiple Tasks/Waves (from breakdown):
|
|
138
149
|
- Guide implementation **one Wave at a time** (not one file at a time, not all at once)
|
|
139
|
-
- After each Wave is implemented, **run tests
|
|
150
|
+
- After each Wave is implemented, **run tests or smoke proof** to verify the Wave is clean before proceeding
|
|
151
|
+
- Record a mini Proof Ledger row inline: Evidence, Result, Command / Observation
|
|
140
152
|
- Only after verification passes, prompt: "Wave {N} 완료 (tests pass). Wave {N+1}로 넘어갈까요?"
|
|
141
|
-
- If tests fail → fix within the current Wave
|
|
153
|
+
- If tests fail → output `[BLOCKER: WAVE_PROOF_FAILING]`, fix within the current Wave, and do NOT advance.
|
|
142
154
|
- This prevents context overload from modifying too many modules simultaneously
|
|
143
155
|
- Exception: If a Wave contains only a single trivial task, it may be combined with the next Wave
|
|
144
156
|
|
|
@@ -158,6 +170,17 @@ When a Story contains multiple Tasks/Waves (from breakdown):
|
|
|
158
170
|
```
|
|
159
171
|
## Sprint Status
|
|
160
172
|
|
|
173
|
+
### Goal Card
|
|
174
|
+
- Goal: {current project/story goal}
|
|
175
|
+
- First usable result: {smallest working outcome}
|
|
176
|
+
- Required proof: {test command / smoke proof}
|
|
177
|
+
|
|
178
|
+
### Evidence-Gated Progress Board
|
|
179
|
+
| Story | State | Evidence | Blocker |
|
|
180
|
+
|-------|-------|----------|---------|
|
|
181
|
+
| S{N}-1 | Reviewed | `npm test` ✅ | none |
|
|
182
|
+
| S{N}-2 | Proof Pending | missing | needs reviewer proof |
|
|
183
|
+
|
|
161
184
|
Sprint: {N} — {theme}
|
|
162
185
|
Progress: {done}/{total} Stories
|
|
163
186
|
|
package/harness/agents/pm.md
CHANGED
|
@@ -2,9 +2,7 @@
|
|
|
2
2
|
|
|
3
3
|
## Role
|
|
4
4
|
|
|
5
|
-
Feature planning and dependency management.
|
|
6
|
-
Combines PM (what to build), Analytics (what exists), and Architecture (how it connects) into one workflow.
|
|
7
|
-
The pm agent is the entry point for new features — use it BEFORE writing code.
|
|
5
|
+
Feature planning and dependency management. Use before writing new feature code.
|
|
8
6
|
|
|
9
7
|
## Invoked By
|
|
10
8
|
|
|
@@ -36,7 +34,9 @@ One of:
|
|
|
36
34
|
- **New Feature**: "I want to add [feature description]"
|
|
37
35
|
- **Architecture Query**: "What depends on [module]?" / "Show me the current module map"
|
|
38
36
|
- **Refactor Plan**: "I need to refactor [module/area]"
|
|
37
|
+
<!-- CREW_MODE_START -->
|
|
39
38
|
- **Crew-Driven Feature**: "crew 산출물을 기반으로 [기능]을 계획해줘" — when external planning artifacts exist in `docs/crew/`
|
|
39
|
+
<!-- CREW_MODE_END -->
|
|
40
40
|
|
|
41
41
|
## Procedure
|
|
42
42
|
|
|
@@ -61,30 +61,24 @@ 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
|
-
### Step 0.7:
|
|
64
|
+
### Step 0.7: Roadmap Draft
|
|
65
65
|
|
|
66
|
-
**Trigger**: `docs/project-brief.md`에 `## Feature Roadmap
|
|
66
|
+
**Trigger**: `docs/project-brief.md`에 `## Feature Roadmap`이 없을 때
|
|
67
67
|
|
|
68
68
|
<!-- CREW_MODE_START -->
|
|
69
69
|
**Crew 파이프라인(🟣)**: FR목록이 이미 Roadmap 역할을 하므로 이 Step을 skip한다.
|
|
70
70
|
<!-- CREW_MODE_END -->
|
|
71
71
|
|
|
72
72
|
1. `docs/project-brief.md`의 Goals + `docs/dependency-map.md`의 현재 모듈 구조를 읽는다
|
|
73
|
-
2.
|
|
73
|
+
2. Feature Roadmap **초안** 생성:
|
|
74
74
|
```
|
|
75
75
|
## Feature Roadmap
|
|
76
|
-
|
|
77
76
|
### Phase 1 — Core (Goal 달성 필수)
|
|
78
77
|
- [ ] F-001: [기능명] — [어떤 Goal에 대응하는지]
|
|
79
|
-
- [ ] F-002: ...
|
|
80
|
-
|
|
81
78
|
### Phase 2 — Enhancement (사용성/완성도)
|
|
82
|
-
- [ ] F-
|
|
83
|
-
|
|
84
|
-
### Phase 3 — Nice-to-have
|
|
85
|
-
- [ ] F-004: ...
|
|
79
|
+
- [ ] F-002: ...
|
|
86
80
|
```
|
|
87
|
-
3. 사용자에게
|
|
81
|
+
3. 사용자에게 초안 제시: **"이 Feature Roadmap을 검토하고, 추가/삭제/순서 변경을 알려주세요."**
|
|
88
82
|
4. 사용자 교정을 반영한 최종 Roadmap을 `docs/project-brief.md`에 `## Feature Roadmap` 섹션으로 기록한다
|
|
89
83
|
5. Feature Roadmap이 확정되면 아래 "For New Feature" 절차로 진행한다
|
|
90
84
|
|
|
@@ -96,15 +90,10 @@ Apply these insights when creating the implementation plan. If the memory file i
|
|
|
96
90
|
If `docs/project-brief.md` contains a `## Crew Artifact Index` table with entries:
|
|
97
91
|
|
|
98
92
|
a. **Read PRD** (path from Artifact Index):
|
|
99
|
-
- Extract
|
|
100
|
-
- Extract priority (P0, P1, P2)
|
|
101
|
-
- Extract acceptance criteria for each FR
|
|
102
|
-
- Extract non-functional requirements (performance, security, scalability)
|
|
93
|
+
- Extract FRs, priorities, acceptance criteria, and NFRs
|
|
103
94
|
|
|
104
95
|
b. **Read Product Brief** (path from Artifact Index):
|
|
105
|
-
-
|
|
106
|
-
- Extract user journey steps → map to implementation order
|
|
107
|
-
- Extract KPIs → attach as acceptance criteria to relevant Stories
|
|
96
|
+
- Map personas, journey steps, and KPIs to Stories
|
|
108
97
|
|
|
109
98
|
c. **Map FR → Stories**:
|
|
110
99
|
- Each FR-NNN generates 1+ Stories
|
|
@@ -128,7 +117,7 @@ Apply these insights when creating the implementation plan. If the memory file i
|
|
|
128
117
|
If no Crew Artifact Index → proceed with normal user-driven planning below.
|
|
129
118
|
<!-- CREW_MODE_END -->
|
|
130
119
|
|
|
131
|
-
|
|
120
|
+
2. **Direction Alignment**: Verify three checkpoints:
|
|
132
121
|
- **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
122
|
- **Non-Goal Violation**: Falls into Non-Goals? → **stop and ask the user**. May need `pivot`.
|
|
134
123
|
- **Decision Consistency**: Contradicts a Decision Log entry? → **stop and warn**. Recommend `pivot`.
|
|
@@ -142,12 +131,13 @@ Apply these insights when creating the implementation plan. If the memory file i
|
|
|
142
131
|
9. Register NEW modules from breakdown output in `docs/dependency-map.md` (so check-impact reads the updated map)
|
|
143
132
|
10. Run **check-impact** skill for each existing module being modified (pm calls both skills independently — breakdown does NOT invoke check-impact internally. Ordering: breakdown first → register modules → check-impact second.)
|
|
144
133
|
11. Check `docs/failure-patterns.md` for relevant past mistakes
|
|
145
|
-
12. Produce
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
|
|
134
|
+
12. Produce a **Goal Card** (6 lines max) and implementation plan.
|
|
135
|
+
13. Produce a **Proof Plan** per Story: exact test/smoke command or checklist; never TBD. No path → add Story 0: set up test/smoke proof. Any `TBD`/blank → `[ERROR: PROOF_PLAN_UNDEFINED]` and STOP before state writes.
|
|
136
|
+
14. **Wait for Plan Confirmation** (see Plan Confirmation Gate below) — do NOT write state files yet
|
|
137
|
+
15. **After user approves** → Update `docs/project-state.md` with the new Story
|
|
138
|
+
16. **After user approves** → Update `docs/features.md` with the new feature entry
|
|
149
139
|
|
|
150
|
-
State
|
|
140
|
+
State writes (Steps 15-16) execute ONLY after user approval. Rejected plans never touch state.
|
|
151
141
|
|
|
152
142
|
### For Architecture Query
|
|
153
143
|
|
|
@@ -173,28 +163,31 @@ State file writes (Steps 13-14) execute ONLY after user approval. Rejected plans
|
|
|
173
163
|
|
|
174
164
|
## Plan Confirmation Gate
|
|
175
165
|
|
|
176
|
-
After
|
|
166
|
+
After any plan, **do NOT proceed to coding immediately**.
|
|
177
167
|
|
|
178
168
|
1. Present the complete plan to the user
|
|
179
|
-
2. Ask: **"이
|
|
169
|
+
2. Ask: **"이 경로와 Proof 명령으로 검증 가능할까요?"**
|
|
180
170
|
3. Wait for explicit user approval (`Yes`, `Go`, `진행해줘`, etc.)
|
|
181
171
|
4. **Only after approval** → execute **MANDATORY State File Write** (below), then output 🧭 Next Step pointing to `lead`
|
|
182
|
-
5. If the user requests changes → revise
|
|
172
|
+
5. If the user requests changes → revise and re-confirm. **No state files are written until approval.**
|
|
183
173
|
|
|
184
174
|
### ⚠️ MANDATORY: Post-Approval State File Write
|
|
185
175
|
|
|
186
|
-
|
|
187
|
-
|
|
188
|
-
After user approves the plan, perform these writes in order:
|
|
176
|
+
After user approves the plan, perform all writes before 🧭:
|
|
189
177
|
|
|
190
178
|
1. **`docs/features.md`** — Register new feature(s):
|
|
191
179
|
- Add row(s) to the Feature Registry table
|
|
180
|
+
<!-- CREW_MODE_START -->
|
|
192
181
|
- Include FR reference (if crew-driven), status = `planned`
|
|
182
|
+
<!-- CREW_MODE_END -->
|
|
193
183
|
|
|
194
184
|
2. **`docs/project-state.md`** — Create Sprint/Stories:
|
|
195
185
|
- If no Sprint exists, create Sprint 1 with theme
|
|
196
186
|
- Add Story rows to the Story Status table (status = `⬜ todo`)
|
|
197
|
-
- Each Story: ID (S{N}-{M}), Title, Status, Scope (files/modules),
|
|
187
|
+
- Each Story: ID (S{N}-{M}), Title, Status, Scope (files/modules), Proof Plan
|
|
188
|
+
<!-- CREW_MODE_START -->
|
|
189
|
+
- If crew-driven, include FR reference
|
|
190
|
+
<!-- CREW_MODE_END -->
|
|
198
191
|
- Update Quick Summary section
|
|
199
192
|
|
|
200
193
|
3. **`docs/dependency-map.md`** — Register new modules (if any):
|
|
@@ -208,7 +201,7 @@ After user approves the plan, perform these writes in order:
|
|
|
208
201
|
- ARB Fail Resolution: fill Story column with mapped Story IDs
|
|
209
202
|
<!-- CREW_MODE_END -->
|
|
210
203
|
|
|
211
|
-
**Completion Check**:
|
|
204
|
+
**Completion Check**: Verify:
|
|
212
205
|
- [ ] features.md has new feature row(s)
|
|
213
206
|
- [ ] project-state.md has Story rows with `⬜ todo` status
|
|
214
207
|
- [ ] dependency-map.md has new module rows (if plan introduces new modules)
|
|
@@ -235,11 +228,25 @@ After the Post-Approval state writes complete, run the `state-check` skill:
|
|
|
235
228
|
**Scope**: [modules affected]
|
|
236
229
|
**Risk**: Low | Medium | High
|
|
237
230
|
|
|
231
|
+
### Goal Card
|
|
232
|
+
- Goal: [project goal served]
|
|
233
|
+
- First usable result: [smallest outcome]
|
|
234
|
+
- Non-goal boundary: [not included]
|
|
235
|
+
- Required proof: [test/smoke/manual]
|
|
236
|
+
- Risk: [highest uncertainty]
|
|
237
|
+
- Next action: [one concrete action]
|
|
238
|
+
|
|
238
239
|
### Architecture Impact
|
|
239
240
|
- New modules: [list]
|
|
240
241
|
- Modified modules: [list]
|
|
241
242
|
- Unchanged dependents that need testing: [list]
|
|
242
243
|
|
|
244
|
+
### Proof Plan
|
|
245
|
+
| Story | Required Evidence | Command / Manual Proof |
|
|
246
|
+
|-------|-------------------|------------------------|
|
|
247
|
+
| S{N}-0 | Proof setup, if needed | `npm test` / `npm run smoke` / manual checklist |
|
|
248
|
+
| S{N}-{M} | Tests / smoke / manual | exact command/checklist; never TBD |
|
|
249
|
+
|
|
243
250
|
### Implementation Plan
|
|
244
251
|
[Output from breakdown skill]
|
|
245
252
|
|
|
@@ -2,8 +2,7 @@
|
|
|
2
2
|
|
|
3
3
|
## Role
|
|
4
4
|
|
|
5
|
-
Review
|
|
6
|
-
Finds issues and auto-fixes where safe, escalates where not.
|
|
5
|
+
Review changes before commit/PR for quality, security, tests. Auto-fix safe issues; escalate the rest.
|
|
7
6
|
|
|
8
7
|
## Invoked By
|
|
9
8
|
|
|
@@ -94,6 +93,23 @@ If neither `## CI Artifact Index` nor `.harness/ci-index.md` is present → skip
|
|
|
94
93
|
- [ ] New features have tests
|
|
95
94
|
- [ ] Existing tests pass
|
|
96
95
|
|
|
96
|
+
**Verification is a gate, not a suggestion.** Before continuing to Step 4, the reviewer must include concrete working proof:
|
|
97
|
+
- Run the project's test/verification command when available (for example `npm test`, `pnpm test`, `pytest`, `go test ./...`, or the command recorded in docs/project-brief.md / package scripts).
|
|
98
|
+
- If the change is user-facing and tests do not exercise the behavior, include a minimal smoke proof (command, URL, screenshot/manual action, or observed output).
|
|
99
|
+
- If any existing test fails → output `[BLOCKER: TESTS_FAILING]`. STOP before Step 4.
|
|
100
|
+
- If a Proof Plan command cannot run → output `[BLOCKER: PROOF_COMMAND_INVALID]` with the command. STOP.
|
|
101
|
+
- If test files exist but no test command exists → output `[BLOCKER: NO_TEST_COMMAND]`. STOP.
|
|
102
|
+
- If no proof path exists → output `[BLOCKER: NO_PROOF_STRATEGY]` and `[BLOCKER: WORKING_PROOF_MISSING]`. STOP.
|
|
103
|
+
|
|
104
|
+
Record the result as a **Proof Ledger** entry. Keep it short:
|
|
105
|
+
|
|
106
|
+
| Evidence | Result | Command / Observation |
|
|
107
|
+
|----------|--------|-----------------------|
|
|
108
|
+
| Unit tests | ✅ pass | `npm test` |
|
|
109
|
+
| Smoke proof | ✅ pass | `curl /health → 200` |
|
|
110
|
+
|
|
111
|
+
If state files are in scope, write/request Proof Ledger / Evidence Summary immediately after proof passes.
|
|
112
|
+
|
|
97
113
|
**Step 4: Security Check (secure skill)**
|
|
98
114
|
- [ ] No credentials, .env, or temp files in staging (FP-004)
|
|
99
115
|
- [ ] No hardcoded API keys or passwords
|
|
@@ -169,11 +185,13 @@ After running state-check, also verify:
|
|
|
169
185
|
For each missing update: flag as `[STATE-AUDIT]` in the output and provide the exact update that should be made.
|
|
170
186
|
**Severity**:
|
|
171
187
|
- Missing dependency-map or features.md entries for new modules/features are **blockers** — fix before commit.
|
|
172
|
-
- `[STATE-AUDIT: FR-COVERAGE]` flags (features.md status ↔ Story 완료 불일치) are **blockers** — features.md 상태 갱신 후 commit.
|
|
188
|
+
- `[STATE-AUDIT: FR-COVERAGE]` flags (features.md status ↔ Story 완료 불일치) are **blockers** — features.md 상태 갱신 후 commit.
|
|
173
189
|
- Missing project-state Quick Summary or agent-memory updates are **warnings** — can be deferred to wrap-up skill.
|
|
174
190
|
|
|
175
191
|
**Step 9: Commit Guidance**
|
|
176
192
|
|
|
193
|
+
Commit-message-only requests are guidance; provide only after proof passes.
|
|
194
|
+
|
|
177
195
|
When review result is DONE or DONE_WITH_CONCERNS (no blockers):
|
|
178
196
|
|
|
179
197
|
1. **Commit message format**: `S{N}-{M}: {short description}`
|
|
@@ -206,6 +224,8 @@ If review is BLOCKED → do NOT suggest commit. Fix first.
|
|
|
206
224
|
### Passed Items
|
|
207
225
|
- Architecture rules: ✅
|
|
208
226
|
- Test integrity: ✅ / ⚠️ (detail)
|
|
227
|
+
- Working proof: command/evidence + PASS result
|
|
228
|
+
- Proof Ledger: compact table with evidence, result, and command/observation
|
|
209
229
|
- Security check: ✅ / ❌ (detail)
|
|
210
230
|
- Failure pattern check: ✅ / ⚠️ (FP-NNN)
|
|
211
231
|
<!-- CREW_MODE_START -->
|
|
@@ -234,6 +254,8 @@ These rules are enforced during every review. The full Iron Laws (10) are define
|
|
|
234
254
|
### Completion Protocol
|
|
235
255
|
Report using: **DONE** | **DONE_WITH_CONCERNS** | **BLOCKED** | **NEEDS_CONTEXT**
|
|
236
256
|
|
|
257
|
+
`DONE` and `DONE_WITH_CONCERNS` require: tests pass, working proof is shown, and no blocker remains. If tests fail or working proof is missing, report `BLOCKED`.
|
|
258
|
+
|
|
237
259
|
### Concreteness
|
|
238
260
|
- Specify exact file paths and line numbers
|
|
239
261
|
- Quote test names and error messages on failure
|
package/harness/core-rules.md
CHANGED
|
@@ -4,11 +4,19 @@ 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
|
|
|
7
|
+
## Quiet Navigator + Confidence Loop
|
|
8
|
+
|
|
9
|
+
Common-mode users often begin with rough goals. Keep the navigator short and evidence-first:
|
|
10
|
+
- **Goal Card**: Goal, first usable result, non-goal, risk, required proof.
|
|
11
|
+
- **Proof Ledger**: command/evidence that proves the feature works.
|
|
12
|
+
- **Evidence-Gated Progress Board**: `Planned → Implementing → Proof Pending → Proven → Reviewed`.
|
|
13
|
+
- **Quiet Navigator**: one next action plus why; restate the pipeline only when useful.
|
|
14
|
+
- **Proof-First Enforcement**: code/state/pipeline movement is not progress until tests, smoke proof, or manual check proves the usable result works.
|
|
15
|
+
|
|
7
16
|
## Session Start
|
|
8
17
|
|
|
9
|
-
Read `docs/project-state.md` first. If
|
|
10
|
-
If `.harness/my-context.md` exists, read it for
|
|
11
|
-
> This file is user-created, not generated by any skill or agent. Create it manually to store personal environment notes (IDE settings, local paths, preferences). See `.harness/` in docs/ for the expected location.
|
|
18
|
+
Read `docs/project-state.md` first. If state files are empty, run `setup`.
|
|
19
|
+
If `.harness/my-context.md` exists, read it for local preferences.
|
|
12
20
|
|
|
13
21
|
## Development Pipeline
|
|
14
22
|
|
|
@@ -52,9 +60,9 @@ When external planning artifacts exist (requirements, analysis, design documents
|
|
|
52
60
|
5. `reviewer` → code review + crew artifact compliance check → commit → push
|
|
53
61
|
6. `wrap-up` → capture session lessons + update Validation Tracker + verify push
|
|
54
62
|
|
|
55
|
-
> Crew artifacts are detected by
|
|
56
|
-
> **Reference, don't summarize**: setup
|
|
57
|
-
>
|
|
63
|
+
> Crew artifacts are detected by `docs/crew/`, `docs/PM/`+`docs/Analyst/`+`docs/ARB/`, or explicit requirements/design docs.
|
|
64
|
+
> **Reference, don't summarize**: setup writes an Artifact Index; skills read originals via indexed paths.
|
|
65
|
+
> If `## CI Artifact Index` exists, reviewer Step 2.5 and release Step 3.5 surface the external CI guide when build/CI files change.
|
|
58
66
|
> This pipeline produces the same state files as 🟢 — the difference is the INPUT source and the addition of Validation Tracker for traceability.
|
|
59
67
|
<!-- CREW_MODE_END -->
|
|
60
68
|
|
|
@@ -79,18 +87,22 @@ When the user provides a feature request or development goal in their prompt:
|
|
|
79
87
|
|
|
80
88
|
**Every response must end with a 🧭 Next Step block.** This is mandatory — never omit it.
|
|
81
89
|
|
|
82
|
-
|
|
90
|
+
Keep the block concise. When code changed, include the next evidence:
|
|
83
91
|
|
|
84
92
|
```
|
|
85
93
|
---
|
|
86
94
|
🧭 Next Step
|
|
87
|
-
→
|
|
88
|
-
→
|
|
95
|
+
→ Goal: {current Goal Card in one line}
|
|
96
|
+
→ Evidence: {test command / smoke proof / state-check needed next}
|
|
97
|
+
→ Next: `{skill or agent name}` or [Coding]
|
|
98
|
+
→ Prompt: "{copy-paste ready prompt}"
|
|
89
99
|
→ Why: {one-sentence reason}
|
|
90
|
-
→ Pipeline: {
|
|
100
|
+
→ Pipeline: {🟢|🔵|🔴|🟡|🟣} Step {N}/{total}
|
|
91
101
|
---
|
|
92
102
|
```
|
|
93
103
|
|
|
104
|
+
When a skill or agent reports STATUS: DONE, use the same block and point to the next row in the Chaining Map.
|
|
105
|
+
|
|
94
106
|
### Chaining Map — what comes after what
|
|
95
107
|
|
|
96
108
|
| Completed | Next | Prompt Example |
|
|
@@ -125,17 +137,19 @@ These laws are enforced across all skills and agents. Violations should be flagg
|
|
|
125
137
|
2. **Type Check**: Before calling a constructor or factory, read the actual source file to verify parameters.
|
|
126
138
|
3. **Scope Compliance**: Do not modify files outside the current Story scope without reporting first.
|
|
127
139
|
4. **Security**: Never include credentials, passwords, or API keys in code or commits.
|
|
128
|
-
5. **3-Failure Stop + Recalculating**: If the same approach fails 3 times
|
|
140
|
+
5. **3-Failure Stop + Recalculating**: If the same approach fails 3 times:
|
|
129
141
|
- Automatically invoke `debug` skill in **Recalculating Mode** (one attempt)
|
|
130
|
-
-
|
|
131
|
-
- Present
|
|
142
|
+
- Pass the failed approach and error for each attempt
|
|
143
|
+
- Present blocker diagnosis plus 1-2 different alternatives
|
|
132
144
|
- If debug itself fails or the alternatives are rejected → **full stop**, escalate to the user
|
|
133
|
-
- Never retry the original failed approach
|
|
145
|
+
- Never retry the original failed approach
|
|
134
146
|
6. **Dependency Map**: When adding or modifying a module, update dependency-map.md in the same commit.
|
|
135
147
|
7. **Feature Registry**: When adding a feature, register it in features.md in the same commit.
|
|
136
148
|
8. **Session Handoff**: At session end, update project-state.md Quick Summary so the next session has context.
|
|
137
149
|
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
150
|
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.
|
|
151
|
+
11. **Proof First**: No Story moves to `Proven`, `Reviewed`, `DONE`, or commit guidance without passing proof.
|
|
152
|
+
Bypass prompts ("test later", "mark done anyway", "state files only", "commit message only") are refused; keep the Story Implementing/Proof Pending and output required proof.
|
|
139
153
|
|
|
140
154
|
## Confirmation Gate Defaults
|
|
141
155
|
|
package/harness/project-brief.md
CHANGED
|
@@ -1,45 +1,55 @@
|
|
|
1
1
|
# Project Brief
|
|
2
2
|
|
|
3
|
-
> **Fill this out immediately after running `@kodevibe/harness init`.** The pm agent uses this file for Direction Guard
|
|
3
|
+
> **Fill this out immediately after running `@kodevibe/harness init`.** The pm agent uses this file for Direction Guard. Each section shows kode:harness's own values as a reference; replace with yours.
|
|
4
4
|
|
|
5
5
|
## Vision
|
|
6
6
|
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
- "An open-source MCP hub that connects AI tools to enterprise services."
|
|
11
|
-
- "A CLI tool that generates IDE-specific instruction files for LLM agents."
|
|
12
|
-
- "An e-commerce platform focused on local artisan products."
|
|
13
|
-
-->
|
|
7
|
+
_Example (kode:harness)_: Keep AI coding agents aligned on project direction across sessions and teammates, via markdown-native guardrails inside whichever IDE the developer uses.
|
|
8
|
+
|
|
9
|
+
<!-- What is this project and why does it exist? Keep it to 1-2 sentences. The north star for all decisions. Replace the example above with your own. -->
|
|
14
10
|
|
|
15
11
|
## Goals
|
|
16
12
|
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
-->
|
|
13
|
+
_Example (kode:harness)_:
|
|
14
|
+
- Persist project memory across LLM sessions via 5 markdown state files.
|
|
15
|
+
- Detect direction drift before code is written (Direction Guard in pm/lead/reviewer).
|
|
16
|
+
- Stay lightweight: ≤30 files, ≤40K tokens. Zero runtime deps. MIT.
|
|
17
|
+
- Support 6 IDEs with one `npx` install.
|
|
18
|
+
|
|
19
|
+
<!-- 3-5 concrete, measurable goals. Replace the example above with your own. -->
|
|
24
20
|
|
|
25
21
|
## Non-Goals
|
|
26
22
|
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
-->
|
|
23
|
+
_Example (kode:harness)_:
|
|
24
|
+
- Not a runtime / SDK — we ship instructions, not LLM execution.
|
|
25
|
+
- Not a project-management replacement — state files coordinate AI, not standups.
|
|
26
|
+
- Not solo-only — multi-developer alignment is the differentiator.
|
|
27
|
+
- Not a UI/dashboard — markdown in the repo is the interface.
|
|
28
|
+
|
|
29
|
+
<!-- Explicitly OUT OF SCOPE. The pm agent WARNs when a request falls here. Replace the example above with your own. -->
|
|
35
30
|
|
|
36
31
|
## Target Users
|
|
37
32
|
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
33
|
+
_Example (kode:harness)_: Developers and small teams (1–10) using AI coding assistants daily, who have felt their AI "forget" decisions and prefer markdown-in-repo over a SaaS dashboard.
|
|
34
|
+
|
|
35
|
+
<!-- Who is this for? Be specific. Replace the example above with your own. -->
|
|
36
|
+
|
|
37
|
+
## Done Definition
|
|
38
|
+
|
|
39
|
+
<!-- What makes the project or first usable slice releasable? Keep this to 3-5 observable checks.
|
|
40
|
+
Example:
|
|
41
|
+
- [ ] User can complete the core workflow end-to-end
|
|
42
|
+
- [ ] Automated tests pass
|
|
43
|
+
- [ ] Smoke proof confirms the app/CLI responds
|
|
44
|
+
-->
|
|
45
|
+
|
|
46
|
+
## Success Proof
|
|
47
|
+
|
|
48
|
+
<!-- How will the user know this works? Prefer commands, metrics, or manual checks.
|
|
49
|
+
Example:
|
|
50
|
+
- Test command: npm test
|
|
51
|
+
- Smoke proof: npm run build && npm start
|
|
52
|
+
- Manual proof: create item → refresh → item persists
|
|
43
53
|
-->
|
|
44
54
|
|
|
45
55
|
<!-- CREW_MODE_START -->
|
package/harness/project-state.md
CHANGED
|
@@ -35,14 +35,40 @@
|
|
|
35
35
|
|
|
36
36
|
## Story Status
|
|
37
37
|
|
|
38
|
-
| ID | Title | Status | Assignee |
|
|
39
|
-
|
|
40
|
-
| S1-
|
|
41
|
-
| S1-
|
|
42
|
-
| S1-
|
|
38
|
+
| ID | Title | Status | Assignee | Proof Plan |
|
|
39
|
+
|----|-------|--------|----------|------------|
|
|
40
|
+
| S1-0 | Proof setup | ⬜ todo | | test command or smoke proof |
|
|
41
|
+
| S1-1 | Project scaffolding | ⬜ todo | | exact command/checklist |
|
|
42
|
+
| S1-2 | Core feature implementation | ⬜ todo | | exact command/checklist |
|
|
43
|
+
| S1-3 | Test coverage | ⬜ todo | | exact command/checklist |
|
|
43
44
|
|
|
44
45
|
<!-- Status legend: ⬜ todo, 🔧 active, ✅ done, 🚫 blocked, ❌ dropped -->
|
|
45
46
|
|
|
47
|
+
## Evidence Summary
|
|
48
|
+
|
|
49
|
+
<!-- Keep the current proof state visible at a glance.
|
|
50
|
+
| Story | Status | Last Proof | Result | Blocker |
|
|
51
|
+
|-------|--------|------------|--------|---------|
|
|
52
|
+
| S1-1 | Proof Pending | - | - | tests not run |
|
|
53
|
+
-->
|
|
54
|
+
|
|
55
|
+
## Evidence-Gated Progress Board
|
|
56
|
+
|
|
57
|
+
<!-- Keep this compact. It tells the user where the project is and what proof is missing.
|
|
58
|
+
State: Planned → Implementing → Proof Pending → Proven → Reviewed → Blocked
|
|
59
|
+
| Story | Goal | State | Required Evidence | Last Proof | Blocker |
|
|
60
|
+
|-------|------|-------|-------------------|------------|---------|
|
|
61
|
+
| S1-1 | First usable result | Proof Pending | npm test | - | tests not run |
|
|
62
|
+
-->
|
|
63
|
+
|
|
64
|
+
## Proof Ledger
|
|
65
|
+
|
|
66
|
+
<!-- One line per completed proof. Do not paste long logs.
|
|
67
|
+
| Date | Story | Evidence | Result | Command / Observation |
|
|
68
|
+
|------|-------|----------|--------|-----------------------|
|
|
69
|
+
| 2026-05-04 | S1-1 | Unit tests | ✅ pass | npm test |
|
|
70
|
+
-->
|
|
71
|
+
|
|
46
72
|
## Module Registry
|
|
47
73
|
|
|
48
74
|
<!-- Summary of current modules. Full details in docs/dependency-map.md -->
|
|
@@ -77,6 +77,7 @@ Ensures bottom-up implementation: foundations first, then layers that depend on
|
|
|
77
77
|
- Never implement a module before its dependencies exist
|
|
78
78
|
- Each task should be completable in one session
|
|
79
79
|
- Every task must include its test files
|
|
80
|
+
- Implementation and tests belong in the same Wave whenever possible. Do not defer tests to a later Wave unless the proof harness itself is the earlier Wave.
|
|
80
81
|
- New modules MUST be registered in docs/dependency-map.md (Iron Law #6) — the breakdown OUTPUT section lists these registrations, and pm (or the user, if invoked directly) is responsible for executing the actual state file writes
|
|
81
82
|
- If a task exceeds Story scope, stop and report to user
|
|
82
83
|
|
package/harness/skills/pivot.md
CHANGED
|
@@ -114,7 +114,9 @@ After pivot completes, always append a 🧭 block:
|
|
|
114
114
|
| Pivot Result | 🧭 Next Step |
|
|
115
115
|
|---|---|
|
|
116
116
|
| All state files updated | `pm` — "변경된 방향에 맞춰 재계획해줘" |
|
|
117
|
+
<!-- CREW_MODE_START -->
|
|
117
118
|
| Crew artifacts exist for new direction | `setup` (🟣) — "crew 산출물을 기반으로 state를 다시 세팅해줘" |
|
|
119
|
+
<!-- CREW_MODE_END -->
|
|
118
120
|
| User cancelled | 🏁 No action — "기존 방향을 유지합니다" |
|
|
119
121
|
|
|
120
122
|
Example 🧭 block:
|
package/harness/skills/setup.md
CHANGED
|
@@ -135,6 +135,17 @@ Ask the user these questions (skip any already answered by Phase 1):
|
|
|
135
135
|
5. "Are there any type decisions or conventions the AI should know about?"
|
|
136
136
|
6. "What is your test command?" (show detected command if found, e.g., `npm test`, `pytest`, `go test ./...`)
|
|
137
137
|
|
|
138
|
+
### Phase 2.1: Common Mode Confidence Loop
|
|
139
|
+
|
|
140
|
+
Before filling state files, collapse the answers into a **Goal Card** and **Proof Profile**:
|
|
141
|
+
- Goal: one sentence from Vision + top goal
|
|
142
|
+
- First usable result: smallest working outcome the user can inspect
|
|
143
|
+
- Non-goal boundary: what will not be built now
|
|
144
|
+
- Required proof: test command, smoke proof, or manual checklist
|
|
145
|
+
- Open question: at most one unresolved ambiguity
|
|
146
|
+
|
|
147
|
+
If the user's answers are vague, ask at most one follow-up question. If still unclear, record the assumption instead of looping.
|
|
148
|
+
|
|
138
149
|
### Phase 3: Fill State Files
|
|
139
150
|
|
|
140
151
|
Using data from Phase 1 + Phase 2, fill the following files:
|
|
@@ -144,6 +155,8 @@ Using data from Phase 1 + Phase 2, fill the following files:
|
|
|
144
155
|
- Vision → from user answer #1
|
|
145
156
|
- Goals → from user answer #2
|
|
146
157
|
- Non-Goals → from user answer #3
|
|
158
|
+
- Done Definition → from Goal Card / first usable result
|
|
159
|
+
- Success Proof → from Proof Profile (test command, smoke proof, or manual checklist)
|
|
147
160
|
<!-- CREW_MODE_START -->
|
|
148
161
|
- Crew Artifact Index → from Phase 1.5 (🟣 pipeline only — leave as template comment for 🟢 pipeline)
|
|
149
162
|
- Validation Tracker → from Phase 1.5 (🟣 pipeline only — leave as template comment for 🟢 pipeline)
|
|
@@ -231,6 +244,11 @@ After setup completes, remind the user that shared files require `git pull` befo
|
|
|
231
244
|
- [x]docs/project-state.md — Sprint 1 initialized
|
|
232
245
|
- [ ]docs/failure-patterns.md — templates only (no changes)
|
|
233
246
|
|
|
247
|
+
### Goal Card
|
|
248
|
+
- Goal: [one sentence]
|
|
249
|
+
- First usable result: [observable outcome]
|
|
250
|
+
- Required proof: [test/smoke/manual]
|
|
251
|
+
|
|
234
252
|
STATUS: DONE
|
|
235
253
|
```
|
|
236
254
|
|
|
@@ -238,7 +256,7 @@ STATUS: DONE
|
|
|
238
256
|
|
|
239
257
|
Bootstrap always leads to `pm`. Append this block after STATUS: DONE:
|
|
240
258
|
|
|
241
|
-
**
|
|
259
|
+
**Default common pipeline**:
|
|
242
260
|
```
|
|
243
261
|
---
|
|
244
262
|
🧭 Next Step
|
|
@@ -46,7 +46,7 @@ For each file:
|
|
|
46
46
|
1. Read all `✅ done` Stories from `docs/project-state.md` (or `.harness/project-state.md` in Team mode) Story Status table
|
|
47
47
|
2. Read `docs/features.md` Feature Registry
|
|
48
48
|
3. For each `✅ done` Story:
|
|
49
|
-
- If Story has
|
|
49
|
+
- If Story has an external reference prefix → must map to a feature row with the same reference
|
|
50
50
|
- Otherwise → must map to at least one feature row whose Key Files overlap with the Story's Scope
|
|
51
51
|
4. Outcomes:
|
|
52
52
|
- Story ✅ done but no matching feature row → FAIL: `[FAIL] Story {S-N-M} done but no feature registered`
|
|
@@ -105,6 +105,16 @@ If `docs/project-brief.md` contains a `## Validation Tracker` section:
|
|
|
105
105
|
If no Validation Tracker → skip.
|
|
106
106
|
<!-- CREW_MODE_END -->
|
|
107
107
|
|
|
108
|
+
### Check 7: Proof Ledger Coverage
|
|
109
|
+
|
|
110
|
+
1. Read `docs/project-state.md` (or `.harness/project-state.md` in Team mode).
|
|
111
|
+
2. For each Story marked `✅ done`, verify at least one Proof Ledger or Evidence Summary row exists with a passing result.
|
|
112
|
+
3. Outcomes:
|
|
113
|
+
- Done Story with passing proof → PASS
|
|
114
|
+
- Done Story with no proof → FAIL: `[FAIL] Story {S-N-M} is done but has no passing Proof Ledger/Evidence Summary entry — revert to Proof Pending or run reviewer proof before DONE/commit guidance`
|
|
115
|
+
- Done Story with failing proof → FAIL: `[FAIL] Story {S-N-M} proof shows failure but status is done`
|
|
116
|
+
- In-progress Story without proof → PASS; proof pending is normal
|
|
117
|
+
|
|
108
118
|
## Output Format
|
|
109
119
|
|
|
110
120
|
```
|
|
@@ -126,6 +136,9 @@ If no Validation Tracker → skip.
|
|
|
126
136
|
### Check 4: Agent Memory Legacy Names
|
|
127
137
|
- No legacy names found (or list of legacy files to rename)
|
|
128
138
|
|
|
139
|
+
### Check 7: Proof Ledger Coverage
|
|
140
|
+
- {N} done Stories checked / {M} missing proof / {K} failing proof
|
|
141
|
+
|
|
129
142
|
<!-- CREW_MODE_START -->
|
|
130
143
|
### Check 6: Validation Tracker (🟣)
|
|
131
144
|
- {N} FR references checked / {M} drifted
|
|
@@ -142,7 +155,7 @@ STATUS: PASS | WARN | FAIL
|
|
|
142
155
|
### Result Interpretation
|
|
143
156
|
|
|
144
157
|
- **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
|
|
158
|
+
- **WARN** — non-blocking issues; calling agent should include warnings in its output but may proceed. Exception: proof coverage gaps are FAIL.
|
|
146
159
|
- **FAIL** — blocking; calling agent must NOT report STATUS: DONE until failures are resolved
|
|
147
160
|
|
|
148
161
|
### 🧭 Navigation — After State Check
|
|
@@ -145,6 +145,17 @@ If the `reviewer` agent was run in this session and produced `[STATE-AUDIT]` fla
|
|
|
145
145
|
2. Apply the recommended state file update
|
|
146
146
|
3. If the flag was already resolved during the session, skip it
|
|
147
147
|
|
|
148
|
+
### Step 5.6a: Finalize Proof Ledger ⚠️ MANDATORY
|
|
149
|
+
|
|
150
|
+
Before session end, record the working proof that justified completion:
|
|
151
|
+
1. Read reviewer output or recent terminal evidence for passing tests/smoke proof.
|
|
152
|
+
2. Add one compact row to `docs/project-state.md` → `## Proof Ledger` for each completed Story.
|
|
153
|
+
3. Cross-check completed Stories against `## Evidence Summary` / `## Proof Ledger`.
|
|
154
|
+
4. If no proof exists, write `[PROOF-GAP] Proof missing` in the wrap-up report and recommend returning to `reviewer`; do not claim the Story is complete.
|
|
155
|
+
5. If `[PROOF-GAP]` exists, STOP before Step 5.65. Do not auto-commit state files that mark a Story done/reviewed without passing proof. Revert the Story to Proof Pending or return to `reviewer`.
|
|
156
|
+
|
|
157
|
+
Proof rows must stay short: Date, Story, Evidence, Result, Command / Observation. Do not paste long logs.
|
|
158
|
+
|
|
148
159
|
### Step 5.65: Auto-Commit State Files ⚠️ MANDATORY
|
|
149
160
|
|
|
150
161
|
State file 변경사항을 커밋합니다. Learn 실행 결과가 커밋되지 않으면 다음 세션에서 유실됩니다.
|
|
@@ -209,6 +220,7 @@ Present a summary of all updates made.
|
|
|
209
220
|
|
|
210
221
|
### State Files Updated:
|
|
211
222
|
- [x] docs/project-state.md — Quick Summary refreshed
|
|
223
|
+
- [x] docs/project-state.md — Proof Ledger updated (if any Story completed)
|
|
212
224
|
- [x] docs/failure-patterns.md — [N] patterns added/updated
|
|
213
225
|
- [x] docs/features.md — [N] features updated (if applicable)
|
|
214
226
|
- [x] docs/dependency-map.md — [N] modules verified/added (if applicable)
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@kodevibe/harness",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.11.0",
|
|
4
4
|
"description": "kode:harness — harness engineering for keeping every developer's AI aligned on one project direction.",
|
|
5
5
|
"keywords": [
|
|
6
6
|
"llm",
|
|
@@ -45,7 +45,9 @@
|
|
|
45
45
|
"node": ">=18.0.0"
|
|
46
46
|
},
|
|
47
47
|
"scripts": {
|
|
48
|
-
"test": "node --test tests/*.test.js"
|
|
48
|
+
"test": "node --test tests/*.test.js",
|
|
49
|
+
"harness:check-drift": "node scripts/check-harness-drift.js",
|
|
50
|
+
"harness:sync": "node bin/cli.js init --ide vscode --batch --dir . --overwrite"
|
|
49
51
|
},
|
|
50
52
|
"publishConfig": {
|
|
51
53
|
"access": "public"
|
package/src/init.js
CHANGED
|
@@ -653,7 +653,7 @@ function runValidate(targetDir) {
|
|
|
653
653
|
'project-state.md': 'S1-1 | Project scaffolding',
|
|
654
654
|
'dependency-map.md': 'Add new modules above this line',
|
|
655
655
|
'features.md': 'Add new features above this line',
|
|
656
|
-
'project-brief.md': '
|
|
656
|
+
'project-brief.md': 'The north star for all decisions',
|
|
657
657
|
};
|
|
658
658
|
|
|
659
659
|
for (const file of STATE_FILES) {
|