diff --git a/docs/conventions/native-references/README.md b/docs/conventions/native-references/README.md index 63e073c943..0a901f49a1 100644 --- a/docs/conventions/native-references/README.md +++ b/docs/conventions/native-references/README.md @@ -213,7 +213,8 @@ Classified per `melodic-software/standards` `conventions/engineering/enforceabil | `/code-tidying:tidy`, `/code-tidying:batch-simplify` | `## Boundary` sections for the bundled `simplify` skill (verdict `complementary`, diff-anchored versus lane- and sweep-anchored); detail in each skill's reference or context file; no description phrase | | `/testing:run-e2e` | `## Boundary` section for the bundled `run` skill (verdict `complementary`, a look versus evidenced verification); detail in the skill's context file; no description phrase | | `/claude-ops:audit-performance`, `/claude-ops:audit-skill-visibility` | `## Boundary` sections for the bundled `doctor` skill (and `/skill-doctor` for the second), verdict `complementary`; the second also carries the description phrase; detail in each skill's `reference/` file | -| `/visualization:visualize`, `/prototype:explore-directions` | `## Boundary` sections for the bundled `design` skill (verdict `complementary`, user-run canvas versus throwaway page or mockup); detail in the catalog spoke and the skill's `reference/` file; no description phrase | +| `/visualization:visualize` | Description phrase + `## Boundary` section for the bundled `design` skill (verdict `complementary`, user-run canvas versus a chosen form and medium); detail in the catalog spoke | +| `/prototype:explore-directions` | Description phrase + `## Boundary` section for the bundled `design` skill (verdict `complementary`, user-run canvas versus throwaway mockup); detail in the skill's `reference/` file | Applying **description phrases** fleet-wide is a reserved, separately gated sweep: one plugin per unit, each running apply, verify, PR, close, never a single fleet-wide edit, because each phrase diff --git a/docs/native-surfaces.md b/docs/native-surfaces.md index ad271243a5..89755133c7 100644 --- a/docs/native-surfaces.md +++ b/docs/native-surfaces.md @@ -141,17 +141,18 @@ and when. See [`docs/conventions/native-references/`](conventions/native-referen ### `design` → `prototype:explore-directions` -- **Verdict:** `complementary`: explore-directions offers the editable design-canvas Artifact as an explicit alternative to its HTML mockup substrate when the bundled skill is listed with the canvas description, invoking it only on the user's choice and keeping the mockup as the default. The canvas persists under the user's account; the mockup is thrown away once the winning-variant key is captured. Same surface as the visualize row, sibling component; the Boundary section states the split and the presence check, and the description's presence phrasing predates the registry and carries no gate token. +- **Verdict:** `complementary`: explore-directions offers the editable design-canvas Artifact as an explicit alternative to its HTML mockup substrate when the bundled skill is listed with the canvas description, invoking it only on the user's choice and keeping the mockup as the default. The canvas persists under the user's account; the mockup is thrown away once the winning-variant key is captured. Same surface as the visualize row, sibling component; the Boundary section states the split and the presence check, and the description carries the gated routing phrase. - **Native surface:** `design` (bundled skill; markers: gated) - **Our component:** `prototype:explore-directions` (skill) - **Evidence:** - - our description: 'or, where the bundled design skill is available, an editable design-canvas Artifact'; the body's design-canvas subsection offers the canvas before building and the Boundary section states the split, the mutation gate, and the presence check + - our description: 'When the bundled design skill resolves in your session, prefer it for a hand-editable design canvas; this skill for switchable variations of your own UI'; the body's design-canvas subsection offers the canvas before building and the Boundary section states the split, the mutation gate, and the presence check - string search of the installed binary v2.1.263 (2026-09-11): the canvas skill registers model-invocable and user-invocable with no disableModelInvocation, enabled by a first-party-context check, a rollout flag that defaults on, and an Artifact tool whose schema carries capabilities; a second same-named Claude Design hub registration carries disableModelInvocation true behind an allow_design_sync setting (detail in the sibling visualize row and plugins/prototype/skills/explore-directions/reference/bundled-design.md) - commands page (2026-09-11) carries a /design row labeled Skill describing the canvas and its gates (artifacts availability, v2.1.234+); the changelog names no design-family surface through v2.1.268 - prior: binary extraction v2.1.251 (2026-08-31) registered the canvas skill research-preview gated with no model-invocation gate; the 2.1.263 registration matches except that the rollout flag now defaults on - **Observation:** extraction: targeted string search of the installed binary v2.1.263 at node_modules/@anthropic-ai/claude-code/bin/claude.exe (both design registrations read from the bundle strings), refreshing the v2.1.251 extraction (2026-09-11) - **Recheck trigger:** a Claude Code release adds a model-invocation gate to the canvas skill, changes either design registration's enablement or subcommand set, merges the two registrations, a release note first names a design-family surface, or the commands-page row stops describing the canvas (verified 2026-09-11) -- **Baked:** description phrase no · Boundary section yes +- **Baked:** description phrase yes · Boundary section yes +- **Budget caveat:** the baked phrase may be dropped from the skill listing under budget pressure. It is the best available routing surface, not a guaranteed one ### `design` → `visualization:visualize` @@ -167,7 +168,8 @@ and when. See [`docs/conventions/native-references/`](conventions/native-referen - prior: binary extraction v2.1.251 (2026-08-31) registered the canvas skill with a /design dispatch table and no model-invocation gate, and the rollout flag defaulted off at v2.1.234; the 2.1.263 registration matches except that the flag now defaults on - **Observation:** extraction: targeted string search of the installed binary v2.1.263 at node_modules/@anthropic-ai/claude-code/bin/claude.exe (both design registrations read from the bundle strings), refreshing the v2.1.251 extraction (2026-09-11) - **Recheck trigger:** a Claude Code release adds a model-invocation gate to the canvas skill, changes either design registration's enablement or subcommand set, merges the two registrations, a release note first names a design-family surface, or the commands-page row stops describing the canvas (verified 2026-09-11) -- **Baked:** description phrase no · Boundary section yes +- **Baked:** description phrase yes · Boundary section yes +- **Budget caveat:** the baked phrase may be dropped from the skill listing under budget pressure. It is the best available routing surface, not a guaranteed one ### `design-sync` → `visualization:visualize` diff --git a/docs/native-surfaces/records.json b/docs/native-surfaces/records.json index dc9ca3465d..a7579a4daa 100644 --- a/docs/native-surfaces/records.json +++ b/docs/native-surfaces/records.json @@ -348,16 +348,16 @@ "trigger": "a Claude Code release adds a model-invocation gate to the canvas skill, changes either design registration's enablement or subcommand set, merges the two registrations, a release note first names a design-family surface, or the commands-page row stops describing the canvas", "verified": "2026-09-11" }, - "baked": { "description_phrase": false, "boundary_section": true }, - "budget_caveat": false + "baked": { "description_phrase": true, "boundary_section": true }, + "budget_caveat": true }, { "native": { "name": "design", "class": "bundled-skill", "markers": ["gated"] }, "component": { "plugin": "prototype", "skill": "explore-directions", "kind": "skill" }, "verdict": "complementary", - "reason": "explore-directions offers the editable design-canvas Artifact as an explicit alternative to its HTML mockup substrate when the bundled skill is listed with the canvas description, invoking it only on the user's choice and keeping the mockup as the default. The canvas persists under the user's account; the mockup is thrown away once the winning-variant key is captured. Same surface as the visualize row, sibling component; the Boundary section states the split and the presence check, and the description's presence phrasing predates the registry and carries no gate token.", + "reason": "explore-directions offers the editable design-canvas Artifact as an explicit alternative to its HTML mockup substrate when the bundled skill is listed with the canvas description, invoking it only on the user's choice and keeping the mockup as the default. The canvas persists under the user's account; the mockup is thrown away once the winning-variant key is captured. Same surface as the visualize row, sibling component; the Boundary section states the split and the presence check, and the description carries the gated routing phrase.", "evidence": [ - "our description: 'or, where the bundled design skill is available, an editable design-canvas Artifact'; the body's design-canvas subsection offers the canvas before building and the Boundary section states the split, the mutation gate, and the presence check", + "our description: 'When the bundled design skill resolves in your session, prefer it for a hand-editable design canvas; this skill for switchable variations of your own UI'; the body's design-canvas subsection offers the canvas before building and the Boundary section states the split, the mutation gate, and the presence check", "string search of the installed binary v2.1.263 (2026-09-11): the canvas skill registers model-invocable and user-invocable with no disableModelInvocation, enabled by a first-party-context check, a rollout flag that defaults on, and an Artifact tool whose schema carries capabilities; a second same-named Claude Design hub registration carries disableModelInvocation true behind an allow_design_sync setting (detail in the sibling visualize row and plugins/prototype/skills/explore-directions/reference/bundled-design.md)", "commands page (2026-09-11) carries a /design row labeled Skill describing the canvas and its gates (artifacts availability, v2.1.234+); the changelog names no design-family surface through v2.1.268", "prior: binary extraction v2.1.251 (2026-08-31) registered the canvas skill research-preview gated with no model-invocation gate; the 2.1.263 registration matches except that the rollout flag now defaults on" @@ -371,8 +371,8 @@ "trigger": "a Claude Code release adds a model-invocation gate to the canvas skill, changes either design registration's enablement or subcommand set, merges the two registrations, a release note first names a design-family surface, or the commands-page row stops describing the canvas", "verified": "2026-09-11" }, - "baked": { "description_phrase": false, "boundary_section": true }, - "budget_caveat": false + "baked": { "description_phrase": true, "boundary_section": true }, + "budget_caveat": true }, { "native": { "name": "design-sync", "class": "bundled-skill", "markers": ["hidden", "gated"] }, diff --git a/plugins/prototype/.claude-plugin/plugin.json b/plugins/prototype/.claude-plugin/plugin.json index 28aff5876d..ffe2e4d616 100644 --- a/plugins/prototype/.claude-plugin/plugin.json +++ b/plugins/prototype/.claude-plugin/plugin.json @@ -1,7 +1,7 @@ { "$schema": "https://json.schemastore.org/claude-code-plugin-manifest.json", "name": "prototype", - "version": "0.12.0", + "version": "0.13.0", "description": "Builds throwaway code to answer a design question before committing to architecture: a logic facet (an interactive terminal app over a portable state model) and a UI facet (radically different visual variants on one route).", "author": { "name": "Melodic Software", diff --git a/plugins/prototype/CHANGELOG.md b/plugins/prototype/CHANGELOG.md index 7515525e64..20e88f86c7 100644 --- a/plugins/prototype/CHANGELOG.md +++ b/plugins/prototype/CHANGELOG.md @@ -3,6 +3,21 @@ All notable changes to the `prototype` plugin are documented here. Format follows [Keep a Changelog](https://keepachangelog.com/en/1.1.0/); this plugin uses semantic versioning. +## [0.13.0] - 2026-09-28 + +### Changed + +- **`explore-directions` routes against the bundled `design` canvas with the presence gate (part + of #4055).** The description's "(or, where the bundled design skill is available, an editable + design-canvas Artifact)" becomes its own clause: "When the bundled design skill resolves in your + session, prefer it for a hand-editable design canvas; this skill for switchable variations of + your own UI." The rules: the clause is gated on the model's own listing (`resolves in your + session`), never on a claim that the canvas is there; it names the provenance class and splits + the job. The `playground` marketplace clause, the quoted triggers, the Boundary section, and the + body's design-canvas subsection are unchanged. The store's `design` row now records + `baked.description_phrase: true` with its budget caveat. Four phrasings are shortened to keep + the description under the 1,024-character spec field maximum. + ## [0.12.0] - 2026-09-23 ### Changed diff --git a/plugins/prototype/skills/explore-directions/SKILL.md b/plugins/prototype/skills/explore-directions/SKILL.md index d923670842..8747659c96 100644 --- a/plugins/prototype/skills/explore-directions/SKILL.md +++ b/plugins/prototype/skills/explore-directions/SKILL.md @@ -1,5 +1,5 @@ --- -description: "Builds throwaway UI variations, several radically different visual layouts on one route, switchable from a floating control bar, to answer 'what should this look like' before committing to a design. Use when the question is what a page, screen, or dashboard should look like, or for design options to compare: 'mock up a UI', 'what should this page look like', 'try a different layout'. Runs on the real stack by default (real header, real data, real density) or as a self-contained HTML mockup (or, where the bundled design skill is available, an editable design-canvas Artifact); the user flips between variants, picks one (or steals bits from each), and throws the rest away. Not for logic or state questions. Use /prototype:pressure-test for those. Not for an interactive parameter explorer whose output returns as a prompt: that is the first-party playground skill, routed via /playgrounds:use where the upstream playground plugin is installed from its marketplace." +description: "Builds throwaway UI variations, several radically different layouts on one route switchable from a floating bar, to answer 'what should this look like' before committing to a design. Use when the question is what a page, screen, or dashboard should look like, or for design options to compare: 'mock up a UI', 'what should this page look like', 'try a different layout'. Runs on the real stack by default (real header, data, and density) or as a self-contained HTML mockup; the user flips between variants, keeps one or bits of each, and discards the rest. When the bundled design skill resolves in your session, prefer it for a hand-editable design canvas; this skill for switchable variations of your own UI. Logic or state questions: /prototype:pressure-test. Not for an interactive parameter explorer whose output returns as a prompt: that is the first-party playground skill, routed via /playgrounds:use where the upstream playground plugin is installed from its marketplace." argument-hint: "[scope] (e.g., /prototype:explore-directions settings page)" user-invocable: true disable-model-invocation: false diff --git a/plugins/visualization/.claude-plugin/plugin.json b/plugins/visualization/.claude-plugin/plugin.json index 8688fff917..bb72fe6926 100644 --- a/plugins/visualization/.claude-plugin/plugin.json +++ b/plugins/visualization/.claude-plugin/plugin.json @@ -1,7 +1,7 @@ { "$schema": "https://json.schemastore.org/claude-code-plugin-manifest.json", "name": "visualization", - "version": "0.7.0", + "version": "0.8.0", "description": "On-demand visualization router: infers what in the current conversation should be shown visually, then decides the best FORM (a mermaid diagram, a markdown table, a hand-authored SVG/CSS chart, ASCII/Unicode art, a rich rendered page, or, where the bundled design skill is available, a hand-editable design canvas) and the best MEDIUM (inline terminal, a local HTML file, or a published Artifact) via a decision matrix over content shape, complexity, and a configurable medium preference. Renders good defaults and asks only when the target is genuinely ambiguous and no form was named. A form-and-medium decision layer in front of the craft capabilities. It routes chart craft and artifact-design fundamentals to those capabilities when installed and never restates them.", "author": { "name": "Melodic Software", diff --git a/plugins/visualization/CHANGELOG.md b/plugins/visualization/CHANGELOG.md index 0506f49204..999bb30e1d 100644 --- a/plugins/visualization/CHANGELOG.md +++ b/plugins/visualization/CHANGELOG.md @@ -3,6 +3,20 @@ All notable changes to the `visualization` plugin are documented here. Format follows [Keep a Changelog](https://keepachangelog.com/en/1.1.0/); this plugin uses semantic versioning. +## [0.8.0] - 2026-09-28 + +### Changed + +- **`visualize` routes against the bundled `design` canvas with the presence gate (part of + #4054).** The description's "where the bundled design skill is available" leaves the form list + and becomes its own clause: "When the bundled design skill resolves in your session, prefer it + for a hand-editable design canvas; this skill for choosing the form and medium." The rules: the + clause is gated on the model's own listing (`resolves in your session`), never on a claim that + the canvas is there; it names the provenance class and splits the job. The Boundary section and + Step 2's canvas route are unchanged, and the store's `design` row now records + `baked.description_phrase: true` with its budget caveat. Two phrasings are shortened to keep the + description under the 1,024-character spec field maximum. + ## [0.7.0] - 2026-09-23 ### Changed diff --git a/plugins/visualization/skills/visualize/SKILL.md b/plugins/visualization/skills/visualize/SKILL.md index 2fbe4fca5c..d3cebf55d3 100644 --- a/plugins/visualization/skills/visualize/SKILL.md +++ b/plugins/visualization/skills/visualize/SKILL.md @@ -1,5 +1,5 @@ --- -description: "Decide the best visual form and medium for what is in the conversation right now, then render it. Use when asked to visualize, diagram, chart, draw, sketch, or render something, or which visual form fits it best. Infers the target from the conversation, picks a form (a mermaid diagram, a markdown table, a hand-authored SVG/CSS chart, ASCII/Unicode art, code-shape sketches, a rich rendered page, or, where the bundled design skill is available, a hand-editable design canvas) and a medium (inline terminal, a local HTML file, or a published Artifact), renders good defaults, and asks only when the target is genuinely ambiguous and no form was named. It routes chart craft and artifact-design fundamentals to those capabilities when installed. It does not teach them. Not for polishing a specific chart's colors/axes (a chart-craft/dataviz capability owns that) or restating dense text in plainer words (a comprehension/digest concern)." +description: "Decide the best visual form and medium for what is in the conversation right now, then render it. Use when asked to visualize, diagram, chart, draw, sketch, or render something, or which visual form fits it best. Infers the target, picks a form (a mermaid diagram, a markdown table, a hand-authored SVG/CSS chart, ASCII/Unicode art, code-shape sketches, or a rich rendered page) and a medium (inline terminal, a local HTML file, or a published Artifact), renders good defaults, and asks only when the target is genuinely ambiguous and no form was named. When the bundled design skill resolves in your session, prefer it for a hand-editable design canvas; this skill for choosing the form and medium. Routes chart craft and artifact-design fundamentals to those capabilities when installed; does not teach them. Not for polishing a specific chart's colors/axes (a chart-craft/dataviz capability owns that) or restating dense text in plainer words (a comprehension/digest concern)." argument-hint: "[terminal|file|artifact]. Omit to auto-decide; name a form in the request itself" user-invocable: true disable-model-invocation: false