charterlisted
Install: claude install-skill otto-haus/otto
# Charter
Charter turns messy intent into evidence-checked autonomous work.
```
Object model Intent -> Charter -> State -> Receipt
Compiler messy intent -> compact contract (charter.md + charter.yaml)
Runtime charter.* / state.yaml / ledger.md / approvals / receipts / traces / notes
Loop Scout -> Judge -> Worker (+ Auditor proves/rejects done, Recorder keeps files current)
Gates one-way doors require human approval
Substrate Files = truth, Memory = lessons, UI = workspace
```
## Core principle
```
The human owns charter legitimacy.
The agent owns charter operations.
```
You have better local context (repo state, blockers, prior decisions, tool/runtime
constraints, real acceptance criteria, implementation path). So you operationalize
vague intent into durable charters. The human decides whether the goal is legitimate
and approves one-way doors.
## Substrate rules (do not violate)
- **Files = truth.** Active charter state lives in files under the runtime root, NOT
in Letta memory blocks. Never treat chat or memory as the source of truth for status.
- **Memory = lessons.** Write durable lessons learned to memory on completion, not
live state.
- **UI = workspace.** The command/status output is a view over the files.
## Runtime (Files = truth)
Canonical root: `$CHARTER_HOME/charters/` (default `~/.charter/charters/`, override
with `CHARTER_HOME`). This is intentionally OUTSIDE Letta memory.
```
charters/
active.json