CLAUDE.md · git:20260327.76a8052 · 2026-03-27 · sha256 e89e5ea1430cbd41
CLAUDE.md git:20260327.76a8052A
Immutable. This exact content is served forever at /api/v1/blob/e89e5ea1430cbd41.
# Claude Harness
An agent orchestration system for Claude Code. This repo IS the harness.
## What This Is
The harness is a collection of skills, agents, hooks, and state files that enable
Claude Code to operate autonomously on any codebase. It provides:
- Intent routing (`/do`) that dispatches tasks to the right tool
- Campaign persistence across sessions
- Parallel agent coordination with discovery sharing
- Automated quality enforcement through lifecycle hooks
## Key Conventions
- Skills live in `skills/`. Each skill is a flat `skills/{name}.md` file.
- Agents live in `agents/`. They spawn as sub-processes with their own context.
- Hooks live in `hooks_src/`. Installed per-project via `scripts/install-hooks.js`.
- The `init-project` hook auto-scaffolds per-project state on session start:
- `.planning/` — campaign state, fleet sessions, intake, telemetry
- `.citadel/scripts/` — utility scripts (telemetry, coordination, compression)
- `.claude/agent-context/` — rules injected into sub-agents
- Campaign state lives in `.planning/campaigns/` (per-project).
- Fleet session state lives in `.planning/fleet/` (per-project).
- Templates live in `.planning/_templates/` (copied from plugin on init).
- Configuration lives in `.claude/harness.json` (generated by `/do setup`, per-project).
## Testing
Always run tests after modifying hooks or skills. Three levels:
| Command | What it checks | When to run |
|---|---|---|
| `node scripts/test-all.js` | Hooks + skill structure (fast, no LLM) | After any change |
| `node hooks_src/smoke-test.js` | Hooks only | After hook changes |
| `node scripts/skill-lint.js` | All SKILL.md structure | After skill changes |
| `node scripts/skill-bench.js` | Scenario file validity | After adding benchmarks |
| `node scripts/skill-bench.js --execute` | Live scenario execution | Before shipping |
**Adding a new skill:** create `skills/{name}.md`, then run `node scripts/skill-lint.js {name}` to verify structure. The `skills/{name}/` directory (for `__benchmarks__/`) is optional and separate.
**Adding a benchmark scenario:** create `skills/{name}/__benchmarks__/{scenario}.md`, then run `node scripts/skill-bench.js --skill {name}` to validate.
**CI:** `node scripts/test-all.js` exits non-zero on any failure. Use `--strict` to treat WARNs as failures.
## Handoff Summary (Required)
After completing any task, output a `HANDOFF` block:
```
---HANDOFF---
- What was built or changed
- Key decisions and tradeoffs
- Unresolved items or next steps
---
```
3-5 bullets, under 150 words.