Imported from dpoage/llmkit (
AGENTS.md). Install upstream withnpx skills add dpoage/llmkit. Copyright stays with the author.
Agent Instructions
This project uses bd (beads) for issue tracking. Run bd prime for full workflow context.
Architecture in one line: Issues live in a local Dolt database (
.beads/dolt/); cross-machine sync usesbd dolt push/pull(a git-compatible protocol), stored underrefs/dolt/dataon your git remote — separate fromrefs/heads/*where your code lives..beads/issues.jsonlis a passive export, not the wire protocol.See SYNC_CONCEPTS.md for the one-screen overview and anti-patterns (don't treat JSONL as the source of truth; don't
bd importduring normal operation; don't reach for third-party Dolt hosting before trying the default).
Non-Interactive Shell Commands
ALWAYS use non-interactive flags with file operations to avoid hanging on confirmation prompts.
Shell commands like cp, mv, and rm may be aliased to include -i (interactive) mode on some systems, causing the agent to hang indefinitely waiting for y/n input.
Use these forms instead:
# Force overwrite without prompting
cp -f source dest # NOT: cp source dest
mv -f source dest # NOT: mv source dest
rm -f file # NOT: rm file
# For recursive operations
rm -rf directory # NOT: rm -r directory
cp -rf source dest # NOT: cp -r source dest
Other commands that may prompt:
scp- use-o BatchMode=yesfor non-interactivessh- use-o BatchMode=yesto fail instead of promptingapt-get- use-yflagbrew- useHOMEBREW_NO_AUTO_UPDATE=1env var
Beads Issue Tracker
This project uses bd (beads) for issue tracking. Run bd prime to see full workflow context and commands.
Quick Reference
bd ready # Find available work
bd show <id> # View issue details
bd update <id> --claim # Claim work
bd close <id> # Complete work
Rules
- Use
bdfor ALL task tracking — do NOT use TodoWrite, TaskCreate, or markdown TODO lists - Run
bd primefor detailed command reference and session close protocol - Use
bd rememberfor persistent knowledge — do NOT use MEMORY.md files
Architecture in one line: issues live in a local Dolt DB; sync uses refs/dolt/data on your git remote; .beads/issues.jsonl is a passive export. See https://github.com/gastownhall/beads/blob/main/docs/SYNC_CONCEPTS.md for details and anti-patterns.
Agent Context Profiles
The managed Beads block is task-tracking guidance, not permission to override repository, user, or orchestrator instructions.
- Conservative (default): Use
bdfor task tracking. Do not run git commits, git pushes, or Dolt remote sync unless explicitly asked. At handoff, report changed files, validation, and suggested next commands. - Minimal: Keep tool instruction files as pointers to
bd prime; use the same conservative git policy unless active instructions say otherwise. - Team-maintainer: Only when the repository explicitly opts in, agents may close beads, run quality gates, commit, and push as part of session close. A current "do not commit" or "do not push" instruction still wins.
Session Completion
This protocol applies when ending a Beads implementation workflow. It is subordinate to explicit user, repository, and orchestrator instructions.
- File issues for remaining work - Create beads for anything that needs follow-up
- Run quality gates (if code changed) - Tests, linters, builds
- Update issue status - Close finished work, update in-progress items
- Handle git/sync by active profile:
# Conservative/minimal/default: report status and proposed commands; wait for approval. git status # Team-maintainer opt-in only, unless current instructions forbid it: git pull --rebase git push git status - Hand off - Summarize changes, validation, issue status, and any blocked sync/commit/push step
Critical rules:
- Explicit user or orchestrator instructions override this Beads block.
- Do not commit or push without clear authority from the active profile or the current user request.
- If a required sync or push is blocked, stop and report the exact command and error.
Beads Issue Tracker
Use Beads (bd) for durable task tracking in repositories that include it. Use the beads skill at .agents/skills/beads/SKILL.md (project install) or ~/.agents/skills/beads/SKILL.md (global install) for Beads workflow guidance, then use the bd CLI for issue operations.
Quick Reference
bd ready # Find available work
bd show <id> # View issue details
bd update <id> --claim # Claim work
bd close <id> # Complete work
bd prime # Refresh Beads context
Rules
- Use
bdfor all task tracking; do not create markdown TODO lists. - Run
bd primewhen Beads context is missing or stale. Codex 0.129.0+ can load Beads context automatically through native hooks; use/hooksto inspect or toggle them. - Keep persistent project memory in Beads via
bd remember; do not create ad hoc memory files.
Architecture in one line: issues live in a local Dolt DB; sync uses refs/dolt/data on your git remote; .beads/issues.jsonl is a passive export. See https://github.com/gastownhall/beads/blob/main/docs/SYNC_CONCEPTS.md for details and anti-patterns.
Keep in sync: everything from
## Build & Testto the end of this file is byte-identical toCLAUDE.md(bead llmkit-ygq.20). Edit both files in the same commit, then verify withdiff <(sed -n '/^## Build/,$p' AGENTS.md) <(sed -n '/^## Build/,$p' CLAUDE.md).
Build & Test
The suites, commands, and skip rules live in docs/testing.md; run the scoped checks your task names, not the whole gate.
Acceptance rule: any change to an adapter, the agent loop, or a llmkit.Capabilities field must name its hermetic test and its live case; provider/live_registry_test.go enforces this in the plain go test ./... suite.
Exact local live run (compat lane; costs real money). The operator env file path lives here, never in docs/:
set -a; . ~/.config/bugbot/env; set +a
export LLMKIT_LIVE_COMPAT_API_KEY="$MINIMAX_API_KEY"
export LLMKIT_LIVE_COMPAT_BASE_URL=https://api.minimax.io/v1
export LLMKIT_LIVE_COMPAT_MODEL=MiniMax-M3
export LLMKIT_LIVE_COMPAT_CAPS=parallel_tool_calls,prompt_caching
go test -tags live -count=1 ./provider/ ./agent/ ./examples/... -v
Architecture
Read docs/design.md for the layering and the decision records. Read each package's contract with go doc, run from the repository root:
| Package | Reference |
|---|---|
| root vocabulary | go doc github.com/dpoage/llmkit |
| client construction | go doc github.com/dpoage/llmkit/provider |
| agent loop | go doc github.com/dpoage/llmkit/agent |
| sandbox | go doc github.com/dpoage/llmkit/sandbox |
| path containment | go doc github.com/dpoage/llmkit/fsroot |
| embeddings | go doc github.com/dpoage/llmkit/embed |
| decision models | go doc github.com/dpoage/llmkit/decide |
Conventions
- Per-role block rule: user messages carry text/image/document blocks; assistant text/thinking; system and tool-result text only — enforced before any wire call. Canonical:
go doc github.com/dpoage/llmkit. Usage.InputTokensis the total prompt size and includes the cache-read and cache-creation subsets; useChargeableTokensfor discounted math. Canonical:go doc github.com/dpoage/llmkit.- Capabilities enforcement classes live in the field docs in
llmkit.go; do not restate them here, because nothing guards this file against the code (llmkit-ygq.21). Canonical:go doc github.com/dpoage/llmkitand docs/capabilities.md.