design-sync skill scripts never staged to disk (assets embedded but not extracted)
:robot: _This was written by an AI agent on behalf of @tegola._
Bug: design-sync skill assets are embedded in the binary but never staged to disk on slash invocation
Claude Code version: 2.1.207 (Homebrew cask, macOS / darwin 25.5.0)
Skill: bundled design-sync (skill package version 2.1.197)
Summary
Invoking /design-sync injects the skill's top-level SKILL.md instruction text
into context, but the skill's script resources are never written to the on-disk
staging directory the instructions point at. Every downstream step
(package-build.mjs, package-validate.mjs, the non-storybook//storybook/
sub-SKILL.md, lib/*.mjs) is therefore unreachable, so a sync cannot run.
What the instructions reference (and expect on disk)
The injected SKILL.md names a base directory, e.g.:
/private/tmp/claude-501/bundled-skills/2.1.197/<hash>/design-sync
and tells the agent to Read <base>/non-storybook/SKILL.md, run<base>/package-build.mjs, <base>/resync.mjs, <base>/package-validate.mjs,
and use <base>/lib/*.mjs.
Observed on disk
$ find /private/tmp/claude-501/bundled-skills -type f
# (nothing)
$ find /private/tmp/claude-501/bundled-skills/2.1.197/<hash> -type d | wc -l
5 # design-sync/, lib/, non-storybook/, storybook/ — all EMPTY
$ find /private/tmp/claude-501/bundled-skills/2.1.197/<hash> -type f | wc -l
0 # zero files, including no SKILL.md
Read on <base>/non-storybook/SKILL.md fails with "File does not exist".
Searched all of bundled-skills, $TMPDIR, ~/Library/Caches, ~/.cache,~/.claude — no package-build.mjs (or any design-sync .mjs) staged anywhere.
Confirmation the assets ARE shipped (embedded in the binary)
The resources are present inside the compiled executable/opt/homebrew/Caskroom/claude-code@latest/2.1.207/claude:
$ grep -al "package-build" claude # matches
$ grep -al "ds-bundle" claude # matches
$ grep -al "sync-hashes" claude # matches
The binary contains an embedded asset manifest listing the full file set:storybook/SKILL.md, non-storybook/SKILL.md, package-build.mjs,package-validate.mjs, lib/common.mjs, lib/detect.mjs, lib/bundle.mjs,lib/dts.mjs, lib/css.mjs, lib/source-storybook.mjs, and more.
So this is not a packaging omission. It is a staging/extraction failure:
the embedded assets are never materialized to the base directory when the skill
is invoked.
Suspected trigger
design-sync is a slash-only skill (disable-model-invocation — the Skill
tool refuses it: "cannot be used with Skill tool due to disable-model-invocation").
The slash-command path injects SKILL.md text but appears not to run the asset
staging that a normal Skill-tool invocation would. So for any slash-only skill
that ships script resources, those resources never reach disk.
Reproduction
claude2.1.207 on macOS.- In a repo, run
/design-sync. - Follow the instructions to the base dir; observe the four subdirectories exist
but contain zero files.
Read/execute any referenced.mjs→ not found.
Impact
The design-sync skill is unusable: no converter, no validator, no sub-skill.
A design system cannot be synced to claude.ai/design via the intended path.
Tried, did not help
- Re-running
/design-syncin the same session. claude update(Homebrew) to 2.1.207, after quitting all Claude Code / Desktop
instances, then relaunching.
- Invoking via the
Skilltool (blocked bydisable-model-invocation).
Workaround
Hand-produce the documented upload layout (_ds_bundle.js, styles.css,components/<group>/<Name>/{.html,.jsx,.d.ts,.prompt.md}, guidelines, etc.) and
verify renders out-of-band, then upload with the DesignSync tool. Heavy, and
outside the skill's built-in verification gates.
This issue has 1 comment on GitHub. Read the full discussion on GitHub ↗