create-harness-vibe-coding 0.6.5 → 0.7.1

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.
Files changed (37) hide show
  1. package/package.json +2 -1
  2. package/src/generator.js +95 -2
  3. package/templates/common/.claude/agents/architect-manager.md +45 -0
  4. package/templates/common/.claude/agents/explore-manager.md +41 -0
  5. package/templates/common/.claude/agents/implement-manager.md +49 -0
  6. package/templates/common/.claude/agents/review-manager.md +56 -0
  7. package/templates/common/.claude/commands/wf-max.md +28 -14
  8. package/templates/common/.claude/commands/wf-remove.md +23 -0
  9. package/templates/common/.claude/commands/wf-review.md +13 -20
  10. package/templates/common/.claude/commands/wf-update.md +6 -4
  11. package/templates/common/.claude/settings.json +33 -0
  12. package/templates/common/.claude/skills/subagent-orchestrator/SKILL.md +1 -1
  13. package/templates/common/.claude/skills/wf-max/SKILL.md +34 -8
  14. package/templates/common/.claude/skills/wf-remove/SKILL.md +51 -0
  15. package/templates/common/.claude/skills/wf-review/SKILL.md +72 -50
  16. package/templates/common/.claude/skills/wf-update/SKILL.md +74 -58
  17. package/templates/common/.codex/config.toml +2 -0
  18. package/templates/common/.codex/hooks.json +37 -0
  19. package/templates/common/.harness-version +130 -3
  20. package/templates/common/AGENTS.md +26 -3
  21. package/templates/common/CLAUDE.md +94 -77
  22. package/templates/common/MEMORY.md +75 -73
  23. package/templates/common/SETUP.md +1 -2
  24. package/templates/common/commands/wf-max.toml +18 -0
  25. package/templates/common/commands/wf-review.toml +15 -0
  26. package/templates/common/docs/README.md +2 -2
  27. package/templates/common/docs/harness/WF-MAX.md +99 -10
  28. package/templates/common/docs/harness/WF.md +5 -0
  29. package/templates/common/docs/harness/dispatch.md +4 -0
  30. package/templates/common/scripts/scan-clean.mjs +456 -0
  31. package/templates/common/scripts/validate-harness.mjs +9 -0
  32. package/templates/common/scripts/wf-mode-hook.mjs +318 -0
  33. package/templates/common/scripts/wf-remove.mjs +396 -0
  34. package/templates/common/scripts/wf-statusline.ps1 +38 -0
  35. package/templates/common/scripts/wf-statusline.sh +48 -0
  36. package/templates/common/scripts/wf-update-check.mjs +389 -0
  37. package/templates/optional/skills/browser-e2e/docs/workflows/browser-e2e.md +12 -0
@@ -0,0 +1,51 @@
1
+ ---
2
+ name: wf-remove
3
+ description: Safely remove Harness framework files. Auto-removes unmodified files, requires user confirmation for anything modified or uncertain. Use for /wf-remove, wf remove, remove harness, or uninstall harness.
4
+ ---
5
+
6
+ # WF Remove
7
+
8
+ Safely removes Harness framework files from a project. Classification is script-driven for speed — no AI guessing about what's safe to delete.
9
+
10
+ ## Load
11
+
12
+ - `Harness/scripts/wf-remove.mjs` — the removal script
13
+ - `Harness/.harness-version` — stored checksums for modification detection
14
+
15
+ ## How It Works
16
+
17
+ 1. Run `node Harness/scripts/wf-remove.mjs` first — this outputs a DRY-RUN plan instantly.
18
+ 2. The script classifies all files into three tiers:
19
+
20
+ | Tier | Meaning | Action |
21
+ |------|---------|--------|
22
+ | **SAFE** | Framework file matching stored checksum (unmodified) | Auto-remove |
23
+ | **MODIFIED** | Framework file edited by user, or not in checksums | **MUST confirm with user** |
24
+ | **USER DATA** | User-owned files (PROGRESS, tasks, memory, research, README, etc.) | **NEVER remove** |
25
+
26
+ 3. Review the plan. For MODIFIED files, present each one to the user:
27
+ - Show file path and reason it's flagged
28
+ - Options: **[D]elete** / **[K]eep** (default: keep)
29
+ - Never delete without explicit user confirmation
30
+
31
+ 4. Run `node Harness/scripts/wf-remove.mjs --apply` to execute.
32
+ 5. After removal, empty directories are auto-cleaned up.
33
+ 6. The CLAUDE.md Harness Binding section is flagged for separate confirmation.
34
+
35
+ ## Rules
36
+
37
+ - **NEVER delete USER DATA files.** No exceptions.
38
+ - **NEVER delete MODIFIED files without user confirmation.** Each file must be explicitly approved.
39
+ - **DO auto-remove SAFE files** — these match the original scaffold checksum, user never touched them.
40
+ - After removal, suggest `git status` to review.
41
+ - If `.claude/settings.json` was modified (user added hooks/permissions), flag it separately — the user may want to keep their hooks.
42
+ - Do NOT auto-delete Harness/ if it still contains user files.
43
+
44
+ ## Return
45
+
46
+ - Files removed (safe)
47
+ - Files kept (modified, user chose keep)
48
+ - Files preserved (user data — never touched)
49
+ - Directories cleaned up
50
+ - CLAUDE.md status
51
+ - Git status suggestion
@@ -1,50 +1,72 @@
1
- ---
2
- name: wf-review
3
- description: Cross-model peer review. Invokes the other agent CLI (Codex or Claude) to independently review changes, architecture, or bug fixes. Use for /wf-review, peer review, second opinion, or when stuck.
4
- ---
5
-
6
- # WF Review
7
-
8
- Cross-model peer review via the OTHER agent CLI. Fresh eyes on your changes.
9
-
10
- ## Load
11
-
12
- - `Harness/README.md` for project context
13
- - Current diff or target files
14
-
15
- ## How It Works
16
-
17
- 1. **Detect available CLIs**: Check `which codex` and `which claude`. Use the OTHER CLI — never the one running this session.
18
- 2. **Prepare context**: Gather diff (`git diff`), relevant architecture docs, the specific question
19
- 3. **Invoke the OTHER CLI** — the one we're NOT currently running under
20
- 4. **Read and synthesize**: Present the raw output, then add analysis
21
-
22
- ## CLI Commands
23
-
24
- | Runtime | Review Command |
25
- |---|---|
26
- | Claude Codex | `git diff \| codex exec "..."` (include full diff, not just commit message) |
27
- | Codex Claude | `git diff \| claude -p "..."` |
28
- | Either (fallback) | warn user, suggest installing the other CLI. Do NOT proceed with same-model review. |
29
-
30
- **Anti-self-review rule**: Detect which runtime we're in, then use the OTHER one. Never invoke the same CLI that's running the session.
31
-
32
- ## Context to Include
33
-
34
- For a good review, pipe or include:
35
- - `git diff` or `git diff --cached`
36
- - Relevant `Harness/` docs (architecture.md)
37
- - The specific focus: "find bugs", "critique architecture from 4+ dimensions", "fix this bug", "check for security issues"
38
-
39
- ## Rules
40
-
41
- - Never simulate or fake the review. The Bash tool MUST invoke the other CLI.
42
- - If both CLIs fail, report the error don't silently skip.
43
- - Present the raw review output to the user before adding your own analysis.
44
- - Distinguish between: the peer's findings (authoritative) and your interpretation (supplementary).
45
-
46
- ## Return
47
-
48
- - Which CLI was used for review
49
- - Raw review output
50
- - CEO's synthesis and action items
1
+ ---
2
+ name: wf-review
3
+ description: Cross-model peer review. Invokes the other agent CLI (Codex or Claude) to independently review changes across 5 dimensions with severity classification. Use for /wf-review, peer review, second opinion, or when stuck.
4
+ ---
5
+
6
+ # WF Review — Cross-Model Peer Review
7
+
8
+ **Anti-Self-Review Guard:** Use the OTHER CLI. Claude→Codex, Codex→Claude. Never self-review.
9
+
10
+ ## CLI Detection & Invocation
11
+
12
+ | Runtime | Command |
13
+ |---|---|
14
+ | Claude → Codex | `git diff \| codex exec "<5-dimension review prompt>"` |
15
+ | Codex Claude | `git diff \| claude -p "<5-dimension review prompt>"` |
16
+ | Only one CLI | Warn user. Do NOT self-review. |
17
+
18
+ ## 5 Mandatory Review Dimensions
19
+
20
+ Construct the prompt covering ALL 5:
21
+
22
+ | # | Dimension | Key Questions |
23
+ |---|-----------|---------------|
24
+ | 1 | **Correctness** | Bugs, edge cases, race conditions, null/undefined, logic flaws? |
25
+ | 2 | **Security** | Injection, auth bypass, data exposure, input validation, unsafe deps? |
26
+ | 3 | **Architecture** | Boundary violations, coupling, state ownership, interface contract breaks? |
27
+ | 4 | **Performance** | Algorithmic complexity, N+1 queries, memory leaks, unnecessary allocations? |
28
+ | 5 | **Tests** | Coverage gaps, missing edge cases, test quality, CI regressions? |
29
+
30
+ ## Context
31
+
32
+ Include: `git diff` (or `git diff --cached`), relevant `Harness/` docs (architecture.md), the 5-dimension table above.
33
+
34
+ **Size guard:** diff >500 lines → warn + suggest narrower scope or split review.
35
+
36
+ ## Severity Classification
37
+
38
+ | Severity | Criteria | Action |
39
+ |----------|----------|--------|
40
+ | **Critical** | Security vuln, data loss, crash, data corruption | Must fix before merge |
41
+ | **High** | Bug, regression, spec violation, broken contract | Should fix before merge |
42
+ | **Medium** | Maintainability, duplication, test gap, perf concern | May defer with written justification |
43
+ | **Low** | Style, naming, minor optimization, nit | Optional |
44
+
45
+ ## Rules
46
+
47
+ - Bash MUST invoke the other CLI — never simulate.
48
+ - Both CLIs fail report error, don't skip.
49
+ - Raw output first, then your classified synthesis.
50
+ - Peer findings = authoritative; your classification = supplementary.
51
+
52
+ ## CEO Synthesis Output
53
+
54
+ ```
55
+ Review CLI: [Codex / Claude]
56
+ Dimensions: Correctness, Security, Architecture, Performance, Tests
57
+
58
+ Critical (must fix):
59
+ - [file:line] description → fix
60
+
61
+ High (should fix):
62
+ - [file:line] description → fix
63
+
64
+ Medium (may defer):
65
+ - [file:line] description → note
66
+
67
+ Low (optional):
68
+ - [file:line] description
69
+
70
+ Verdict: APPROVE / APPROVE_WITH_FIXES / REJECT
71
+ Actions: 1. ... 2. ...
72
+ ```
@@ -1,58 +1,74 @@
1
- ---
2
- name: wf-update
3
- description: Use when the user says /wf update, wf update, update harness, or check for updates. Fetches latest template files from GitHub, compares against stored checksums, and applies incremental updates safely.
4
- ---
5
-
6
- # WF Update
7
-
8
- GitHub-based incremental harness update. Pulls latest template files and compares against stored checksums in `Harness/.harness-version`.
9
-
10
- ## Load
11
-
12
- - `Harness/.harness-version`
13
- - `Harness/README.md#Update Mechanism` row (when available)
14
-
15
- ## How It Works
16
-
17
- 1. Read `Harness/.harness-version` -- get current `generator` version and stored `checksums`.
18
- 2. Fetch the latest template file list from GitHub:
19
- - Base URL: `https://raw.githubusercontent.com/zingspark/create-harness-vibe-coding/main/templates/common/`
20
- - Fetch `.harness-version` from the repo first to get the latest version and expected file list.
21
- - If the repo version equals the local version, report "Already up to date."
22
- 3. For each file in the repo's checksums map:
23
- - Compute SHA-256 of the fetched file content (normalize line endings to LF).
24
- - Compare against the local stored checksum in `Harness/.harness-version`.
25
- 4. Classify each difference:
26
- - **SAFE** (TIER 1): Harness runtime files. If local checksum matches stored -> file is unmodified -> safe to overwrite with fetched version.
27
- - **PRESERVE** (TIER 2): User data files. Never overwrite. (`Harness/PROGRESS.md`, `Harness/tasks/**`, `Harness/memory/**`, `Harness/research/PRD.md`, `Harness/research/research-results.md`, `Harness/architecture.md`, root `README.md`, `.gitignore`)
28
- - **MERGE** (TIER 3): Dual-purpose files. If local checksum matches stored -> safe to overwrite. If mismatch -> user modified -> report as merge candidate, never auto-overwrite. (`CLAUDE.md`, `Harness/MEMORY.md`, `Harness/README.md`)
29
- 5. For files in the GitHub repo NOT in local checksums: classify as NEW, plan to create.
30
- 6. Report update plan: `updated/N, merge/N, created/N, skipped/N`
31
- 7. If `--check` flag: report only, do not write.
32
- 8. Apply updates:
33
- - SAFE files: overwrite with fetched content.
34
- - NEW files: create.
35
- - MERGE files with matching checksums: overwrite.
36
- - MERGE files with mismatched checksums: skip, warn user.
37
- - PRESERVE files: never touched.
38
- 9. Update `Harness/.harness-version`:
39
- - Update `generator` to latest version.
40
- - Update `generated` timestamp.
41
- - Recompute and store checksums for all updated files.
42
- 10. Record update in `Harness/tasks/harness-update/PROGRESS.md` (create task capsule if needed).
43
-
44
- ## Rules
45
-
46
- - Never overwrite PRESERVE files.
47
- - Never auto-overwrite MERGE files with mismatched checksums.
48
- - If offline (cannot reach GitHub), report and exit cleanly.
49
- - After update, suggest running `node Harness/scripts/validate-harness.mjs`.
50
- - Subagents are readers and reporters. Only the main agent writes updated files.
51
-
52
- ## Return
53
-
54
- - Update plan summary
55
- - Files updated
56
- - Files skipped (with reasons)
57
- - New version
58
- - Validation suggestion
1
+ ---
2
+ name: wf-update
3
+ description: Use when the user says /wf-update, wf update, update harness, or check for updates. Script-driven comparison for speed fetches remote checksums, compares locally in milliseconds, only surfaces conflicts for user decision.
4
+ ---
5
+
6
+ # WF Update
7
+
8
+ Script-driven harness update. The script does all comparison in milliseconds; AI only handles CONFLICT files.
9
+
10
+ ## Load
11
+
12
+ - `Harness/scripts/wf-update-check.mjs` — the fast comparison + apply script
13
+ - `Harness/.harness-version` stored checksums
14
+
15
+ ## How It Works (script-driven, fast)
16
+
17
+ 1. Run `node Harness/scripts/wf-update-check.mjs` fetches remote `.harness-version`, compares all checksums locally, outputs instant plan.
18
+ 2. The script classifies every file:
19
+
20
+ | Tier | Meaning | Action |
21
+ |------|---------|--------|
22
+ | **SAFE** | Framework file, local matches stored checksum | Auto-update |
23
+ | **NEW** | File in remote but not local | Auto-create |
24
+ | **CONFLICT** | MERGE file user modified, or runtime file diverged | **User decides** |
25
+ | **PRESERVE** | User data (PROGRESS, tasks, memory, PRD, README, etc.) | **Never touch** |
26
+ | **SKIPPED** | File in local but not remote | Skip |
27
+
28
+ 3. For CONFLICT files, present each one to the user:
29
+ - Show file path and reason
30
+ - Options: **[M]erge** (recommended — keep user changes, apply framework updates) / **[O]verwrite** (discard user changes, use remote) / **[K]eep** (skip this file)
31
+
32
+ 4. Run `node Harness/scripts/wf-update-check.mjs --apply` to execute SAFE+NEW files. CONFLICT files are resolved manually by the AI after user decision.
33
+ 5. After update, run `node Harness/scripts/validate-harness.mjs`.
34
+ 6. Run `node Harness/scripts/scan-clean.mjs` to find dead files (tracked in local `.harness-version` but removed from the remote template) and orphan files (on disk in framework directories but untracked by either checksum set). Review findings; clean with `--clean --yes`.
35
+
36
+ ## Speed
37
+
38
+ | Step | Before (AI-driven) | After (script-driven) |
39
+ |------|-------------------|----------------------|
40
+ | Fetch file list | N WebFetch calls | 1 HTTP fetch |
41
+ | Compare checksums | AI reads each file | Script computes SHA-256 in ms |
42
+ | Classify | AI reasons per file | Script uses pattern matching |
43
+ | Apply | AI writes each file | Script batch writes |
44
+
45
+ ## Rules
46
+
47
+ - **NEVER overwrite PRESERVE files.** No exceptions.
48
+ - **NEVER auto-merge CONFLICT files** user MUST decide: merge / overwrite / keep.
49
+ - If offline: report and exit cleanly.
50
+ - After update, suggest `node Harness/scripts/validate-harness.mjs`.
51
+ - The script normalizes line endings (CRLF→LF) for checksum comparison.
52
+
53
+ ## Scan & Clean
54
+
55
+ After a successful update, run dead-file detection to remove files that were tracked in the previous harness version but removed from the new remote template. This keeps the project clean and prevents stale framework files from accumulating.
56
+
57
+ 1. Run `node Harness/scripts/scan-clean.mjs` scans for dead files (tracked in local `.harness-version` but not in remote) and orphan files (on disk in framework directories but untracked by either checksum set).
58
+ 2. Report findings to the user:
59
+ - **DEAD files** — safe to delete (not in remote template, not preserved). List each path.
60
+ - **ORPHAN files** — needs review (untracked in framework directories like `.claude/agents/`, `Harness/scripts/`, etc.).
61
+ - **EMPTY DIRS** — directories that would become empty after cleaning.
62
+ 3. If DEAD files are found, ask the user to confirm cleanup before proceeding.
63
+ 4. Run `node Harness/scripts/scan-clean.mjs --clean --yes` to delete dead files, remove empty parent directories, and update `.harness-version`.
64
+ 5. Report a cleanup summary: files deleted, empty directories removed, any failures.
65
+
66
+ ## Return
67
+
68
+ - Update version (from → to)
69
+ - Files auto-updated (SAFE + NEW count)
70
+ - Files in conflict (each with merge/overwrite/keep decision)
71
+ - Files skipped
72
+ - Validation suggestion
73
+ - Dead files found and cleaned
74
+ - Orphan files flagged for review
@@ -0,0 +1,2 @@
1
+ [features]
2
+ hooks = true
@@ -0,0 +1,37 @@
1
+ {
2
+ "hooks": {
3
+ "SessionStart": [
4
+ {
5
+ "matcher": "",
6
+ "hooks": [
7
+ {
8
+ "type": "command",
9
+ "command": "node Harness/scripts/wf-mode-hook.mjs"
10
+ }
11
+ ]
12
+ }
13
+ ],
14
+ "UserPromptSubmit": [
15
+ {
16
+ "matcher": "",
17
+ "hooks": [
18
+ {
19
+ "type": "command",
20
+ "command": "node Harness/scripts/wf-mode-hook.mjs"
21
+ }
22
+ ]
23
+ }
24
+ ],
25
+ "PreToolUse": [
26
+ {
27
+ "matcher": "Edit|Write|MultiEdit|Bash",
28
+ "hooks": [
29
+ {
30
+ "type": "command",
31
+ "command": "node Harness/scripts/wf-mode-hook.mjs"
32
+ }
33
+ ]
34
+ }
35
+ ]
36
+ }
37
+ }
@@ -1,8 +1,135 @@
1
1
  {
2
- "generator": "{{generatorVersion}}",
3
- "generated": "{{generatedTimestamp}}",
2
+ "generator": "0.7.1",
3
+ "generated": "2026-06-26T10:20:45.491Z",
4
4
  "options": [],
5
5
  "autoCheck": true,
6
6
  "source": "https://raw.githubusercontent.com/zingspark/create-harness-vibe-coding/main/templates/common/",
7
- "checksums": {}
7
+ "checksums": {
8
+ ".claude/agents/architect-manager.md": "sha256-d98c3a2d044d5216d9bcde217b4359b1c33f5be152416e242807652ddcd2868b",
9
+ ".claude/agents/architect.md": "sha256-61cea40c8c3e01bd53f3ad642ef734850fdb931497e7ee20552ea7a8b4e7b70c",
10
+ ".claude/agents/context-master.md": "sha256-e94c921565d979fef5651aeaad190b531b407075ce94c72dfa4412c1282e250a",
11
+ ".claude/agents/debugger.md": "sha256-c0d322ca971c6be38c99f0e20b6d5feec26d4f62b84aeffecc4279c1cce59480",
12
+ ".claude/agents/docs-researcher.md": "sha256-f8a34420ec10c185c4457d2e5e9ab584b676615ec471a9e671420d36e4e604f6",
13
+ ".claude/agents/explore-manager.md": "sha256-64c7d1bdf8b490339b5a3487229fcb3e28d0d84983d9a4fa93060c2cf47b1dfc",
14
+ ".claude/agents/implement-manager.md": "sha256-7387ee0e12ba189aa35fea453f93a1bd14549556754e002590b1af4de0ebb209",
15
+ ".claude/agents/implementer.md": "sha256-86a32182798480b09bcc87e47605a1247f15d5ab91b58dfedb6496e3b0335618",
16
+ ".claude/agents/memory-master.md": "sha256-a8a2e3c8c53f54e63f11cc7543204d99f8be11fd974c8aefc66cdaa6957ef551",
17
+ ".claude/agents/planner.md": "sha256-7d1911adbd3a4a6b82713fb0e2358bf01d3f7f3b8aeccd38bd51cb445b1fb7a9",
18
+ ".claude/agents/researcher.md": "sha256-402fef14dee8f495dc9ddfad5af3ad233d254326b49b831f604014a8cb6d0beb",
19
+ ".claude/agents/review-manager.md": "sha256-fb8fbd6c6624279cc97aa3dbd50ec20c150ff4a2d195788bc8537d98699cc41b",
20
+ ".claude/agents/reviewer.md": "sha256-2913b7799fcd8e162f01ae0de09a41ec7083de5f0cae3abcd4ecc62acc675a6b",
21
+ ".claude/agents/test-writer.md": "sha256-9018a9f65f1861a9bade999790e945d258781c1d846eb30a9de23ec3ce5f1d82",
22
+ ".claude/agents/verifier.md": "sha256-6d8ca8bd13d7bb7680423875269e407c06aca60334df44d9230a015aabd0a8d0",
23
+ ".claude/commands/wf-learn.md": "sha256-dd0b327e634972b3c9dc5d0b2213345d295444d3b40f19a7676327ab1ff36f9a",
24
+ ".claude/commands/wf-max.md": "sha256-fb64fc098ebac2cf36a06a3fbbc8881d0ddaf9ae05ee959124500038e4494833",
25
+ ".claude/commands/wf-remove.md": "sha256-85ac16ecfc80c25c57690540d55beca1769ea4c66491a7e039692a0e61d5d382",
26
+ ".claude/commands/wf-review.md": "sha256-fda0dcb41ebe4e26eed51328588cfb3ee22fbeaa447d108acc1729a4049c4e2c",
27
+ ".claude/commands/wf-update.md": "sha256-0287c8968faa375495211c6038e2964dc3bea7632fc7b03798309232e8261f35",
28
+ ".claude/commands/wf.md": "sha256-436dad0e57cb7a7f97074381c1e8bb43493707374428cf5a64b6d1840c8fc086",
29
+ ".claude/rules/ecc/common.md": "sha256-157c300e3b47049998d1bca867da6f9b54efb5de6efbabbb64a22af4cb2b84e8",
30
+ ".claude/settings.json": "sha256-3ee53515a829b85267b7330fad9e90d797f1bd16964ec9f876fdd630a0d2c093",
31
+ ".claude/skills/subagent-orchestrator/SKILL.md": "sha256-c9b90d8cfbeb8e7c1f89519e34d7da8dc0f0cad102092443e221518c723320e1",
32
+ ".claude/skills/wf-learn/SKILL.md": "sha256-9e9100a161327d53a35709d881745c5d1473de058707537b3566474f3c113cac",
33
+ ".claude/skills/wf-max/SKILL.md": "sha256-5a145e9e477f6cb7c75486fd72c42e8c2295a8c52a10693b80998770b7e2eb44",
34
+ ".claude/skills/wf-readme/SKILL.md": "sha256-4d34ee3b6b305fa2581f5d8cb31e9152759f3df8bf8fa08efbb43782f128bdcd",
35
+ ".claude/skills/wf-remove/SKILL.md": "sha256-4057d8f0672ad44990354670aeb6c5be0c3d1f934781b26f776323f070f4a984",
36
+ ".claude/skills/wf-review/SKILL.md": "sha256-7e599bd8cbbfc7f6e55aac4c19844317a1e3efd5cc4cf1513091721f671a22b0",
37
+ ".claude/skills/wf-update/SKILL.md": "sha256-9c40d89ef52762793d97461da36709148af4a03222c352fde40f0193d0dddb58",
38
+ ".codex/config.toml": "sha256-d37497c3278121598a663564ab38b53f658969717f78decb661ddd11c66551ea",
39
+ ".codex/hooks.json": "sha256-6d8d237b4a038a48fbadbdd087d9a68dba024bcfd748f59968252ebae7cc2e96",
40
+ "AGENTS.md": "sha256-bbc17b119ff579e500dcd36e78f9cf600ccda27fa7b32903f233ad96a97058ff",
41
+ "CLAUDE.md": "sha256-432bd4dc9bdf9958d79ae697f72d1c9723be23fb156d43889ede84e305ed5e70",
42
+ "Harness/MEMORY.md": "sha256-368bba7ae0a63b931dc547c013dd4c361e597ca5a54affa662778cd0f441d788",
43
+ "Harness/README.md": "sha256-9ac42a3ad00890bfefba8cb658c5eb1d4ad086075d0fa70492e01c8b95dea770",
44
+ "Harness/SETUP.md": "sha256-7487bfbcf13c29d138589ad533163c2112fc37c3b791397e4cfe6a32efd24d4e",
45
+ "Harness/WF-MAX.md": "sha256-81c788ac56a0c1673a9e6bdf619efbcfa9c961ca7c5065c15b98760775f963a6",
46
+ "Harness/WF.md": "sha256-3acd410f420a99a4237ddcb702502888538e09caaf2295789ef1358a15feb75f",
47
+ "Harness/agent-workflow.md": "sha256-1aff5e7dc1e082c559cb0a9086c4f93f6702905aff00ebb957300f463ea80b31",
48
+ "Harness/context-loading.md": "sha256-0d97d6ec2325063f7158511f3462ca9cbdf3b6db177a79dac8ee7d2cb7930264",
49
+ "Harness/dispatch.md": "sha256-e0c6a3a46acc8899574c9b6d6bb4da119adb9e9ed1ce91acc9f7a688ed3aea15",
50
+ "Harness/extension.md": "sha256-686f76d83e91750c20d4f5aa8e614f5003baeb5a703d0451f469ca7eeab75e37",
51
+ "Harness/lifecycle.md": "sha256-5979c37e66e35940cb707f8cd71e97d53bb05399c3281c714f69499abdee59a4",
52
+ "Harness/research/README.md": "sha256-956c154df01cb9376972eb8b88bb3be0fe4e2dda802a72457c0126e3476fa755",
53
+ "Harness/scripts/scan-clean.mjs": "sha256-66d42f5cbc6374c826cd488bd0b2fcef11eb22d60ac7995e3585c7de5cb2cb44",
54
+ "Harness/scripts/validate-harness.mjs": "sha256-36a5530ca5bc6acc986a9d694c7355a575430c32a0f486a4591ae98fcbd5cc64",
55
+ "Harness/scripts/wf-mode-hook.mjs": "sha256-289f0df4155dd8523507f59add5eac72c0aa92efc85a78d5a46350b9c9bb4f80",
56
+ "Harness/scripts/wf-remove.mjs": "sha256-e0a3cc9a9546484b8d8b26d0ffd6af24a9d4521d2a61c728d16756981e4c36fc",
57
+ "Harness/scripts/wf-statusline.ps1": "sha256-53c2e0178e9a0826516731b1145f96f55ff6c57fb1f31bf6f1a7210a8502ca65",
58
+ "Harness/scripts/wf-statusline.sh": "sha256-053908cd4d53dea162252077c6cc5544ccd164455739f6edfbf254945f06ea2f",
59
+ "Harness/scripts/wf-update-check.mjs": "sha256-8c3fa219e902056c20c55b2abfa5152349d9e00f4faa5bef646f78bfb71c486f",
60
+ "Harness/subagents.md": "sha256-e66f4bef8ce6c118cf0ec8c511f727a8c2c40bce25dcf5b754489d89915a47ba",
61
+ "commands/wf-max.toml": "sha256-89818556f93d51cfe508a0c92de171f0f46be65d8001eb3eac68e46f18ddf783",
62
+ "commands/wf-review.toml": "sha256-d2b58f3892d2f7c5c689baa9e3361c1e355fae72bf632a6ed61f1a16743848f9"
63
+ },
64
+ "sources": {
65
+ ".claude/agents/architect-manager.md": ".claude/agents/architect-manager.md",
66
+ ".claude/agents/architect.md": ".claude/agents/architect.md",
67
+ ".claude/agents/context-master.md": ".claude/agents/context-master.md",
68
+ ".claude/agents/debugger.md": ".claude/agents/debugger.md",
69
+ ".claude/agents/docs-researcher.md": ".claude/agents/docs-researcher.md",
70
+ ".claude/agents/explore-manager.md": ".claude/agents/explore-manager.md",
71
+ ".claude/agents/implement-manager.md": ".claude/agents/implement-manager.md",
72
+ ".claude/agents/implementer.md": ".claude/agents/implementer.md",
73
+ ".claude/agents/memory-master.md": ".claude/agents/memory-master.md",
74
+ ".claude/agents/planner.md": ".claude/agents/planner.md",
75
+ ".claude/agents/researcher.md": ".claude/agents/researcher.md",
76
+ ".claude/agents/review-manager.md": ".claude/agents/review-manager.md",
77
+ ".claude/agents/reviewer.md": ".claude/agents/reviewer.md",
78
+ ".claude/agents/test-writer.md": ".claude/agents/test-writer.md",
79
+ ".claude/agents/verifier.md": ".claude/agents/verifier.md",
80
+ ".claude/commands/wf-learn.md": ".claude/commands/wf-learn.md",
81
+ ".claude/commands/wf-max.md": ".claude/commands/wf-max.md",
82
+ ".claude/commands/wf-remove.md": ".claude/commands/wf-remove.md",
83
+ ".claude/commands/wf-review.md": ".claude/commands/wf-review.md",
84
+ ".claude/commands/wf-update.md": ".claude/commands/wf-update.md",
85
+ ".claude/commands/wf.md": ".claude/commands/wf.md",
86
+ ".claude/rules/ecc/common.md": ".claude/rules/ecc/common.md",
87
+ ".claude/settings.json": ".claude/settings.json",
88
+ ".claude/skills/subagent-orchestrator/SKILL.md": ".claude/skills/subagent-orchestrator/SKILL.md",
89
+ ".claude/skills/wf-learn/SKILL.md": ".claude/skills/wf-learn/SKILL.md",
90
+ ".claude/skills/wf-max/SKILL.md": ".claude/skills/wf-max/SKILL.md",
91
+ ".claude/skills/wf-readme/SKILL.md": ".claude/skills/wf-readme/SKILL.md",
92
+ ".claude/skills/wf-remove/SKILL.md": ".claude/skills/wf-remove/SKILL.md",
93
+ ".claude/skills/wf-review/SKILL.md": ".claude/skills/wf-review/SKILL.md",
94
+ ".claude/skills/wf-update/SKILL.md": ".claude/skills/wf-update/SKILL.md",
95
+ ".codex/config.toml": ".codex/config.toml",
96
+ ".codex/hooks.json": ".codex/hooks.json",
97
+ ".gitignore": ".gitignore",
98
+ "AGENTS.md": "AGENTS.md",
99
+ "CLAUDE.md": "CLAUDE.md",
100
+ "Harness/.harness-version": ".harness-version",
101
+ "Harness/MEMORY.md": "MEMORY.md",
102
+ "Harness/PROGRESS.md": "docs/harness/PROGRESS.md",
103
+ "Harness/README.md": "docs/README.md",
104
+ "Harness/SETUP.md": "SETUP.md",
105
+ "Harness/WF-MAX.md": "docs/harness/WF-MAX.md",
106
+ "Harness/WF.md": "docs/harness/WF.md",
107
+ "Harness/agent-workflow.md": "docs/harness/agent-workflow.md",
108
+ "Harness/architecture.md": "docs/harness/architecture.md",
109
+ "Harness/context-loading.md": "docs/harness/context-loading.md",
110
+ "Harness/dispatch.md": "docs/harness/dispatch.md",
111
+ "Harness/extension.md": "docs/harness/extension.md",
112
+ "Harness/lifecycle.md": "docs/harness/lifecycle.md",
113
+ "Harness/memory/agent-lessons-patterns.md": "memory/agent-lessons-patterns.md",
114
+ "Harness/memory/tool-usage-reflections.md": "memory/tool-usage-reflections.md",
115
+ "Harness/memory/user-corrections-preferences.md": "memory/user-corrections-preferences.md",
116
+ "Harness/research/PRD.md": "docs/research/PRD.md",
117
+ "Harness/research/README.md": "docs/research/README.md",
118
+ "Harness/research/research-results.md": "docs/research/research-results.md",
119
+ "Harness/scripts/scan-clean.mjs": "scripts/scan-clean.mjs",
120
+ "Harness/scripts/validate-harness.mjs": "scripts/validate-harness.mjs",
121
+ "Harness/scripts/wf-mode-hook.mjs": "scripts/wf-mode-hook.mjs",
122
+ "Harness/scripts/wf-remove.mjs": "scripts/wf-remove.mjs",
123
+ "Harness/scripts/wf-statusline.ps1": "scripts/wf-statusline.ps1",
124
+ "Harness/scripts/wf-statusline.sh": "scripts/wf-statusline.sh",
125
+ "Harness/scripts/wf-update-check.mjs": "scripts/wf-update-check.mjs",
126
+ "Harness/subagents.md": "docs/harness/subagents.md",
127
+ "Harness/tasks/_template/ARTIFACTS.md": "docs/tasks/_template/ARTIFACTS.md",
128
+ "Harness/tasks/_template/NOTES.md": "docs/tasks/_template/NOTES.md",
129
+ "Harness/tasks/_template/PLAN.md": "docs/tasks/_template/PLAN.md",
130
+ "Harness/tasks/_template/PROGRESS.md": "docs/tasks/_template/PROGRESS.md",
131
+ "README.md": "README.md",
132
+ "commands/wf-max.toml": "commands/wf-max.toml",
133
+ "commands/wf-review.toml": "commands/wf-review.toml"
134
+ }
8
135
  }
@@ -1,7 +1,30 @@
1
1
  # AGENTS.md
2
2
 
3
- Entry point for coding agents.
3
+ Entry point for coding agents. This project uses the Harness scaffold — a 0-1 product workflow contract.
4
4
 
5
- Read `CLAUDE.md` first and follow its startup sequence: `Harness/MEMORY.md`, then `Harness/README.md`.
5
+ ## Startup
6
6
 
7
- Do not bulk-read `Harness/`. Let `Harness/README.md` route you to the smallest useful context.
7
+ Read `CLAUDE.md` first, then `Harness/MEMORY.md`, then `Harness/README.md`.
8
+ Do not bulk-read `Harness/`. Let `Harness/README.md#Load By Task` route you.
9
+
10
+ ## CEO Contract (READ FIRST)
11
+
12
+ `/wf-max` active → you are **CEO, not implementer**.
13
+
14
+ | ALLOWED (W0) | FORBIDDEN (always on source) |
15
+ |---|---|
16
+ | Read Harness docs, CLAUDE.md | Edit / Write / MultiEdit |
17
+ | Grep/Glob for scoping | Bash (except `ls`/`dir`/`tree`/`git`) |
18
+ | Agent spawn (ONE message) | Deep source reads → delegate to Worker |
19
+ | Write PLAN.md / PROGRESS.md | Sequential spawn (AP6) |
20
+
21
+ **Tempted to edit source? STOP. Spawn a Worker.**
22
+
23
+ ## Key Commands
24
+
25
+ | Command | Purpose |
26
+ |---------|---------|
27
+ | `/wf-max [task]` | Maximum parallelism: CEO→Manager→Worker |
28
+ | `/wf-review [focus]` | Cross-model peer review (use OTHER CLI) |
29
+ | `/wf <task>` | Standard workflow mode |
30
+ | `/wf-auto` | Perpetual auto-optimization |