Atelier
Atelier - a premium, anti-slop frontend design skill suite for Claude Code: 11 skills + a deepdive knowledge base.
npx -y skills add luminary19/atelier --skill atelierAssembled from the repository path, not quoted from the project. Check it against their README if it does not work.
2 things to look at
- no licenseNo license file was found in the repository. Code published without one is not open source by default, so using it at work is a question for whoever answers licensing questions where you are.
- 1 stars1 stars. Stars are a popularity signal and not a quality one, but at this level it is likely that nobody has read this closely except its author, and you would be relying on your own review.
What its author says it does
Copied from the file, not written here
Atelier suite — the entry point, router & orchestrator. START HERE when you're not sure which Atelier skill to reach for, want the suite to take a project from where it is to where it should be, or want to set up / read this project's design memory. With no argument it probes project state, decides which skills the situation needs, then RUNS them end-to-end by invoking each skill explicitly with the Skill tool (full `atelier-*` name) — pausing only for a skill's own creative input (tone, audience, the 8-direction pick), never for step-by-step permission. `/atelier <verb> [target]` dispatches to a specific atelier-* skill; `/atelier init` writes the project's ATELIER.md design memory; `/atelier help` shows the full stage-organized menu. Use when the user says "use Atelier", "set up Atelier", "what should I do next on this design", "build this for me", "which atelier skill do I use", or invokes /atelier directly. For a concrete single task the specific atelier-* skill still triggers on its own; this is the hub for when intent is broad, unknown, or "just make this good." Part of the Atelier suite.
SKILL.md
17.4 KB, as published. Nobody here has run it
Atelier — Entry Point, Router & Orchestrator
The front door to the Atelier suite. The suite is 15 focused skills (plus the atelier-data
reference library the others call); this hub keeps you from having to remember which one to invoke. It does four things: orchestrate — detect which skills the current repo/situation needs, then actually run them end-to-end by invoking each one with the Skill tool (full atelier-* name) — plus dispatch a verb to a specific skill, init the project's design memory (ATELIER.md), and show the menu.
Suite map (what this routes to). Planning:
atelier-direction(aesthetic) +atelier-ux(IA/flows). Foundation:atelier-foundations(OKLCH tokens) →atelier-typography+atelier-layout. Build:atelier-motion/atelier-scroll/atelier-webgl/atelier-dataviz/atelier-components, withatelier-copyfor UX writing. Ship:atelier-harden(resilience) →atelier-perf-a11ygate →atelier-review(adversarial). Existing sites:atelier-redesign(audit-first front door). Reference data:atelier-data(a lookup library siblings call; not user-facing). Full sequence:references/pipeline.md.Agent team (isolated-context orchestration). For a full, from-scratch end-to-end build, hand broad "build me a website" intent to the
atelier-directoragent (Agent(atelier-director)) — it runs this same pipeline acrossatelier-design-lead→atelier-build-engineer→atelier-ship-reviewerin its own context. When no direction is locked yet, route toSkill(atelier-direction)first (the 8-direction moodboard pick); it reconstructs the chosen pane into a reference image and hands off to the director itself. This skill keeps scoped / in-place orchestration, single-skill dispatch, andinit.Project memory: this skill owns
ATELIER.md— the per-project design memory every other skill reads at the start of its work. Template + schema:references/project-memory.md.
Setup — read project state first
Run the signal probe once (pure-Python stdlib, no network beyond localhost port checks):
python "$CLAUDE_CONFIG_DIR/skills/atelier/scripts/signals.py"
It reports: whether ATELIER.md exists, the detected stack, git-changed web files, and whether a dev
server is running. It recommends nothing — you reason over the facts. Add --json if you want to
parse it; pass --root <dir> to point at a specific project. If Python or git is unavailable, skip it
and reason from what you can see in the workspace; never block on the probe.
Routing rules
-
No argument (often with a build prompt) → the user wants the suite to move the project forward ("build this", "just make this good"). For a full, from-scratch end-to-end WEBSITE build, branch on whether
ATELIER.mdalready holds a locked Creative direction:- No locked direction yet → run
Skill(atelier-direction)first so the user picks from the 8-direction moodboard. On the pick,atelier-directionreconstructs the chosen pane into an image-faithful reference (chosen-reference.png) and hands off toAgent(atelier-director)itself. Safety-net: if it instead returns aDIRECTION LOCKED → launch atelier-directorhandoff (a skill context couldn't spawn the agent), you launchAgent(atelier-director)with that brief + the reference. If the director already ran, do not double-launch. - Direction already locked (a filled Creative direction in
ATELIER.md) → hand straight toAgent(atelier-director), passing the recordedchosen-reference.png+ tokens; it skips its own direction phase.
Either way the director owns the image-first design-then-code pipeline across the specialist team (design-lead → build-engineer → ship-reviewer) in an isolated context. Use THIS skill's inline orchestration for scoped / in-place work on an existing project: read the signals, decide the pipeline the situation needs (logic below), and run it via the orchestration loop by invoking each skill with the Skill tool — don't hand back a list, and don't just name skills in prose. For such a scoped run,
initinline, then the matching skills in order. Pause only for a skill's own creative questions — never for permission to advance a stage. Scale it: a one-surface fix is a single-skill run, not the whole pipeline. - No locked direction yet → run
-
First word is a verb in the dispatch table → invoke that skill via the Skill tool by its exact
atelier-*name (pass anything after the verb as its target), and let it run — don't just narrate it. -
First word is
init→ run the memory-setup flow below. -
First word is
help→ print the stage menu. -
Verb doesn't match but intent maps to one skill (e.g. "fix the spacing" → layout, "the copy is vague" → copy) → invoke that skill via the Skill tool by its exact name and let it run. If two fit, ask once which.
Dispatch table (verb → skill)
| Verb(s) | Routes to | For |
|---|---|---|
| full from-scratch website build (broad "build me a website") | Agent(atelier-director) (agent) | End-to-end image-first build via the specialist team |
direction, aesthetic, look, vibe | atelier-direction | Decide the look/world/concept (new work) |
ux, ia, flow, structure, sitemap | atelier-ux | Information architecture, flows, screen-states |
foundations, tokens, color, theme, dark | atelier-foundations | OKLCH token system, dark mode |
type, typography, fonts | atelier-typography | Font choice/pairing, scale, detailing |
layout, grid, spacing, whitespace | atelier-layout | Composition, grid, rhythm, responsive |
motion, animate, transition | atelier-motion | Micro-interactions, states, feel |
scroll, parallax, pin | atelier-scroll | Scroll choreography, page transitions |
webgl, 3d, shader | atelier-webgl | 3D / generative / shader work — for authored 3D geometry (models, look-dev, baked assets) it delegates to the forge suite |
forge, blender, model, mesh, geometry, glb, look-dev, hdri | forge (Forge suite) | Authored 3D production pipeline: mesh/parametric/procedural modeling, UV, PBR look-dev, rig/anim/sim, headless render, GLB/USD export → web handoff |
components, build, scaffold | atelier-components | Scaffold + build the component layer |
comp, mockup, image, render | codex-imagegen-taste (sibling) | Premium one-image-per-section website / hero / landing comps — calls /codex-imagegen; the moodboard stays bare |
dataviz, charts, graph | atelier-dataviz | Charts, dashboards data layer |
copy, clarify, microcopy, errors | atelier-copy | UX writing: labels, errors, empty-state copy |
harden, resilience, i18n, edge | atelier-harden | Production resilience: overflow/i18n/error/edge |
review, audit, red-team, ship-check | atelier-review | Adversarial pre-ship review |
perf, a11y, gate, lighthouse | atelier-perf-a11y | Perf + accessibility quality gate |
redesign, improve, modernize | atelier-redesign | Audit + upgrade an existing site/app |
bolder | atelier-redesign → references/tonal-dials.md (§Bolder) | Amplify a too-safe/bland design |
quieter | atelier-redesign → references/tonal-dials.md (§Quieter) | Calm a too-loud/busy design |
distill | atelier-redesign → references/tonal-dials.md (§Distill) | Strip to essence; remove what doesn't earn its place |
Orchestration logic — which skills the situation needs (reason over signals; there is no score)
memory.hasAtelierMdfalse and there's real code/intent →/atelier initfirst (capture register + policies so every other skill stays on-brief), or/atelier redesignif it's an existing site you're improving.memory.hasAtelierMdfalse and the user wants something brand-new →/atelier direction(+ux).git.changedWebFilescluster on one surface → scope/atelier review <those files>or the matching fix verb (spacing →layout, vague copy →copy, flat palette →foundations).devServer.runningtrue → live verification inatelier-reviewstep 4 is available; mention it.- Build looks finished (components exist, no obvious gaps) →
/atelier hardenthen theatelier-perf-a11ygate, and/atelier reviewfor substantial work. - Nothing built yet → the planning pair:
/atelier direction+/atelier ux. - User wants a premium image / mockup / hero / full landing comp (a design-reference image, not code) →
codex-imagegen-taste(calls/codex-imagegenunder the hood, one image per section). The quick 8-direction moodboard stays on bare/codex-imagegeninatelier-direction— never route it here.
These bullets compose the plan — the ordered set of skills you run, not a list handed back. Pick the
shortest pipeline that actually moves this project forward; finalize the build/ship half only once
direction has set the world + interactivity.
The orchestration loop (how it actually runs)
You have full tool access — including the Skill tool, which is the ONLY way you actually run a downstream skill.
Running a skill = calling the Skill tool with its exact name. Nothing else counts. Writing "next: direction" or "now apply foundations" in prose runs NOTHING — that narration is the exact bug this loop exists to kill. To run a stage you MUST call the Skill tool with the full skill name, e.g.
skill: "atelier-direction"(shorthand below:Skill(atelier-direction)), thenSkill(atelier-ux),Skill(atelier-foundations), and so on — always the fullatelier-*name, never a bare word.initis the one exception: it's a mode of THIS skill, so run its flow inline; there is noatelier-initskill.
Run the pipeline as one continuous flow:
- Invoke → carry forward. Run each stage by calling the Skill tool with its exact name; let it execute
its FULL flow — its own
AskUserQuestionrounds, its/codex-imagegenmoodboard, its build steps. Its output (ATELIER.md edits, Direction Doc, tokens, components…) feeds the next stage. Never paraphrase, summarize, or skip a skill's interactive steps in place of actually invoking it. ATELIER.mdis the shared, living brief.initwrites it;atelier-directionwrites its Creative direction section;atelier-foundationswrites Tokens. Each stage reads it first.- Let each skill ask its own questions — multiple rounds across stages are expected and fine.
atelier-direction's 8-direction offer + moodboard, a foundations either/or, and so on: surface every one in full; never collapse, batch away, or skip them. The only thing you never pause for is permission to advance a stage. - Direction sets the build list. After
Skill(atelier-direction), the world + interactivity it locked decide which build/ship skills are warranted (it names them in its hand-off). Invoke each of those next, by name, in order — no "proceed?" gate between stages. - Stop conditions. Stop when the pipeline is done, a skill hits a real blocker (missing dependency, failing build), or the user steers. Then report what ran and what's left.
Worked example — /atelier + "build an interactive creative site for an artist" in an empty repo:
signals show no ATELIER.md + new repo → run init inline (interview → writes ATELIER.md) →
Skill(atelier-direction) (Design Read → 8-direction list + /codex-imagegen moodboard → on the pick,
writes the Creative direction section into ATELIER.md) → Skill(atelier-ux) → then, per direction's
hand-off for an interactive award-grade site: Skill(atelier-foundations) → Skill(atelier-typography)
→ Skill(atelier-layout) → Skill(atelier-components) → Skill(atelier-motion) →
Skill(atelier-scroll) → (Skill(atelier-webgl) if a 3D moment was chosen) → Skill(atelier-copy)
→ Skill(atelier-harden) → Skill(atelier-perf-a11y) → Skill(atelier-review). Each runs
end-to-end; you only stop for a skill's own creative questions.
init — write the project's design memory
/atelier init creates ATELIER.md at the project root: the persistent brief every skill reads.
Full template, schema, and the universal-vs-taste split are in references/project-memory.md — load
it, then:
- Probe + read. Run
signals.py; ifATELIER.mdalready exists, read it and offer to update (don't silently overwrite). If code exists, skim one representative file (CSS/tokens/a component) so the doc reflects reality. - Interview (scaled to the project). Use
AskUserQuestionfor the load-bearing choices — register (brand vs product) first, then interactivity level, motion-library policy, and glassmorphism policy. Infer users/purpose/personality/anti-references from the brief and confirm; don't interrogate. - Write
ATELIER.mdfrom the template. Leave the Tokens section as a stub linked toatelier-foundations(it fills/links it once the token system exists). Echo anti-references into the Do/Don't block. - Continue, don't hand back — invoke the next skill, don't name it. When
initruns as part of an orchestration, flow straight on: after writingATELIER.md, immediately callSkill(atelier-direction)(thenSkill(atelier-ux)) and keep going down the pipeline. Actually call the Skill tool — saying "now direction" does nothing.ATELIER.mdis the brief each stage reads, sodirectionbuilds the aesthetic on top of the register/policies you just set (no need to re-ask those), runs its full 8-direction flow, then writes its decisions back into the file. (If the user invoked/atelier initon its own, just confirm the file and name the next step.)
init is the first move on any substantial project; everything downstream reads what it writes.
help — the stage menu
PLAN /atelier direction · /atelier ux
FOUND /atelier foundations · /atelier type · /atelier layout
BUILD /atelier motion · scroll · webgl · dataviz · components · copy
SHIP /atelier harden → /atelier perf (gate) → /atelier review (adversarial)
EXISTING /atelier redesign · tonal: /atelier bolder | quieter | distill
SET UP /atelier init (writes ATELIER.md — do this first)
Operating principles
- Decide and run — don't just recommend. Probe state, choose the skills the situation needs, then execute the pipeline end-to-end with full tool access. There is no "proceed?" gate between stages; the only pauses are for a skill's own creative questions.
- Run = call the Skill tool. Naming a skill in prose ("next: direction") runs nothing. Every stage is
an explicit
Skill(atelier-<name>)invocation by full name — zero ambiguity, no narration in its place. initfirst on substantial work. A persistedATELIER.mdis what keeps every later skill on-brief across sessions — it's the suite's memory;directionandfoundationswrite back into it as they go.- Dispatch, don't duplicate. This hub routes and runs; the real craft lives in the 15 focused skills. Don't re-explain a skill's method here — load it and follow it.
- Scale to the task. A one-line tweak is a single-skill run, not the whole pipeline — and doesn't need init. Match the pipeline length to what the project actually needs.