Documentation Index
Fetch the complete documentation index at: https://docs.amika.dev/llms.txt
Use this file to discover all available pages before exploring further.
Research preview. Interfaces, config formats, and CLI commands described
here may change before general availability. Reach out on
Discord or email
help@amika.dev to join the early access program.
amikalyze enforces these at write time — not by asking a
model to remember them — you get a hard guarantee, not a soft suggestion. Two
annotation types are available:
#amika/frozen— the next symbol is off-limits. Edits to it are blocked.#amika/prompt— when an agent modifies the next symbol, this prompt is injected into the agent’s context for that edit.
amikalyze, the parser and enforcer built into
the amika CLI, runs at the points you configure: agent hooks, git hooks, or
PR checks.
Comment syntax
Annotations use EDN inside ordinary comments. EDN is used here instead of TOML or JSON because it parses cleanly out of any language’s comment syntax — the#amika/foo tag is a
single greppable token that survives wrapped lines and mixed indent.
The basic shape is #amika/<name> followed by an optional EDN value:
amikalyze uses tree-sitter to find the
“next symbol”, so language support follows whatever tree-sitter grammars
ship with the release. TypeScript, JavaScript, Python, Go, and Rust
are the initial targets.
Multi-line annotations
For annotations that span multiple lines of comment, repeat the language’s comment prefix on every line — the parser strips the prefix before reading the EDN value:Freeze a symbol
#amika/frozen prevents agents from modifying the symbol that follows.
- Agent hook stops an agent from writing the edit in the first place.
- Pre-commit hook blocks the commit if a frozen symbol changed, regardless of whether a human or an agent made the edit.
- PR check fails the PR if a commit modifies a frozen symbol.
Override a freeze
wrappedChecksum,
unless you override the “frozen-checksum” label:
Attach a prompt to a symbol
#amika/prompt adds an instruction that’s injected into the agent’s
context whenever it modifies the symbol below the comment.
Prompt options
To pass options to the model, wrap the prompt and an options map in parens:| Option | Type | Meaning |
|---|---|---|
:model | string | Override the model used for this edit |
:effort | "low", "medium", "high" | Reasoning budget for the edit |
Apply rules across a directory
Inline annotations are good for single symbols. To freeze whole directories or match files by glob, drop a.amikalyze.edn file in any
directory of your repo:
.amikalyze.edn applies to the directory it lives in and everything
below it. Glob patterns are relative to that directory.
If you’d rather keep the file out of the way, .amika/amikalyze.edn
works too.
Enable code annotations for a repo
Annotations are processed by the built-inamikalyze check. Turn it on
in .amika/config.toml:
amikalyze runs in its own sandbox on every PR,
alongside any other checks you’ve defined in .amika/checks/. See
Checks for how the runner works.
To enforce annotations on every local edit as well, install the agent
hook and the pre-commit hook:
amikalyze on each file write the
agent attempts (Claude Code, Codex, OpenCode), blocking the write if it
hits a frozen symbol and surfacing prompts inline. amikalyze is fast
enough to gate every write — unlike sandboxed checks, which run after
the agent’s turn ends.
The pre-commit hook is the safety net for any edit — human or agent —
that slipped past the agent hook.
Where annotations are enforced
It’s up to you where you enforce annotations. You can runamikalyze directly,
or run it at one of these enforcement points:
| Enforcement point | What it catches |
|---|---|
| Agent hook (local) | Blocks the agent before it writes to a frozen symbol, or fires the prompt before it touches an annotated one |
| Git pre-commit hook | Blocks the commit if a frozen symbol was modified by any writer |
| PR check | Fails the PR if a commit modifies a frozen symbol |
amikalyze parser — a symbol frozen locally is
frozen in CI.