Agent procedure
Session initialization MUST follow this order. Skip missing optional files; do not invent replacements mid-bootstrap.
1. Read the workspace contract
read_file FILESYSTEM.mdUnderstand structure, loading rules, and safety boundaries before any writes.
2. Inject shared behavior
read_file AGENTS.md # SHOULD existIf the harness only auto-loads a native file (for example CLAUDE.md), ensure that adapter points at AGENTS.md. Do not maintain divergent rule copies.
3. Inject optional identity overlays (MAY)
read_file SOUL.md # OPTIONALread_file USER.md # OPTIONALLoad only if present and relevant to the task.
4. Load recent daily memory (SHOULD)
read_file MEMORY/daily/<today>.mdread_file MEMORY/daily/<yesterday>.md # if existsDo not auto-load MEMORY/observations/ or MEMORY/learned/ at bootstrap.
5. Index skills and tools (SHOULD)
list SKILLS/# For each skill: read only title/summary/first section of SKILL.mdread_file TOOLS.md # reference only; never secretsFull skill bodies load on demand — see Skills.
6. Stop
No other directories are loaded at bootstrap unless the user explicitly requests them.
Bootstrap checklist
| Step | Path | Requirement |
|---|---|---|
| Contract | FILESYSTEM.md | MUST |
| Behavior | AGENTS.md | SHOULD |
| Identity | SOUL.md, USER.md | OPTIONAL |
| Memory | MEMORY/daily/<today|yesterday>.md | SHOULD if layout exists |
| Skills index | SKILLS/ | SHOULD |
| Tools catalog | TOOLS.md | SHOULD |
Human notes
Bootstrap exists to conserve context and make startups reproducible across Codex, Cursor, Claude Code, and custom runtimes.
Anti-patterns
- Dumping the whole monorepo into the first prompt
- Loading every
SKILL.md“just in case” - Putting API keys in
TOOLS.mdor identity files - Skipping
FILESYSTEM.mdbecause “the agent already knows the repo”
Harness tip: keep narrative rules in AGENTS.md; symlink or @import into harness-native files.