Files
claude/mods/model-router/routing.json
T
bchanot 604a6c4411 feat(model-router): wave 3-B — first-use dialog with context, model then effort on change
The dialog now explains what it asks about: the skill's description (from
its SKILL.md frontmatter, five YAML forms, first sentence, cleaned), the
agent's description (from agent.offer), the phase's new 'about' line in
routing.json, and the real model id and effort the next step runs on.
Options Later / Keep / Change; Change asks the model (fable, opus, sonnet,
haiku with their tier role), then the effort among those the phases of
that model offer, then the scope; the pair maps to an existing phase (rows
stay phase names; the row's current phase wins a tie; same phase = Keep).
A main-loop phase (T3) is Later / Keep only. A main-row change toasts the
real decision and the /route switch hint when the pick is a downgrade.
Descriptions pass a hardened read (name allowlist, stat kind, size cap)
and clean(). Kit suite 190 → 232; W3-A dialog tests migrated.

Contract .claude/tasks/contracts/2026-10-11-model-router-w3b-dialog-1240.md,
plan r3: 3 lenses (2 BLOCKERs: inline rows, phase edits) + 1 confirmation,
feater + 2 rounds, GATE 0 MET, verifier CONFORME (3rd pass), security PASS.
2026-10-11 14:10:24 +02:00

160 lines
4.4 KiB
JSON

{
"phases": {
"plan": {
"tier": "best",
"effort": "xhigh",
"about": "design and architecture: the deepest thinking, before any code exists"
},
"reflect": {
"tier": "best",
"effort": "high",
"about": "analysis, review and synthesis: reasoning about what already exists"
},
"orchestrate": {
"tier": "best",
"effort": "medium",
"about": "dispatching and coordinating sub-agents: mostly handing out work"
},
"escalate": {
"tier": "best",
"effort": "max",
"about": "a stuck problem or a judged need: maximum effort, diagnosis only"
},
"judge": {
"tier": "big",
"effort": "xhigh",
"about": "independent judgment of work: audits, challenges and verdicts"
},
"implement": {
"tier": "work",
"effort": "medium",
"about": "writing the code of an already planned change"
},
"write": {
"tier": "work",
"effort": "high",
"about": "writing prose and docs, or a careful edit that needs polish"
},
"verify": {
"tier": "work",
"effort": "xhigh",
"about": "checking a result against its spec: tests, security review, gates"
},
"explore": {
"tier": "work",
"effort": "medium",
"about": "reading and searching the codebase to answer a question"
},
"apply": {
"tier": "work",
"effort": "low",
"about": "bookkeeping: commits, memory entries and other small edits"
},
"mechanical": {
"tier": "cheap",
"effort": "low",
"about": "scripted or trivial work needing no judgment, on the cheapest model"
}
},
"skills": {
"ship-feature": "plan",
"init-project": "plan",
"onboard": "plan",
"tour": "plan",
"audit-delta": "plan",
"analyze": "plan",
"code-clean": "plan",
"client-handover": "plan",
"brainstorming": "plan",
"writing-plans": "plan",
"requesting-code-review": "plan",
"21st-ui-review": "plan",
"feat": "reflect",
"hotfix": "reflect",
"bugfix": "reflect",
"refactor": "reflect",
"web-validate": "reflect",
"harden": "reflect",
"seo": "reflect",
"geo": "reflect",
"site-motion": "reflect",
"frontend-design": "reflect",
"emil-design-eng": "reflect",
"design-motion-principles": "reflect",
"21st-ui-build": "reflect",
"scroll-world-storytelling": "reflect",
"build-threejs-scroll-worlds": "reflect",
"scroll-scrubbed-visual-sequence": "reflect",
"scroll-scrubbed-word-reveal": "reflect",
"scroll-progress-timeline": "reflect",
"subagent-driven-development": "reflect",
"writing-skills": "reflect",
"deprecation-and-migration": "reflect",
"21st-ai": "reflect",
"21st-ui-explore": "reflect",
"gitflow": "implement",
"prune-memory": "implement",
"pdf-translate": "implement",
"ci-cd-and-automation": "implement",
"observability-and-instrumentation": "implement",
"test-driven-development": "implement",
"commit-change": "apply",
"release-candidate": "apply",
"doc": "apply",
"capitalize": "apply",
"close": "apply",
"reconcile": "apply",
"deploy": "apply",
"status": "mechanical",
"profile": "mechanical",
"plugin-check": "mechanical",
"skills-perso": "mechanical",
"using-git-worktrees": "mechanical",
"21st-cli-use": "mechanical",
"21st-registry": "mechanical",
"21st-design-sync": "mechanical"
},
"agents": {
"Explore": "explore",
"Plan": "judge",
"plan-challenger": "judge",
"plugin-advisor": "judge",
"seo-analyzer": "judge",
"geo-analyzer": "judge",
"analyzer": "judge",
"feater": "implement",
"bugfixer": "implement",
"code-cleaner": "implement",
"scaffolder": "implement",
"onboarder": "implement",
"commit-changer": "write",
"doc-syncer": "write",
"handover-doc-writer": "write",
"refactorer": "write",
"hotfixer": "apply",
"release-executor": "apply",
"plugin-probe": "apply",
"validator-analyzer": "apply",
"verifier": "verify",
"security-auditor": "judge",
"status-reporter": "mechanical"
},
"projects": {},
"confirmed": {
"agents": {
"verifier": "verify",
"feater": "implement",
"doc-syncer": "write",
"security-auditor": "judge"
},
"phases": {
"verify": "verify",
"implement": "implement",
"write": "write",
"orchestrate": "orchestrate"
}
},
"changed": {},
"ask": true
}