Direction before execution
A direction brief — visual direction, three defining words, constraints, references — is explicitly approved before the scope is frozen and before anything is generated.
The design stack for product designers / v4.3.0 / MIT
Everything about the workflow, the agents and the constraints lives in the documentation — with a five-minute Get Started that takes you from install to your first shipped feature.
Install and ship your first feature end-to-end in about five minutes.
Open → 02The inversion — why the designer's taste becomes the system's gate.
Open → 03RAY, BOB, ANALYZER, EVE, SHIP — one page each, inputs and outputs.
Open → 04Watch one cycle run — a spec, a reject at 11/20, a fix, a ship at 19/20.
Open → 05The stack run on itself — six runs, the scores, the token bill, and the runs where it failed.
Open → ✦Concepts, reference, search — the complete PDS Stack handbook.
Browse the docs →Taste arrives last. Rework is the norm.
Taste leads. Code is the execution.
A direction brief — visual direction, three defining words, constraints, references — is explicitly approved before the scope is frozen and before anything is generated.
Scope freezes the moment a spec hits VALIDATED. Additions require a fresh RAY cycle. No silent creep, no moving targets.
ANALYZER writes a learning after every verdict. RAY reads the three most recent before the next spec — improvements compound.
One command that runs the whole cycle and adapts to your level — guided and pedagogical for newcomers, terse for experts. Junior or expert, same stack.
/pdsPreps interviews, synthesizes research, restitutes findings. Kills bad ideas cheaply.
/eveTwo isolated halves, one gate apart: the brief sets the direction from memory, the build implements it. Nothing produced before the brief is approved.
/bobFrames the scope after the direction, against it — never before. Tiers every spec T1 / T2 / T3, locks it, and reads the latest learnings first.
/rayTwo verdicts, never averaged: a /20 conformance score it computes, and a binary direction call only the designer renders.
/analyzerRuns the deployment checklist and coordinates the hand-off so nothing slips between done and live.
/ship/pds asks the lane first — Sketch by default — then drives the cycle and stops at every gate for your decision. It never crosses one for you.
/bob --brief
Read the memory first — a direction already refused is not reproposed. Five dimensions, approved as text, before anything is made.
→ direction brief/ray
Written after the direction and against it, cut into lots of about 50 turns. Frozen at VALIDATED. Skipped in Sketch.
/bob --proto
A clickable HTML prototype first, in every lane. Then Figma, then code if the module is on — a fresh bob-build per lot.
/analyzer
Conformance is a /20 the system computes. Direction is yours, binary. Never averaged — then the verdict is written to memory/.
project_<name>.mdstate_<feature>.md/pds reprendre/pds reprendreSession 0 gathers the project once and hands you a dispatch plan — one session per agent, a prompt to paste for each. Every gate then writes the state to a file and the conversation ends. Too long? Relay, don't fork: a fork carries the whole history.
↻ every judgment writes to the memory the next direction reads · EVE (research) and handoff are optional and never gate
Before BOB writes anything, the direction is set in writing — and approved. It's the difference between hoping the output has taste and guaranteeing it.
Read the spec on GitHub →A commit touching product code needs a Ref to a spec, and that spec has to be VALIDATED. Code without a frozen scope doesn't reach the branch — it goes back to RAY.
No any, no @ts-ignore, components under the line cap, a clean compile. Thresholds come from your own STACK.md, and the checks judge only the files you're committing.
Every acceptance criterion a machine can decide carries one assertion that BOB runs. Proven, unproven, or failed — "believed OK" is how defects slip through, so it isn't an option.
These are checked by running the stack on itself, and the failures are published alongside the passes — run 6 scored ~87/100 and found eight problems. 4.1 fixed the blocker and the three majors, each with its own targeted test. Read the self-test →
Rework isn't just wasted hours — it's wasted processing time and burned tokens. Every gate below exists to catch the wrong direction in text, before it becomes a generation you have to throw away. Before anything is built, RAY sizes the request into one of three tiers — so the numbers below are what shipping actually takes, start to finish, not a guess.
Time to ship, by tier
Two verdicts gate the commit, never averaged. The score above is mechanical. The direction verdict is binary — retenue / refusée — and only the designer renders it. A delivery can score 20/20 and still be refused, as P-001 cycle 1 was. Only conformance ≥ 18 and direction retenue commits.
The model isn't the bill — time is. Everything that enters a conversation is paid again on every turn after it. So the stack keeps every conversation short: one phase, one session, and the state lives in a file.
Not the exact same work: the chat built the tool, the stack reworked it. API list price, September 2026 — on a subscription, read it as usage allowance. The full cost breakdown →
Five minutes. Nine questions.
Generates STACK.md · CLAUDE.md · agent-system/ · the ANALYZER scoring framework · /pds and the agent commands for the tools you pick — Claude Code, Cursor, Gemini CLI, Copilot, Codex — and the git guardrails