AGENTS.md
cooked-mcp is a simple, idiomatic MCP server for https://cooked.wiki's API.
Commands
mise run check # Executes all of mise run fix, yaml:fmt, tidy, yaml:lint, lint, vuln, build, and test:quiet. All are individually runnable with `mise run <task>` and parallelisable with `mise run task:a ::: task:b`
mise run fix # Runs multiple formatters through golangci-lint
mise run build # Builds ./cmd/cooked-mcp into cooked-mcp
Workflow
-
We use jujutsu (
jj). When reading diffs, use--gitfor git-style diffs. Before starting work, runjj status. If the new work is different from the working copy, runjj new -m "area: imperative, kernel-style change description". We use imperative, kernel-style commits with prefixes for areas/subsystems likerouting: frontend: desc of routing and frontend changes. Fill out change description bodies for non-trivial commits. -
Use
misefor project tooling and tasks.mise run checkbefore ending your turn. While iterating oncheckoutput, use narrower tasks such asmise run fix/mise run testor combined and parallelised likemise run lint ::: testas necessary. Do not use direct commands likegofmt; use mise tasks. -
Use
acaiand keep the project spec-first. Behaviour requirements live infeatures/cooked-mcp/*.feature.yaml; reference full ACIDs in tests and important implementation comments.acai pushrequires Git to be attached to the implementation branch; after moving themainjj bookmark, usegit switch -f mainif Git is still detached at the old commit. Afteracai push, update completed statuses withacai set-status @payload.json --product cooked-mcp --impl main --json; the payload is a JSON object keyed by full ACID, e.g.{"core.TOKEN.1": {"status": "completed"}}. Do not add comments.- Update or confirm the relevant acai spec before implementation. List the full ACIDs the slice intends to satisfy and reconcile unclear intent before writing code.
-
Follow red/green TDD. Write failing tests first, then implement so they're green. Do not smoke test unless I tell you to. Rely on and maintain and expand our tests instead.
-
If smoke testing reveals a gap, it means we need better automated tests. Close the gap by adding or improving tests so the same issue gets caught automatically in the future.
-
Work in tiny slices that are independently verifiable. Keep unrelated documentation or AGENTS.md edits separate from feature changes.