Spec Studio

Claude reads a model guide that fits the harnesses installed here

spec:cc-agents.model-templatesUse Case / Behavior · featureready floor ready

Packs: 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
actor
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.refusesNothing line 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.syncUntested line 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.guideOption line 34 · specs/runner/model-templates.sdp.md:34
The option modelGuide is quality or cost for the plugin's template, a path as written, absolute or under ~/, or empty for none, and /harnesses says which file is used and when a path's file is missing.

no example exercises it

rule.installedMeansOnPath line 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.skillNamesTheFile line 36 · specs/runner/model-templates.sdp.md:36
The skill model-families of 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.explicitChoiceWins line 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.defaultsFromOptions line 38 · specs/runner/model-templates.sdp.md:38
The default model of a harness is its <harness>Model option, and an extra writable folder list is read from <harness>WritableRoots.

no example exercises it

0 unkeyed rules.

Design
templateFile line 42 · specs/runner/model-templates.sdp.md:42
<set>.<variation>.md where the set is claude, claude+codex, claude+opencode or claude+codex+opencode.

no citation recorded

variations line 43 · specs/runner/model-templates.sdp.md:43
cost, quality.

no citation recorded

syncCommand line 44 · specs/runner/model-templates.sdp.md:44
node 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.
Requirement drawing for spec:cc-agents.model-templates
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:5

    Uses

    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:9

    Uses

    None.

Runtime observation: not tracked.

Evidence

Runtime observation: not tracked.

Build attestations: not tracked.

Deployments: not tracked.

Bills of materials: not tracked.

Impact
Relations of spec:cc-agents.model-templates
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

Rested on by

Distance 1

Relations

Relation and directionOther endClaimReasonExercised keys
dependsOn · outgoingThe plugin installs from a marketplace, updates by version and changes nothing global
spec:cc-agents.installation · resolves
declaredthe guide is one of the plugin's declared optionsNone
refines · outgoingOther model families run as real Claude Code agents
spec:cc-agents.runner · resolves
declaredNoneNone
dependsOn · incomingThe one tie between this repository's Specs and HQ's design
spec:cc-agents.hq-links · resolves
declaredthe end-user templates the runner shipsNone

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: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 · 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.