3.3 KiB
Huskies project-local agent guidance
Session Start & Resume Protocol
PLAN.md — required for every coder session
At the very start of each coder session, before doing any code exploration, check for PLAN.md in the worktree root:
If PLAN.md exists (resuming after a watchdog respawn):
- Read
PLAN.mdfirst — it is your primary orientation document. - Only after reading it, call
git_log/git_diffto see commits made since the plan was last updated. - Reconcile any divergence between the plan and the current git state, then update the plan.
If PLAN.md is absent (first session on this story):
- Write
PLAN.mdbefore any grep, file read, or exploration tool call. - Populate it with what you know from the story ACs alone; add specifics as you discover them.
What PLAN.md must contain
PLAN.md is a living document. Update it after each completed AC or natural unit of work — not only at the start.
Required sections:
# Plan: Story <id>
## ACs → implementation locations
- AC 1: <exact file path>:<line range> — <one-line description of what changes>
- AC 2: <exact file path>:<line range> — …
…
## Decisions
- <Decision made>: <rationale> — rejected alternative: <what was considered and why it lost>
…
## Current state
<What has been done so far. Reference commit hashes or specific functions completed.>
## What's left
- [ ] <specific remaining task with file path and function name>
…
Non-conforming outputs
A PLAN.md that contains only generic steps like "read the code", "write the code", "run the tests", or leaves file paths as <TBD> or unspecified is non-conforming. Every AC entry must name a real file path and describe the actual change. Every decision entry must name both the chosen approach and at least one rejected alternative with a reason. A stub plan is worse than no plan — rewrite it with specifics.
Documentation
Docs live in website/docs/*.html (static HTML), not Markdown files. When a story asks you to document something, edit the relevant .html file in website/docs/.
Configuration files
- Agent config:
.huskies/agents.toml(preferred) or[[agent]]blocks in.huskies/project.toml - Project settings:
.huskies/project.toml - Bot credentials:
.huskies/bot.toml(gitignored — never commit)
Frontend build
The frontend is embedded into the Rust binary via rust-embed. Run npm run build in frontend/ before testing frontend changes, or the embedded assets will be stale.
Quality gates (all enforced by script/test)
npm run build(frontend)cargo fmt --all --checkcargo clippy -- -D warningscargo testnpm test(frontend Vitest)
Clippy is zero-tolerance: no warnings allowed. Fix every warning before committing.
File size
Target a maximum of 800 lines per source file as a soft guide. If a file grows beyond 800 lines, decompose it by concern into smaller modules. Split at natural seams: group related types, functions, or handlers together and move each cohesive group to its own file. This keeps files readable and diffs focused.
Runtime validation
The validate_agents function in server/src/config.rs rejects unknown runtimes. Supported values: "claude-code" and "gemini". Adding a new runtime requires updating that function.