Spec Studio

The Studio skill teaches agents to publish, share and read the Spec Studio

spec:consumers.studio-on-rampUse Case / Behavior · storyready floor ready

Packs: pack:self-hosting-v1, pack:spec-studio-v1

Design: no design entries · no pinned declarations · no decisions

Findings: no errors, no warnings

specs/consumers/studio-on-ramp.sdp.md

No open questions and no blocking questions; implementation binding present, verifier binding present, and expected-outcome oracle none.

The Studio's work reaches an agent in three forms: a person or an agent holding only a link, a coding agent that publishes pages or receives intent a person composed in them, and a developer who sets up previews in CI. Each needs steps that most graph questions never use, so the Studio has its own skill and the reading skill points to it.

Intent
outcome
Give an agent a shipped on-ramp that publishes and shares the Spec Studio, reads it by task from a repository or a link, and turns intent composed in it into checked carrier edits.
Behavior
rule.ownSkill line 32 · specs/consumers/studio-on-ramp.sdp.md:32
The Studio is taught in its own shipped skill, beside the reading, authoring and session skills, and the reading skill points to it.

no example exercises it

rule.startFromEvidence line 33 · specs/consumers/studio-on-ramp.sdp.md:33
The skill starts from what the agent holds: a repository to publish from, a page set or a link to read, composed intent to apply, or a CI workflow to set up; a reader holding only a link reads the pages without building a graph.

no example exercises it

rule.publishRun line 34 · specs/consumers/studio-on-ramp.sdp.md:34
The skill teaches sdp studio for a page set with a base graph or run records and sdp generate for every root without them; that every command entering the shared build removes the page set; that supplied inputs lie outside every path the build writes or removes; and that the watch rebuilds on carrier edits with no server.

no example exercises it

rule.stampAndShare line 35 · specs/consumers/studio-on-ramp.sdp.md:35
The skill teaches stamping after the final build with the commit the build read, that a later build removes the stamp, that source links need a stamp served over http or https, and the reusable preview workflow's inputs, permissions, artifact, deployment and fork behavior.

no example exercises it

rule.readByTask line 36 · specs/consumers/studio-on-ramp.sdp.md:36
The skill maps a reviewer's task to the page that answers it, and states what a page does not: it shows values the build computed, its order sets no priority, a run row is no verdict, and a Pack export carries no stamp or composing panel.

no example exercises it

rule.receiveIntent line 37 · specs/consumers/studio-on-ramp.sdp.md:37
The skill teaches receiving the composing panel's hand-off: the proposal and its memo, and the scoped-intent text the proposal cannot carry. The agent writes the graph at the proposal's base, runs the proposal check, sends a moved or uncheckable change to a person, applies the rest through the authoring skill, and writes scoped-intent text into a proposal against a known base before checking it.

no example exercises it

rule.citesLaw line 38 · specs/consumers/studio-on-ramp.sdp.md:38
The skill cites the Studio's Specs for law and each verb's --help for its flags, and restates neither.

no example exercises it

0 unkeyed rules.

Verification

Verifier bindings

  • test:protocol.studio-on-ramp · skill-asset checks verify the Studio on-ramp against the verbs, workflow and pages · anchored · test anchor binding present · test/skills.test.ts:1700

    External run evidence from test/skills.test.ts

    Test anchors: test:protocol.adopter-on-ramp, test:protocol.authoring-on-ramp, test:protocol.delivery-session-on-ramp, test:protocol.graph-first-planning, test:protocol.reading-on-ramp, test:protocol.studio-on-ramp, test:protocol.vault-on-ramp. Specs verified by those bindings: spec:consumers.adopter-on-ramp, spec:consumers.authoring-on-ramp, spec:consumers.delivery-session-on-ramp, spec:consumers.graph-first-planning, spec:consumers.reading-on-ramp, spec:consumers.studio-on-ramp, spec:consumers.vault-on-ramp.

    Run 1: external run evidence from vitest 4.1.10

    Build: CI 380 · Branch: feature/roadmap-and-slices-v0 · Commit: 34909918bf0be0e849959644401797191cae379f · Start: 2026-10-22T17:40:31.456Z · Stop: 2026-10-22T17:42:16.171Z

    NameSuiteResultDuration
    discovers the design slice's summary and detail parameternot recordedpassed7.03 ms
    teaches the named-file exception to both carrier-watch descriptionsnot recordedpassed1.09 ms
    teaches the optional priority field in the Pack manifest envelopenot recordedpassed0.8 ms
    teaches design rounds and curates bindings by responsibilitynot recordedpassed3.5 ms
    presents the Protocol engine roles and reviewed boundary as worked examples for adoptersnot recordedpassed1.21 ms
    routes the next work and reviews through roadmap and proposal recipesnot recordedpassed3.96 ms
    keeps planning truth in graph homes and session routing advisoryProtocol skill assetspassed1.33 ms
    rejects missing planning guidance: An open question goesProtocol skill assetspassed2.15 ms
    rejects missing planning guidance: A deferral isProtocol skill assetspassed1.08 ms
    rejects missing planning guidance: An unsettled factProtocol skill assetspassed0.92 ms
    rejects missing planning guidance: A ruling that awaitsProtocol skill assetspassed0.97 ms
    rejects missing planning guidance: A statement a test checksProtocol skill assetspassed1.51 ms
    rejects missing planning guidance: Derive a countProtocol skill assetspassed1.19 ms
    rejects missing planning guidance: Group a body of workProtocol skill assetspassed1.21 ms
    rejects missing planning guidance: Hold advisory priorityProtocol skill assetspassed2.68 ms
    owns skills under .agents and exposes them to Claude through one relative symlinkProtocol skill assetspassed0.51 ms
    ships every skill folder in the package and indexes it in the helpProtocol skill assetspassed1.18 ms
    uses the repository's two-field single-file conventionProtocol skill assetspassed2.59 ms
    keeps every skill graph-first and the authoring law linked to carrying SpecsProtocol skill assetspassed12.22 ms
    names the complete closed graph schema in the shape sectionProtocol skill assetspassed0.97 ms
    routes delivery sessions through the five advisory graph shapesProtocol skill assetspassed0.99 ms
    documents only valid CLI verbs and keeps root-specific exclusions intactProtocol skill assetspassed3.16 ms
    uses the local runtime or package runner instead of a colliding global binaryProtocol skill assetspassed1.56 ms
    contains no contradictory shortcuts for readiness or verifier realizationProtocol skill assetspassed2.44 ms
    states no recipe-catalog size in an on-rampProtocol skill assetspassed14.6 ms
    maps a task to every catalog recipe in one sheetthe graph-reading on-ramppassed2.92 ms
    links the Specs that own the graph contract, the claims and the sinkthe graph-reading on-ramppassed0.58 ms
    teaches every Markdown section owner and links the carrying grammaradopter teachingpassed2.33 ms
    teaches open-question homeadopter rule meaningspassed1.24 ms
    teaches blocking flooradopter rule meaningspassed1.19 ms
    teaches blocking deferraladopter rule meaningspassed1.36 ms
    teaches deferral triggeradopter rule meaningspassed1.24 ms
    teaches deferral preconditionadopter rule meaningspassed1.36 ms
    teaches independent defined flooradopter rule meaningspassed1.62 ms
    teaches complete example childrenadopter rule meaningspassed8.74 ms
    teaches example vocabulary agreementadopter rule meaningspassed1.29 ms
    teaches physical entry lineadopter rule meaningspassed1.34 ms
    teaches one leading prose owneradopter rule meaningspassed1.09 ms
    teaches Note is refusedadopter rule meaningspassed1.02 ms
    teaches ready reads parentadopter rule meaningspassed1.1 ms
    teaches ready waits for defined parentadopter rule meaningspassed1.14 ms
    teaches unsettled constraint homeadopter rule meaningspassed1.13 ms
    teaches unsettled blocking checkadopter rule meaningspassed1.11 ms
    teaches bounded relationadopter rule meaningspassed1.15 ms
    teaches bounded defined allowedadopter rule meaningspassed1.08 ms
    teaches bounded ready waitsadopter rule meaningspassed1.12 ms
    teaches pending decision below readyadopter rule meaningspassed1 ms
    teaches shaping relationadopter rule meaningspassed1.54 ms
    teaches owner states readyadopter rule meaningspassed1.41 ms
    teaches checked statement homeadopter rule meaningspassed2.23 ms
    teaches checking example relationadopter rule meaningspassed1.2 ms
    teaches example test bindingadopter rule meaningspassed1.1 ms
    teaches derived verifier factadopter rule meaningspassed1.14 ms
    teaches verifier existence versus passingadopter rule meaningspassed4.17 ms
    teaches CI owns outcomesadopter rule meaningspassed3.95 ms
    teaches no authored checked statusadopter rule meaningspassed4.14 ms
    teaches fresh derived counts registers scopeadopter rule meaningspassed1.07 ms
    teaches census sourceadopter rule meaningspassed7.43 ms
    teaches open-question register sourceadopter rule meaningspassed1.21 ms
    teaches dependency register sourceadopter rule meaningspassed1.17 ms
    teaches mention register sourceadopter rule meaningspassed1.48 ms
    teaches delta scope sourceadopter rule meaningspassed1.12 ms
    teaches no quoted countsadopter rule meaningspassed1.14 ms
    teaches operator-selected policyadopter rule meaningspassed1.21 ms
    teaches per-file policy parametersadopter rule meaningspassed2.29 ms
    teaches separate policy findingsadopter rule meaningspassed1.14 ms
    teaches policy failuresadopter rule meaningspassed1.03 ms
    teaches watch policy rereadsadopter rule meaningspassed1.02 ms
    teaches Constraints leading-prose exceptionadopter rule meaningspassed1.06 ms
    teaches one primary owneradopter rule meaningspassed1.08 ms
    rejects the opposite teaching for independent defined floor: defined floor does not read the parent's readinessadopter rule meaningspassed1.26 ms
    rejects the opposite teaching for independent defined floor: defined floor does not read the parent's readinessadopter rule meaningspassed1.22 ms
    rejects the opposite teaching for example vocabulary agreement: complete and match the parent's example vocabulary, when it has oneadopter rule meaningspassed1.15 ms
    rejects the opposite teaching for ready reads parent: ready floor does read the parent's readinessadopter rule meaningspassed1.15 ms
    rejects the opposite teaching for physical entry line: a wrapped or indented continuation is refusedadopter rule meaningspassed1.17 ms
    rejects the opposite teaching for one leading prose owner: Leading prose may stand under that owner or under Example space, not bothadopter rule meaningspassed1.15 ms
    rejects the opposite teaching for Note is refused: The parser reads - Note: x as a key and refuses itadopter rule meaningspassed1.15 ms
    rejects the opposite teaching for open-question home: An open question goes under Intent's ### Open questions.adopter rule meaningspassed1.21 ms
    accepts a harmless open-question instruction frameadopter rule meaningspassed1.7 ms
    defined examples ignore parent readiness but read its vocabulary: matches=trueadopter rule meaningspassed3.78 ms
    defined examples ignore parent readiness but read its vocabulary: matches=falseadopter rule meaningspassed0.45 ms
    teaches the Intent grammar rowadopter rule meaningspassed0.66 ms
    teaches the Intent grammar rowadopter rule meaningspassed0.57 ms
    teaches the Behavior grammar rowadopter rule meaningspassed0.54 ms
    teaches the Rule grammar rowadopter rule meaningspassed1.82 ms
    teaches the Workflow grammar rowadopter rule meaningspassed0.56 ms
    teaches the Workflow grammar rowadopter rule meaningspassed0.51 ms
    teaches the Contract grammar rowadopter rule meaningspassed0.58 ms
    teaches the Example space grammar rowadopter rule meaningspassed0.49 ms
    teaches the Example space grammar rowadopter rule meaningspassed0.54 ms
    teaches the Constraints grammar rowadopter rule meaningspassed0.56 ms
    teaches the Constraints grammar rowadopter rule meaningspassed0.47 ms
    teaches the Constraints grammar rowadopter rule meaningspassed0.47 ms
    teaches the Model grammar rowadopter rule meaningspassed0.53 ms
    teaches the Model grammar rowadopter rule meaningspassed0.64 ms
    teaches the Design grammar rowadopter rule meaningspassed0.54 ms
    teaches the Design grammar rowadopter rule meaningspassed0.53 ms
    teaches the Decision grammar rowadopter rule meaningspassed0.55 ms
    teaches the Decision grammar rowadopter rule meaningspassed0.51 ms
    teaches the UI grammar rowadopter rule meaningspassed0.43 ms
    teaches the Verification — <mode> grammar rowadopter rule meaningspassed0.46 ms
    teaches the Verification — <mode> grammar rowadopter rule meaningspassed0.42 ms
    teaches the Verification — <mode> grammar rowadopter rule meaningspassed0.44 ms
    keeps graph-reader verifier teaching about existence and CI outcomesadopter rule meaningspassed0.79 ms
    keeps session teaching advisory and separate from permissionadopter rule meaningspassed0.48 ms
    the README teaches commit pinadopter install and upgrade guidancepassed0.3 ms
    the README teaches npm script approvaladopter install and upgrade guidancepassed0.25 ms
    the README teaches npm git approvaladopter install and upgrade guidancepassed0.21 ms
    the README teaches pnpm repository approvaladopter install and upgrade guidancepassed0.21 ms
    the README teaches pnpm 10 exact approvaladopter install and upgrade guidancepassed0.21 ms
    the README teaches installed CLI checkadopter install and upgrade guidancepassed0.21 ms
    the README teaches vitest subpath requirementadopter install and upgrade guidancepassed0.22 ms
    the README teaches recipe subject as paramsadopter install and upgrade guidancepassed0.2 ms
    refuses wrapped continuationtaught grammar agrees with parser behaviorpassed1.34 ms
    refuses indented continuationtaught grammar agrees with parser behaviorpassed0.18 ms
    allows leading prose under either owner and refuses it under bothtaught grammar agrees with parser behaviorpassed1.03 ms
    refuses Note as a plain Rule entrytaught grammar agrees with parser behaviorpassed0.28 ms
    refuses Note as a plain Workflow entrytaught grammar agrees with parser behaviorpassed0.13 ms
    refuses Note as a plain Contract entrytaught grammar agrees with parser behaviorpassed0.09 ms
    refuses Note as a plain Verification — manual entrytaught grammar agrees with parser behaviorpassed0.51 ms
    refuses unique Model terms duplicatestaught grammar agrees with parser behaviorpassed0.52 ms
    refuses unique Design keys duplicatestaught grammar agrees with parser behaviorpassed0.13 ms
    refuses unique UI keys via Design form duplicatestaught grammar agrees with parser behaviorpassed0.09 ms
    refuses single Intent actor duplicatestaught grammar agrees with parser behaviorpassed0.55 ms
    refuses single Intent problem duplicatestaught grammar agrees with parser behaviorpassed0.15 ms
    refuses single Intent outcome duplicatestaught grammar agrees with parser behaviorpassed0.1 ms
    refuses single Intent value duplicatestaught grammar agrees with parser behaviorpassed0.1 ms
    refuses single Constraints statement duplicatestaught grammar agrees with parser behaviorpassed0.28 ms
    refuses single Constraints flavor duplicatestaught grammar agrees with parser behaviorpassed0.21 ms
    refuses single Constraints target duplicatestaught grammar agrees with parser behaviorpassed0.13 ms
    refuses single Constraints measurableBy duplicatestaught grammar agrees with parser behaviorpassed0.1 ms
    refuses single Decision context duplicatestaught grammar agrees with parser behaviorpassed0.23 ms
    refuses single Decision decision duplicatestaught grammar agrees with parser behaviorpassed0.12 ms
    allows Behavior alone and refuses a second primary ownertaught grammar agrees with parser behaviorpassed0.52 ms
    allows Rule alone and refuses a second primary ownertaught grammar agrees with parser behaviorpassed0.22 ms
    allows Workflow alone and refuses a second primary ownertaught grammar agrees with parser behaviorpassed0.14 ms
    allows Contract alone and refuses a second primary ownertaught grammar agrees with parser behaviorpassed0.2 ms
    allows leading prose in Design and refuses it in Constraintstaught grammar agrees with parser behaviorpassed0.2 ms
    allows the taught repeatable Intent entriestaught grammar agrees with parser behaviorpassed0.18 ms
    allows the taught repeatable Decision entriestaught grammar agrees with parser behaviorpassed0.14 ms
    extracts the key the skill's marker carries and resolves the address the skill gives itthe taught question markerpassed13.76 ms
    leaves the address unresolved when the key stands outside the bracketsthe taught question markerpassed8.53 ms
    creates the anchored suite before generating, and the build places the registrar beside itthe reviewed skill teachingpassed23.52 ms
    keys a step in the vocabulary, as the step-key law and the contract generator agreethe reviewed skill teachingpassed8.43 ms
    owns publishing in one reader section that agrees with each verb's flagsthe reviewed skill teachingpassed2.25 ms
    names the vault's owned folder, the person's notes and the roots a vault run removesthe reviewed skill teachingpassed0.64 ms
    teaches entry addresses, term addresses and anchored source citations as the engine derives themthe reviewed skill teachingpassed15.32 ms
    states what an empty or ready answer establishes and no morethe reviewed skill teachingpassed1.27 ms
    teaches a refused bundle as the end of pagination, as recipe 36 refusesthe reviewed skill teachingpassed9.72 ms
    keeps corpus rules in one section whose composed rules file runs as taughtthe reviewed skill teachingpassed9.15 ms
    points every skill at the installed upgrade guide and triggers authoring on upgrades and rulesthe reviewed skill teachingpassed1.5 ms
    orders the reader as a task route and leaves recipe contracts to the catalogthe reviewed skill teachingpassed0.78 ms
    states the graph's flat topology and which node types carry lines, as the graph doesthe reviewed skill teachingpassed14.53 ms
    is its own shipped skill, which the reading skill points tothe Studio on-ramppassed1.1 ms
    starts from what the agent holdsthe Studio on-ramppassed0.52 ms
    teaches the publishing run as the studio and generate verbs take itthe Studio on-ramppassed2.39 ms
    teaches stamping and the preview workflow as the workflow declares themthe Studio on-ramppassed6.91 ms
    has the preview's run evidence checked against the stamp, never assumed to match itthe Studio on-ramppassed3.17 ms
    maps each task to a page the Studio writes, and states what a page does notthe Studio on-ramppassed45.15 ms
    receives the composing panel's hand-off through the proposal checkthe Studio on-ramppassed19.46 ms
    cites resolving Studio Specs for law and leaves flags to each verb's helpthe Studio on-ramppassed700.44 ms
    is its own shipped skill, which the reading skill points tothe vault on-ramppassed1.29 ms
    places the vault where the command accepts itthe vault on-ramppassed3.7 ms
    keeps the person's notes outside the folder the command ownsthe vault on-ramppassed0.51 ms
    teaches synchronizing and watching as the verbs and the failed index state themthe vault on-ramppassed0.51 ms
    names every refusal the guard prints and how to recover from itthe vault on-ramppassed0.81 ms
    converts a note's links back to the addresses the vault wrote, then checks the proposalthe vault on-ramppassed14.49 ms
    takes the proposal's base from the graph the person read, never from the latest synchronizationthe vault on-ramppassed4.12 ms
    cites resolving vault Specs for law and leaves flags to the verb's helpthe vault on-ramppassed124.17 ms
Design view

Requirement drawing

  • Declared verifying examples: no declared verifying example.
Requirement drawing for spec:consumers.studio-on-ramp
The diagram as text
  • spec:consumers.studio-on-ramp: The Studio skill teaches agents to publish, share and read the Spec Studio · declared Spec
  • spec:consumers.reading-on-ramp: The reading skill teaches agents to query the graph · declared Spec
  • impl:protocol.studio-on-ramp: asserts realization of the shipped Studio skill document · anchored code · test/skills.test.ts:1693
  • test:protocol.studio-on-ramp: skill-asset checks verify the Studio on-ramp against the verbs, workflow and pages · anchored test binding · binding present · test/skills.test.ts:1700
  • spec:consumers.studio-on-ramp refines spec:consumers.reading-on-ramp · declared — a Studio page is a person's reading of the one graph, and the skill sends an agent from a page to the graph behind it
  • impl:protocol.studio-on-ramp satisfies spec:consumers.studio-on-ramp · anchored
  • test:protocol.studio-on-ramp verifies spec:consumers.studio-on-ramp · anchored
Mermaid source

Copyable source; the Studio draws static SVG.

Preferred and chosen syntax: requirementDiagram; exact refines, satisfies and verifies, with claim words in nodes and per-edge comments.

Decisions

No decision record named.

Runtime
  • impl:protocol.studio-on-ramp · asserts realization of the shipped Studio skill document · test/skills.test.ts:1693

    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:consumers.studio-on-ramp
The diagram as text
  • spec:consumers.intent-composition: Composed intent hands off on one proposal shape
  • spec:consumers.reading-on-ramp: The reading skill teaches agents to query the graph
  • spec:consumers.spec-studio.data.inputs: The Studio reads two named inputs beside the graph, a base graph and run records
  • spec:consumers.spec-studio.export: A Pack exports as one file, and every page prints as a document
  • spec:consumers.spec-studio.intent-panel: A composing panel on every page gathers scoped intent for an agent
  • spec:consumers.spec-studio.publisher: sdp studio publishes the Studio as one page set
  • spec:consumers.spec-studio.sharing: A Studio build is stamped and shared from a static host
  • spec:consumers.studio-on-ramp: The Studio skill teaches agents to publish, share and read the Spec Studio
  • spec:consumers.studio-on-ramp dependsOn spec:consumers.intent-composition · declared — a received proposal is checked and applied as the hand-off law states
  • spec:consumers.studio-on-ramp dependsOn spec:consumers.spec-studio.data.inputs · declared — the skill teaches the base graph and run records and where they may lie
  • spec:consumers.studio-on-ramp dependsOn spec:consumers.spec-studio.export · declared — the skill teaches the Pack export and what it leaves out
  • spec:consumers.studio-on-ramp dependsOn spec:consumers.spec-studio.intent-panel · declared — the skill teaches what the composing panel hands off and what stays scoped-intent text
  • spec:consumers.studio-on-ramp dependsOn spec:consumers.spec-studio.publisher · declared — the skill teaches the verb, its watch and what each shared build removes
  • spec:consumers.studio-on-ramp dependsOn spec:consumers.spec-studio.sharing · declared — the skill teaches the stamp, its lifetime and the pull-request preview workflow
  • spec:consumers.studio-on-ramp refines spec:consumers.reading-on-ramp · declared — a Studio page is a person's reading of the one graph, and the skill sends an agent from a page to the graph behind it
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

No Spec rests on this Spec.

Relations

Relation and directionOther endClaimReasonExercised keys
dependsOn · outgoingComposed intent hands off on one proposal shape
spec:consumers.intent-composition · resolves
declareda received proposal is checked and applied as the hand-off law statesNone
dependsOn · outgoingThe Studio reads two named inputs beside the graph, a base graph and run records
spec:consumers.spec-studio.data.inputs · resolves
declaredthe skill teaches the base graph and run records and where they may lieNone
dependsOn · outgoingA Pack exports as one file, and every page prints as a document
spec:consumers.spec-studio.export · resolves
declaredthe skill teaches the Pack export and what it leaves outNone
dependsOn · outgoingA composing panel on every page gathers scoped intent for an agent
spec:consumers.spec-studio.intent-panel · resolves
declaredthe skill teaches what the composing panel hands off and what stays scoped-intent textNone
dependsOn · outgoingsdp studio publishes the Studio as one page set
spec:consumers.spec-studio.publisher · resolves
declaredthe skill teaches the verb, its watch and what each shared build removesNone
dependsOn · outgoingA Studio build is stamped and shared from a static host
spec:consumers.spec-studio.sharing · resolves
declaredthe skill teaches the stamp, its lifetime and the pull-request preview workflowNone
refines · outgoingThe reading skill teaches agents to query the graph
spec:consumers.reading-on-ramp · resolves
declareda Studio page is a person's reading of the one graph, and the skill sends an agent from a page to the graph behind itNone

Bindings

Implementation binding: present

  • impl:protocol.studio-on-ramp · asserts realization of the shipped Studio skill document · test/skills.test.ts:1693

Design reference: none

Verifier binding: present

  • test:protocol.studio-on-ramp · skill-asset checks verify the Studio on-ramp against the verbs, workflow and pages · anchored · test/skills.test.ts:1700 · 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.