@ryuxdsgn/design-intelligence 2.6.2 → 2.6.4
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/cli/index.js +1 -0
- package/dist/intelligence/content.js +15 -13
- package/dist/intelligence/guides.js +38 -12
- package/dist/render.js +2 -1
- package/package.json +1 -1
package/dist/cli/index.js
CHANGED
|
@@ -358,6 +358,7 @@ const CONTEXT_FIELDS = [
|
|
|
358
358
|
] },
|
|
359
359
|
},
|
|
360
360
|
{ label: "Brand and design system", hint: "" },
|
|
361
|
+
{ label: "Product docs", hint: "paths RYUX reads for product facts, for example docs/prd.md:" },
|
|
361
362
|
{ label: "Evidence sources", hint: `RYUX MCP (hosted server not live yet; local: ${MCP_LOCAL_ADD_CMD}), Figma files, reference URLs:` },
|
|
362
363
|
{
|
|
363
364
|
label: "Constraints", hint: "platforms, accessibility target (for example WCAG 2.2 AA), what must not change:",
|
|
@@ -47,13 +47,14 @@ function skill(id, rules) {
|
|
|
47
47
|
const RUN = "ryux run 2026-10-02";
|
|
48
48
|
// Rules that cover a pattern another MIT ruleset also names; the text and numbering are RYUX's own.
|
|
49
49
|
const AS = "anti-slop (MIT)";
|
|
50
|
+
const EK = "emilkowalski/skills (MIT)";
|
|
50
51
|
export const RULES = [
|
|
51
52
|
...skill("product", [
|
|
52
53
|
{
|
|
53
54
|
num: 1,
|
|
54
55
|
title: "State the context first",
|
|
55
56
|
level: "required",
|
|
56
|
-
do: "Before designing, write down the user, their task, the business goal, the design intent (what the user must understand, feel, and do), the information that matters, the primary action, the constraints, and what success looks like. Take what the prompt and DESIGN.md already give; ask only when a missing answer
|
|
57
|
+
do: "Before designing, write down the user, their task, the business goal, the design intent (what the user must understand, feel, and do), the information that matters, the primary action, the constraints, and what success looks like. Take what the prompt and DESIGN.md already give; ask only when a missing answer materially affects the user flow, what the product can do, or whether the content is correct, or when neither the prompt nor DESIGN.md sets the UI or motion direction, at most three questions in one message, most consequential first (none when the context is complete). Otherwise make the smallest reasonable assumption, write it down, and continue.",
|
|
57
58
|
dont: "Start from a generic template with no stated user or task, or ask questions the prompt or DESIGN.md already answers.",
|
|
58
59
|
why: "Without a task, design and review drift into taste.",
|
|
59
60
|
basis: "ryux-critique playbook; NNGroup task-based evaluation",
|
|
@@ -64,10 +65,11 @@ export const RULES = [
|
|
|
64
65
|
title: "Unknowns stay assumptions",
|
|
65
66
|
level: "required",
|
|
66
67
|
gate: "hard",
|
|
67
|
-
do: "
|
|
68
|
-
dont: "Invent business rules, metrics, user data, permissions, pricing, requirements, or API behavior, or name a tool, command, integration, platform, or page the product does not have.",
|
|
69
|
-
|
|
70
|
-
|
|
68
|
+
do: "Sort what the brief does not say into three kinds. Design assumptions (low-risk visual or structural choices such as a merchant category icon or grouping by date): decide them from the context. Unconfirmed capabilities (an action or feature the category usually has, such as sharing a receipt): convention is not proof, so ask when it materially changes the flow or scope; otherwise you may propose it, listed as unconfirmed, never as a requirement. Facts, claims, and policies: take them only from the brief, the repo, or the product's own docs (feature and tool names, commands, integrations, platforms, pages, fees, timings, guarantees).",
|
|
69
|
+
dont: "Invent business rules, policies, guarantees, metrics, user data, permissions, pricing, requirements, or API behavior, or name a tool, command, integration, platform, or page the product does not have. Do not present an unconfirmed capability as a confirmed one.",
|
|
70
|
+
notWhen: "This rule is not a reason to drop content the brief implies or to leave a screen looking unfinished: sample content is RX-AS-03, design assumptions are yours to make.",
|
|
71
|
+
why: "Invented facts turn into promises and bugs that someone has to unwind; a screen trimmed to the brief's literal words reads unfinished and hides what still needs confirming.",
|
|
72
|
+
basis: `${RUN}: an unconstrained agent invented a 30-day trial and user counts; ryux visual benchmark 2.6 human rater, 2026-10-13: RYUX screens lost on a missing receipt action`,
|
|
71
73
|
check: "review",
|
|
72
74
|
},
|
|
73
75
|
{
|
|
@@ -644,10 +646,10 @@ export const RULES = [
|
|
|
644
646
|
title: "Motion earns its level",
|
|
645
647
|
level: "contextual",
|
|
646
648
|
when: "the design adds motion or transitions",
|
|
647
|
-
do: "Classify each motion: L1 state feedback, L2 component transition, L3 page transition, L4 storytelling, L5 decorative. The higher the level, the stronger the reason it needs. Take timing and easing from one motion personality, define them once as motion tokens, animate transform and opacity rather than layout properties, and honor reduced motion (RX-A11Y-08).",
|
|
648
|
-
dont: "Animate everything, use one generic duration and easing (transition: all 0.3s) everywhere, or let decorative motion delay content or input.",
|
|
649
|
+
do: "Classify each motion: L1 state feedback, L2 component transition, L3 page transition, L4 storytelling, L5 decorative. The higher the level, the stronger the reason it needs. Then weigh how often people see it: a surface opened many times a day (command palette, shortcut, core navigation, list selection) appears and closes without movement, at most a fade too short to notice; standard transitions belong to occasional surfaces (modal, drawer, toast), and expression to rare or first-time moments. Take timing and easing from one motion personality, define them once as motion tokens, animate transform and opacity rather than layout properties, and honor reduced motion (RX-A11Y-08).",
|
|
650
|
+
dont: "Animate everything, give a surface people open many times a day an entrance they must sit through, use one generic duration and easing (transition: all 0.3s) everywhere, or let decorative motion delay content or input.",
|
|
649
651
|
why: "Motion directs attention; unearned motion steals it from the task and can make some people unwell.",
|
|
650
|
-
basis:
|
|
652
|
+
basis: `NNGroup animation and usability guidance; WCAG 2.3.3 animation from interactions; frequency check: pattern also in ${EK} find-animation-opportunities, written for RYUX`,
|
|
651
653
|
notWhen: "L1 feedback on standard controls that follows the platform defaults",
|
|
652
654
|
tradeoff: "fewer flourishes on marketing pages",
|
|
653
655
|
check: "review; reduced-motion test",
|
|
@@ -1039,13 +1041,13 @@ export const RULES = [
|
|
|
1039
1041
|
},
|
|
1040
1042
|
{
|
|
1041
1043
|
num: 3,
|
|
1042
|
-
title: "
|
|
1044
|
+
title: "Sample data is realistic and labeled; placeholders only for what is missing",
|
|
1043
1045
|
level: "required",
|
|
1044
1046
|
gate: "hard",
|
|
1045
|
-
do: "
|
|
1046
|
-
dont: "
|
|
1047
|
-
why: "
|
|
1048
|
-
basis: "ryux anti-slop principle",
|
|
1047
|
+
do: "Fill mockups with realistic sample content consistent with the brief (names, merchants, amounts in the brief's currency, dates) and list it as sample data in the output. Keep a visible placeholder only for an asset that does not exist yet, such as [LOGO].",
|
|
1048
|
+
dont: "Put [REAL DATA], XXX, or lorem text on the canvas where sample data would do, or ship sample data or placeholder copy as final. A sample-data label does not turn a fee, policy, or claim into a fact (RX-PR-02).",
|
|
1049
|
+
why: "Bracketed values read as unfinished and hide the layout's real behavior; unlabeled sample data ships by accident.",
|
|
1050
|
+
basis: "ryux anti-slop principle; ryux visual benchmark 2.5, 2026-10-09: [Brand] and XXX read as unfinished",
|
|
1049
1051
|
check: "audit_copy C-01",
|
|
1050
1052
|
formerly: ["RX-C-05"],
|
|
1051
1053
|
},
|
|
@@ -40,9 +40,9 @@ accessibility, and intentional decisions. Understand the context before deciding
|
|
|
40
40
|
facts from assumptions; prefer evidence over aesthetic preference; do not invent requirements;
|
|
41
41
|
explain meaningful decisions with their trade-off; validate before claiming.`;
|
|
42
42
|
export const CORE_WORKFLOW = `1. **Understand the request**: who, what task, which product and market (RX-PR-01). Read the
|
|
43
|
-
RYUX project context in DESIGN.md
|
|
44
|
-
|
|
45
|
-
the rest visibly. DESIGN.md
|
|
43
|
+
RYUX project context in DESIGN.md, then the product docs (Product docs paths, else PRD.md,
|
|
44
|
+
docs/prd*, docs/product*, README), and name what you read. Ask and record direction as in
|
|
45
|
+
capabilities/design.md, step 1; assume the rest visibly. DESIGN.md is direction, not evidence.
|
|
46
46
|
2. **Pick the entry point** and read its file.
|
|
47
47
|
3. **Select knowledge**: read the modules the task table lists, and no others.
|
|
48
48
|
4. **Gather evidence**: reference screens through the ryux MCP when connected; otherwise say so.
|
|
@@ -61,9 +61,22 @@ export const DESIGN_BODY = `# RYUX Design
|
|
|
61
61
|
|
|
62
62
|
1. **Context.** Who, what task, which product and market, and the design intent
|
|
63
63
|
(knowledge/product.md). Take it from the prompt, then DESIGN.md, then knowledge and evidence.
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
64
|
+
Read the product docs first (the router, step 1). Ask only when a missing answer materially
|
|
65
|
+
affects the user flow, what the product can do, or whether the content is correct, those
|
|
66
|
+
questions alone, most consequential first, at most three, in one message, before designing.
|
|
67
|
+
**Direction is the user's call:** when neither the prompt nor DESIGN.md sets the UI direction
|
|
68
|
+
(character, or brand colour and type) or the motion direction, ask for it in that message (it
|
|
69
|
+
counts toward the three) instead of choosing it yourself. **No DESIGN.md and no product docs is the
|
|
70
|
+
case where these questions matter most, never a reason to skip them:** ask, then wait for the
|
|
71
|
+
answer before designing. Complete context means no questions. Never ask what the prompt, DESIGN.md, or the
|
|
72
|
+
product docs already answer. For the rest, make the smallest reasonable assumption, write it
|
|
73
|
+
down, and continue (RX-PR-01, RX-PR-02).
|
|
74
|
+
**Record direction answers.** When the user answers a UI or motion direction question, write the
|
|
75
|
+
answer into the UI direction or Motion direction field of the RYUX project context in DESIGN.md:
|
|
76
|
+
between \`<!-- ryux-context:start -->\` and \`<!-- ryux-context:end -->\`, one line per field
|
|
77
|
+
(\`- **UI direction**: Calm, trustworthy\`). If DESIGN.md or the block does not exist, create it
|
|
78
|
+
with those two fields. Change only those field lines; leave every other line as it is. Your own
|
|
79
|
+
assumptions do not go into DESIGN.md.
|
|
67
80
|
2. **Understand what exists.** When there is a screen, product, or design system already, read its
|
|
68
81
|
analysis or run Analyze first (capabilities/analyze.md). Understand before you design.
|
|
69
82
|
3. **Decide with evidence.** For consequential choices, compare two or three patterns, using
|
|
@@ -83,7 +96,8 @@ export const DESIGN_BODY = `# RYUX Design
|
|
|
83
96
|
gate. Never finish with an asset still pending.
|
|
84
97
|
8. **Fact check, then the gate.** Check every product fact on the canvas (tool and command names,
|
|
85
98
|
integrations, platforms, pages, numbers) against the brief or the repo (RX-PR-02), then close
|
|
86
|
-
with the Delivery Gate, saying what was not designed, such as other widths or states.
|
|
99
|
+
with the Delivery Gate, saying what was not designed, such as other widths or states. If you
|
|
100
|
+
wrote DESIGN.md, say so in the final message: which file and which fields.
|
|
87
101
|
|
|
88
102
|
Do not edit frames you were not asked to change. Do not hand off a design as "final" with
|
|
89
103
|
placeholder or invented content.
|
|
@@ -120,7 +134,11 @@ Asset direction per asset: purpose, source, style, composition, context, consist
|
|
|
120
134
|
avoid, provenance (observed, sourced, illustrative, generated, inferred)
|
|
121
135
|
Responsive what changes, stays, disappears, or stacks at each width
|
|
122
136
|
|
|
123
|
-
Assumptions
|
|
137
|
+
Assumptions kept apart, all visible:
|
|
138
|
+
design assumptions (low-risk choices made from context);
|
|
139
|
+
unconfirmed capabilities (actions or features on the canvas the brief did not
|
|
140
|
+
confirm; proposed, not requirements); sample data (realistic mockup content,
|
|
141
|
+
never a fact, RX-AS-03)
|
|
124
142
|
Decisions one Decision Receipt per major decision (below)
|
|
125
143
|
\`\`\`
|
|
126
144
|
|
|
@@ -161,7 +179,9 @@ export const BUILD_BODY = `# RYUX Build
|
|
|
161
179
|
approved mockup; it is the spec. If there is none, run Design first (capabilities/design.md)
|
|
162
180
|
instead of inventing one in code.
|
|
163
181
|
3. **Read the modules the task needs** from the task table: for example accessibility, responsive,
|
|
164
|
-
and edge-cases for any UI, and forms and content for a form.
|
|
182
|
+
and edge-cases for any UI, and forms and content for a form. When the build adds motion or
|
|
183
|
+
transitions, read knowledge/ui.md (RX-UI-11) before writing any: how often the surface is seen
|
|
184
|
+
decides how much it moves.
|
|
165
185
|
4. **Implement faithfully.** Use semantic elements, existing components, and real data paths.
|
|
166
186
|
Build must not invent business rules, prices, or limits; API behavior or response shapes; or
|
|
167
187
|
data presented as real (RX-FE-02, RX-PR-02). It must not silently change a design decision: a
|
|
@@ -223,10 +243,13 @@ export const GUIDES = {
|
|
|
223
243
|
5. **Primary action**: the one thing this screen exists for.
|
|
224
244
|
6. **Constraints**: platform, data that exists, technical or legal limits.
|
|
225
245
|
7. **Success**: how would you know the screen works?
|
|
226
|
-
8. **Assumptions**: everything you had to guess
|
|
246
|
+
8. **Assumptions**: everything you had to guess, kept visible and sorted into design assumptions,
|
|
247
|
+
unconfirmed capabilities, and sample data.
|
|
227
248
|
|
|
228
|
-
Unknown facts stay assumptions. Do not invent business rules, metrics, user data,
|
|
229
|
-
pricing, requirements, or API behavior;
|
|
249
|
+
Unknown facts stay assumptions. Do not invent business rules, policies, metrics, user data,
|
|
250
|
+
permissions, pricing, requirements, or API behavior; ask when one materially affects the flow or
|
|
251
|
+
correctness, otherwise leave it out. Mockup content is realistic sample data, labeled (RX-PR-02,
|
|
252
|
+
RX-AS-03).
|
|
230
253
|
|
|
231
254
|
Find evidence with the ryux MCP (\`search_screens\`, \`get_flow\`, \`get_local_pattern\`) and cite the
|
|
232
255
|
\`screen_id\`, or call the decision a judgment call.
|
|
@@ -403,6 +426,9 @@ If not, the surface has no point of view yet. Stay honest while being bold: a st
|
|
|
403
426
|
needs invented numbers, people, or logos.
|
|
404
427
|
|
|
405
428
|
**3. Motion.** Start from purpose: what the motion communicates; with no purpose, no motion.
|
|
429
|
+
Then ask how often someone will see it. The more often, the less of it they should notice: what
|
|
430
|
+
people open many times a day (a command palette, a shortcut, core navigation) appears at once, and
|
|
431
|
+
expression is kept for occasional or first-time moments. A purpose does not outweigh frequency.
|
|
406
432
|
Every motion follows one lifecycle: before, trigger, transition, new state, feedback.
|
|
407
433
|
The states themselves (waiting, result, recovery) are defined in ryux-interaction (RX-IX-01,
|
|
408
434
|
RX-IX-02); motion only makes them visible, and it never compensates for weak UX. Decide the trigger,
|
package/dist/render.js
CHANGED
|
@@ -134,7 +134,8 @@ ${GUIDES[s.id]}${extra}
|
|
|
134
134
|
${s.evidence} Without the ryux MCP, say the evidence comes from the design and standards alone.
|
|
135
135
|
|
|
136
136
|
> Hard Gates always apply, whichever skills are loaded: no invented numbers, people, urgency, business
|
|
137
|
-
> rules, or terms; no placeholder shipped as final; no missing critical states.
|
|
137
|
+
> rules, or terms; no placeholder shipped as final; no missing critical states. Labeled sample data is
|
|
138
|
+
> not an invented number; an unconfirmed capability is never presented as confirmed. See \`ryux-core\`.
|
|
138
139
|
|
|
139
140
|
## Rules
|
|
140
141
|
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@ryuxdsgn/design-intelligence",
|
|
3
|
-
"version": "2.6.
|
|
3
|
+
"version": "2.6.4",
|
|
4
4
|
"description": "RYUX: design intelligence for AI agents and designers. One skill, five entry points: Analyze, Design, Build, Critique, and QA, for Claude Code, Codex, Cursor, Gemini CLI, OpenCode, Cline, Copilot, and more.",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"bin": {
|