create-ccc-tutor 0.1.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.
Files changed (106) hide show
  1. package/README.md +41 -0
  2. package/bin/cli.js +76 -0
  3. package/package.json +28 -0
  4. package/template/.claude/commands/abandon.md +7 -0
  5. package/template/.claude/commands/add-anti-flag.md +7 -0
  6. package/template/.claude/commands/add-constitution-clause.md +7 -0
  7. package/template/.claude/commands/audit-spec.md +7 -0
  8. package/template/.claude/commands/commit.md +7 -0
  9. package/template/.claude/commands/constitution-edit.md +7 -0
  10. package/template/.claude/commands/db-schema.md +7 -0
  11. package/template/.claude/commands/exam.md +66 -0
  12. package/template/.claude/commands/execution-plan.md +7 -0
  13. package/template/.claude/commands/feature-draft.md +7 -0
  14. package/template/.claude/commands/handoff.md +7 -0
  15. package/template/.claude/commands/implement.md +7 -0
  16. package/template/.claude/commands/init.md +7 -0
  17. package/template/.claude/commands/next.md +7 -0
  18. package/template/.claude/commands/offload.md +7 -0
  19. package/template/.claude/commands/pickup.md +7 -0
  20. package/template/.claude/commands/recall.md +7 -0
  21. package/template/.claude/commands/remember.md +7 -0
  22. package/template/.claude/commands/slide.md +87 -0
  23. package/template/.claude/commands/spec-finalize.md +7 -0
  24. package/template/.claude/commands/test-fix.md +7 -0
  25. package/template/.claude/commands/uninstall.md +7 -0
  26. package/template/.claude/settings.json +161 -0
  27. package/template/.claude-plugin/plugin.json +41 -0
  28. package/template/.codex/config.toml +24 -0
  29. package/template/.codex/hooks.json +4 -0
  30. package/template/.codex/install-skills.sh +18 -0
  31. package/template/.codex/skills/exam/SKILL.md +61 -0
  32. package/template/.codex/skills/slide/SKILL.md +69 -0
  33. package/template/.harness/agents/README.md +70 -0
  34. package/template/.harness/agents/_template/junior-agent-template.md +116 -0
  35. package/template/.harness/agents/backend-reviewer.md +153 -0
  36. package/template/.harness/agents/frontend-reviewer.md +158 -0
  37. package/template/.harness/agents/security-reviewer.md +148 -0
  38. package/template/.harness/agents/test-fixer.md +147 -0
  39. package/template/.harness/docs/doc-sync.md +29 -0
  40. package/template/.harness/docs/git-hygiene.md +56 -0
  41. package/template/.harness/docs/spec-model.md +47 -0
  42. package/template/.harness/docs/tool-map.md +120 -0
  43. package/template/.harness/docs/workflow.md +59 -0
  44. package/template/.harness/scripts/README.md +70 -0
  45. package/template/.harness/scripts/auditor-gate.sh +388 -0
  46. package/template/.harness/scripts/bootstrap-check.sh +103 -0
  47. package/template/.harness/scripts/budget-monitor.sh +223 -0
  48. package/template/.harness/scripts/check-prereqs.sh +165 -0
  49. package/template/.harness/scripts/checkpoint-recall.sh +136 -0
  50. package/template/.harness/scripts/checkpoint-write.sh +281 -0
  51. package/template/.harness/scripts/decision-log-append.sh +90 -0
  52. package/template/.harness/scripts/env-check.sh +286 -0
  53. package/template/.harness/scripts/format-edit.sh +80 -0
  54. package/template/.harness/scripts/lint-bans.sh +110 -0
  55. package/template/.harness/scripts/memory-archive.sh +129 -0
  56. package/template/.harness/scripts/memory-recall.sh +197 -0
  57. package/template/.harness/scripts/memory-snapshot.sh +124 -0
  58. package/template/.harness/scripts/post-migration.sh +58 -0
  59. package/template/.harness/scripts/precommit-cycles.sh +74 -0
  60. package/template/.harness/scripts/precommit-typecheck.sh +69 -0
  61. package/template/.harness/scripts/scratchpad-recall.sh +83 -0
  62. package/template/.harness/scripts/scratchpad-update.sh +39 -0
  63. package/template/.harness/scripts/standalone-bootstrap.md +443 -0
  64. package/template/.harness/skills/abandon/SKILL.md +157 -0
  65. package/template/.harness/skills/add-anti-flag/SKILL.md +205 -0
  66. package/template/.harness/skills/add-constitution-clause/SKILL.md +244 -0
  67. package/template/.harness/skills/audit-spec/SKILL.md +395 -0
  68. package/template/.harness/skills/commit/SKILL.md +270 -0
  69. package/template/.harness/skills/constitution-edit/SKILL.md +292 -0
  70. package/template/.harness/skills/db-schema/SKILL.md +145 -0
  71. package/template/.harness/skills/db-schema/references/methodology.md +202 -0
  72. package/template/.harness/skills/execution-plan/SKILL.md +346 -0
  73. package/template/.harness/skills/feature-draft/SKILL.md +426 -0
  74. package/template/.harness/skills/handoff/SKILL.md +211 -0
  75. package/template/.harness/skills/implement/SKILL.md +355 -0
  76. package/template/.harness/skills/init/SKILL.md +805 -0
  77. package/template/.harness/skills/next/SKILL.md +245 -0
  78. package/template/.harness/skills/offload/SKILL.md +134 -0
  79. package/template/.harness/skills/pickup/SKILL.md +213 -0
  80. package/template/.harness/skills/recall/SKILL.md +159 -0
  81. package/template/.harness/skills/remember/SKILL.md +205 -0
  82. package/template/.harness/skills/spec-finalize/SKILL.md +196 -0
  83. package/template/.harness/skills/test-fix/SKILL.md +363 -0
  84. package/template/.harness/skills/uninstall/SKILL.md +370 -0
  85. package/template/.harness/state/install.json +83 -0
  86. package/template/AGENTS.md +262 -0
  87. package/template/CCC_MAGI_LICENSE +201 -0
  88. package/template/CCC_MAGI_README.md +986 -0
  89. package/template/CLAUDE.md +658 -0
  90. package/template/codex.md +39 -0
  91. package/template/constitution.md +164 -0
  92. package/template/course/README.md +15 -0
  93. package/template/course/course_code(example)/exam/README.md +2 -0
  94. package/template/course/course_code(example)/slide/slide_example-1.pdf +40 -0
  95. package/template/course/course_code(example)/slide/slide_example-2.pdf +40 -0
  96. package/template/docs/features/slide-query-implementation.md +79 -0
  97. package/template/docs/features/slide-query.md +211 -0
  98. package/template/docs-harness/README.md +42 -0
  99. package/template/docs-harness/adoption-playbook.md +373 -0
  100. package/template/docs-harness/ccc-step1-driver-template.md +288 -0
  101. package/template/docs-harness/cli-configs-README.md +78 -0
  102. package/template/docs-harness/context-architecture-v2.md +249 -0
  103. package/template/docs-harness/design-spec.md +437 -0
  104. package/template/docs-harness/memory-layer.md +135 -0
  105. package/template/docs-harness/retrospective-notes.md +204 -0
  106. package/template/gitignore +106 -0
@@ -0,0 +1,204 @@
1
+ # Retrospective Notes — Patterns Worth Carrying Forward
2
+
3
+ Lessons learned during real-world harness use, generalized from project-specific incidents. These aren't bugs to fix — they're **patterns to recognize and apply on future feature builds**.
4
+
5
+ Read this periodically. Re-read it before any non-trivial feature work. Each pattern below has a recognition trigger and a mitigation cost that beats the cost of re-discovering the pattern the hard way.
6
+
7
+ ---
8
+
9
+ ## 1. Prescribe one conservative mechanism, not a list of options
10
+
11
+ **Pattern:** When the CEO spec or implementation notes describe a foundational mechanism (a defensive cleanup path, a failsafe, a recovery sequence), don't list multiple "viable options" labeled as alternatives. Pick the most conservative one and prescribe it. Optimizations belong in code review or follow-up commits, not in the foundational spec.
12
+
13
+ **Why this fails when ignored:** A multi-option list invites the auditor to flag subtle gaps in each option, one round at a time. Each option that turns out to have a defect costs an audit round. Listing three "viable options" where two are subtly wrong = two extra audit rounds you didn't need.
14
+
15
+ **Mitigation:** Prescribe the conservative-default mechanism upfront (e.g., "network-independent clear + verifiable post-condition"). State the post-condition the mechanism must satisfy. If a smarter mechanism exists, propose it during code review where its merits can be evaluated against a known baseline. Don't make the auditor evaluate four alternative mechanisms simultaneously.
16
+
17
+ **Specific extension — SDK API post-conditions:** When the prescribed mechanism includes an SDK API call, attach a brief note documenting the actual return type and any non-trivial error-mode behavior. Models routinely assume an SDK's API surface — "this returns null on signed-out" — when the actual return is an envelope (`{data, error}`) with non-trivial interactions between fields. Verify against the SDK source, not against the model's recall.
18
+
19
+ ---
20
+
21
+ ## 2. Spec refactors require BOTH terminology grep AND cross-reference trace
22
+
23
+ **Pattern:** When a foundational spec replaces a named concept (e.g., a unified model replaces "soft" / "hard" variants of a behavior), the refactor isn't complete until two passes have run:
24
+
25
+ 1. **Terminology grep** — `grep -i` for the old terms across all spec files. Catches stale wording.
26
+ 2. **Cross-reference trace** — manually read every section that cross-references the refactored concept and verify the cross-referenced mechanic against the source spec's current contract. Catches sections that use the correct terminology but describe stale mechanics.
27
+
28
+ **Why both:** Terminology grep catches surface drift. Behavioral drift hides behind correct-looking words. A section can use the new vocabulary and still describe the old mechanism — grep won't catch it; only re-reading will.
29
+
30
+ **Cost:**
31
+ - Terminology grep: 30 seconds
32
+ - Cross-reference trace: ~1 hour for a focused refactor (one or two spec files; ~10 cross-referencing sections)
33
+
34
+ **Saves:** ~3–5 audit rounds per foundational refactor (each round was historically catching one or two surviving stale references that should have been caught upfront).
35
+
36
+ ---
37
+
38
+ ## 3. "This surface doesn't exist in code" rationales need a verification grep
39
+
40
+ **Pattern:** When a Stage 4 execution plan marks a step SKIP with the rationale "this surface doesn't exist in code," the skip MUST carry a captured grep (or equivalent search) confirming non-existence. Either record the grep output beside the skip, or keep the step active until the grep runs.
41
+
42
+ **Why this fails when ignored:** The model's mental model of "what exists in the codebase" can diverge from the actual codebase. "I think it doesn't exist" is not the same as "I grepped and confirmed it doesn't exist." A skip without a grep is a guess; if the surface actually exists, the related spec gap ships uncaught.
43
+
44
+ **Specific failure pattern:** A planned skip on the assumption that an error-handling component doesn't exist, when in fact a component matching the pattern does exist (under a slightly different name). The spec-vs-code gap then ships and is caught later by audit, costing the rounds that the grep would have prevented.
45
+
46
+ **Mitigation:** Every SKIP entry citing non-existence carries the grep command + output (or "no match" confirmation) inline. 5 seconds per skip. Catches the gap before any rounds run.
47
+
48
+ ---
49
+
50
+ ## 4. System-wide error contracts need planning-time blast-radius enumeration
51
+
52
+ **Pattern:** When a plan introduces a system-wide error contract — a sentinel error class, a new HTTP status the global error handler doesn't sweep, a new query state the render switch doesn't handle, any change where existing handlers across the codebase will see a NEW error class — the plan MUST produce a **classification table at planning time, not at implementation time**.
53
+
54
+ For every reachable consumer site, the table assigns one tag:
55
+
56
+ | Tag | Meaning |
57
+ |-----|---------|
58
+ | **exempt-via-meta** | Opt out at construction (e.g., mutation flag). Used when the consumer owns its own error UX. |
59
+ | **catch-via-consumer** | Let the gate fire; consuming screen catches and silent-returns. Used when the universal handler is the canonical surface. |
60
+ | **catch-in-hook** | Same as catch-via-consumer but the filter lives in the hook's own error callback. |
61
+ | **structurally clean** | The consumer's existing typed-error gate already filters the new error class. Document as deliberate. |
62
+ | **direct-call (no gate)** | Bypass the gate entirely. Used for background / auto-fired operations where the universal handler would be noise. |
63
+
64
+ Each row names the consumer site (`file:line`) and the rationale. The implementation notes' "Out-of-scope list" / "Exempt list" sections must map 1:1 to this table.
65
+
66
+ **Why this fails when ignored:** Without the upfront table, the auditor enumerates the gap one round at a time. Each round catches a subset of consumer sites; total cost scales with site count × audit-round cost. For a system-wide change touching dozens of consumer sites, this is 3–6 audit rounds (hours of compute + reviewer time).
67
+
68
+ **Cost:**
69
+ - Comprehensive sweep at planning time: ~60 minutes
70
+ - Audit-round equivalent: 5–6 rounds × 30 min compute + 30 min review = 5–6 hours absorbed
71
+
72
+ **The pattern generalizes:** Any primitive that changes which path a control-flow boundary takes — new auth-state values the routing switch doesn't case on, new query states the render switch doesn't handle, refetch-on-focus toggles — benefits from the same planning-time classification.
73
+
74
+ ---
75
+
76
+ ## 5. Comprehensive sweep ≠ correctness — also run a post-sweep audit
77
+
78
+ **Pattern:** After a comprehensive sweep against an auditor finding, run a deliberate cross-check against the spec's enumerated lists at sweep time. The sweep finds *the surface area*; the spec defines *the right decision for each surface*. These are different.
79
+
80
+ The post-sweep audit catches three classes of residual gap:
81
+
82
+ 1. **Grep miss.** A consumer site that the sweep grep didn't surface (e.g., a hook with a non-obvious name). Mitigation: eyeball cross-reference the spec's named examples against the table rows. Every named example must have a row.
83
+
84
+ 2. **Classification error against an explicit spec carve-out.** A consumer was classified one way during the sweep but the spec explicitly lists it as another. The spec wins. Mitigation: every exempt-from-default classification verifies that the consumer is named in the spec's carve-out list.
85
+
86
+ 3. **State-coupling bug independent of the sweep's pattern.** Optimistic state armed before a mutation that fires through the new gate. If the gate errors, the optimistic state never resets → silent regression elsewhere. Mitigation: at sweep time, also grep for `useRef(false)` / `useState(false)` patterns where the ref/state is flipped to true synchronously before a mutation. Each such "armed flag" needs a non-success reset path.
87
+
88
+ **Cost:** ~20 minutes adds to a sweep. Catches what would otherwise surface in 1–2 additional audit rounds.
89
+
90
+ ---
91
+
92
+ ## 6. Refactors that move logic between scope levels need a pre-existing-handlers checklist
93
+
94
+ **Pattern:** When a refactor moves logic between scope levels (hook → screen, screen → shared, sheet → screen, component → page), the move is **NOT** complete until an explicit pre-existing-handlers checklist has been enumerated.
95
+
96
+ Every behavior the OLD scope handled — every branch in its switch statement, every guard predicate, every error class catch, every conditional render, every prop / state value the old scope handled — must be re-listed and verified as preserved by the NEW scope.
97
+
98
+ **Why this fails when ignored:** "Comprehensive sweep" enumeration tells you what was **missed** (a consumer that should have a change). It says nothing about what was **lost** (a refactor that dropped a pre-existing behavior). These are different audit axes:
99
+
100
+ - **Missed** = a site that should have a change but didn't get one.
101
+ - **Lost** = a site that got a change which dropped a pre-existing behavior.
102
+
103
+ Sweeps catch "missed." Pre-existing-handlers checklist catches "lost." Both are needed.
104
+
105
+ **Cost:** 15–30 minutes per non-trivial refactor. Catches the bug at refactor time, before the WIP commit, before any audit round.
106
+
107
+ ---
108
+
109
+ ## 7. Spec / audit cycles catch correctness, not whether the design itself was warranted
110
+
111
+ **Pattern:** The audit invariant (Constitution § 1) ensures whatever ships is correct against its design. It does NOT ensure the design itself is warranted. Constitution § STRONG #3 (simplicity over completeness) provides the "is the design too big?" check — but only if someone asks the meta-question at the right moment.
112
+
113
+ Stage 1 spec and Stage 4 plan are too early for that question — the design hasn't shipped, so its real cost isn't visible. **Manual smoke on real environments is where "is this the right amount of machinery?" becomes visible.** When smoke surfaces "too much," the right move is sometimes to delete the machinery rather than fix it.
114
+
115
+ ### Pattern-recognition triggers
116
+
117
+ Pause for the meta-question when:
118
+
119
+ - **Multiple unrelated visual / behavioral issues surface in the same feature area during smoke.** Three unrelated symptoms in one surface area is a smell that the surface is doing too much.
120
+ - **The custom infrastructure exceeds the value it delivers.** If a feature ships custom-built primitives where platform-native primitives would suffice (custom toast vs `Alert.alert`; custom modal stack vs platform navigation), the maintenance cost rarely justifies the visual consistency gain.
121
+ - **Per-feature components share >80% structure.** When every feature has a `<FeatureNameError>` with the same icon + title + button + onRetry shape, the abstraction is missing — the per-feature components are just glue, and a shared component eliminates them.
122
+ - **Custom replacements for platform-native primitives.** "Consistency" arguments for replacing native primitives rarely pencil out for solo-maintainable projects.
123
+
124
+ ### Cost shape
125
+
126
+ Building the minimal design is usually cheaper than building the ambitious one — sometimes by a factor of 4 or 5. The simplification typically:
127
+
128
+ - Ships in less time than the ambitious version did
129
+ - Has less code surface
130
+ - Handles fewer edge cases (because there's less to handle)
131
+ - Reads more clearly because there's less to read
132
+
133
+ The dominant reason to keep this pattern visible is that the cost shape is asymmetric in the simplification's favor. Don't assume an ambitious design is "more thorough"; sometimes it's just more code.
134
+
135
+ ---
136
+
137
+ ## 8. Pre-commit hooks enforce what discipline can't
138
+
139
+ **Pattern:** Any rule that depends on "the developer will remember to do X" eventually fails. Mechanical enforcement via pre-commit hook is the only durable answer for invariants that must hold across every commit.
140
+
141
+ Examples worth hook-enforcing:
142
+
143
+ - **Migration ↔ spec sync.** If a migration touches a table referenced in a CEO spec, the spec must update in the same commit. Pre-commit hook reads `git diff --name-only`, identifies touched tables (from the migration content), and looks for the corresponding spec file in the diff.
144
+ - **Spec ↔ code sync.** User-visible behavior changes must update the corresponding CEO spec.
145
+ - **Plan-file deletion.** `<feature>-plan.md` cannot survive the commit that ships its implementation.
146
+
147
+ **Why this fails when ignored:** Without the hook, drift is silent. The first symptom surfaces months later as a misleading spec or an audit finding pointing at code that disagrees with its spec. The hook catches it at commit time — when the fix is one update, not one archaeological dig.
148
+
149
+ **Cost:** A small shell script per hook. ~30 minutes to author, near-zero to maintain.
150
+
151
+ ---
152
+
153
+ ## 9. Test legitimacy is per-commit, not per-feature
154
+
155
+ **Pattern:** A test that passes can pass for the wrong reason:
156
+
157
+ - An assertion was loosened to match buggy code
158
+ - A `.skip` (or framework equivalent) was added
159
+ - Internal mocks were added so the test no longer exercises real behavior
160
+ - Test cases were deleted entirely
161
+ - Setup mocks were re-shaped to hide a regression
162
+
163
+ Stage 6's auditor pass scrutinizes the test-fix diff on this dimension specifically. The `suspicious` flag in the test-fixer's structured report exists to surface these patterns proactively.
164
+
165
+ **Why this matters:** A passing test is only evidence of correctness if the test would have failed on broken code. The harness's discipline:
166
+
167
+ - Stability-fix lane mechanically requires a failing test BEFORE the fix.
168
+ - Test-fixer's hard rules ban the suspicious modifications above.
169
+ - Auditor's Stage 6 Axis 1 (test legitimacy) explicitly looks for them.
170
+
171
+ Test legitimacy is not a one-time setup; it's per-commit vigilance.
172
+
173
+ ---
174
+
175
+ ## 10. Spec wording outside the diff is still in scope for audit
176
+
177
+ **Pattern:** During apply/deploy phases, spec text can get edited outside the diff that the Stage 5 auditor reviewed. The Stage 5 auditor only saw implementation changes; the post-Stage-5 spec edits go unaudited by any prior gate.
178
+
179
+ Stage 7 (CEO smoke test) reads the spec to drive smoke. If a spec sentence no longer matches reality, the smoke test gets driven in the wrong direction. This is where Stage 6's **fourth axis (spec-vs-reality match)** matters: it reads the spec end-to-end (not just the diff) and flags sentences that assert user-observable behavior the code doesn't deliver.
180
+
181
+ **Why this is narrow:** The axis is NOT about plain-language imprecision. The spec is intentionally non-mechanical. Flag a sentence ONLY when:
182
+
183
+ - It asserts a user-observable behavior the code provably doesn't deliver, OR
184
+ - It asserts a guarantee the code doesn't enforce.
185
+
186
+ Do NOT flag wording that omits implementation mechanism — the spec is supposed to omit it. Do NOT suggest the spec become more technical so the audit is mechanically easier — that inverts the two-file model.
187
+
188
+ **The exemplar this axis was written for:** a spec sentence asserting a user recovery path ("a retry of the action picks up where it left off") when the user's session was already revoked and they cannot re-invoke. That's behavioral drift the CEO would design the smoke test around. Stage 6's fourth axis catches it.
189
+
190
+ ---
191
+
192
+ ## How to use this file
193
+
194
+ - Before a non-trivial feature build, skim the section headers.
195
+ - When a pattern recognition trigger fires (multiple unrelated symptoms in one surface area; sweep is about to declare done; refactor is moving logic between scope levels), open this file and read the relevant section.
196
+ - When you discover a new pattern worth carrying forward, add it here with: pattern name, when it surfaces, mitigation cost, what it saves. Keep entries concrete enough to apply on the next build.
197
+
198
+ ---
199
+
200
+ ## Change history
201
+
202
+ ```
203
+ 2026-05: v1 — initial generalized retrospective, extracted and abstracted from the original project-specific incident log.
204
+ ```
@@ -0,0 +1,106 @@
1
+ # ============================================================
2
+ # CCC-MAGI — Git Policy
3
+ #
4
+ # Philosophy: "Harness as butler" — the harness lives IN your project to
5
+ # serve you, but distinguishes between **team-shared infrastructure**
6
+ # (commit so collaborators stay aligned) and **personal runtime state**
7
+ # (gitignore so per-developer noise doesn't pollute shared history).
8
+ #
9
+ # ─── Committed (team-shared) ──────────────────────────────────────────
10
+ # constitution.md — project identity (sections 1+2+3)
11
+ # CLAUDE.md AGENTS.md — workflow + AGENTS.md ecosystem contract
12
+ # CCC_MAGI_README.md — explains the harness to teammates
13
+ # CCC_MAGI_LICENSE — harness license
14
+ # .claude/settings.json — hook wiring (enforcement consistency)
15
+ # .codex/config.toml — Codex CLI wiring
16
+ # .codex/hooks.json — Codex hooks
17
+ # .harness/skills/ — all stage skills (team uses same set)
18
+ # .harness/agents/ — all reviewer agents
19
+ # .harness/scripts/ — hook scripts (deterministic enforcement)
20
+ # .harness/state/install.json — slot values (project identity contract)
21
+ # .harness/memory/conventions.md — long-form project conventions
22
+ # docs-harness/ — design rationale reference
23
+ #
24
+ # ─── Gitignored (personal / runtime / regenerable) ────────────────────
25
+ # See entries below.
26
+ # ============================================================
27
+
28
+
29
+ # === Personal AI session memory (varies per developer) =================
30
+ # Each developer's AI session writes here; not useful to share across team
31
+ .harness/memory/observations.jsonl
32
+ .harness/memory/decision-log.md
33
+ # Note: .harness/memory/conventions.md IS committed (team-shared conventions)
34
+
35
+
36
+ # === Runtime audit verdicts (regenerated each audit, merge-conflict source) ==
37
+ .harness/state/auditor-approvals/
38
+ .harness/state/test-fix/
39
+
40
+ # Audit snapshots logged on CONCERNS / WAIVED verdicts. These form the
41
+ # audit trail the CEO reviews before commit. Per developer's verdicts
42
+ # differ — so default: gitignore. Teams who want shared audit history
43
+ # (e.g., for compliance) can comment out the next line.
44
+ .harness/audits/
45
+
46
+
47
+ # === Per-developer session state (resume / progress cards) ============
48
+ # Each developer's checkpoint/progress is private. Used by /resume to
49
+ # pick up where YOU left off — not where a teammate left off.
50
+ .harness/state/workflow-checkpoints/
51
+
52
+ # Active feature pointer (per-developer current branch tracking)
53
+ .harness/state/_active.json
54
+
55
+
56
+ # === Per-install regenerated registries ===============================
57
+ # Content-hash registry of files at install time. Regenerated on every
58
+ # install — committing causes merge conflicts whenever a teammate
59
+ # re-installs at a different version.
60
+ .harness/state/shipped-hashes.json
61
+
62
+
63
+ # === Per-machine secrets / overrides ==================================
64
+ .harness/state/auditor.env
65
+ .harness/state/cli-detection.json # CLI presence cache (per-machine, legacy)
66
+ .harness/state/env-check.json # Phase 1 environment check marker (per-machine)
67
+ .harness/state/_bootstrap-injected-sessions/ # Session dedup flags (per-developer)
68
+ .harness/state/_bootstrap-injected-at # Time-based dedup fallback
69
+ # Current session subject (per-session, runtime)
70
+ .harness/state/current-subject.txt
71
+ .harness/bin/ # Vendored binaries (jq etc.)
72
+
73
+
74
+ # === Auto-generated slash-command shims ===============================
75
+ # These are deterministic redirects to .harness/skills/<name>/SKILL.md.
76
+ # Regenerated by install. Committing them is harmless but creates
77
+ # diff noise on every install.
78
+ .claude/commands/
79
+
80
+
81
+ # === Installer transient artifacts ====================================
82
+ .ccc-magi-temp/
83
+ old_version_harness/
84
+
85
+
86
+ # === OS / editor noise ================================================
87
+ .DS_Store
88
+ Thumbs.db
89
+ *.swp
90
+ *.swo
91
+ *~
92
+ .idea/
93
+ .vscode/
94
+
95
+
96
+ # === Common project artifacts (optional — keep your own) ==============
97
+ # These are typical project-level ignores. Merge with your existing
98
+ # .gitignore if you already have one; otherwise the installer adds these.
99
+ # .env
100
+ # .env.local
101
+ # .env.*.local
102
+ # node_modules/
103
+ # __pycache__/
104
+ # *.pyc
105
+ # dist/
106
+ # build/