@ryuxdsgn/design-intelligence 0.0.0-stage → 2.6.1
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/LICENSE +21 -0
- package/README.md +107 -2
- package/dist/adapters.js +29 -0
- package/dist/cli/fsutil.js +61 -0
- package/dist/cli/index.js +701 -0
- package/dist/intelligence/analyze.js +140 -0
- package/dist/intelligence/capture.js +12 -0
- package/dist/intelligence/content.js +1244 -0
- package/dist/intelligence/critique.js +171 -0
- package/dist/intelligence/guides.js +601 -0
- package/dist/product.js +18 -0
- package/dist/render.js +276 -0
- package/dist/validate.js +68 -0
- package/package.json +58 -4
|
@@ -0,0 +1,601 @@
|
|
|
1
|
+
// Hand-written framework text for each RYUX skill: the questions, decision trees, and templates an
|
|
2
|
+
// agent reasons with. Rules (Do / Do not / Why) are generated from content.ts and appended below
|
|
3
|
+
// each guide by render.ts. Keep each guide short; the core is loaded on every task.
|
|
4
|
+
export const CORE_POSITIONING = `RYUX is a design intelligence layer for AI and designers. It helps understand, reason, design,
|
|
5
|
+
build, critique, and verify interfaces using design knowledge and evidence. It is not a UI
|
|
6
|
+
generator, an anti-slop framework, a design system, or a prompt library.
|
|
7
|
+
|
|
8
|
+
**Understand before you design. Don't design from imagination when evidence is available.**
|
|
9
|
+
|
|
10
|
+
\`\`\`
|
|
11
|
+
Analyze → Design → Build → Critique → QA → Anti-Slop (final gate) → done
|
|
12
|
+
\`\`\``;
|
|
13
|
+
export const CORE_CAPABILITIES = `Tell RYUX what you are doing; RYUX decides what it needs to know. Pick the entry point, read its
|
|
14
|
+
file, then read only the knowledge modules the task needs (task table below). Paths are relative
|
|
15
|
+
to this skill's folder.
|
|
16
|
+
|
|
17
|
+
| Entry point | When | Read |
|
|
18
|
+
| --- | --- | --- |
|
|
19
|
+
| **Analyze** | understand a screen, product, or flow that exists | \`capabilities/analyze.md\` |
|
|
20
|
+
| **Design** | create or improve UI and UX without code: Figma, pen.dev, mockups, copy | \`capabilities/design.md\` |
|
|
21
|
+
| **Build** | implement or change the interface in code | \`capabilities/build.md\` |
|
|
22
|
+
| **Critique** | find what should change first, and why | \`capabilities/critique.md\` |
|
|
23
|
+
| **QA** | verify a build against the intended design | \`capabilities/qa.md\` |
|
|
24
|
+
|
|
25
|
+
Knowledge modules (\`knowledge/\`): product, ux, interaction, forms, edge-cases, content, ui,
|
|
26
|
+
design-system, accessibility, responsive, frontend, and anti-slop. Evidence comes from the brief, the
|
|
27
|
+
project, product data, standards, and the ryux MCP when connected; none is required. Every entry point ends at the quality gates: the Hard
|
|
28
|
+
Gates below and the Delivery Gate, with anti-slop as the last check, never the starting point.
|
|
29
|
+
|
|
30
|
+
Keep the capabilities apart; do not collapse them into one generic "design" answer:
|
|
31
|
+
|
|
32
|
+
| Capability | Answers | Example |
|
|
33
|
+
| --- | --- | --- |
|
|
34
|
+
| Analyze | What exists? | "The screen uses a 24px horizontal container." (observed) |
|
|
35
|
+
| Design | What should we do, and why? | "Keep 24px: it matches the existing layout system." |
|
|
36
|
+
| Critique | Is this decision right? | "24px leaves the table too sparse at 1440 for daily use." |
|
|
37
|
+
| QA | Does the build match the intent? | "The build uses 16px where the design says 24px." |`;
|
|
38
|
+
export const CORE_PRINCIPLE = `Do not optimize for visual novelty. Optimize for clarity, usability, consistency, product fit,
|
|
39
|
+
accessibility, and intentional decisions. Understand the context before deciding; separate observed
|
|
40
|
+
facts from assumptions; prefer evidence over aesthetic preference; do not invent requirements;
|
|
41
|
+
explain meaningful decisions with their trade-off; validate before claiming.`;
|
|
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 first when it exists; do not guess what it leaves blank. Ask
|
|
44
|
+
only when the answer would change a major decision (at most three, usually none), and assume
|
|
45
|
+
the rest visibly. DESIGN.md answers are direction, not evidence of what users need.
|
|
46
|
+
2. **Pick the entry point** and read its file.
|
|
47
|
+
3. **Select knowledge**: read the modules the task table lists, and no others.
|
|
48
|
+
4. **Gather evidence**: reference screens through the ryux MCP when connected; otherwise say so.
|
|
49
|
+
5. **Reason**: decide with evidence (RX-PR-09, RX-PR-10); on expressive surfaces, set a point of
|
|
50
|
+
view first (RX-UI-12).
|
|
51
|
+
6. **Produce**, then render and inspect what you made.
|
|
52
|
+
7. **Run the gates**: Hard Gates and the Delivery Gate, with honest claims.
|
|
53
|
+
|
|
54
|
+
Skip steps that do not apply, but never go from "generate" straight to "done".`;
|
|
55
|
+
export const DESIGN_BODY = `# RYUX Design
|
|
56
|
+
|
|
57
|
+
> What should we design, and why? Design is the bridge between Analyze and Build. It works without
|
|
58
|
+
> code (Figma, pen.dev, a mockup, the copy) and ends in a Design Direction that Build follows.
|
|
59
|
+
|
|
60
|
+
## Workflow
|
|
61
|
+
|
|
62
|
+
1. **Context.** Who, what task, which product and market, and the design intent
|
|
63
|
+
(knowledge/product.md). Take it from the prompt, then DESIGN.md, then knowledge and evidence.
|
|
64
|
+
Ask only when a missing answer would change a major decision: those questions alone, at most
|
|
65
|
+
three, in one message, before designing. Complete context means no questions. Never ask what
|
|
66
|
+
the prompt or DESIGN.md already answers; write the rest down as assumptions (RX-PR-01).
|
|
67
|
+
2. **Understand what exists.** When there is a screen, product, or design system already, read its
|
|
68
|
+
analysis or run Analyze first (capabilities/analyze.md). Understand before you design.
|
|
69
|
+
3. **Decide with evidence.** For consequential choices, compare two or three patterns, using
|
|
70
|
+
reference screens when the ryux MCP is connected (RX-PR-09), and rate the evidence (RX-PR-10).
|
|
71
|
+
4. **Direction.** Write the Design Direction below. On an expressive surface (hero, landing,
|
|
72
|
+
onboarding, empty state, brand moment), write three directions, choose one, and fill the Visual
|
|
73
|
+
Direction (RX-UI-12, RX-UI-10). On task UI, follow conventions and the design system.
|
|
74
|
+
5. **Read the modules the task needs** from the task table, for example ux, interaction, forms, and
|
|
75
|
+
content for a form, or ui and responsive for a layout.
|
|
76
|
+
6. **Design in the tool.** Use the Figma MCP or the pen.dev MCP. Design every state that matters
|
|
77
|
+
(empty, loading, error) and every width you claim, and source assets on purpose (RX-UI-13).
|
|
78
|
+
7. **Render and inspect.** Screenshot what you made, check it against the direction and the rules,
|
|
79
|
+
fix, and render again (capabilities/qa.md). Check the result against the Liveliness you set, and
|
|
80
|
+
put each prominent or decorative element through the purpose gate (RX-AS-05: purpose,
|
|
81
|
+
contribution, necessity); on calm task UI, deliberate restraint is a valid answer. Generated images and illustrations arrive
|
|
82
|
+
asynchronously: wait until each one has landed and render again before exporting or closing the
|
|
83
|
+
gate. Never finish with an asset still pending.
|
|
84
|
+
8. **Fact check, then the gate.** Check every product fact on the canvas (tool and command names,
|
|
85
|
+
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.
|
|
87
|
+
|
|
88
|
+
Do not edit frames you were not asked to change. Do not hand off a design as "final" with
|
|
89
|
+
placeholder or invented content.
|
|
90
|
+
|
|
91
|
+
## Design Direction (the output)
|
|
92
|
+
|
|
93
|
+
Write only the sections the task needs: a button fix needs three lines, a new flow needs most of
|
|
94
|
+
them. Every significant decision carries a one-line reason; a visual choice without a reason is not
|
|
95
|
+
a decision yet.
|
|
96
|
+
|
|
97
|
+
\`\`\`
|
|
98
|
+
# Design Direction: <surface>
|
|
99
|
+
|
|
100
|
+
Context who, which task, where in the product; what exists (from Analyze)
|
|
101
|
+
Design intent what the user must understand, feel, and do here, and how we know it worked
|
|
102
|
+
|
|
103
|
+
UX direction flow and steps; information hierarchy (first, second, third); interaction model;
|
|
104
|
+
states (empty, loading, error, success, permission); edge cases; constraints and
|
|
105
|
+
business rules given (never invented)
|
|
106
|
+
UI direction layout and grid; type scale; spacing and density; color roles; containers;
|
|
107
|
+
components reused or added; the focal point
|
|
108
|
+
Design language personality, tone, interaction personality, density, formality; each with its
|
|
109
|
+
reason from the product, the audience, or the existing system
|
|
110
|
+
Visual direction for expressive surfaces: the Visual Brief (knowledge/ui.md, Visual production)
|
|
111
|
+
Motion direction each motion: purpose (what it communicates: state change, feedback, spatial
|
|
112
|
+
relationship, progress, hierarchy), lifecycle (before, trigger, transition, new
|
|
113
|
+
state, feedback), level L1 to L5, timing and easing from one personality,
|
|
114
|
+
reduced-motion behavior
|
|
115
|
+
Liveliness energy 1-3 (calm, balanced, expressive), rhythm 1-3 (even, steady with variation,
|
|
116
|
+
varied), motion as its RX-UI-11 level; each with its reason from the product and
|
|
117
|
+
the task. A decision, not a setup question: an operations dashboard can be energy
|
|
118
|
+
1 and rhythm 2 on purpose; calm is a valid choice when it is chosen
|
|
119
|
+
Asset direction per asset: purpose, source, style, composition, context, consistency, usage,
|
|
120
|
+
avoid, provenance (observed, sourced, illustrative, generated, inferred)
|
|
121
|
+
Responsive what changes, stays, disappears, or stacks at each width
|
|
122
|
+
|
|
123
|
+
Assumptions everything guessed, visible
|
|
124
|
+
Decisions one Decision Receipt per major decision (below)
|
|
125
|
+
\`\`\`
|
|
126
|
+
|
|
127
|
+
A direction the user gives, in the prompt or DESIGN.md, is input, not a suggestion: follow it, and
|
|
128
|
+
any deviation needs a Decision Receipt. A UI direction is a character ("calm, trustworthy,
|
|
129
|
+
minimal"), not a specification; translate it into concrete decisions (restrained color, strong
|
|
130
|
+
hierarchy, little decoration, clear status) instead of swapping in a style you prefer. Character
|
|
131
|
+
words are not a recipe: "trustworthy" does not mean blue and "premium" does not mean serif. Choose
|
|
132
|
+
color, type, spacing, and components from the brand, the design system, and evidence, and say which.
|
|
133
|
+
|
|
134
|
+
**Decision Receipt.** Write one for each major decision: the navigation model, payment method
|
|
135
|
+
priority, information hierarchy, checkout structure, interaction model, or responsive strategy.
|
|
136
|
+
Small choices ("8px between icon and label") need none; keep receipts few and short.
|
|
137
|
+
|
|
138
|
+
\`\`\`
|
|
139
|
+
Decision what was chosen
|
|
140
|
+
Options A / B / C compared
|
|
141
|
+
Evidence count, type, and ids: "3 observed checkout flows (scr_...) + RX-IX-05" | None
|
|
142
|
+
Confidence High | Medium | Low
|
|
143
|
+
Why one line, from the evidence or the stated goal
|
|
144
|
+
Trade-off what it costs
|
|
145
|
+
Assumption what must be true for it to hold
|
|
146
|
+
\`\`\`
|
|
147
|
+
|
|
148
|
+
Evidence names its count and never generalizes past it. "Evidence None, Confidence Low, Why:
|
|
149
|
+
business priority was not provided" is a valid receipt; keep it visible instead of upgrading it.
|
|
150
|
+
|
|
151
|
+
Visual, motion, and asset rules and tables live in knowledge/ui.md (RX-UI-07 to RX-UI-13); this
|
|
152
|
+
direction only records the choices made with them.`;
|
|
153
|
+
export const BUILD_BODY = `# RYUX Build
|
|
154
|
+
|
|
155
|
+
> Implement or change the interface in code, faithfully and in the repo's own stack.
|
|
156
|
+
|
|
157
|
+
1. **Read the repo first**: the stack, components, tokens, conventions, the architecture already
|
|
158
|
+
used (where components, state, pure logic, and data access live), and the test runner
|
|
159
|
+
(knowledge/frontend.md, knowledge/design-system.md). Reuse before creating.
|
|
160
|
+
2. **Find the design source**: the Design Direction, a Figma or pen.dev design, a DESIGN.md, or an
|
|
161
|
+
approved mockup; it is the spec. If there is none, run Design first (capabilities/design.md)
|
|
162
|
+
instead of inventing one in code.
|
|
163
|
+
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.
|
|
165
|
+
4. **Implement faithfully.** Use semantic elements, existing components, and real data paths.
|
|
166
|
+
Build must not invent business rules, prices, or limits; API behavior or response shapes; or
|
|
167
|
+
data presented as real (RX-FE-02, RX-PR-02). It must not silently change a design decision: a
|
|
168
|
+
change goes back to Design as a new Decision Receipt. Mark every assumption in the code. Give
|
|
169
|
+
each piece of logic one home in the repo's existing layers, never a copy (RX-FE-13).
|
|
170
|
+
5. **Test what can break.** Unit tests for new or changed pure logic, edge cases included;
|
|
171
|
+
integration tests for critical flows such as checkout, payment, and form submit. Use the
|
|
172
|
+
repo's runner; with none, propose one and ask before adding it (RX-FE-14).
|
|
173
|
+
6. **Render and verify.** Run it and the tests, check every width and state, and fix deviations
|
|
174
|
+
from the design (capabilities/qa.md).
|
|
175
|
+
7. **Close with the Delivery Gate.** CODE QUALITY and VISUAL QA need real checks (typecheck,
|
|
176
|
+
tests, render), or say what was not run.`;
|
|
177
|
+
export const CORE_EVIDENCE = `Say where every claim comes from:
|
|
178
|
+
|
|
179
|
+
| Source | Meaning | Example |
|
|
180
|
+
| --- | --- | --- |
|
|
181
|
+
| **Observed** (or Measured) | seen in the design, a capture, or read from its values | "body text is 16/24, from the CSS" |
|
|
182
|
+
| **Inferred** | a reasonable guess; say it is one | "probably an 8px scale" |
|
|
183
|
+
| **Knowledge** | a known pattern or standard, cited | "WCAG 1.4.3", "observed in 4 screens, scr_..." |
|
|
184
|
+
|
|
185
|
+
Product evidence (brief, requirements, analytics, research, support data) is Observed when sourced;
|
|
186
|
+
reference screens show what products do, not what this product's users need. Four questions, not four
|
|
187
|
+
output fields: where it came from (source, above), is it known (known, inferred, or **unknown**, kept
|
|
188
|
+
visible), how strong is the basis (Strong, Thin, None), how sure is the choice (High, Medium, Low).
|
|
189
|
+
Knowledge is what is generally known, evidence is what this context shows, judgment chooses from both.
|
|
190
|
+
|
|
191
|
+
Rate the evidence for a decision **Strong** (2+ comparable screens), **Thin** (one, or another
|
|
192
|
+
context), or **None** (a judgment call; say so, RX-PR-10). Scope each claim to its evidence: one
|
|
193
|
+
screen supports "observed in scr_x", not "apps do X"; name the count ("in 4 observed screens"), and
|
|
194
|
+
never generalize to a market or category from Thin evidence (RX-PR-02). Label every visual asset's provenance:
|
|
195
|
+
**observed** (from the real product), **sourced** (licensed, with its source), **illustrative**
|
|
196
|
+
(made to explain, labeled), **generated** (from a Visual Brief, labeled), or **inferred** (a
|
|
197
|
+
stand-in until the real one exists). Never invent numbers, user behavior, business rules, research,
|
|
198
|
+
compliance, product or competitor facts, screenshots, or references (RX-PR-02, RX-AS-01).
|
|
199
|
+
|
|
200
|
+
Record a source as \`{ type: observed | inferred | knowledge, origin, reference }\`, for example
|
|
201
|
+
\`{ knowledge, ryux-knowledge, scr_123 }\` from the ryux MCP, or \`{ observed, screenshot, hero.png }\`.
|
|
202
|
+
Optional sources (the ryux MCP, Figma, a browser, screenshots, other reference libraries) add
|
|
203
|
+
evidence when connected; none is required.`;
|
|
204
|
+
export const CORE_HONESTY = `Report what was checked, how, and what was not available. Do not claim "pixel perfect",
|
|
205
|
+
"fully accessible", "production ready", "senior-level", or "UX optimized" without evidence. Say
|
|
206
|
+
"Keyboard and focus checked by hand; no automated accessibility test was available" instead.`;
|
|
207
|
+
export const CORE_DECISION_RECORD = `For consequential choices (RX-PR-09) and deviations, write **Decision**, **Options** compared, **Evidence**,
|
|
208
|
+
**Trade-off**, and **Choice**. Evidence is Strong (2+ comparable screen_ids), Thin (one, or another context),
|
|
209
|
+
or None (no screen_id: a judgment call). With None on a consequential choice, show options or ask (RX-PR-10).`;
|
|
210
|
+
export const GATE_RULES = `- Each area is PASS, FAIL, NOT VERIFIED (it applies, but the evidence was not available: name what is missing), or N/A (it does not apply: say why).
|
|
211
|
+
- An area FAILS when a [Required] rule in its skills fails without a written exception.
|
|
212
|
+
- A Hard Gate failure cannot be excepted: fix it before declaring the work complete.
|
|
213
|
+
- VISUAL QA without a render is NOT VERIFIED; say which render tool was used.
|
|
214
|
+
- CODE QUALITY is NOT VERIFIED while changed logic has no test run; say which checks ran (typecheck, tests).
|
|
215
|
+
- FINAL is FAIL if any area fails, NOT VERIFIED if none fails but one is not verified, else PASS. PASS means the checked criteria were met, not that the design is good.`;
|
|
216
|
+
export const GUIDES = {
|
|
217
|
+
product: `Answer these before any layout exists. Write the answers down; they are the brief.
|
|
218
|
+
|
|
219
|
+
1. **Who** is the user, and in what situation (device, place, time pressure)?
|
|
220
|
+
2. **What** are they trying to finish on this screen?
|
|
221
|
+
3. **Business goal**: what does the product need from this screen?
|
|
222
|
+
4. **Information that matters**: what must they see to decide or act?
|
|
223
|
+
5. **Primary action**: the one thing this screen exists for.
|
|
224
|
+
6. **Constraints**: platform, data that exists, technical or legal limits.
|
|
225
|
+
7. **Success**: how would you know the screen works?
|
|
226
|
+
8. **Assumptions**: everything you had to guess. Keep them visible.
|
|
227
|
+
|
|
228
|
+
Unknown facts stay assumptions. Do not invent business rules, metrics, user data, permissions,
|
|
229
|
+
pricing, requirements, or API behavior; mark them [REAL DATA] or ask.
|
|
230
|
+
|
|
231
|
+
Find evidence with the ryux MCP (\`search_screens\`, \`get_flow\`, \`get_local_pattern\`) and cite the
|
|
232
|
+
\`screen_id\`, or call the decision a judgment call.
|
|
233
|
+
|
|
234
|
+
Lead with the user's outcome, keep only what serves the task, and follow the project's DESIGN.md
|
|
235
|
+
or brand when it exists (write down any deliberate departure).
|
|
236
|
+
|
|
237
|
+
**Decide with evidence.** For a consequential decision, compare patterns, then choose by context:
|
|
238
|
+
|
|
239
|
+
\`\`\`
|
|
240
|
+
Decision: payment confirmation layout
|
|
241
|
+
Context: standalone bank transfer, first-time users
|
|
242
|
+
Options:
|
|
243
|
+
A QR success screen scr_... strength: instant weakness: little detail
|
|
244
|
+
B bank-transfer receipt scr_... strength: verifiable weakness: dense
|
|
245
|
+
C marketplace order status scr_... strength: order link weakness: not standalone
|
|
246
|
+
Choice: B, because the context is a standalone transfer
|
|
247
|
+
Evidence: Strong (2+ comparable screens, same context) | Thin (1, or other context) | None
|
|
248
|
+
Trade-off: higher density
|
|
249
|
+
\`\`\`
|
|
250
|
+
|
|
251
|
+
With **None**, say so: present the options and their trade-offs, or ask. Never invent a reference.
|
|
252
|
+
|
|
253
|
+
Does not cover: layout or visual decisions (see ryux-ux and ryux-ui).`,
|
|
254
|
+
ux: `Choose structure from the user's goal, not from a template.
|
|
255
|
+
|
|
256
|
+
- **Information architecture**: what objects and tasks exist, how users name them, and how they
|
|
257
|
+
look for them (browse, search, or follow a notification).
|
|
258
|
+
- **Navigation**: the minimum set of destinations, named in the user's words. Where am I, and how
|
|
259
|
+
do I get back?
|
|
260
|
+
- **Flows**: list the steps; remove steps that only serve the system. Multi-step flows show
|
|
261
|
+
progress and a reviewable summary.
|
|
262
|
+
- **Grouping**: by meaning (task, time, status), with labels.
|
|
263
|
+
- **Progressive disclosure**: what the current decision needs first; rare options behind a
|
|
264
|
+
clearly labeled control.
|
|
265
|
+
- **Search, filter, sort**: only when the content is long enough to need them, matching how
|
|
266
|
+
users hunt.
|
|
267
|
+
- **Recovery paths**: every flow has a way back and a way out.
|
|
268
|
+
|
|
269
|
+
Reason like a senior designer: a principle, where it applies, where it does not, and what it costs.
|
|
270
|
+
|
|
271
|
+
\`\`\`
|
|
272
|
+
Rule: Recognition over recall (RX-UX-08)
|
|
273
|
+
Context: a complex enterprise form filled many times a day
|
|
274
|
+
Decision: show previously selected values and recent entries
|
|
275
|
+
Trade-off: higher visual density
|
|
276
|
+
Reason: less memory burden in a repeated workflow
|
|
277
|
+
\`\`\`
|
|
278
|
+
|
|
279
|
+
Does not cover: per-action behavior (see ryux-interaction), forms (see ryux-forms), or states
|
|
280
|
+
(see ryux-edge-cases).`,
|
|
281
|
+
interaction: `Define every meaningful action in four parts before implementing it:
|
|
282
|
+
|
|
283
|
+
| Phase | Question |
|
|
284
|
+
| --- | --- |
|
|
285
|
+
| Before | What tells the user this action exists, what it will do, and what it costs? |
|
|
286
|
+
| During | What do they see while it runs (pressed state, loading, progress)? |
|
|
287
|
+
| Result | How do they know it worked, and what changed? |
|
|
288
|
+
| Recovery | If it fails or was a mistake, how do they undo, retry, or get help? |
|
|
289
|
+
|
|
290
|
+
**Confirm or undo?** Reason about it; do not apply it mechanically.
|
|
291
|
+
1. Is it reversible? Then prefer an undo after the fact over a confirmation before.
|
|
292
|
+
2. Is it irreversible **and** high-impact (money, sending, deleting shared data)? Then confirm with
|
|
293
|
+
the specifics: amount, recipient, item.
|
|
294
|
+
3. Is recovery easy and the impact small? Then skip confirmation; it only adds friction.
|
|
295
|
+
4. Would a confirmation appear so often that people dismiss it by habit? Then it protects
|
|
296
|
+
nothing; use undo.
|
|
297
|
+
|
|
298
|
+
States to define for interactive elements: default, hover (pointer), focus, active or pressed,
|
|
299
|
+
disabled (with a reason, or keep it enabled and explain on use), loading, success, error. Keyboard:
|
|
300
|
+
every action is reachable; Enter submits; Escape closes. For repeat or expert use, add shortcuts
|
|
301
|
+
(recent items, quick amounts) without crowding the novice path.
|
|
302
|
+
|
|
303
|
+
Does not cover: form-specific behavior (see ryux-forms).`,
|
|
304
|
+
forms: `A form is a conversation. Design it field by field, then as a whole.
|
|
305
|
+
|
|
306
|
+
- **Grouping**: related fields together, with a group label when there are more than a few.
|
|
307
|
+
- **Labels**: visible and tied to the field; placeholders are examples, not labels.
|
|
308
|
+
- **Layout**: one column for sequential input is the default; put short related fields side by
|
|
309
|
+
side when people read them as one unit. Decide by relationship, not by filling width.
|
|
310
|
+
- **Fewest fields**: ask only what the task needs; mark whichever of required or optional is less
|
|
311
|
+
common.
|
|
312
|
+
- **Validation timing**: validate a field after the user leaves it or when the format is clear;
|
|
313
|
+
never erase what they typed.
|
|
314
|
+
- **Defaults and autofill**: prefill what you know; set autocomplete and inputmode.
|
|
315
|
+
- **Multi-step**: show the step, allow going back without losing data.
|
|
316
|
+
- **Unsaved changes**: autosave with a visible status, or warn before discarding.
|
|
317
|
+
- **Submission**: prevent double submits, show progress, then success with what happens next, or
|
|
318
|
+
failure with input kept and a retry.
|
|
319
|
+
|
|
320
|
+
Does not cover: general interaction states (see ryux-interaction) or error copy wording (see
|
|
321
|
+
ryux-content).`,
|
|
322
|
+
"edge-cases": `The happy path is not enough. Walk this list for the screen you built:
|
|
323
|
+
|
|
324
|
+
| Area | Cases |
|
|
325
|
+
| --- | --- |
|
|
326
|
+
| Data | empty, one item, many items, long content, missing fields, duplicates |
|
|
327
|
+
| Forms | invalid, partial, failed, loading, unsaved, expired |
|
|
328
|
+
| Network | slow, timeout, offline, server failure, retry |
|
|
329
|
+
| Permissions | read-only, restricted, different roles (only roles that exist) |
|
|
330
|
+
| System | session expired, unauthorized, unexpected error |
|
|
331
|
+
|
|
332
|
+
For first use and zero data, explain what will appear and give one action to start. For each case
|
|
333
|
+
that can happen, decide what the user sees and what they can do next. Cases that
|
|
334
|
+
cannot happen in this product do not need a design; say so in the Delivery Gate.
|
|
335
|
+
|
|
336
|
+
Does not cover: how errors are worded (see ryux-content).`,
|
|
337
|
+
content: `Content is interface: labels, CTAs, errors, empty states, confirmations, helper text, terminology,
|
|
338
|
+
numbers, dates, currency, and localization are all designed, not filled in last. Write them
|
|
339
|
+
specific, concise, human, action-oriented, and in context.
|
|
340
|
+
|
|
341
|
+
Avoid generic AI language: "unlock", "elevate", "transform", "seamlessly", "powerful solution",
|
|
342
|
+
"next-generation", "experience the future", and their Indonesian equivalents
|
|
343
|
+
("solusi terbaik", "pengalaman tak terlupakan").
|
|
344
|
+
|
|
345
|
+
- **Buttons** describe the actual action: "Bayar Rp45.000", not "Lanjutkan" when it pays.
|
|
346
|
+
- **Error messages**: 1. what happened, 2. why it matters when that helps, 3. how to recover.
|
|
347
|
+
- **Terminology**: one name per thing, everywhere.
|
|
348
|
+
- **Locale** comes from the product's market: language, money, dates, and numbers follow it.
|
|
349
|
+
- **Indonesian copy**: as users speak it, English only for terms they already use; money as
|
|
350
|
+
Rp1.250.000; dates and numbers as 2 Okt 2026, 14.30 WIB, 1,5, 12.500, +62 812-3456-7890.
|
|
351
|
+
- **Help** at the point of need (a hint under a field, "Kenapa diminta?"), not only in an FAQ.
|
|
352
|
+
- **Chat channels** (WhatsApp, Telegram): a short greeting, short paragraphs, sparse *bold*, and a
|
|
353
|
+
clear contact line; not a marketing page.
|
|
354
|
+
- **Offers and terms**: write only the terms you were given. Unknown minimums, quotas, deadlines,
|
|
355
|
+
and codes stay placeholders (\`[minimal belanja]\`, \`[tanggal selesai]\`); do not add "kuota
|
|
356
|
+
terbatas" or "sebelum kehabisan" unless a real limit was stated (RX-AS-04, RX-PR-02).
|
|
357
|
+
|
|
358
|
+
Does not cover: layout of the text (see ryux-ui).`,
|
|
359
|
+
ui: `**Visuals are not decoration. They are communication.** RYUX UI owns the visual expression of
|
|
360
|
+
a product: what each visual decision communicates, why it exists, and how it behaves. Functional UI
|
|
361
|
+
helps the user read, decide, or act. Anything decorative needs a stated reason (see the purpose
|
|
362
|
+
gates in ryux-anti-slop). It works in four layers.
|
|
363
|
+
|
|
364
|
+
**1. UI system.** Work in this order:
|
|
365
|
+
1. **Hierarchy**: what is read first, second, third? The primary action and key information win.
|
|
366
|
+
2. **Layout and alignment**: a shared grid; groups by meaning; consistent edges.
|
|
367
|
+
3. **Spacing and type**: one scale; size and weight carry hierarchy, not color alone.
|
|
368
|
+
4. **Density**: compact for repeat work, roomier for first-time or high-stakes decisions.
|
|
369
|
+
5. **Color**: roles first (surface, text, accent for the primary action, status); contrast checked.
|
|
370
|
+
6. **Containers**: use a container only when it groups or separates something.
|
|
371
|
+
7. **Icons**: next to labels, from one set, at consistent sizes.
|
|
372
|
+
|
|
373
|
+
**Justify values.** Every value comes from the scale and has a reason you can say in one line:
|
|
374
|
+
"12px between these two fields because they belong together; 24px before the next group because it
|
|
375
|
+
is a new topic." Tighter inside a group, looser between groups; density follows the task. If you
|
|
376
|
+
cannot say why 8 and not 12, the choice is not a decision yet.
|
|
377
|
+
|
|
378
|
+
**2. Art direction.** Each visual has a job (RX-UI-07), its composition leaves room for the
|
|
379
|
+
content (RX-UI-09), and the visual language is chosen, not defaulted (RX-UI-10). Name the visual
|
|
380
|
+
language in a few words (editorial, product-centric, human, technical, playful, premium,
|
|
381
|
+
institutional) and its form (shape language, geometric or organic, flat or with depth).
|
|
382
|
+
|
|
383
|
+
**Composition exploration.** For an expressive surface, sketch three compositions of the chosen
|
|
384
|
+
direction (subject left, subject right, centered or full-bleed) as quick frames, then choose by
|
|
385
|
+
focal point, hierarchy, negative space, relation to the copy, and balance (RX-UI-09).
|
|
386
|
+
|
|
387
|
+
**Expressive surfaces** (hero, landing, onboarding, empty states, brand moments). Restraint keeps
|
|
388
|
+
task UI usable; on expressive surfaces it is only the floor. Work concept, then signature, then
|
|
389
|
+
system:
|
|
390
|
+
1. **Concept**: write three directions first (name, concept, signature), then choose one. The idea
|
|
391
|
+
comes from the product itself, not from the category: a tool about evidence might use receipts,
|
|
392
|
+
citations, and marks of proof; a calm finance app might use the ledger. The category default
|
|
393
|
+
(a terminal panel for developer tools, a dashboard screenshot for SaaS) is never the signature.
|
|
394
|
+
2. **Signature**: one element that carries the concept and that people would remember. Choose the
|
|
395
|
+
lever: type (scale contrast, a distinctive face), composition (a broken grid, an unexpected
|
|
396
|
+
crop, a large number), art direction, color temperature, motion personality, or copy voice.
|
|
397
|
+
3. **System**: everything else stays quiet and consistent so the signature reads.
|
|
398
|
+
The Liveliness you set (Design Direction) turns into these levers: one focal point per screen,
|
|
399
|
+
contrast in size and weight that builds the hierarchy, whitespace that groups, one deliberate
|
|
400
|
+
accent, and a motif the signature repeats. Low energy uses the same levers, quietly.
|
|
401
|
+
Then run the swap test (RX-AS-09): with a competitor's name and logo, would anything need to change?
|
|
402
|
+
If not, the surface has no point of view yet. Stay honest while being bold: a strong idea never
|
|
403
|
+
needs invented numbers, people, or logos.
|
|
404
|
+
|
|
405
|
+
**3. Motion.** Start from purpose: what the motion communicates; with no purpose, no motion.
|
|
406
|
+
Every motion follows one lifecycle: before, trigger, transition, new state, feedback.
|
|
407
|
+
The states themselves (waiting, result, recovery) are defined in ryux-interaction (RX-IX-01,
|
|
408
|
+
RX-IX-02); motion only makes them visible, and it never compensates for weak UX. Decide the trigger,
|
|
409
|
+
duration, easing, distance, opacity or scale, and how several elements are choreographed. Define
|
|
410
|
+
duration and easing once as motion tokens, and animate transform and opacity rather than layout
|
|
411
|
+
properties (width, height, top, margin), which cause jank.
|
|
412
|
+
|
|
413
|
+
| Level | Examples | Needs |
|
|
414
|
+
| --- | --- | --- |
|
|
415
|
+
| L1 State feedback | button press, checkbox, toggle | nothing beyond being fast (about 100 to 200 ms) |
|
|
416
|
+
| L2 Component transition | dropdown, modal, drawer, tooltip | shows where something came from or went |
|
|
417
|
+
| L3 Page transition | navigation, route change | keeps the user oriented between places |
|
|
418
|
+
| L4 Storytelling | onboarding, product introduction, marketing | a message that is clearer moving than still |
|
|
419
|
+
| L5 Decorative | background particles, floating elements | a brand reason, and never delaying content or input |
|
|
420
|
+
|
|
421
|
+
Pick one **motion personality** per product and derive timing and easing from it:
|
|
422
|
+
|
|
423
|
+
| Trait | Calm (banking) | Energetic (game) |
|
|
424
|
+
| --- | --- | --- |
|
|
425
|
+
| Character | calm, precise | energetic, playful |
|
|
426
|
+
| Speed | moderate | fast |
|
|
427
|
+
| Easing | smooth ease-out | spring |
|
|
428
|
+
| Movement | short, controlled | larger, expressive |
|
|
429
|
+
| Expression | subtle | high |
|
|
430
|
+
|
|
431
|
+
With reduced motion requested, large movement becomes a fade or a cut (RX-A11Y-08).
|
|
432
|
+
|
|
433
|
+
**4. Visual production.** Decide where each asset comes from before making anything (RX-UI-13):
|
|
434
|
+
|
|
435
|
+
| Asset | First choice | Then | Never |
|
|
436
|
+
| --- | --- | --- | --- |
|
|
437
|
+
| Product visuals | real screens, labeled sample data | a rebuilt screen labeled illustrative | a fake dashboard shown as real |
|
|
438
|
+
| Photography | the brand's own shoot | a licensed library you can name | a stranger presented as a customer |
|
|
439
|
+
| Illustration and 3D | the brand's system | custom or generated from the brief, labeled | a generic character or blob unrelated to the product |
|
|
440
|
+
| Icons | the project's set | one open-source set (for example Lucide or Phosphor) | mixed sets or hand-drawn one-offs |
|
|
441
|
+
| Logos | official files from each owner | the name in plain text | a redrawn or imitated logo |
|
|
442
|
+
| Video | real product footage | a screen recording of the real product | stock footage implying use |
|
|
443
|
+
| Missing | a placeholder that looks like one (RX-AS-03) | | an invented stand-in |
|
|
444
|
+
|
|
445
|
+
Label every asset's provenance: observed (from the real product), sourced (licensed, with its
|
|
446
|
+
source), illustrative, generated, or inferred (a stand-in). See the evidence model in the router.
|
|
447
|
+
|
|
448
|
+
RYUX directs the generator; it is not the generator. Work context, goal,
|
|
449
|
+
audience, role, art direction, composition, then generate, critique the result against the brief,
|
|
450
|
+
and refine. A prompt without a brief is not art direction. Write the brief first:
|
|
451
|
+
|
|
452
|
+
\`\`\`
|
|
453
|
+
# Visual Brief
|
|
454
|
+
Role: its job (explain, orient, demonstrate, emotion, identity, context, story)
|
|
455
|
+
Objective: what the viewer must understand or feel
|
|
456
|
+
Audience: who sees it, in which context
|
|
457
|
+
Emotion: the feeling, in two or three words
|
|
458
|
+
Concept: the visual thesis, in one sentence
|
|
459
|
+
Subject: what is shown (the product concept, not a generic person or device)
|
|
460
|
+
Visual language: editorial / product-centric / technical / ..., and the art direction
|
|
461
|
+
Form: shape language, geometric or organic, depth
|
|
462
|
+
Composition: where the subject sits, and the space kept for copy
|
|
463
|
+
Color, material, lighting: from the product palette; surfaces; direction and softness
|
|
464
|
+
Motion: level (L1 to L5) and personality
|
|
465
|
+
Output: format, background, aspect ratios and sizes
|
|
466
|
+
Avoid: the category clichés (for fintech: coins, money rain, floating dashboards)
|
|
467
|
+
Sources: reference screen_ids or the analysis it came from
|
|
468
|
+
\`\`\`
|
|
469
|
+
|
|
470
|
+
A generated image is illustrative art; never present it as a real customer or a real product
|
|
471
|
+
screen (RX-UI-07).
|
|
472
|
+
|
|
473
|
+
Does not cover: component reuse and tokens (see ryux-design-system).`,
|
|
474
|
+
"design-system": `Prioritize the existing system. Before creating anything:
|
|
475
|
+
|
|
476
|
+
1. Search existing components.
|
|
477
|
+
2. Search existing tokens (color, spacing, radius, type, elevation).
|
|
478
|
+
3. Search existing patterns (how similar screens solve this).
|
|
479
|
+
4. Reuse if an existing component fits.
|
|
480
|
+
5. Extend with a variant if it almost fits.
|
|
481
|
+
6. Create a new component only for a real semantic or behavioral difference, and name why.
|
|
482
|
+
|
|
483
|
+
**Quality Locks** to keep across the product: spacing, typography, color roles, terminology,
|
|
484
|
+
components, interaction patterns and states, responsive behavior, and visual hierarchy.
|
|
485
|
+
|
|
486
|
+
If the project has no system yet, define the smallest token set the screen needs and use it
|
|
487
|
+
consistently. Do not introduce a component library the project does not use.`,
|
|
488
|
+
accessibility: `Accessibility is product quality, not an enhancement. Check:
|
|
489
|
+
|
|
490
|
+
- **Semantics**: real headings, landmarks, lists, buttons, links, labels.
|
|
491
|
+
- **Keyboard**: everything reachable and operable; focus order follows the visual order.
|
|
492
|
+
- **Focus**: visible on every interactive element; never removed without a replacement.
|
|
493
|
+
- **Contrast**: 4.5:1 for text, 3:1 for large text and component boundaries.
|
|
494
|
+
- **Targets**: at least 24×24px, preferably 44×44px on touch.
|
|
495
|
+
- **Names**: icon-only buttons and meaningful images have accessible names.
|
|
496
|
+
- **Forms**: labels tied to fields; errors tied to fields and announced.
|
|
497
|
+
- **Color**: never the only signal.
|
|
498
|
+
- **Motion**: honor reduced-motion settings.
|
|
499
|
+
- **ARIA**: only when native semantics cannot express it.
|
|
500
|
+
|
|
501
|
+
Report what was checked and how. Do not claim full conformance without an audit.`,
|
|
502
|
+
responsive: `Responsive design is behavioral. When space decreases: **prioritize → simplify → reorganize**.
|
|
503
|
+
Do not squeeze everything into a smaller viewport.
|
|
504
|
+
|
|
505
|
+
| Element | On narrow screens |
|
|
506
|
+
| --- | --- |
|
|
507
|
+
| Content | keep the priority content first; move secondary content behind a control |
|
|
508
|
+
| Navigation | collapse to the few top destinations; keep the current location visible |
|
|
509
|
+
| Tables | priority columns, stacked rows, or scroll inside the table with the key column fixed |
|
|
510
|
+
| Forms | one column; keyboards that match the input |
|
|
511
|
+
| Actions | primary action within thumb reach; not hidden under the fold |
|
|
512
|
+
| Modals and drawers | full-screen or bottom sheet; close and primary action reachable |
|
|
513
|
+
| Text | keep the size; let it wrap; truncate only with access to the full value |
|
|
514
|
+
|
|
515
|
+
For each section, answer before building: what **changes**, what **stays**, what **disappears**,
|
|
516
|
+
what **reorders**, what becomes **scrollable**, what becomes **stacked**, and which **interaction**
|
|
517
|
+
changes (hover becomes tap, a side panel becomes a sheet)?
|
|
518
|
+
|
|
519
|
+
Example: a data table on desktop → on tablet, scroll horizontally inside the table or show the
|
|
520
|
+
priority columns → on mobile, a different information architecture: a list of rows as summary cards
|
|
521
|
+
that open a detail view.
|
|
522
|
+
|
|
523
|
+
Check the stated viewport and the smallest supported width. No horizontal page scroll.`,
|
|
524
|
+
frontend: `Connect design decisions to the code that ships them.
|
|
525
|
+
|
|
526
|
+
1. **Detect the stack first**: read package.json, the router, the styling approach, and two or
|
|
527
|
+
three nearby components. Write in that stack. Do not assume React or Tailwind.
|
|
528
|
+
2. **Semantic HTML** and native controls before custom ones.
|
|
529
|
+
3. **Architecture**: follow the layers the repo already has. Components render; state lives close
|
|
530
|
+
to where it is used; calculations, formatting, and validation live in pure modules; one layer
|
|
531
|
+
talks to the API. Each piece of logic has one home: search before writing, never copy.
|
|
532
|
+
Derived values instead of duplicated state.
|
|
533
|
+
4. **Tokens** instead of magic numbers; no duplicate styles.
|
|
534
|
+
5. **No invented logic**: prices, limits, and permissions come from data or are marked as
|
|
535
|
+
assumptions.
|
|
536
|
+
6. **Dependencies** only when they clearly earn their weight.
|
|
537
|
+
7. **Performance**: sized and lazy-loaded media; no heavy libraries for small effects.
|
|
538
|
+
8. **Tests**: unit tests for pure logic with its edge cases, integration tests for critical flows,
|
|
539
|
+
in the repo's own runner. Run them before claiming the work is done.
|
|
540
|
+
|
|
541
|
+
Does not cover: visual decisions (see ryux-ui) or component reuse decisions (see ryux-design-system).`,
|
|
542
|
+
"visual-qa": `Visual QA asks one question: **did the implementation match the intended design?** Whether the
|
|
543
|
+
design itself is good is Critique's question (ryux-critique).
|
|
544
|
+
|
|
545
|
+
**With a reference** (a Figma or pen.dev frame, DESIGN.md, or an approved screenshot):
|
|
546
|
+
1. Capture the reference and the implementation at the same viewport (see the capture table in
|
|
547
|
+
ryux-analyze).
|
|
548
|
+
2. Compare property by property: spacing, typography, color, size, position, components, states,
|
|
549
|
+
responsive behavior.
|
|
550
|
+
3. Report each deviation:
|
|
551
|
+
|
|
552
|
+
\`\`\`
|
|
553
|
+
Area | Expected (reference) | Actual (build) | Deviation | Severity | Fix
|
|
554
|
+
Card radius | 16px | 8px | half the radius | minor | use radius-lg
|
|
555
|
+
\`\`\`
|
|
556
|
+
|
|
557
|
+
**Without a reference**, check the build against its own intent and the rules below.
|
|
558
|
+
|
|
559
|
+
**Loop**: implement → render → compare → fix → render again.
|
|
560
|
+
|
|
561
|
+
**Render with what is available**, in this order: the project's own preview or test setup;
|
|
562
|
+
\`npx playwright screenshot --viewport-size=1440,900 <url>\` (and 390 wide for mobile); a browser
|
|
563
|
+
tool; a design-tool export such as pen.dev \`Export\`. If none is available, say so in the gate.
|
|
564
|
+
|
|
565
|
+
**Rank issues by impact**: blocks the task, misleads (wrong numbers, unclear action), adds friction,
|
|
566
|
+
polish.`,
|
|
567
|
+
"anti-slop": `Anti-slop runs last, after design, build, critique, and QA; it is the final quality gate, never the
|
|
568
|
+
starting point. Anti-slop is the floor, not the ceiling: a tidy, generic surface still fails on expressive
|
|
569
|
+
surfaces (RX-AS-09), and the point of view comes from RX-UI-12. Anti-slop is not a list of banned
|
|
570
|
+
styles. It has three parts.
|
|
571
|
+
|
|
572
|
+
**Hard Gates**: reject or fix before delivery; no written exception. The list is generated below
|
|
573
|
+
from the rules.
|
|
574
|
+
|
|
575
|
+
**Purpose Gates**: these patterns are allowed when they have a purpose. For each one in the
|
|
576
|
+
result, ask three questions: **purpose** (what does it do?), **contribution** (what does it add to
|
|
577
|
+
understanding, interaction, or character?), and **necessity** (would something simpler do the
|
|
578
|
+
same?). "It looks more interesting" answers none of them; remove what fails.
|
|
579
|
+
|
|
580
|
+
**Quality Locks**: consistency that must hold across the product (listed below).
|
|
581
|
+
|
|
582
|
+
**Visual tells.** These are signals that a reason is missing, not banned styles. When you see one,
|
|
583
|
+
run the purpose gate; keep it when the answer is real, as in the last column.
|
|
584
|
+
|
|
585
|
+
| Tell | Why it hurts | Fix | Fine when |
|
|
586
|
+
| --- | --- | --- | --- |
|
|
587
|
+
| A blue-to-purple gradient wash behind everything | carries no meaning and appears on every AI page | color from the brand and its roles (RX-UI-10), or a plain surface | the gradient is the brand, or it encodes a value |
|
|
588
|
+
| A fake app, terminal, or agent window as the hero | the category default, often with invented output | a signature from the product's own idea; product UI only when real or labeled (RX-UI-12, RX-UI-07) | it is the real product with labeled sample data |
|
|
589
|
+
| Generic illustration: people with laptops, abstract blobs | unrelated to the product, so it steals attention and says nothing | a contextual illustration made from the brief, or no visual (RX-UI-07) | it explains a concept or an empty state words cannot |
|
|
590
|
+
| Floating devices and dashboard mockups | fake screens imply features and data | real screens with labeled sample data (RX-UI-07, RX-AS-01) | the screens are real and labeled |
|
|
591
|
+
| The template section order (hero, three cards, three-column pricing, four-column footer) | the page follows a template instead of what this content needs | order and form sections by what the reader needs next (RX-UI-05) | the content really has that shape |
|
|
592
|
+
| Identical feature cards in a row | equal boxes flatten priorities that are not equal | give the main point more weight; a list or one strong block (RX-UI-01) | the items are equal and compared side by side |
|
|
593
|
+
| A bento grid | a fashionable frame that hides which item matters | a layout from the content and its priority (RX-UI-05) | the items are independent and similar in weight |
|
|
594
|
+
| A typeface picked because it is in fashion | the same few faces on every generated page | a face chosen for the product's voice and legibility (RX-UI-10) | the brand already uses it |
|
|
595
|
+
| Monospace to look technical | mood instead of meaning; harder to read in prose | monospace only for code, IDs, and aligned numbers | it shows code, commands, or tabular figures |
|
|
596
|
+
| A sparkle or robot icon on every AI feature | says "AI" instead of what the feature does | an icon for the action, or none | the product's own AI mark, used once |
|
|
597
|
+
| A small badge above the headline that repeats it | a label that adds no information | cut it, or say something the headline does not | it carries real status: beta, new version, date |
|
|
598
|
+
| Endless floating, looping, or scroll-triggered motion | decorative motion with no reason, competing with the task | a single L4 moment with a message, or none (RX-UI-11) | it shows state, continuity, or the product's idea once |
|
|
599
|
+
| Glass, glow, and blur on every layer | decoration without a job that also lowers contrast | one surface treatment with a purpose (RX-AS-05, RX-A11Y-01) | one overlay needs to show what is behind it |
|
|
600
|
+
| Stock teamwork or handshake photos | borrowed people implying endorsement | real people with consent, or no people (RX-AS-02, RX-UI-13) | never as evidence of customers |`,
|
|
601
|
+
};
|
package/dist/product.js
ADDED
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
// Product metadata. The version has one source of truth: this package's package.json.
|
|
2
|
+
import { createRequire } from "node:module";
|
|
3
|
+
const pkg = createRequire(import.meta.url)("../package.json");
|
|
4
|
+
/** The RYUX product version (npm package, skill, plugins, and rules share it). */
|
|
5
|
+
export const VERSION = pkg.version;
|
|
6
|
+
export const MCP_NAME = "ryux";
|
|
7
|
+
export const MCP_URL = "https://mcp.ryux.design/mcp";
|
|
8
|
+
export const MCP_ADD_CMD = `claude mcp add --transport http ${MCP_NAME} ${MCP_URL}`;
|
|
9
|
+
/** Until the hosted MCP is live, every surface says so instead of printing a dead connect command. */
|
|
10
|
+
export const MCP_LOCAL_ADD_CMD = `claude mcp add --transport http ${MCP_NAME} http://localhost:8787/mcp`;
|
|
11
|
+
export const MCP_STATUS = "The hosted ryux MCP is not live yet. RYUX works without it and rates evidence None. " +
|
|
12
|
+
`To run the server yourself, see https://github.com/ryuxdsgn/design-intelligence/tree/main/apps/mcp, then: ${MCP_LOCAL_ADD_CMD}`;
|
|
13
|
+
export const CLI_CMD = "npx @ryuxdsgn/design-intelligence";
|
|
14
|
+
export const MARK_START = "<!-- ryux-rules:start -->";
|
|
15
|
+
export const MARK_END = "<!-- ryux-rules:end -->";
|
|
16
|
+
export const CONTEXT_START = "<!-- ryux-context:start -->";
|
|
17
|
+
export const CONTEXT_END = "<!-- ryux-context:end -->";
|
|
18
|
+
export const CONTEXT_FILE = "DESIGN.md";
|