# CLAUDE.md
Read `CONTEXT.md` before writing any code.
## Non-negotiable rules
- No `unwrap()`/`expect()`/`panic!()` in library code — use `Result`.
- No `.clone()` to escape a borrow error — fix the signature.
- No `Box<dyn Trait>` by default — `no_std`-first means generics/`impl Trait`.
- No new dependency without confirming `no_std` support.
- No speculative code — only what the current task requires.
- Lines ≤ 120 characters.
- Public items get a `///` doc-comment with a compiling `# Examples` block.
- New code gets its own module. Split into a folder when a module mixes distinct
responsibilities (trait def / per-type impl / algorithm = three files).
- Never mention md docs or in source code, comments, rust docs, or commit messages. Is ok to reference between md files.
- Match existing naming — check existing code first.
- Do not commit anything unless asked to do so.
- Do not write features that are not requested.
- Do not write code ahead of time. Do not start refactors unless they are requested.
- Do not trigger agents if you are not requested to do so.