Install any skill in seconds. Free to start, no credit card required.
Get Started Free →Rebuild and restart the internal Storybook UI after changes to internal Storybook code (core, addons, frameworks, renderers, libs, etc.), then optionally display a UI review. Use after editing any package in the Storybook monorepo's code/ directory, or when the user asks to rebuild and/or restart Storybook.
.claude/skills/storybookjs-rebuild-restart-storybook/SKILL.md| Test case | Without → With | Effect | Δ tokens | Δ turns |
|---|---|---|---|---|
| case-07 | ✗→✓ | ▲ Improved | -16% | 0% |
| case-08 | ✗→✓ | ▲ Improved | -14% | 0% |
| case-15 | ✗→✓ | ▲ Improved | -30% | 0% |
| case-18 | ✗→✓ | ▲ Improved | 8% | 0% |
| case-21 | ✗→✓ | ▲ Improved | 22% | 0% |
After making changes to internal Storybook code (core, addons or otherwise), follow this workflow.
Unless the user explicitly ran /rebuild-restart-storybook, ask the user whether they want to rebuild and restart Storybook. If they decline, stop here.
Build a space-separated list of the monorepo packages that were modified in the conversation. For each modified package, find its Nx project name in the project.json file in that package's directory (the name field), not the package.json name.
For example, if code/addons/review and code/addons/vitest were modified, the list is addon-review addon-vitest.
Run these in the code directory, in order. Substitute <extra packages> with the list from Step 2.
bashrm -rf node_modules/.cache yarn yarn build storybook <extra packages>
Then, run in the background:
bashNODE_OPTIONS="--preserve-symlinks" yarn storybook:ui --no-open
A Storybook may already be running. If the port is occupied, cancel the start, kill the old process to free the port, then start Storybook again.
Once Storybook has started, give the user the URL. Then ask whether they want to display a review.
If the user wants a review, use Storybook's review-create MCP tool to create a UI review of relevant stories. Pick a set of stories related to the entirety of the conversation so far.
If there are no relevant stories because no UI elements were touched, ask the user what they would like to see a review for.
| Case | Status | Duration (ms) | Turns | Tokens | Tool calls | ||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| Without | With | Δ | Without | With | Δ | Without | With | Δ | Without | With | Δ | ||
case-01 | fail→fail | 7,181 | 10,811 | +51% | 1 | 1 | 0% | 1,145 | 2,405 | +110% | 0 | 0 | — |
case-02 | fail→fail | 7,755 | 7,012 | -10% | 1 | 1 | 0% | 745 | 721 | -3% | 0 | 0 | — |
case-03 | fail→fail | 6,565 | 11,423 | +74% | 1 | 1 | 0% | 885 | 1,030 | +16% | 0 | 0 | — |
case-04 | pass→pass | 10,865 | 7,215 | -34% | 1 | 1 | 0% | 1,658 | 1,717 | +4% | 0 | 0 | — |
case-05 | pass→pass | 11,529 | 5,757 | -50% | 1 | 1 | 0% | 2,063 | 1,397 | -32% | 0 | 0 | — |
case-06 | pass→pass | 8,735 | 8,779 | +1% | 1 | 1 | 0% | 1,523 | 1,991 | +31% | 0 | 0 | — |
case-07 | fail→pass | 8,377 | 4,868 | -42% | 1 | 1 | 0% | 1,184 | 991 | -16% | 0 | 0 | — |
case-08 | fail→pass | 5,985 | 4,193 | -30% | 1 | 1 | 0% | 980 | 843 | -14% | 0 | 0 | — |
case-09 | fail→fail | 10,622 | 8,149 | -23% | 1 | 1 | 0% | 1,664 | 843 | -49% | 0 | 0 | — |
case-10 | fail→fail | 10,048 | 7,296 | -27% | 1 | 1 | 0% | 1,651 | 874 | -47% | 0 | 0 | — |
case-11 | fail→fail | 7,428 | 9,975 | +34% | 1 | 1 | 0% | 1,172 | 1,081 | -8% | 0 | 0 | — |
case-12 | fail→fail | 7,350 | 8,597 | +17% | 1 | 1 | 0% | 878 | 838 | -5% | 0 | 0 | — |
case-13 | pass→pass | 8,132 | 2,773 | -66% | 1 | 1 | 0% | 1,170 | 774 | -34% | 0 | 0 | — |
case-14 | pass→fail | 9,619 | 8,540 | -11% | 1 | 1 | 0% | 1,345 | 940 | -30% | 0 | 0 | — |
case-15 | fail→pass | 12,757 | 10,967 | -14% | 1 | 1 | 0% | 2,122 | 1,476 | -30% | 0 | 0 | — |
case-16 | fail→fail | 7,872 | 10,232 | +30% | 1 | 1 | 0% | 1,094 | 1,196 | +9% | 0 | 0 | — |
case-17 | pass→pass | 9,127 | 5,497 | -40% | 1 | 1 | 0% | 1,249 | 1,038 | -17% | 0 | 0 | — |
case-18 | fail→pass | 9,759 | 7,677 | -21% | 1 | 1 | 0% | 1,292 | 1,395 | +8% | 0 | 0 | — |
case-19 | pass→pass | 9,915 | 6,413 | -35% | 1 | 1 | 0% | 1,321 | 1,199 | -9% | 0 | 0 | — |
case-20 | pass→fail | 6,040 | 3,670 | -39% | 1 | 1 | 0% | 917 | 1,003 | +9% | 0 | 0 | — |
case-21 | fail→pass | 11,392 | 13,633 | +20% | 1 | 1 | 0% | 1,610 | 1,970 | +22% | 0 | 0 | — |
case-22 | pass→pass | 10,544 | 6,118 | -42% | 1 | 1 | 0% | 1,501 | 1,268 | -16% | 0 | 0 | — |
case-23 | fail→fail | 7,926 | 10,729 | +35% | 1 | 1 | 0% | 1,204 | 928 | -23% | 0 | 0 | — |
DecimalAI ran this skill against gemini-3.6-flash twice over the same eval suite — once with the skill loaded and once without — and compared the two runs case by case. 23 cases were attempted, and 14 counted toward the lift figure. The other 9 produced results that are not comparable between the two arms, so they are excluded from the headline rather than averaged into it. The headline lift of +13 percentage points is the difference between those two pass rates over the 14 comparable cases. 3 cases got worse with the skill loaded, and they are included in that figure.
Without the skill loaded, the model failed this case. With it loaded, the same prompt on the same model passed. This is one improved case from the latest verified run; every case, including any that regressed, is in the table above.
Other measured skills in the registry, with their headline benchmark lift.