AGENTS.md · git:20261004.b29f40d · 2026-10-04 · sha256 2faf6c9405acc0b5

AGENTS.md git:20261004.b29f40dA

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

# AGENTS.md

A Claude Code plugin in Bun ESM.
Design and evidence: `docs/dossier.md`.

## Commands (repository root)

- `just check` runs lint, tests, and validation.
  It must pass before done.
- `bun test tests/rules/search-rules.test.mjs` runs one test file.
- `bunx markdownlint-cli2 README.md` lints Markdown.
  Headings and code blocks have a 100-column bound.
- `just sandbox` runs Claude Code with this checkout in a separate config.
  Read `docs/sandbox.md` first.

## Rules

- Keep each `.md` file at 300 lines or less.
  Split it into linked parts.
- Write docs in STE-flavored ASD-STE100.
  Use no semicolons.
- Use semantic line breaks in all text that is not code: Markdown, comments, messages to Claude, commit messages, and pull requests.
  Start each sentence on a new line, and break a long sentence only between clauses.
  Never break a line at a column or in a word.
- Write each message that goes to Claude (hook output, deny reasons, skill and agent prompts) in strict ASD-STE100.
  Follow Claude's prompting best practices: give the reason, say what to do, use no forceful words, and put code items in backticks.
- Change a usage bound only in `hooks/lib/_budget.mjs`.
  Tests pin its copies in code and config, not in prose.
- Keep runtime JavaScript (`hooks/`, `status-line/`, `skills/`, `plugins/`) at 3,000 lines or less.
  `tests/budget.test.mjs` pins the bound.
- `hooks/lib` imports only itself.
  Event hooks import only `hooks/lib`.
  Only the hooks module `hooks/register.mjs` also imports the event actions.
- Tests give commands to the guards as strings.
  Never run a guarded command.
- Never patch the Claude Code CLI binary or its npm package, although it is minified JavaScript that you can read.
  A patch violates Anthropic's terms of service.
  Use only documented extension points.
  Reading the bundle for evidence is permitted.
- Add CHANGELOG entries under `[Unreleased]`.
  Change versions with `just bump`.
- `.gitignore` hides `docs/`.
  Add each new public doc path to its allow list.