Changelog
What changed in the Better Design MCP server, newest release first.
0.42.0, 12 October 2026
Added
read-figma-kittakes aprojectIdand also keeps the kit on that Better Design project.- A kit send now opens with the component sets an agent cannot use yet: sets with more than 3 variant properties, and sets with no use rule.
- A kit send also lists the sets with no part in the project's design system and the sets that build as a part with another name, and its answer carries the map from each set to its part.
0.41.0, 11 October 2026
Added
-
get-inspirationserves two more collections.app-screenssends product screens of shipped apps as images, found by a few words inquerysuch as "settings" and an optional platform.html-flowssends shipped web flows rebuilt as HTML, found by a few words inquery, so an agent can read a reference's structure and copy, not only a picture of it. -
The SwiftUI kit from
get-design-system-kitnow carries the controls an iOS app needs: checkbox, radio group, slider, stepper, select, date picker, search field, text area, one-time code field, rating, menus, dialogs, alert banner, progress, spinner, skeleton, avatars, grouped sections, stat cards, page dots, carousel, steps, and bar, line, area and donut charts. Every control now responds to touch, with press, disabled, loading, focus, haptic and motion states.DSTabViewanddsNavigationBar(_:)build the tab bar and the navigation bar on the system ones, so iOS 26 draws them in Liquid Glass. The kit needs iOS 17, andDSTabViewiOS 18.
Changed
- The SwiftUI kit ships its look as SwiftUI styles, so it styles the
system's own controls:
.buttonStyle(.dsPrimary),.toggleStyle(.dsSwitch)and.dsCheckbox,.disclosureGroupStyle(.ds),.progressViewStyle(.dsBar)and.groupBoxStyle(.dsCard), set once on a container or per control. A destructive button isButton(role: .destructive). TheDS*views keep their API and are built on the styles. Empty states useContentUnavailableView, the paged list is aList, success and warning are palette colours, and every file carries a#Preview.
Fixed
- The SwiftUI kit for Bevel now compiles: a sheet with no border or accent colour gets a stand-in. The selected tab now shows as selected, and round button icons take the system's colour instead of iOS blue.
- The SwiftUI kit now follows the phone's appearance setting for every design system. A system that authors one scheme gets the other derived from it: the page turns light or dark with the status bar and tab bar, cards sit above the page, and text stays legible on its fill. Before, the page stayed in its one scheme while iOS flipped its own chrome around it.
- A prototype from
create-figma-prototypeno longer shows its closed menus. An open menu now sits under its button at the button's width, also on a zoomed page.
0.40.0, 10 October 2026
Added
read-figma-kitreads the kit in the Figma file you have open: its variables in every mode, its text and effect styles, and its components with their variant options. It writes them to one JSON file. You confirm the read in the Better Design plugin panel.create-figma-prototypein model mode takeskitPath, a kit file fromread-figma-kit, and an optionaltheme. The page then uses that kit's colours, font and radius on the chosen system's parts.
Fixed
-
create-figma-prototypein model mode with a local model no longer fails after 5 minutes on a large frame. The tool now streams the model's reply, so the runtime's header timeout no longer ends the call, and a stream that stops early is flagged as cut off. -
The design system previews and the HTML kit from
get-design-system-kitnow use the design system's own font. Before, the token CSS declared each font as a reference to itself, so every page fell back to the system font. -
get-team-rulesno longer calls a project empty when its only specs sit on other screens. It names those screens, and it accepts any hex project id. -
In a prototype from
create-figma-prototypein model mode, a menu, dropdown or tooltip now opens against the button that opened it: below it, above it when the space below is short, and inside the screen edge. A select's menu is as wide as its button. Before, the browser drew it in the middle of the screen.
0.39.0, 6 October 2026
Changed
- On the hosted server, a free account that makes more than 30 tool calls in a day gets a short note under the result on call 31 and every 10th call after it. The note says what Pro adds. Every call still runs.
- A prototype from
create-figma-prototypein model mode now works like the real product: tabs switch, menus pick an option, dialogs open, and pagination and switches move. The model still writes no script; the page runs one fixed script of the tool's own. - Model mode sends each distinct drawing in a frame once, by id, and the model writes only the id. More of a frame fits in the prompt, and the model's page is shorter, so it comes back sooner.
- A model-mode prototype now works on a phone as well as at the frame's width: below 768px the sidebar folds behind a menu button, columns stack, and nothing scrolls sideways.
0.38.0, 5 October 2026
Added
- A client project keeps its guidelines, a use, never or pairing rule for each
part or value, brand-wide bans, and specs on a screen or one part of it.
set-team-rulessaves one piece withprojectId, andget-team-ruleswithprojectId,screenandpartsreturns only what that screen needs. npx better-design ruleswrites your team rules, your repository's component names and the AI-feature rules intoAGENTS.md, and intoCLAUDE.mdwhen it exists, so agents that never call the tools still follow them. It shows the team rules and asks before it writes them. Running it again refreshes the block.get-widget-guidetakesformat: "page-family"and returns a brief for a family of pages built from the rows of a dataset: the data source, one template, slugs, the sitemap, canonical URLs, and the rule that every page carries something only its row provides.set-team-rulessaves the team rules your agent drafted with you, once you approve the draft. It never replaces different saved rules unless you agree.get-team-ruleshands your agent an outline and the steps to draft the rules when your team has none yet.check-comprehensionfails copy that uses a word your team's rules ban, and stops flagging the words they approve.propose-team-ruleturns a correction you give your agent into one proposed team rule. It waits on the Team rules page until you approve it, and no agent follows it before then.
0.37.0, 4 October 2026
Changed
confirm-claimtakes two calls. The first links nothing and names the account the key would join; the key moves only on a second call withconfirm: true, after the person says the account is theirs. The account then gets an email naming the key. In 0.36.0 and older,confirm-claimnow fails with a message to update the package, and links nothing.
Fixed
-
The one-command design-system install that
get-design-system-kithands out now completes for every catalog system, and the project still builds after it. Each item pins its packages to the versions the catalog builds with. -
npx better-designsetup asks which clients to configure before it creates a key, so a run that can configure nothing creates no account. A rerun keeps every existing Better Design connection, whether it uses a key, OAuth or a custom server, and asks for a key only when a client still needs one. Setup ends with "needs attention" and exit code 1 while a step is left for a person, and it names the first question to ask to check the connection.
0.36.0, 30 September 2026
Added
better-design reviewandreview-ui-codecheck the class contract: a component restyled from outside, raw palette colours outside the theme, arbitrary values the scale already has, static inline styles, and class names built from a variable. The CLI also asks the project's own Tailwind v4 which classes it does not generate. Switch each check off underrules.classesin.better-design/review.config.json.confirm-claimlinks this client's API key to the account that opened its claim link. The person pastes the code the claim page shows into their AI tool, and the tool sends it back with its own key.
Fixed
extract-from-urlreads a Shopify Dawn store's palette from its color-scheme blocks, so--primarycomes out as the store's filled button color rather than a transparent outlined one. It also splits two declarations that minification ran together and drops a value that is only a unit.
0.35.5, 30 September 2026
Fixed
- The npm package and the MCP Registry entry name a public repository that
exists,
better-designs/better-design-plugin. They used to name apackages/mcpfolder inmarvkr/better-design, which that repository does not have.
0.35.4, 30 September 2026
Added
.better-design/review.config.jsontakesrules.elementExemptions, a list of path globs, each with a reason.better-design reviewskips the element rules, such as "use the app Button", for a file under an exempt path, and runs every other rule. The review now checks the config against the same schema as the GitHub App and stops on one that does not match.
0.35.3, 30 September 2026
Fixed
- The shadcn registry names each design system as the catalog does, such as "Metal FX Gold" rather than "Metal Fx Gold", and carries its catalog description, personality and industry instead of a placeholder line.
0.35.2, 30 September 2026
Fixed
- The design-system seed ends on a line with its counts, such as "Seeded 83 of 85 design systems. 2 failed: halo, cashmere.", so a failed run reads as one from the run list. A missing design-systems folder now fails the run.
0.35.1, 30 September 2026
Fixed
get-design-system-kitwithtarget: "shopify"and aprojectIdtells a caller outside the Shopify pilot that the kit is a private pilot and how to ask for access. It used to say the project "may still be generating". A project with no stored theme still gets the missing-theme message.
0.35.0, 30 September 2026
Changed
create-design-systemasks for the user's choice before it generates. A call withoutbaseDesignSystemId,brandCssor the newuserConfirmedCustom: truereturns the top four catalog matches to show the user, and generates nothing. PassuserConfirmedCustom: truewhen the user saw the matches and chose fully custom.find-design-systemnames the product-page principles when the query is for a product page, a shop or store, ecommerce, DTC, Shopify, a checkout or a price.get-ui-principleno longer ranks a doc's checklist above the prose that explains it: a checklist follows the first prose section of its doc.
0.34.0, 30 September 2026
Added
send-feedbacklets an agent report a bug, a missing feature or wrong output from inside its MCP session. A person reads every report. The tool sends with the caller's API key, so it is not offered on OAuth directory connections, and a report never spends the agent's read budget.
0.33.2, 30 September 2026
Changed
get-review-rules,check-comprehensionandinspect-spacingsay what they cannot see: the rules are read against source, the comprehension check reads text only, and spacing is geometry only, so none of them is visual approval.check-comprehensiontakessurface: "slide", set by default when the screen name says slide, deck or presentation. A slide adds a density test and returnsneeds-screenshotinstead ofpass, so it is approved only after a review of its rendered screenshot.
0.33.1, 30 September 2026
Changed
get-review-rulesasks the host to check each rule section in its own subagent, then to pass every flag to one skeptic that keeps a flag only when it can cite the file and line.
0.33.0, 29 September 2026
Added
get-design-system-kittakestarget: "store-screenshots". It returns slide files styled from the design system's own tokens and a render script. The script writes App Store and Google Play PNG files on the user's machine at 1320 x 2868 for iPhone, 1080 x 1920 for Google Play phones and 1024 x 500 for the Play feature graphic, and stops on a file with the wrong size or a transparency layer.
0.32.1, 29 September 2026
Changed
get-inspirationsends Better Design's notes on each App Store screenshot set with its images: how its headlines, slide order, framing and color sell the app, and the day the notes were written.
0.32.0, 29 September 2026
Added
get-inspirationsends real reference designs from Better Design's library as images. The first collection is App Store screenshot sets: passtype: "app-store-screenshots", and acategorysuch as "Productivity" to narrow it.
0.31.0, 27 September 2026
Added
npx better-design ask "<question>"answers a design question from the UI principles, or the UX principles with--ux, without restarting the AI client. Setup ends by naming it, because a client loads its tools only when a session starts.
Changed
- The development override for the API address is now
BETTER_DESIGN_API_URL, notAPI_URL, and it must be an https or localhost URL. A strayAPI_URLin a shell can no longer send the key to another host.
0.30.0, 27 September 2026
Changed
- Setup saves its key in
~/.better-design/keyand reuses it on the next run on the same machine. Running setup again, or for another client, no longer creates another account. Delete the file to start over.
0.29.1, 25 September 2026
Added
get-review-rulestakescategory: "ai-features". It returns nine rules for features that show model output or send user data to a model: the user accepts output before it is saved, every failure is visible, a manual path always works, consent comes before a data read, sources are real, AI output is marked, long runs say so, refusals offer another path, and feedback reaches someone.
0.29.0, 23 September 2026
Added
create-figma-prototypetakesmode: "model"for a frame from a file that was not built from a Better Design library. The calling agent rebuilds the frame with a catalog design system's components: the tool returns a prompt file and the frame's image, and a second call withframeIdandanswerPathchecks the page. A local model through an OpenAI-compatible server such as Ollama is the offline option. No API key is needed. The report lists every layer that did not reach the page.
0.28.0, 23 September 2026
Added
better-design setupconfigures Devin, the editor formerly named Windsurf. It writes~/.config/devin/mcp_config.jsonfor the Devin Local agent and keeps the legacy Cascade file as a separate target.better-design setupconfigures Google Antigravity through~/.gemini/config/mcp_config.jsonand itsGEMINI.mdrule file.
0.27.1, 23 September 2026
Changed
- Setup names the Terms of Service version a newly created free key accepts, with a link to the terms.
0.25.0, 15 September 2026
Added
get-design-system-kittakestarget: "swiftui". It returns a storedTheme.swiftandPrimitives.swiftbuilt from the design system's own component source, so an iOS project gets that system's button radius, card depth and toggle tint, not tokens on generic views.- Both mobile targets sit behind a private pilot, as the Shopify target does. A key outside the pilot does not see the targets, and a request for one says the set was withheld rather than reporting a missing design system.
Changed
target: "react-native"now reads a stored primitive set instead of compiling the token sheet at request time. The theme carries amaterialblock lifted from the system's web components (button, card, input, switch, badge), and the primitives read it, so two systems no longer look alike on a phone. The theme and primitives file paths are unchanged. The three metal-fx colourways still share one phone kit, because their difference is a WebGL preset the kit cannot carry.
Removed
target: "react-native"is no longer open to every key. Both mobile targets need mobile kit pilot access, as the Shopify target needs its own. A key outside the pilot does not see the targets in the tool schema.
0.24.0, 10 September 2026
Added
get-shopify-guideserves a sales-page Guide (shopify-sales-page, aliasessales page,advertorial,product landing page). It sequences the positioning, product-pages, product-imagery and Shopify workflow principles into one build and records what the Uclips reference taught.get-design-system-kittakestarget: "react-native". It compiles the design system's own token sheet into a React Native theme and returns the primitives that read it, so an Expo project gets the system's colours and lengths instead of a shadcn install command it cannot run. Colours compile to hex, because React Native'sStyleSheetrenders nothing foroklch().- The result reports every token that needs a browser to resolve, a
calc(), avar(), or a relativeoklch(), rather than dropping it in silence. A token from the dark block is named as such: the dark palette inherits the light value for any key it does not set.
Changed
- Kit instructions distinguish repair, polish, and redesign. A redesign calls for real layout and component changes with matching desktop/mobile evidence, while preserving the selected design system and production boundaries.
- Page-only Shopify work must use isolated templates, sections, and styles. The full-storefront kit does not authorize changes to live or control pages.
Fixed
- Kit handoffs preserve the selected icon family and variant. Shopify snippets use canonical icon geometry instead of substituting a generic icon pack.
- Legacy or mismatched Shopify material is withheld until refreshed. Stored catalog and project kits must be refreshed before deploying the stricter reader.
0.23.3, 5 September 2026
Changed
extract-from-urlandextract-design-systemnow close their token sheet with a note on what the sheet does not carry: gradient washes, frosted panels, glows, entrance motion. The note points at the newreading-a-referenceprinciple. That principle explains how to read those effects from a live site or a screenshot as a layer stack, with every claim labelled Measured, Derived, or Inferred.
0.22.0, 20 August 2026
Added
get-widget-guidenow gives agents a structured intake and implementation guide for article calculators, estimators, converters, generators, quizzes, and checklists. It covers calculation trust, interaction, search visibility, performance, privacy, testing, and review without promising ranking gains.
0.16.2, 9 August 2026
Fixed
get-design-system-statusnow names the public/preview/<fragmentId>link in its response text. The project link it used to print alone is owner-scoped, so anyone the user shared it with saw "Project not found".find-iconsreturns the icon names Iconify actually has. It used to append the library's default variant to every result, turninglets-icons:homeintolets-icons:home-line, which does not exist and 404s on install. An explicitvariantnow re-orders the results instead of rewriting them.
0.9.1, 15 July 2026
Changed (breaking)
- Removed the routing-only
build-ui-apptool.find-design-systemis again the single entry point for both app-build discovery and catalog browsing, and its response carries the build-target and review guardrails. - Replaced
get-design-system-docsandget-design-system-htmlwithget-design-system-kit. Passtarget: "react"in coding hosts ortarget: "html"in inline chat canvases and artifacts. - Updated the installer rule, server instructions, smoke test, and npm README to describe the complete 13-tool surface from one source of truth.