Design pack: Atelier asks first, then builds, audits and redesigns
Atelier is the BMAD+ design engine: a 13-question intake, then build, review or redesign through three skills, labelled evidence and a quoted pre-flight verdict. Install, real session, examples.
The Design pack installs Atelier, the BMAD+ agent for interfaces: marketing pages, dashboards, record tables, forms, sign-in and first-run flows, mobile views and email. Atelier does not start by drawing. It first runs an intake, a short list of questions about what the screen is for and who uses it, and writes the answers into a brief that becomes the contract for everything built afterwards. It then plans, builds, audits or reworks the interface by opening three skills that hold the actual design rules, and ends by quoting the verdict of a delivery checklist, the pre-flight.
Atelier, the design packThe design read, tokens and states, and a pre-flight verdict taken from the checklist.Transcript
Atelier, the tenth pack, builds, audits and redesigns interfaces under checkable rules. It starts with a design read: questions about the surface, the audience and the one job the page must do. A dial you leave open is set from the surface, and the brief says it was inferred. Then it builds with semantic tokens, WCAG AA contrast and every state covered. It ends with a pre-flight. Ready or not ready is read from the checklist, not from how the screen looks. The installer copies its three skills, and doctor checks them.
Two things land in your project. The pack itself, in .agents/skills/pack-design/: the dispatcher SKILL.md (skill design-engine), the persona design-engine.md, the intake intake.yaml and a manifest. And the rules, copied by the installer from the npm package design-skill, pinned at exactly version 0.2.1, into three skill folders next to the pack. BMAD+ copies the skills/ directory of that package and nothing else; the package also ships a linker command that BMAD+ never runs.
The three design skills (design-skill 0.2.1)
Skill
Installed at
Owns
design
.agents/skills/design/
What a new screen must satisfy, the reference modules per surface, token sheets, and the delivery checklist (pre-flight) it closes with
design-review
.agents/skills/design-review/
The audit protocol and its severity scale
redesign
.agents/skills/redesign/
How a live product is changed without losing what works: audit, decision, migration plan, build, verification
This pack owns no design rule itself. If .agents/skills/design/SKILL.md is missing (the package did not resolve, or the copy was interrupted), Atelier reports it, points at bmad-plus doctor, which names the missing files, and stops instead of improvising rules. The installer lists every file of every selected pack before writing, so a missing design-skill of the right version aborts the install with your project untouched.
Runs or resumes the intake, settles the dials and the stack, writes _bmad-output/design/brief.md, prints a one-line design read (surface, audience, aesthetic family) and the three dials with their origin, set or inferred
/design build <surface>
Builder
With the brief ready, opens design, builds the surface and delivers with the checklist verdict quoted
/design review <path or url>
Reviewer
Opens design-review, audits the files or page and writes _bmad-output/design/review.md, each finding labelled tool or inspection
/design redesign
Redesigner
Opens redesign and follows it to the end: audit, decision with its reason, migration plan with search and accessibility risks, build, verification against the old version
/design tokens
Builder
Produces the token sheet for the stack the brief records
/design or /design help
-
Prints this table and the state of the intake
The three roles switch automatically when the request fits. Keywords such as Atelier, /design, design tokens, maquette, wireframe, landing page, make it look good, accessibility, refonte or redesign wake the agent. Atelier announces the switch and you can answer skip to stay in the current mode.
The design read is a pack intake: a validated list of questions in intake.yaml, asked a few at a time (at most six per message) and in your language, must-haves first. It has 13 questions in five sections (surface, audience, assets, direction, constraints). Three are must-haves, which the intake cannot be ready without: surface_kind, audience and job. Each answer keeps one of three statuses through every deliverable: answered (you said it), defaulted (a proposed default stood) or unknown (you did not know, recorded with its risk). Separately, when Atelier reads something from the product or the repository itself, such as a dial you left open or the stack, its deliverables label it inferred. That is the persona’s own convention, not a fourth status of the intake, and an inference is never recorded as your answer.
The 13 questions of the design read
Question id
Section
Kind
Must-have
Default
Asks about
surface_kind
surface
choice
yes
-
Which kind of surface: landing, dashboard, table, form, auth, onboarding, mobile, email, ai-chat, checkout, settings or other
audience
audience
text
yes
-
Who uses it and in which situation (device, time pressure, expertise, frequency)
job
audience
text
yes
-
The one job the page must get done, and how you will know it did
brand_assets
assets
choice
no
-
Existing brand assets: none, partial or full
design_system
assets
choice
no
none
Design system or component library in use (shadcn, radix, mantine, material, fluent, carbon, polaris, other)
aesthetic_family
direction
choice
no
none
Aesthetic family: minimalist, brutalist, soft-editorial, premium-dense or none
variance
direction
number 1-10
no
-
Layout variance, from symmetric and safe to asymmetric and bold
motion
direction
number 1-10
no
-
Motion, from static to choreographed
density
direction
number 1-10
no
-
Density, from gallery-sparse to cockpit-packed
stack
constraints
text
no
-
Stack that renders it; left open, Atelier reads it from the repository
accessibility_target
constraints
choice
no
AA
WCAG conformance level: AA or AAA
languages
constraints
text
no
one language, LTR
Languages to serve and whether a right-to-left script is among them
required_states
constraints
list
no
-
States to design beyond the happy path: empty, loading, error, no results, offline, partial permission
The three dials (variance, motion, density, each from 1 to 10) deliberately have no default. A dial you leave open is set by the design skill from the surface and the brief, and the brief says it was inferred. A must-have you cannot answer is recorded as UNKNOWN together with its risk, and that risk travels into the opening paragraph of whatever is built on it.
Every finding is labelled tool when a command ran in this session and the report names it and quotes its output, or inspection when Atelier read the files against the checklist. A number appears only under tool. A check the skill expects that could not run is listed under "not run", never estimated.
The design skill closes with a delivery checklist (the pre-flight, in its reference module references/80-preflight.md). Every deliverable ends with that checklist’s items and their state, and "ready" or "not ready" comes from it, not from how the screen looks.
Scope follows the request: a build touches the files you named or the brief implies, a review changes nothing, a redesign starts with its audit. Installing a package, opening a browser or running a scanner is proposed by name and waits for your yes.
Core is added automatically. The design-skill dependency arrives with the BMAD+ package; the installer copies its three skills and lists every file before writing.
In your project terminal
npx bmad-plus install --packs design
02
Check the install
The diagnostic verifies the pack files, including the three copied skills.
In your project terminal
npx bmad-plus doctor
03
Start with the design read
Atelier asks its questions first, a few at a time, then writes the brief.
In your project terminal
/design read
04
Build, review or redesign
Use the brief for a new surface, or point Atelier at what exists.
These transcripts were captured by running the 0.23.0 CLI in a throw-away project. The installer was run in French; the intake commands print English. Lines that do not matter here are left out.
Output captured from a real run. Source: bmad-plus 0.23.0, 2026-10-19
Validate the intake and see what is still open
$ npx bmad-plus intake check .agents/skills/pack-design/intake.yaml.agents/skills/pack-design/intake.yaml: valid intake design-read (design), 13 questions, 3 must-have.$ npx bmad-plus intake plan --intake .agents/skills/pack-design/intake.yaml --answers _bmad-output/design/intake.jsondesign-read (design): not ready — 0 answered, 0 defaulted, 0 unknown, 13 not asked yet.Must-haves still open: surface_kind, audience, jobAsk next (at most 6 per message): - surface_kind [choice] Which surface is this? A marketing landing page, a dashboard, a data table, a form, an auth or onboarding flow, a mobile screen, an email, a chat or AI surface, a checkout, a settings page, or something else? (must-have; choices: landing, dashboard, table, form, auth, onboarding, mobile, email, ai-chat, checkout, settings, other) - audience [text] Who uses it, and in what situation (device, time pressure, expertise, frequency)? (must-have) - job [text] What is the one job this page must get done, and how will you know it did? (must-have)# The plan exits with code 2 while a must-have is open. The list continues with brand_assets, design_system and aesthetic_family.
Output captured from a real run. Source: bmad-plus 0.23.0, 2026-10-19
Record the three must-haves, then render the brief
$ npx bmad-plus intake record --intake .agents/skills/pack-design/intake.yaml --answers _bmad-output/design/intake.json --set surface_kind=dashboard --set "audience=Comptables en cabinet, sur ordinateur, en fin de mois" --set "job=Repérer les factures en retard et relancer en un clic"Recorded surface_kind, audience, job in _bmad-output/design/intake.json.design-read (design): ready — 3 answered, 0 defaulted, 0 unknown, 10 not asked yet.$ npx bmad-plus intake render --intake .agents/skills/pack-design/intake.yaml --answers _bmad-output/design/intake.json --out _bmad-output/design/brief.mdBrief written to _bmad-output/design/brief.md (3022 bytes); the intake is ready.# The first line of the brief is "# Design read"; the second is a marker saying it is owned by bmad-plus intake and must not be edited by hand.
npx bmad-plus intake record --intake .agents/skills/pack-design/intake.yaml --answers _bmad-output/design/intake.json --set surface_kind=dashboard --set "audience=Comptables en cabinet, sur ordinateur, en fin de mois" --set "job=Repérer les factures en retard et relancer en un clic"
npx bmad-plus intake render --intake .agents/skills/pack-design/intake.yaml --answers _bmad-output/design/intake.json --out _bmad-output/design/brief.md
Output captured from a real run. Source: bmad-plus 0.23.0, 2026-10-19
The complete loop on one screen. Atelier asks first, so be ready to answer.
In your AI assistant
Atelier, run the design read for the invoice list of my app, build the screen, and end with the pre-flight verdict.
What you should get The design read is recorded (_bmad-output/design/intake.json and brief.md), the screen is built with the states the brief lists, and the answer ends with the delivery checklist, each item with its state, and the ready or not-ready verdict that follows from it.
Use it to settle the brief with a client or a team before anyone draws or codes.
In your AI assistant
Atelier, run the design read with me for the first-run onboarding of our scheduling tool. I have no view on density or motion yet, so leave those open and set them from the surface.
What you should get Atelier runs or resumes the intake with the bmad-plus-intake skill, at most six questions per message and must-haves first, records answers with bmad-plus intake record, stops when bmad-plus intake plan says ready, renders _bmad-output/design/brief.md, and prints one line (surface, audience, aesthetic family) with the three dials and whether each was set by you or inferred; the dials you left open come back marked inferred.
Run it once the brief exists. Surfaces include landing, dashboard, table, form, auth, onboarding, mobile, email, ai-chat, checkout and settings.
In your AI assistant
/design build dashboard
What you should get Atelier opens the design skill, follows its routing for a dashboard, and builds in the stack the brief records (read from the repository if you left it open). Open must-have questions travel with their risk into the opening paragraph of the result, and the delivery ends with the checklist verdict quoted.
Useful when colour values are typed straight into components, which also triggers the Builder role. If the intake is not ready yet, Atelier runs it first.
In your AI assistant
/design tokens
What you should get Atelier opens design and its token modules and produces the token sheet for the stack in the brief, so components take colours, type and spacing from tokens rather than raw values. The sheet goes under _bmad-output/design/.
A review changes nothing; it only writes the report. Point it at a folder, a file or a URL.
In your AI assistant
/design review src/pages/pricing
What you should get The design-review skill’s protocol runs and _bmad-output/design/review.md lists findings ordered by what blocks release, then what confuses, then what polishes. Each finding is labelled tool (a command ran and its output is quoted) or inspection (read against the checklist). Checks that could not run are listed under "not run".
Redesign a live site without losing its search traffic#
Words like refonte, redesign, refresh, modernize or rebrand switch Atelier to the Redesigner role.
In your AI assistant
/design redesign the marketing site at https://example.com. Keep the logo and these indexed URLs: /pricing, /features and /blog. Tell me which changes put search or accessibility at risk.
What you should get The redesign skill is followed end to end: an audit first, a preserve-or-overhaul decision with its reason, a migration plan that flags the search and accessibility risks for the URLs you named, the build through design, and a verification against the old version. Atelier cannot know from the prompt which URLs rank, which is why you name them. A browser, scanner or crawl step is proposed by name and runs only after your yes. The migration plan is handed to the SEO pack before any address, heading or structured-data change ships.
An unknown must-have is allowed. It is recorded with its risk instead of being invented.
In your AI assistant
Atelier, design a settings screen for our admin console. I do not know yet who the typical admin is; record that as unknown and carry the risk through.
What you should getaudience is recorded as UNKNOWN with the intake’s own risk text: "Density, tone and the size of touch targets are guessed instead of chosen; the page serves nobody in particular." The brief marks it open, and the delivered screen states in its opening paragraph that it rests on that unknown. Atelier still asks for the surface and the job before it builds: the intake is ready only once all three must-haves are answered or marked unknown.
After a build, the state matrix and the keyboard paths are what a tester needs.
In your AI assistant
Atelier, the invoice list is built. Prepare the handoff for Sentinel: the state matrix and the keyboard paths to test. Then Sentinel, write the acceptance recipe for it.
What you should get Atelier lists every designed state and every keyboard path as the handoff. Sentinel’s Recette role then turns them into steps of an acceptance recipe; while the Design pack is installed, Sentinel leaves visual design and accessibility judgement to Atelier.
The answers with their status: answered, defaulted, unknown
brief.md
bmad-plus intake render
The design read; line 2 carries an ownership marker, and the file is never edited by hand
review.md
/design review
Findings with tool or inspection labels
Token sheet
/design tokens
Tokens for the stack in the brief
Code itself is written into your project’s source where you asked for it. The renderer never overwrites a brief it did not write, and the intake refuses to write under .git/, _bmad/, .bmad-plus/ or node_modules/.
Node.js 20 only. The npm package design-skill, pinned at 0.2.1, is fetched by the normal install of BMAD+ (it is one of its seven runtime dependencies); the installer copies its skills from there.
The pack runs no script and starts no process of its own, and it sends nothing anywhere. A check that needs a browser or a scanner runs only through your project’s own tooling, proposed by name, on your say-so. The off-machine flows of the host tool apply as for any agent.
Atelier relies entirely on the three copied skills. Without them it stops rather than recalling rules from memory. After an interrupted install or a manual deletion, run bmad-plus doctor and reinstall.
Note· A number needs a tool
Contrast ratios, performance scores or audit counts appear only when a command ran in the session. Otherwise the finding is an inspection without a number, and the check is listed as not run. Do not read an inspection as a measurement.
Tip· Who owns the screen
Atelier overlaps with Sentinel’s UX review and with Rachel in Dev Studio. With the Design pack installed, its rules govern visual design and accessibility and the others hand those over. For a given screen, pick one owner and let the handoff say which.