design-refresh
The one skill for updating Claude Design from the code: checks whether the synced components are behind their code, rebuilds stale screen mockups, offers…
Skill by Lichens-Innovation
Install
Works with Claude Code, Claude apps, Codex, Cursor, Gemini CLI, GitHub Copilot, VS Code, OpenCode, Goose, Windsurf. Read the repository before you give any tool access to your data.
npx agentmarket install skill/lichens-innovation-design-refresh
Asks which of your tools to add it to (Claude Code, Codex, Cursor, VS Code, Windsurf, Gemini CLI, Claude Desktop) and shows the change first. See https://agentmart.dev/cli.
Get the weekly diff
The weekly diff: one email a week with new agent tools, notable updates and grade changes, plus security alerts for tools you follow. Double opt-in, one-click unsubscribe.
About
Use cases: design, frontend
Reviews
Write a reviewNo reviews yet. Installed it? Reviews come from verified installers only. How reviews work
Permissions
What this skill can do and what it asks for, from its SKILL.md. Checked Oct 25, 2026.
- Tools
- No tools found
- Secrets
- None asked for
- Install scripts
- None found
- Runs as
- Node.js package
Network hosts it talks to 1
codeload.github.com· found in install command
Files it touches
~/.claude/skills/design-refresh
What's inside
- Skill name
design-refresh- Description
- The one skill for updating Claude Design from the code: checks whether the synced components are behind their code, rebuilds stale screen mockups, offers screens that have no mockup yet, adds a named page or fixes a mockup that differs from the real page, and brings the project's copies of the plugin's files (palette.ts, the proposal conventions, the navbar, the palette and Tailwind cards) up to a newer plugin version. Use when the user wants Claude Design refreshed or up to date before designing, after design-loop applied changes, after updating the design plugin, or asks to add, mock or fix a page or screen in Claude Design.
- License
- MIT
- Instructions
- 114 lines in SKILL.md · view on GitHub
Before installing
- Ships executable scripts
Files (7)
- SKILL.md
- plugin-files.md · references/
- screens-workflow.md · references/
- nav-tag.mjs · scripts/
- plugin-files.mjs · scripts/
- test-nav-tag.sh · scripts/
- test-plugin-files.sh · scripts/
SKILL.md (first lines)
# Design Refresh
One entry point to make Claude Design match the repo: the synced components (through
`/design-sync`, run by the user), the screen mockups (through
[`screens-workflow.md`](${CLAUDE_SKILL_DIR}/references/screens-workflow.md)) and the project's
copies of the plugin's own files (through [`plugin-files.md`](${CLAUDE_SKILL_DIR}/references/plugin-files.md)). Cheap when nothing
changed. It also takes the targeted requests: add a named page, or fix a mockup that differs from
the real page.
## Shared contract
Read [`design-contract.md`](${CLAUDE_SKILL_DIR}/../../references/design-contract.md) (`screens[]`,
§2) and [`screens.md`](${CLAUDE_SKILL_DIR}/../../references/screens.md).
`/design-sync` is built into Claude Code and only the user can start it (typing `/design-sync`):
neither this skill nor a subagent can invoke it. This skill decides whether a sync is needed,
hands it to the user, and does the rest.
## Preconditions
`design.manifest.json` exists and `.design-sync/config.json` has `projectId` and `pkg`. Without
them the project has never been synced: point at `design-init`, then a first `/design-sync`.
## Workflow
1. **What is stale.**
- **Components.** They are current when all of these hold:
- the local `ds-bundle/_ds_sync.json` exists and its `bundleSha12` equals the project's
(`DesignSync get_file _ds_sync.json`): the last build is the one uploaded;
- no file the sync reads changed after that build:
```bash
find <paths> -type f -newer ds-bundle/_ds_sync.json -not -path '*/node_modules/*' | head
```
`<paths>`: `.design-sync/` minus its git-ignored folders (`sb-reference/`, `.cache/`,
`learnings/`, `pkg/types/`), each Storybook target's config dir, the palette's `outputs`,
and the folder of every component row's `localPath` (their stories live there).
Anything else means stale. A false alarm only costs a `/design-sync` that finds nothing to
upload.
- **Screens.** For each `screens[]` row, recompute `sourceHash` (screens.md): a different
value means its mockup is stale.
- **Plugin files** (`palette.ts`, the conventions in the readme header, the navbar, the
palette and Tailwind cards): run
`node ${CLAUDE_SKILL_DIR}/scripts/plugin-files.mjs check`
([`plugin-files.md`](${CLAUDE_SKILL_DIR}/references/plugin-files.md#check)). Exit 1 means
step 3 applies; exit 3, an older plugin here than the project's: say so and skip step 3.
- **Navbar on the cards.** The sync's cards have no navbar hook of their own: they get the
navbar only through the design provider, and only once `design-init` step 8 has wired it in
(its second run). The local checks (render check, comparison sheets) render each card alone,
so they never show a missing navbar. Check the local build:
```bash
node ${CLAUDE_SKILL_DIR}/scripts/nav-tag.mjs ds-bundle
```
It lists the cards that don't load `design-nav.js` (exit 1). Also look for the provider
hook: `grep -rl design-nav .design-sync --include='*.tsx' --include='*.jsx' --include='*.ts'
--include='*.js' --exclude-dir=node_modules --exclude-dir=types`. No match means the
wrapper package never got it: the real fix is `design-init` step 8 (re-run `design-init`,
then `/design-sync`), and step 3b below is only the stopgap. Any listed card, with
`design-nav.js` in the project, means step 3b applies once the build is current.
Tell the user what you found in one short list. Nothing stale: say Claude Design is up to
date and go to step 5.
2. **Components stale → hand the sync to the user.** Ask them to type `/design-sync` (it
re-syncs only what changed; they approve its upload) and to run `/design-refresh` again when
it finishes. Tell them the sync must keep the project's own files: `screens/`, `proposals/`,
`Palette.dc.html`, `Tailwind.html`, `design-nav.js`, `thumbnail.html` and `support.js` are not from the sync
and must not be in its deletes. Also warn them that a plan approved earlier in the session
expires: after a sync, upload with a new plan, not an old plan ID (it fails with "Plan token is
missing or does not match this project"). A fresh `finalize_plan` returns an ID that works. Then stop: the mockups render the synced bundle, so they wait
for the new one. Only when no stale screen needs the new bundle (they use only components that
didn't change) may you go on to steps 3–4 first; say so.
3. **Plugin files** (when the check asked for an update). Follow
[`plugin-files.md`](${CLAUDE_SKILL_DIR}/references/plugin-files.md#update): `palette.ts`, the
conventions, then the navbar, palette card and Tailwind card in Claude Design (asking before
replacing each), then stamp the manifest. Only the conventions need a sync, to publish them:
update them before handing the sync to the user (step 2), so one sync carries both.
**3b. Navbar tag on the cards** (when the step 1 check listed cards). On a current build,
run `node ${CLAUDE_SKILL_DIR}/scripts/nav-tag.mjs ds-bundle --fix`, then upload the changed
cards (`finalize_plan` with `writes` naming them, `deletes: []`, `localDir: ds-bundle`, then
`write_files`). Ask first: it edits every card. Each `/design-sync` rewrites the cards, so
this is needed again after every sync; say so in the report. The fixed bar pads the card body
down, so comparison sheets made without it may differ slightly in framing: re-grade with it
on if a grade matters.
4. **Screens.** Follow [`screens-workflow.md`](${CLAUDE_SKILL_DIR}/references/screens-workflow.md),
with `<screenshot.mjs>` = `${CLAUDE_SKILL_DIR}/../design-loop/scripts/screenshot.mjs`: refresh
mode for the stale rows, one run for all of them. When the user named a page ("add the Home
page") or said a mockup doesn't match the real page, run add mode or fix mode for those screens
instead of the offer in step 5, after the component check in step 1 (and step 2 if stale).
5. **Offer new screens, last.** List the app's routes (its router) that have no `screens[]` row.
If there are any, ask whether to add some now (`AskUserQuestion`, multi-select, with a "Not
now" option; name the rest in the question when there are more than fit). Build the chosen
ones in add mode (same file). Record nothing for the others: they are offered again
next time, so the user adds screens as they start working on them.
6. **Report**: whether the components are current (or waiting on `/design-sync`), the plugin
files updated or kept (whether the cards load the navbar, and that changed conventions reach
Claude Design with the next `/design-sync`),
the screens rebuilt or added, anything blocked, and the project link
(`https://claude.ai/design/p/<designProjectId>`).
This skill never edits app code and never writes the synced files.From Lichens-Innovation/ai-dev-tools, MIT.
More from Lichens-Innovation/ai-dev-tools
- 0.570score
setup-claude-auto-lint-format
Lichens-Innovation
Installs a PostToolUse hook that runs the project's linter and formatter on every file Claude Code or one of its subagents writes or edits, and speaks up only…
SkillAFreshness: AClaude Code +9 - 0.570score
setup-claude-just-usage
Lichens-Innovation
Reads the justfiles of a repository and, for each level that has one (root, apps/frontend, packages/ui, ...), writes a .claude/rules/use-just-commands.md…
SkillAFreshness: AClaude Code +9 - 0.570score
chromatic-init
Lichens-Innovation
Adds Chromatic visual testing to a Storybook project.
SkillAFreshness: AClaude Code +9 - 0.570score
design-loop
Lichens-Innovation
Runs the Claude Design -> React implementation loop: takes an approved component or screen proposal (or the palette card) from a Claude Design project…
SkillAFreshness: AClaude Code +9 - 0.570score
design-palette
Lichens-Innovation
Creates or migrates the canonical CSS theme palette: light/dark inputs, generated scales, semantic tokens shared by web and React Native, hand-authored…
SkillAFreshness: AClaude Code +9 - 0.570score
claude-light
Lichens-Innovation
Applies a lightweight Claude Code configuration to this project's .claude/settings.local.json: optional auto-compact window, connectors, workflows, bundled…
SkillAFreshness: AClaude Code +9 - 0.570score
react-flow-canvas-geometry
Lichens-Innovation
Compute React Flow (@xyflow) canvas geometry correctly — edge label anchors, bezier control points, handle coordinates, node bounds — so labels and edges land…
SkillAFreshness: AClaude Code +9 - 0.570score
react-coding-standards
Lichens-Innovation
Enforces internal React and TypeScript coding standards using avoid/prefer rules.
SkillAFreshness: AClaude Code +9 - 0.566score
setup-claude-guardrails
Lichens-Innovation
Installs guardrails in this project's .claude/ (and its git worktrees) that keep Claude Code from reading, writing or running commands on paths outside a…
SkillAFreshness: AClaude Code +9 - 0.566score
storybook-init
Lichens-Innovation
Installs and configures Storybook in a React or React Native project.
SkillAFreshness: AClaude Code +9 - 0.565score
react-hook-form
Lichens-Innovation
Guide for setting up react-hook-form with Zod validation in React.
SkillAFreshness: AClaude Code +9 - 0.565score
generate-pr-description
Lichens-Innovation
Generates pull request descriptions by comparing current branch with parent branch.
SkillAFreshness: AClaude Code +9
Signals
- Stars
- 0
- Forks
- 0
- Open issues
- 6
- Last commit (this folder)
- Oct 7, 2026 (21 days ago)
From GitHub (fetched Oct 24, 2026).
Details
- License
- MIT
- First seen
- Oct 24, 2026
- Last checked
- Oct 24, 2026
- Source
- GitHubgithub-graphql
More from Lichens-Innovation
- 0.570score
setup-claude-auto-lint-format
Lichens-Innovation
Installs a PostToolUse hook that runs the project's linter and formatter on every file Claude Code or one of its subagents writes or edits, and speaks up only…
SkillAFreshness: AClaude Code +9 - 0.570score
design-loop
Lichens-Innovation
Runs the Claude Design -> React implementation loop: takes an approved component or screen proposal (or the palette card) from a Claude Design project…
SkillAFreshness: AClaude Code +9 - 0.570score
setup-claude-just-usage
Lichens-Innovation
Reads the justfiles of a repository and, for each level that has one (root, apps/frontend, packages/ui, ...), writes a .claude/rules/use-just-commands.md…
SkillAFreshness: AClaude Code +9 - 0.570score
chromatic-init
Lichens-Innovation
Adds Chromatic visual testing to a Storybook project.
SkillAFreshness: AClaude Code +9 - 0.570score
claude-light
Lichens-Innovation
Applies a lightweight Claude Code configuration to this project's .claude/settings.local.json: optional auto-compact window, connectors, workflows, bundled…
SkillAFreshness: AClaude Code +9 - 0.570score
design-palette
Lichens-Innovation
Creates or migrates the canonical CSS theme palette: light/dark inputs, generated scales, semantic tokens shared by web and React Native, hand-authored…
SkillAFreshness: AClaude Code +9
Cite this page
design-refresh skill. Agent Mart. https://agentmart.dev/skills/lichens-innovation-design-refresh (last updated 2026-10-24)