AGENTS.md · git:20261004.3ea2095 · 2026-10-04 · sha256 c46eb4aa43ded208

AGENTS.md git:20261004.3ea2095A

Immutable. This exact content never changes and is served at /api/v1/blob/c46eb4aa43ded208.

# Caprock — Agent Onboarding

> **CRITICAL — read this first.**
> `CLAUDE.md` (repo root) and `.ai/00-index.md` are the authoritative instructions for this project. They define the non-negotiable rules. Everything in this file is supplementary. **If there is any conflict, `CLAUDE.md` wins.**

Caprock is a local, open-source mission control for Claude Code — a single Go binary that watches every `claude` session on the machine (hooks + transcripts), shows live activity/cost/loop alerts in a browser dashboard, and spawns, controls, and orchestrates sessions with verification-before-done. Currently **all three phases (Observe, Control, Orchestrate) are complete, green on the 3-OS CI matrix, and published** — `git describe`, the releases page and `CHANGELOG.md` say which version.

## Start here

1. Read **`CLAUDE.md`** — the non-negotiable rules (Claude Code auto-loads it).
2. Read **`.ai/00-index.md`** — current state + the doc map (file → when to read it).
3. Read the **one** file the map names for your task. Don't read the whole corpus.
4. Contributing code? **`CONTRIBUTING.md`** — build, test (`make check`), PR flow.

## Documentation map

The full doc map (every file → when to read it) lives in
[`.ai/00-index.md`](.ai/00-index.md) — the one home for it. Read the one file
your task needs, not the whole corpus. To contribute code, see
[`CONTRIBUTING.md`](CONTRIBUTING.md).

## Markdown table alignment

All tables in the repo's markdown must have columns padded to the exact width of the longest value per column.

### Rule

1. Columns must be **tight**: the separator `---...` is exactly the width of the longest value in that column.
2. **No trailing whitespace** after the last column.
3. **Use the script — do not align manually.**
4. **Tables are for short enumerable values only.** If any cell needs a full sentence or more, do not use a table — rewrite as a bulleted list (one bold lead-in per item, sub-bullets for facets). Wide prose-in-cells tables are unreadable in diffs and terminals.
5. Tables inside fenced code blocks are left alone by the script.

```bash
make docs-fmt                             # rewrite in place
make docs-check                           # exit 1 if anything is unaligned (CI)
python3 scripts/align-tables.py .ai/*.md  # the script directly
```

## Keeping documentation current

The docs are the source of truth, so they go stale the moment code moves without them. Rules:

- **A behaviour change lands with its documentation change in the same commit.** Not a follow-up commit, not a cleanup pass.
- **`.ai/14-build-status.md` and `README.md` progress bars are updated together** — they carry the same numbers.
- **A closed debate becomes an ADR** in `.ai/08-decisions.md`, with its reasoning. Prose scattered across files is not a decision record.
- **One fact, one home.** Cross-link rather than restate. If a fact must appear twice, one file owns it and the other links.
- **Absolute dates.** "2026-08-18", never "last week".

## Key rules (summary — full versions in CLAUDE.md)

- Phase order is the product: Observe → Control → Orchestrate.
- No task is done with a red Windows CI job.
- The shim never breaks a user's Claude session; all data stays on the machine.
- English only in every file — code, comments, docs, data, commits, PRs. Quotes are translated; drafts in other languages live outside the repo. Only test input that exercises non-English text is exempt. Conventional Commits.
- No invented numbers — a figure you do not have is an open question, not a guess.
- Never signal or type into a process Caprock did not start.