Debt may go down.
Never silently up.
pnpm check:ui
# raw buttons
# swallowed catches
# pages without h1
# hardcoded colours Read the checker → A real repository case study
Prompts ask for behavior. Repositories preserve it. The interview project combines written context, reusable skills, executable checks, commit hooks, and independent review so the rule is still present when the conversation is gone.
From intent to evidence
Not every rule belongs in a hook. Put guidance where an agent can discover it, deterministic policy in a command, cheap checks at commit time, and independent judgment at review.
Small instruction packages
These skills are not downloaded magic. They are repository-specific procedures under .agents/skills/, distilled from mistakes, commands, and architectural decisions that kept recurring.
pnpm check:ui
# raw buttons
# swallowed catches
# pages without h1
# hardcoded colours Read the checker → pnpm exec lint-staged
node scripts/check-ui-contract.mjs Read the hook → pnpm exec commitlint --edit $1
feat: add interview timer
fix(api): scope session query Read commitlint config → .pr-review.json
├── focus
├── exclude_paths
├── languages
└── instructions Read review policy → Desirable difficulty
Retrieval practice — recalling an answer from memory before re-reading — is what builds long-term retention. Answer each question from memory first, then open it to check.
Guidance the agent must discover goes in AGENTS.md or a skill. Deterministic policy becomes a CLI command, cheap gates run at commit time, and judgment calls go to review.
The trigger says when to load it. Without one the skill either never fires or loads every time — and a skill that always loads is just a slower prompt.
The prompt is advice for one run. The rule is reusable context plus an executable boundary — still present when the conversation is gone.
Use this in the interview repository or adapt the path names to another project.