@AGENTS.md
Everything above (from AGENTS.md) is the canonical, tool-neutral contract.
The rest of this file is Claude-specific.
- Project skills live in
.claude/skills/— start fromironclaw-reborn-orientation; usereborn-featurefor cross-layer product work,reborn-extension-surfacesfor integrations,ironclaw-reborn-testingfor test tiers, andironclaw-reborn-architecture-reviewfor boundary changes. - Path-scoped rules in
.claude/rules/*.mdload automatically when you read matching files — they are canonical for their topics (testing, database, types, cargo-features, review discipline, guidance maintenance, …); do not restate them here. Guidance edits (.claude/**, anyAGENTS.md/CLAUDE.md, runtimeskills/) are governed by.claude/rules/guidance-maintenance.md.
The codebase-memory MCP server indexes crates/ into a knowledge graph;
prefer it over Grep for code structure (cross-crate call chains are
invisible to text search). .codebase-memory/graph.db.zst is the committed
bootstrap snapshot; local databases and
.codebase-memory/artifact.json stay
git-ignored (per-environment state, deliberately untracked). Check
freshness first: bash scripts/codebase-graph.sh status.
- Missing →
index_repository(repo_path=".", persistence=true)once. - Stale →
detect_changes(since="<indexed-commit>"), or re-runindex_repositoryto refresh the shared snapshot. - Where is a symbol →
search_graph(name_pattern=…), thenget_code_snippet(qualified_name=…). - Who calls X / what X calls →
trace_path(function_name=…, mode="calls"); value flow →mode="data_flow"; cross-crate feature path →mode="cross_service". - Structure of an area →
get_architecture(…); graph-augmented text search →search_code(pattern=…); arbitrary queries →query_graph(<Cypher>).
The graph is a point-in-time index — verify anything it asserts against live
code before acting. Grep/Glob/Read remain correct for text, config, and
non-code files. For narrative what/why orientation, read the relevant
openwiki/ page (generated — never hand-edit).
info! and warn! output appears in the REPL and corrupts the terminal UI.
Use debug! for internal diagnostics (trace analysis, reflection results,
engine internals); reserve info! for user-facing status the REPL
intentionally renders. Background tasks must NEVER use info!.