An audit of the agent configuration found that no model enforcement exists anymore: commit c239bb9 deleted the old role-agent library and its enforce-agent-model.sh hook, but the hook registration was left dangling in settings.local.json (firing a nonexistent command on every subagent spawn), and no .claude/agents/ definitions replaced the deleted roster. Subagents therefore inherit the session model (opus) instead of running on cheaper pinned models.
Change
Add a role-based agent roster under .claude/agents/, one file per role, each with a frontmatter model: pin (the durable mechanism, replacing shell-hook enforcement). Each agent's prompt directs it to read the relevant .claude/skills/mvp-*/SKILL.md files before acting, so the skill library remains the single source of domain knowledge.
Root-cause analysis with evidence; no fixes unless asked
quality-reviewer
opus
RULE 0/1/2 merge-gate review, read-only toolset
operator
sonnet
Deploys, rollbacks, backups, CI workflow changes
tech-writer
sonnet
Doc-sync and new docs under house style
Also updates the .claude/CLAUDE.md index (Agents table) and the root CLAUDE.md.claude/ row per doc-sync discipline. The dangling hook removal in settings.local.json is local-only (gitignored) and not part of this diff.
Acceptance criteria
Five agent definitions exist in .claude/agents/ with valid frontmatter (name, description, model; tools restricted for quality-reviewer)
Model pins: sonnet for developer/debugger/operator/tech-writer, opus for quality-reviewer
Every skill path referenced in agent prompts resolves to an existing SKILL.md
.claude/CLAUDE.md and root CLAUDE.md indexes updated
## Problem
An audit of the agent configuration found that no model enforcement exists anymore: commit c239bb9 deleted the old role-agent library and its `enforce-agent-model.sh` hook, but the hook registration was left dangling in `settings.local.json` (firing a nonexistent command on every subagent spawn), and no `.claude/agents/` definitions replaced the deleted roster. Subagents therefore inherit the session model (opus) instead of running on cheaper pinned models.
## Change
Add a role-based agent roster under `.claude/agents/`, one file per role, each with a frontmatter `model:` pin (the durable mechanism, replacing shell-hook enforcement). Each agent's prompt directs it to read the relevant `.claude/skills/mvp-*/SKILL.md` files before acting, so the skill library remains the single source of domain knowledge.
| Agent | Model | Role |
|-------|-------|------|
| developer | sonnet | Scoped implementation, self-gates lint/type-check/tests |
| debugger | sonnet | Root-cause analysis with evidence; no fixes unless asked |
| quality-reviewer | opus | RULE 0/1/2 merge-gate review, read-only toolset |
| operator | sonnet | Deploys, rollbacks, backups, CI workflow changes |
| tech-writer | sonnet | Doc-sync and new docs under house style |
Also updates the `.claude/CLAUDE.md` index (Agents table) and the root `CLAUDE.md` `.claude/` row per doc-sync discipline. The dangling hook removal in `settings.local.json` is local-only (gitignored) and not part of this diff.
## Acceptance criteria
- Five agent definitions exist in `.claude/agents/` with valid frontmatter (`name`, `description`, `model`; `tools` restricted for quality-reviewer)
- Model pins: sonnet for developer/debugger/operator/tech-writer, opus for quality-reviewer
- Every skill path referenced in agent prompts resolves to an existing SKILL.md
- `.claude/CLAUDE.md` and root `CLAUDE.md` indexes updated
Blocking a user prevents them from interacting with repositories, such as opening or commenting on pull requests or issues. Learn more about blocking a user.
Problem
An audit of the agent configuration found that no model enforcement exists anymore: commit
c239bb9deleted the old role-agent library and itsenforce-agent-model.shhook, but the hook registration was left dangling insettings.local.json(firing a nonexistent command on every subagent spawn), and no.claude/agents/definitions replaced the deleted roster. Subagents therefore inherit the session model (opus) instead of running on cheaper pinned models.Change
Add a role-based agent roster under
.claude/agents/, one file per role, each with a frontmattermodel:pin (the durable mechanism, replacing shell-hook enforcement). Each agent's prompt directs it to read the relevant.claude/skills/mvp-*/SKILL.mdfiles before acting, so the skill library remains the single source of domain knowledge.Also updates the
.claude/CLAUDE.mdindex (Agents table) and the rootCLAUDE.md.claude/row per doc-sync discipline. The dangling hook removal insettings.local.jsonis local-only (gitignored) and not part of this diff.Acceptance criteria
.claude/agents/with valid frontmatter (name,description,model;toolsrestricted for quality-reviewer).claude/CLAUDE.mdand rootCLAUDE.mdindexes updated