actorClaude reads a model guide that fits the harnesses installed here
spec:cc-agents.model-templatesPacks: none
Design: 3 design entries · 3 pinned declarations · no decisions
Findings: no errors, no warnings
specs/runner/model-templates.sdp.md
2 open questions and no blocking questions; implementation binding present, verifier binding present, and expected-outcome oracle none.
The templates are generated Markdown files in plugin/templates/, named <set>.<variation>.md, where the set is claude and the harnesses used with it joined by +, and the variation is quality or cost. They are copied in by scripts/sync-templates.mjs from the maintainers' rendered guides and are never edited by hand. The mod picks one at session start, and the skill model-families tells Claude to read it before it chooses a family, model or effort.
Intent
- Claude, choosing which family, model and effort an agent should run.
problem- Which model fits which role depends on measurements that change, and on which harnesses this machine has installed.
outcome- The guide Claude reads is the template, or the user's own document, for the harnesses installed here, and a model the user names always wins.
value- Choosing a model is guided by current data without hard-coding policy into the plugin.
Open questions
- non-blocking ·
question.refusesNothingline 25 · specs/runner/model-templates.sdp.md:25· The README says the templates refuse nothing, while two quality templates still say never to use Opus on search; the correction waits with the source the templates are generated from.Decider: ownerProvisional: The templates are described as data copied from their source; the prohibition is that source's to remove. - non-blocking ·
question.syncUntestedline 28 · specs/runner/model-templates.sdp.md:28· The sync script copies only the cost and quality variations, refuses a file that names a private word before it writes anything, and stamps each copy with its source; no test exercises it.Decider: delegatedProvisional: Described as built; a test would pin the refusal.
Behavior
rule.guideOptionline 34 ·specs/runner/model-templates.sdp.md:34- The option
modelGuideisqualityorcostfor the plugin's template, a path as written, absolute or under~/, or empty for none, and/harnessessays which file is used and when a path's file is missing.no example exercises it
rule.installedMeansOnPathline 35 ·specs/runner/model-templates.sdp.md:35- A harness counts as installed when a command of its name is on the path, and the plugin's template is the one whose harnesses are all installed and most numerous, or Claude Code's own when none is.
no example exercises it
rule.skillNamesTheFileline 36 ·specs/runner/model-templates.sdp.md:36- The skill
model-familiesof this plugin, and no other skill, has its model guide placeholder replaced by the chosen file's path before Claude reads it.no example exercises it
rule.explicitChoiceWinsline 37 ·specs/runner/model-templates.sdp.md:37- The guide fills what the user's request leaves open, and a family, model or effort the user names stays theirs.
no example exercises it
rule.defaultsFromOptionsline 38 ·specs/runner/model-templates.sdp.md:38- The default model of a harness is its
<harness>Modeloption, and an extra writable folder list is read from<harness>WritableRoots.no example exercises it
0 unkeyed rules.
Design
templateFileline 42 ·specs/runner/model-templates.sdp.md:42<set>.<variation>.mdwhere the set isclaude,claude+codex,claude+opencodeorclaude+codex+opencode.no citation recorded
variationsline 43 ·specs/runner/model-templates.sdp.md:43cost,quality.no citation recorded
syncCommandline 44 ·specs/runner/model-templates.sdp.md:44node scripts/sync-templates.mjs <dir of rendered guides> <source>no citation recorded
Verification
Verifier bindings
- test:cc-agents.mod-suite · the mod against a scripted sidecar · anchored · test anchor binding present ·
plugin/tests/mod.test.ts:4
Design view
Requirement drawing
- Declared verifying examples: no declared verifying example.
The diagram as text
- spec:cc-agents.model-templates: Claude reads a model guide that fits the harnesses installed here · declared Spec
- spec:cc-agents.runner: Other model families run as real Claude Code agents · declared Spec
- impl:cc-agents.harness-options: reads the per-harness options, picks the model-guide template and builds the /harnesses text · anchored code ·
plugin/hooks/harnesses.js:5 - impl:cc-agents.mod: answers each step of an agent from the sidecar's events, hands back the exact answer, steers and stops, and returns the job state block · anchored code ·
plugin/hooks/register.js:9 - impl:cc-agents.sync-templates: copies the rendered model guides into the plugin and refuses a private word · anchored code ·
scripts/sync-templates.mjs:10 - test:cc-agents.mod-suite: the mod against a scripted sidecar · anchored test binding · binding present ·
plugin/tests/mod.test.ts:4 - spec:cc-agents.model-templates refines spec:cc-agents.runner · declared
- impl:cc-agents.harness-options satisfies spec:cc-agents.model-templates · anchored
- impl:cc-agents.mod satisfies spec:cc-agents.model-templates · anchored
- impl:cc-agents.sync-templates references spec:cc-agents.model-templates · anchored
- test:cc-agents.mod-suite verifies spec:cc-agents.model-templates · anchored
Mermaid source
Copyable source; the Studio draws static SVG.
Preferred syntax: requirementDiagram. Chosen syntax: flowchart TB because references require exact labels unavailable in requirement syntax.
Decisions
No decision record named.
Runtime
impl:cc-agents.harness-options· reads the per-harness options, picks the model-guide template and builds the /harnesses text ·plugin/hooks/harnesses.js:5Uses
None.
impl:cc-agents.mod· answers each step of an agent from the sidecar's events, hands back the exact answer, steers and stops, and returns the job state block ·plugin/hooks/register.js:9Uses
None.
Runtime observation: not tracked.
Evidence
Runtime observation: not tracked.
Build attestations: not tracked.
Deployments: not tracked.
Bills of materials: not tracked.
Impact
The diagram as text
- spec:cc-agents.hq-links: The one tie between this repository's Specs and HQ's design
- spec:cc-agents.installation: The plugin installs from a marketplace, updates by version and changes nothing global
- spec:cc-agents.model-templates: Claude reads a model guide that fits the harnesses installed here
- spec:cc-agents.runner: Other model families run as real Claude Code agents
- spec:cc-agents.model-templates dependsOn spec:cc-agents.installation · declared — the guide is one of the plugin's declared options
- spec:cc-agents.model-templates refines spec:cc-agents.runner · declared
- spec:cc-agents.hq-links dependsOn spec:cc-agents.model-templates · declared — the end-user templates the runner ships
Mermaid source
Copyable source; the Studio draws static SVG.
Preferred syntax: flowchart. Chosen syntax: labelled flowchart, preserving exact relations, claims and folds.
Rests on
- refines · spec:cc-agents.runner · stated defined, floor ready
- dependsOn · spec:cc-agents.installation · stated defined, floor ready
Rested on by
Distance 1
- spec:cc-agents.hq-links
Implementing units
None.
Referencing units
None.
Enabled verifiers: None
Packs: None
Relations
| Relation and direction | Other end | Claim | Reason | Exercised keys |
|---|---|---|---|---|
| dependsOn · outgoing | The plugin installs from a marketplace, updates by version and changes nothing globalspec:cc-agents.installation · resolves | declared | the guide is one of the plugin's declared options | None |
| refines · outgoing | Other model families run as real Claude Code agentsspec:cc-agents.runner · resolves | declared | None | None |
| dependsOn · incoming | The one tie between this repository's Specs and HQ's designspec:cc-agents.hq-links · resolves | declared | the end-user templates the runner ships | None |
Bindings
Implementation binding: present
impl:cc-agents.harness-options· reads the per-harness options, picks the model-guide template and builds the /harnesses text ·plugin/hooks/harnesses.js:5impl:cc-agents.mod· answers each step of an agent from the sidecar's events, hands back the exact answer, steers and stops, and returns the job state block ·plugin/hooks/register.js:9
Design reference: present
impl:cc-agents.sync-templates· copies the rendered model guides into the plugin and refuses a private word ·scripts/sync-templates.mjs:10
Verifier binding: present
- test:cc-agents.mod-suite · the mod against a scripted sidecar · anchored ·
plugin/tests/mod.test.ts:4· test anchor
Expected-outcome oracle: none
Runtime observation: not tracked.
Run results: not recorded in the graph.
Findings
None.
Composing (0)
Composing needs the script.