A fourth shop window off the same `skills/superdesign/` tree. dsh reads no
`plugin.json`: it installs an npm package whose `package.json` declares
`dsh.bundle`, pointing at a config layer that mounts a `ctx.skills` provider.
dsh plugin --profile <name> add github:superdesigndev/superdesign-skill
Two choices are load-bearing. The bundle is plain ESM with no build step,
because a git install fetches sources rather than build output and a `prepare`
script would force every user to allowlist a build before their first install
works. And it depends on no `@deepseek-ai/*` package, because an out-of-tree
bundle pulling an in-box one installs a second copy that drifts from the host's
- so it implements the `list`/`get` provider contract directly instead of
reusing `dsh-skill-filesystem`. The skill description is parsed out of SKILL.md
at runtime, so there is no second copy to keep in sync.
Verified against `@deepseek-ai/dsh@0.1.0-rc.6`: `dsh plugin add` appends the
bundle to the profile, `--dump-config` shows the `# == superdesign-dsh` layer,
and the package resolves from the profile and returns a valid candidate.
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01LsD1EYGHk1an8DLL1yrzqK
* docs(skill): dedupe repeated rules into single sources of truth
Apply the Claude 5 context-engineering guidance to the skill prose:
- Init six-file test and file list now live only in SKILL.md; the HARD
GATE and Task 1.1 point there instead of restating them (removes the
drifted duplicate file descriptions)
- Drop the <example> few-shot dialog — everything it demonstrated is
already stated as rules, and the CLI's help[] hints self-disclose
next steps
- Collapse the four restatements of the one -p rule to one canonical
statement in the contract plus short use-site pointers
- Replace the six verbatim repeats of the user-input-mechanism phrase
with a single convention line
- Trim SKILL.md command examples to the runner prefix; full invocations
live at their use sites, flags in the COMMAND CONTRACT
- Move the .superdesign/tmp gitignore rule and the flow-pages 1-10
count to their use sites; dedupe canvas-URL surfacing into SKILL.md
- State the why on VARIANT COUNT (credits) and compress the import-
tracing procedure to its principle; no behavior changes intended
* docs(skill): compress the line-ranges decision table
Fold the globals.css row (a special case of the >=900 CSS rule) and the
trailing always-FULL sentence (a restatement of the under-900 row) into the
two rows that carry the actual rule. No behavior change.
* docs(skill): restore facts lost in the dedupe pass
Review follow-ups on the dedupe commits:
- create-component's default output returning componentId was dropped from
both of its mentions; restore it in the COMMAND CONTRACT, where
update-component --component-id needs it.
- The JSON-literal rule lost its referent when SKILL.md's examples were
trimmed to one non-JSON line. Move it next to the flags it governs.
- INIT.md still carried the PAYLOAD BUDGET parenthetical that SKILL.md
deduped away; point at the canonical rule instead.
- Reword the user-input convention so it matches how the use sites actually
phrase it ("ask the user", "confirm ... with the user").
- Deleting the <example> block removed the only place that showed asking
what a vague complaint means before spending a generation round on a
guess. State it as a rule in TOOL USE RULE.
- Link WEBSITE.md from the standalone-extraction exception, which is the one
path that skips the SOPs where extract-website is otherwise demonstrated.
- Punctuation: match the file's em dashes in the new decision bullets, drop a
duplicated horizontal rule.
* docs(skill): correct the COMMAND CONTRACT against CLI 0.9.0
Audited every contract entry against `@latest` 0.9.0 --help. The flag sets
themselves were all accurate; these are the gaps that audit found.
- The CLI has a real `init` command that installs skill files (--force
overwrites), which collides head-on with how SKILL.md scenario 1 names this
skill's repo analysis. An agent reading "superdesign init" could plausibly
run it and write skill files into the user's repo instead of analyzing it.
Disambiguate at both sites.
- Add fetch-design-nodes. Without it the only source of a draft-id is the
output of the call that created the draft, so any project resumed from an
earlier session was unreachable by iterate/get-design/revert/flow-pages.
- create-project --device only applies to the --template first draft; the
contract read as though it set the project's device.
- --all writes no clone HTML and no brand binaries; the contract named only
the clone half of that.
- Soften the create-component note: that its default output carries the id is
the one claim here not verifiable from --help, and confirming it needs a
write call with no delete counterpart.
Verified by live run rather than --help: extract-website defaults to
--design-md with no selector, and --brand-assets does imply --brand.
* docs(skill): cut the COMMAND CONTRACT down to what --help cannot say (#27)
Audit against CLI 0.9.0 found the contract's per-command flag lists were
accurate but almost entirely redundant: `--help` documents the same required
and optional sets, and does it from the shipping binary instead of from a copy
that has to be re-verified by hand on every CLI change.
So stop enumerating flags. Direct the agent at the bare command for the command
list and `<command> --help` for flags, and keep only the two things help cannot
supply: traps whose failure mode is silent, and which command to reach for.
Traps kept, all confirmed against 0.9.0: `--context-file`'s
`path:startLine:endLine` (absent from every help text, and PAYLOAD BUDGET
depends on it), `create-design-draft` silently dropping extra `-p`,
extract-website's crawl time and what `--all` skips, `create-project --device`
applying only to the `--template` draft, and the CLI's `init` writing skill
files rather than running this skill's repo analysis.
The section now states that it is deliberately partial, so that a flag's
absence reads as "help documents it" rather than "it does not exist" — without
that, trimming the lists would push the agent away from valid options.
Cross-references that promised flags lived here (SKILL.md, COMPONENTS.md,
WEBSITE.md, and the EXTRACT-WEBSITE pointer) now point at `--help`, and
GRAPHIC.md drops `upload-asset` from its list of applicable sections since that
bullet is gone and its Step 3 already documents the command.
Contract 909 -> 534 words. This trades a maintenance burden for a runtime
dependency on the agent actually consulting --help; that is a behavior change,
not a docs cleanup, which is why it is separate from the dedupe PR.
Adds the Claude Code plugin manifest alongside the existing Codex one, so
the same `skills/superdesign/` tree ships to both marketplaces off one repo.
- `.claude-plugin/plugin.json` - required manifest; without it
`claude plugin validate` fails with "No manifest found in directory"
- `.claude-plugin/marketplace.json` - self-hosted marketplace listing the
repo root, so users can install today via
`/plugin marketplace add superdesigndev/superdesign-skill` +
`/plugin install superdesign@superdesign`, independent of the
community-marketplace review queue
- README / INSTALL.md document the plugin path next to `npx skills add`,
and warn against installing both copies
- SKILL.md Step 0: the ChatGPT "switch to the Work tab" copy is now scoped
to ChatGPT chat; other harnesses with no shell get a neutral message
instead of being told to find a Work tab that does not exist
- CHANGELOG.md, plus AGENTS.md release notes covering the now-two manifests
Verified: `claude plugin validate` passes with `--strict` on both manifests,
and `claude --plugin-dir <repo>` loads the skill as `superdesign:superdesign`.
Rename the marketplace-facing display name to "01 Superdesign" so the
listing sorts to the top of the general tier (digits before letters).
Display-only change across the two in-sync surfaces:
- .codex-plugin/plugin.json interface.displayName
- skills/superdesign/agents/openai.yaml display_name
Expand marketplace keywords (top-level keywords array) for discovery.
Machine identity is unchanged: plugin slug (name), skill dir/SKILL.md
name, and the $superdesign invocation all stay "superdesign", so
existing installs and `skills add`/plugin commands keep working.
Brand prose in README/INSTALL/docs stays "Superdesign".
Bump plugin version 0.4.0 -> 0.4.1 following the repo's version-bump
commit convention (no tags/releases). Document the packaging/display
convention in AGENTS.md.
search-prompts --query never returns empty (falls back to popular),
and --tags zero results isn't a command failure — drop the bullet
from the failure section. The CLI's zero-result help hint actively
suggests broadening the search, so the don't-keep-searching guard
moves into the SOP C search step where the command is used.
- Restore the failure-handling guardrails dropped before this branch:
search-prompts zero-results rule and the general retry-once-then-
stop-never-invent rule (present on main, lost in pre-branch edits)
- Graphic on-brand branch: init produces theme.md tokens, not
design-system.md — say so instead of 'pass the design system'
- Graphic intro: 'replaces all UI SOPs' (three now, not two)
- GRAPHIC.md Step 5: self-contained one-round self-review — Codex Work
browser choice (ChatGPT Work Mode cloud browser, Codex Desktop
@Browser iab surface), graphic checklist (verbatim copy, canvas
overflow, scrim legibility, crop), one replace-mode fix round,
honest fallback when the render can't be seen
- SKILL.md: drop the generic post-generation verification flow; keep
the warm offer-to-go-further close as its own section (also fixes
its heading nesting); UI drafts are reviewed by the user on canvas
- TOOL USE RULE: replace-mode exemption now points at GRAPHIC.md
- Delete ALWAYS-ON RULES, COMMON MISTAKES, and the marketing-assets
note: pure restatements of rules that live elsewhere; relocate the
few unique lines (CLI invocation, prefer-iterate, context carve-outs,
conditional-UI nuance) into their canonical sections
- Collapse the context-collection principle to the terse remove/keep
form; make DESIGN SYSTEM FIDELITY self-contained (owns the fidelity
constraint string, covers execute-flow-pages, carries path carve-outs)
- create-design-draft contract: scope by source draft, not novelty —
it creates any base draft with no source draft (3a reproduction,
new target in a codebase, scratch project); resolves the conflict
with the new-target SOP and the long-standing 3a contradiction
- Graphic delivery: canvas only; preview stays an agent self-review
link unless the user asks for a direct render
- Graphics skip init even in a real codebase: add the Step 1
exception, scope the init section, and fold an on-brand item into
the graphic brief round (init only when brand context is missing)
- SOP: NEW TARGET IN EXISTING CODEBASE: stop inheriting Task 1.1's
target-page steps (render branch, import tracing) that assume the
target exists; collect from shared shell, a representative sibling
page, reusable components, and the design system instead
- CLI preflight: the bare command now self-reports auth status and
recent projects (verified against v0.9.0), so preflight once and
login eagerly instead of probing with real commands
- Scope diverge-first (three directions) to the graphic brief only;
UI SOPs gather context first and explore via Step 3b variants
- Add UI TARGET ROUTING + SOP: NEW TARGET IN EXISTING CODEBASE: a new
page in a real codebase skips the Step 3a reproduction (no ground
truth exists); command choice is flow-pages from a confirmed draft,
else create-design-draft with shell/design-system context
- Deduplicate repeated rules to one canonical home each (~900-line
trimming table, variant count, init test); rewrite ALWAYS-ON RULES
as a pointer index
- Split references/WEBSITE.md (extract-website recipes + scope) and
references/COMPONENTS.md (Petite-Vue spec) out of SUPERDESIGN.md
- Rewrite frontmatter description: grammatical, covers no-codebase,
redesign, and URL-borrow triggers
- Unify cross-file references to relative markdown links; drop emoji
bullets; replace hardcoded --model list with list-models discovery
Remove the Codex Browser side-panel embed-canvas mechanism (capability test, embedCanvasUrl mint/open steps, and related rules). Replace the agent-side --no-open default with: leave create-project's browser auto-open on and tell the user the canvas was opened; reserve --no-open for CI/headless. Trim the canvas-link and create-project command-contract entries to match.
Apply the twin-review fix cluster plus the captain's manual edits:
- COMMAND CONTRACT: add canvas-link (mint-only, embedCanvasUrl+canvasUrl) and
create-project --no-open; document execute-flow-pages --context; add the
canvas-link-unavailable fallback (surface clean canvas URL).
- Diverge-first: accepting the "try all three" recommendation counts as an
explicit request for 3 variants (SKILL + variant-count rules); on the graphic
path the three directions fold into the single brief-confirmation round.
- Graphic path: exempt it from the init HARD GATE, MANDATORY INIT, and MANDATORY
CONTEXT FILES; GRAPHIC.md now enumerates which SUPERDESIGN.md sections apply.
- Self-review: fix pass uses --mode replace (carved into TOOL USE RULE); never
self-review Step 3a reproductions; hoist the visual review + follow-up to an
all-surface section gated on a safe visual-inspection capability, with a
no-inspection fallback that does not imply a check happened.
- Init: one decidable complete-if-all-six-exist-and-non-empty predicate in both
files; rerun regenerates all six (overwrite expected).
- Context budget: one canonical ~900-line trimming decision table, referenced
everywhere; size carve-out added to the NEVER-trim absolutes.
- INIT.md: theme.md = compact token summary first + raw dumps second; pages.md
tree is a candidate set under the payload budget; drop "more is always better".
- Browser capability test + fallback; concrete --no-open test (agent-run vs
human-at-shell); when-a-command-fails block; scope the Codex-Web timeout ask.
- Mechanical: Section B -> DESIGN SYSTEM SETUP; iterate-design-draf typo;
GRAPHIC.md CLI/login pointer -> SKILL.md; "(default)" sizes -> "recommended,
still confirm".
After each generation round, look at the embedded canvas, run one
optimization iteration if issues, then present and offer 2-3 tailored
next steps (user picks before spending credits).