super-ux 0.19.0 → 0.26.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/CHANGELOG.md +400 -0
- package/README.md +185 -140
- package/bin/super-ux.js +15 -3
- package/cursor/rules/super-ux.mdc +12 -6
- package/cursor/rules/ux-audit.mdc +9 -2
- package/cursor/rules/ux-flows.mdc +20 -3
- package/cursor/rules/ux-foundation.mdc +9 -0
- package/cursor/rules/ux-scenarios.mdc +10 -3
- package/package.json +6 -2
- package/plugins/super-ux/scripts/ux_lint.py +231 -0
- package/templates/README.md +4 -2
- package/templates/claude-rule.md +9 -4
- package/templates/flows.md +2 -0
- package/templates/foundation.md +12 -2
- package/templates/screens.md +5 -0
package/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,405 @@
|
|
|
1
1
|
# Changelog
|
|
2
2
|
|
|
3
|
+
## 0.26.1 — 2026-07-29
|
|
4
|
+
|
|
5
|
+
0.26.0 gave practice selection two new profile dimensions but no place in the
|
|
6
|
+
chain to read them from — the foundation had no field for either, so the
|
|
7
|
+
profile could only be built by asking again every session. This closes that
|
|
8
|
+
loop.
|
|
9
|
+
|
|
10
|
+
### Added
|
|
11
|
+
- **Foundation contract §7 — Product mechanics** (`scenario-format.md`,
|
|
12
|
+
`templates/foundation.md`): personalization (none / rule-based / inferred),
|
|
13
|
+
engagement mechanics (none / streaks-tiers / points-badges-leaderboards),
|
|
14
|
+
and the accessibility regime (none stated / EAA / ADA / both) with its
|
|
15
|
+
owner. Three facts the profile reads and cannot infer from the rest of the
|
|
16
|
+
chain; each recorded mechanic carries its consequence into `flows.md` — a
|
|
17
|
+
recovery flow (BP-142), a correction path (BP-144), per-scenario checks
|
|
18
|
+
(BP-138).
|
|
19
|
+
- `ux-foundation` records the section as a step of its own; "none" is a valid
|
|
20
|
+
and useful answer.
|
|
21
|
+
|
|
22
|
+
The section is optional and additive — the contract stays **v4** and every
|
|
23
|
+
existing `foundation.md` remains valid without it.
|
|
24
|
+
|
|
25
|
+
## 0.26.0 — 2026-07-29
|
|
26
|
+
|
|
27
|
+
A pass over what the catalog could not answer about the *surface* of a
|
|
28
|
+
product. Motion existed as one line of stance (BP-054) with no system behind
|
|
29
|
+
it. Page weight, the narrow viewport, and input capability were absent
|
|
30
|
+
entirely. Accessibility had a standard (BP-059) but nothing about how real
|
|
31
|
+
products miss it — which is a short, repetitive list. Nothing measured
|
|
32
|
+
frustration, nothing governed adopting a look, and personalization was
|
|
33
|
+
implied by the paywall practices without ever being designed. Seventeen
|
|
34
|
+
practices close those gaps, all anchored to field data rather than to trend
|
|
35
|
+
copy.
|
|
36
|
+
|
|
37
|
+
### Added
|
|
38
|
+
- **Motion — BP-130..132**: durations and easings as a named token scale
|
|
39
|
+
(the motion twin of BP-085's spacing grid); reduced motion as a supported
|
|
40
|
+
mode with a real branch in code, pause/stop for anything auto-playing past
|
|
41
|
+
five seconds, large-transform effects first to go; scroll-driven
|
|
42
|
+
storytelling as enhancement only — the content is complete and readable
|
|
43
|
+
with every effect removed, one scroll clock, capped animated layers.
|
|
44
|
+
- **Page weight, responsiveness & device reality — BP-133..135**: a stated,
|
|
45
|
+
enforced byte and script budget (field medians are the competition, not
|
|
46
|
+
the target), image/font/video/WebGL policy, DOM bloat watched; the small
|
|
47
|
+
viewport designed first with breakpoints from content and a verified 320px
|
|
48
|
+
/ 200%-zoom reflow; hover, fine pointer and touch treated as independent
|
|
49
|
+
capabilities — no hover-only affordances.
|
|
50
|
+
- **Accessibility as it actually fails — BP-136..138**: native semantics
|
|
51
|
+
first with ARIA only for what HTML cannot say (pages carrying ARIA measure
|
|
52
|
+
roughly twice the detected errors); overlays are not remediation and a
|
|
53
|
+
clean scan is not coverage — the evidence is a keyboard and screen-reader
|
|
54
|
+
walk; accessibility decided in the chain, with the applicable regime
|
|
55
|
+
(European Accessibility Act since June 2025, ADA litigation exposure) as a
|
|
56
|
+
ship requirement with an owner.
|
|
57
|
+
- **Frustration telemetry — BP-139..140**: rage/dead clicks, failed submits,
|
|
58
|
+
error loops and field-level abandonment instrumented next to the funnel
|
|
59
|
+
and segmented; every recurring cluster routed back into the chain as a
|
|
60
|
+
scenario or a finding with an owner — telemetry nobody owns is decoration.
|
|
61
|
+
- **Gamification — BP-141..142**: mechanics amplify the traced core job or
|
|
62
|
+
they don't ship (extrinsic rewards crowd out the intrinsic motive;
|
|
63
|
+
leaderboards demotivate everyone outside the top); every streak, tier or
|
|
64
|
+
expiring-progress mechanic ships a recovery valve, because the loss moment
|
|
65
|
+
is otherwise a churn trigger at peak engagement.
|
|
66
|
+
- **Personalization & progressive profiling — BP-143..144**: split the ask
|
|
67
|
+
across sessions, derive what can be derived, never re-ask what is known;
|
|
68
|
+
personalization shown with its reason, correctable in one tap, with the
|
|
69
|
+
unpersonalized path still reachable.
|
|
70
|
+
- **Trend governance — BP-145..146**: BP-001 applied to looks — a trend is
|
|
71
|
+
adopted through its mechanism, its identity fit, its accessibility and
|
|
72
|
+
weight cost, and a review date, recorded in the style pack rather than in
|
|
73
|
+
one screen; styles with documented debt (neumorphic surfaces, deliberate
|
|
74
|
+
anti-design, unconventional navigation, immersive 3D) ship only with the
|
|
75
|
+
compensation named, and the audit checks the compensation in the built UI.
|
|
76
|
+
- Six source keys — **[WebAIM]**, **[HTTPArchive]**, **[CSq]**,
|
|
77
|
+
**[A11yLaw]**, **[WSG]**, **[SDT]** — plus an explicit note that
|
|
78
|
+
vendor-published "state of" survey figures are directional only and never
|
|
79
|
+
a practice's sole justification.
|
|
80
|
+
|
|
81
|
+
### Changed
|
|
82
|
+
- `practice-selection.md`: two new profile dimensions (personalization,
|
|
83
|
+
engagement mechanics); motion, look, weight, responsiveness and
|
|
84
|
+
accessibility routed from the profile; five new per-artifact rows
|
|
85
|
+
(animated/scroll-driven surface, responsive layout pass, accessibility
|
|
86
|
+
pass, gamified/streak surface, personalized/adaptive surface).
|
|
87
|
+
- `ux-design-principles.md`: accessibility, motion behavior and
|
|
88
|
+
responsiveness are specified in the chain, in text, before the UI exists;
|
|
89
|
+
two anti-patterns added (a look adopted with no mechanism or review date;
|
|
90
|
+
treating accessibility, motion or weight as post-build polish).
|
|
91
|
+
- `ux-audit`: the practice pass now verifies in code the four things that
|
|
92
|
+
fail silently — the reduced-motion branch and content-without-effects, the
|
|
93
|
+
weight budget, narrow-viewport/zoom reflow and hover-only affordances, and
|
|
94
|
+
ARIA sitting only where no native element says it. An accessibility claim
|
|
95
|
+
backed by a scanner alone is BLOCKED, not PASS.
|
|
96
|
+
- `visual-identity.md`: motion floors and trend adoption added to the
|
|
97
|
+
division of labor — the pack picks the values, super-ux decides whether the
|
|
98
|
+
floors apply and whether the trend is adopted at all; the audit checks the
|
|
99
|
+
BP-146 compensation in the built UI.
|
|
100
|
+
- `component-guidelines.md`: the cross-platform stance now states the
|
|
101
|
+
native-element-first rule ahead of the ARIA APG patterns.
|
|
102
|
+
- Existing entries updated with field prevalence and cross-links: BP-054
|
|
103
|
+
(points to the motion system), BP-055 (checkout-rebuild yield, defers to
|
|
104
|
+
BP-143), BP-058 (points to the weight budget), BP-059 and BP-081 (the
|
|
105
|
+
~95% failure rate and low contrast as the single most common defect),
|
|
106
|
+
BP-077 (points to progressive profiling).
|
|
107
|
+
|
|
108
|
+
## 0.25.0 — 2026-07-29
|
|
109
|
+
|
|
110
|
+
The catalog knew how to sell inside an app and almost nothing about selling
|
|
111
|
+
on the web. Two funnels were missing: web-to-web (landing → pricing →
|
|
112
|
+
checkout → recurring billing → cancel) had only generic form advice, and
|
|
113
|
+
web2app was a single entry (BP-078) stating the economics with none of the
|
|
114
|
+
design work. Both are now full sets, and the chain routes to them from the
|
|
115
|
+
foundation's purchase surface.
|
|
116
|
+
|
|
117
|
+
### Added
|
|
118
|
+
- **Web funnels — BP-116..123** (`best-practices.md`): one promise from ad to
|
|
119
|
+
landing to first product screen; one page, one job, with proof beside each
|
|
120
|
+
CTA rather than in a bottom section most visitors never reach; pricing page
|
|
121
|
+
as three tiers with one visibly recommended and annual framed in absolute
|
|
122
|
+
money; signup asking the smallest identity that unblocks value (card only
|
|
123
|
+
when the trial is deliberately opt-out); total price — currency, tax, fees —
|
|
124
|
+
shown before the last step, wallets above the card form; abandonment as a
|
|
125
|
+
designed branch with surviving state and a resume link, not a leak; dunning
|
|
126
|
+
as a UX surface (pre-expiry notice, one-tap in-product card update, retries
|
|
127
|
+
that end in a real message); cancel self-serve and honest with exactly one
|
|
128
|
+
save offer.
|
|
129
|
+
- **Web-to-app funnels — BP-124..129**: the web funnel replaces onboarding,
|
|
130
|
+
not just the paywall; the paid handoff is a first-class scenario with its
|
|
131
|
+
failure branches (wrong account, mail never arrived, purchase not yet
|
|
132
|
+
propagated, second device, refunded) — a paying user must never meet a
|
|
133
|
+
paywall; context carried across the store gap by deferred deep link with a
|
|
134
|
+
deliberately designed magic-link fallback; storefront rules as a per-region
|
|
135
|
+
variable re-checked each ship (US external links after the April 2025
|
|
136
|
+
ruling, entitlement elsewhere, EU its own regime, IAP as fallback); the tax,
|
|
137
|
+
SCA, refund and invoice duties the store used to absorb; and one funnel
|
|
138
|
+
measured web session → purchase → install → activation, not stopping at the
|
|
139
|
+
sale.
|
|
140
|
+
- Two source keys — **[CRO26]** (Baymard checkout research, ChartMogul/Paddle
|
|
141
|
+
trial and failed-payment data, landing/pricing-page A/B aggregations) and
|
|
142
|
+
**[W2A26]** (RevenueCat/Adapty/Superwall funnel benchmarks, Apple/Google
|
|
143
|
+
storefront policy after the 2025 US anti-steering ruling) — with an explicit
|
|
144
|
+
note that their figures are industry aggregates the product's own numbers
|
|
145
|
+
overrule.
|
|
146
|
+
- Tag taxonomy: `billing`, `cancel` (stage), `landing-page`, `web2app`
|
|
147
|
+
(domain).
|
|
148
|
+
|
|
149
|
+
### Changed
|
|
150
|
+
- **`practice-selection.md` routes to the new sets.** New profile dimension
|
|
151
|
+
**Purchase surface** (none / IAP / web checkout / web2app); Step-2 mandatory
|
|
152
|
+
sets for web-direct money products (BP-116..123), for any off-store purchase
|
|
153
|
+
(BP-127, BP-128) and for web2app (BP-124..126, BP-129); Step-3 checklists
|
|
154
|
+
for landing/campaign page, web pricing page, abandonment recovery, dunning,
|
|
155
|
+
and the web2app funnel + paid handoff, with the existing forms/checkout and
|
|
156
|
+
cancel rows extended.
|
|
157
|
+
- **The foundation now declares where the money is taken.** `Purchase surface`
|
|
158
|
+
added to the Monetization section (`scenario-format.md`,
|
|
159
|
+
`templates/foundation.md`, `ux-foundation` skill and Cursor rule); money
|
|
160
|
+
moments now name checkout, failed payment and cancel; when the surface is
|
|
161
|
+
web or web2app, the web funnel and the paid handoff are flows of this
|
|
162
|
+
product, held to the same rigor as in-app screens (`ux-flows`,
|
|
163
|
+
`ux-scenarios` completeness checklists and Cursor rule).
|
|
164
|
+
- Plugin/marketplace descriptions de-numbered again — a practice count had
|
|
165
|
+
crept back in and gone stale; they now say "a tag-indexed best-practices
|
|
166
|
+
catalog". README says 129 and names the two new areas.
|
|
167
|
+
|
|
168
|
+
## 0.24.0 — 2026-07-29
|
|
169
|
+
|
|
170
|
+
Checked what the plugin claims about Figma against the official Figma MCP's
|
|
171
|
+
actual tools and their contracts. Several instructions would have failed.
|
|
172
|
+
|
|
173
|
+
### Fixed
|
|
174
|
+
- **The MCP gates its own tools behind guidance skills, and super-ux ignored
|
|
175
|
+
two of the three gates.** `use_figma` requires `/figma-use` first,
|
|
176
|
+
`create_new_file` requires `/figma-create-new-file`, `get_design_context`
|
|
177
|
+
requires `/figma-design-to-code` — skipping them is the server's documented
|
|
178
|
+
cause of hard-to-debug failures. Only the first was mentioned, and only in
|
|
179
|
+
one step of the design loop; the preflight told the agent to call
|
|
180
|
+
`create_new_file` and Improve mode to call `get_design_context` with no gate
|
|
181
|
+
at all. All three are now stated where the call is made, with the
|
|
182
|
+
`skill://figma/<name>/SKILL.md` fallback for setups without the slash
|
|
183
|
+
commands.
|
|
184
|
+
- **"Create a Figma file" was an unrunnable instruction.** `create_new_file`
|
|
185
|
+
needs a plan key (from `whoami`, asking the user when there are several
|
|
186
|
+
teams/orgs) and an `editorType`; neither was mentioned.
|
|
187
|
+
- `generate_figma_design` was listed as a plain alternative for mockups. It is
|
|
188
|
+
narrower than that — the server's own guidance reserves it for capturing a
|
|
189
|
+
*web app* page pixel-perfect the first time, run beside `use_figma`; for
|
|
190
|
+
non-web and from-scratch design, `use_figma` only. Stated as such, and as
|
|
191
|
+
"where the setup exposes it", since not every install has it.
|
|
192
|
+
|
|
193
|
+
### Added
|
|
194
|
+
- **A tool map in `figma-integration.md`** — need → tool, for the whole
|
|
195
|
+
surface the chain actually touches: writes (`use_figma`), structure reads
|
|
196
|
+
(`get_metadata`), implementation reads (`get_design_context`), screenshots,
|
|
197
|
+
variables (`get_variable_defs`), libraries, assets
|
|
198
|
+
(`download_assets` / `upload_assets`), Code Connect, and FigJam. Explicitly
|
|
199
|
+
a map, not a contract: a missing tool degrades to what is there, and the
|
|
200
|
+
agent never invents a call. Plus how `node-id` and `fileKey` come out of the
|
|
201
|
+
links `screens.md` already stores.
|
|
202
|
+
- **Drift checks that use the cheap tool.** Frame existence and naming are
|
|
203
|
+
verified with `get_metadata` (ids, names, types, sizes — no full design
|
|
204
|
+
context needed), in both directions: a listed state without a frame, and a
|
|
205
|
+
frame whose `SCR-ID`/state is in no `screens.md` row.
|
|
206
|
+
- **Token parity is now checkable, not assumed.** `get_variable_defs` reads
|
|
207
|
+
what a frame actually references, so "built on the style pack's tokens"
|
|
208
|
+
becomes a verdict with evidence — a frame full of raw hexes is the
|
|
209
|
+
design-side twin of hard-coded colors in code.
|
|
210
|
+
|
|
211
|
+
## 0.23.2 — 2026-07-28
|
|
212
|
+
|
|
213
|
+
Open-source hygiene pass — the repo is public, so the files a first-time
|
|
214
|
+
contributor looks for now exist.
|
|
215
|
+
|
|
216
|
+
### Added
|
|
217
|
+
- `SECURITY.md` — what the skill and its installer actually run (two `claude`
|
|
218
|
+
calls, explicit argv, no network from the linter), what they write, and private
|
|
219
|
+
reporting.
|
|
220
|
+
- `CODE_OF_CONDUCT.md` and a pull-request template that asks for the command
|
|
221
|
+
output rather than a "tests pass" claim.
|
|
222
|
+
- README now points at the security policy and the code of conduct alongside
|
|
223
|
+
contributing.
|
|
224
|
+
|
|
225
|
+
## 0.23.1 — 2026-07-28
|
|
226
|
+
|
|
227
|
+
### Changed
|
|
228
|
+
- Consistent American spelling across every agent-facing file (`labour` →
|
|
229
|
+
`labor`, `honour` → `honor`, `neighbouring` → `neighboring`) — the docs
|
|
230
|
+
were mixing both, which reads as sloppy in a repo whose whole pitch is that
|
|
231
|
+
small inconsistencies compound.
|
|
232
|
+
- Reflowed three paragraphs left ragged by the previous pass's mechanical
|
|
233
|
+
edits (`figma-integration.md` intro, the `ux-flows` build gate), and the
|
|
234
|
+
build gate now names the style pack alongside the chain and the Figma
|
|
235
|
+
mockups.
|
|
236
|
+
|
|
237
|
+
## 0.23.0 — 2026-07-28
|
|
238
|
+
|
|
239
|
+
Production pass over the public repo: every file read again, the remaining
|
|
240
|
+
contradictions fixed, and the front door rewritten for people who have never
|
|
241
|
+
seen this project.
|
|
242
|
+
|
|
243
|
+
### Fixed
|
|
244
|
+
- **The hard rule described a three-layer chain.** The most-copied text in the
|
|
245
|
+
project — the rule installed into every `CLAUDE.md`, the always-on Cursor
|
|
246
|
+
rule, the README, `/ux-rule`, the `ux-flows` build gate — said
|
|
247
|
+
"foundation → flows → scenarios" while `screens.md` has been a first-class
|
|
248
|
+
layer with its own same-change rule since 0.16.0. All five copies now say
|
|
249
|
+
foundation → flows → **screens** → scenarios.
|
|
250
|
+
- **`ux-foundation` didn't know about a section it owns.** The contract gives
|
|
251
|
+
`foundation.md` a Design tooling block (Figma on/off + file URL), but
|
|
252
|
+
neither the skill nor its Cursor rule ever mentioned it, so the field was
|
|
253
|
+
only ever filled by whoever happened to read the template. Both now cover it
|
|
254
|
+
— and state that everything else visual (design system, style pack, frame
|
|
255
|
+
links) belongs to `screens.md`.
|
|
256
|
+
- The README's mermaid diagram used `\n` for line breaks, which GitHub renders
|
|
257
|
+
literally; it is `<br/>` now — and the diagram shows the current chain
|
|
258
|
+
(foundation → flows → screens → scenarios → build → audit → plan) instead of
|
|
259
|
+
the pre-flows one.
|
|
260
|
+
- `/ux`'s own description advertised "foundation/scenarios/audits"; menu item 3
|
|
261
|
+
said "design user flows" without mentioning that it also registers screens.
|
|
262
|
+
Inspect now also reports unexecuted plans in `docs/ux/plans/`.
|
|
263
|
+
- `ux-flows` Design had visual identity, wireframes, and Figma crammed into one
|
|
264
|
+
numbered step; identity is now its own step, before anything gets drawn.
|
|
265
|
+
|
|
266
|
+
### Added
|
|
267
|
+
- **[CONTRIBUTING.md](CONTRIBUTING.md)** — repo layout (including *why* the
|
|
268
|
+
contracts are duplicated per skill), the edit → sync → validate loop, the
|
|
269
|
+
conventions, how to test a change from a packed tarball rather than the
|
|
270
|
+
working tree, and the release checklist.
|
|
271
|
+
- Issue templates for bug reports and ideas, both asking for the thing that
|
|
272
|
+
actually resolves a report: the file that says otherwise, and the check that
|
|
273
|
+
would fail.
|
|
274
|
+
- Validator check: the plugin description in `marketplace.json` must equal the
|
|
275
|
+
one in `plugin.json` — the ecosystem requires both copies, so the duplication
|
|
276
|
+
gets a check instead of trust.
|
|
277
|
+
- `package.json` gains a `bugs` URL; `.gitignore` covers `npm pack` tarballs.
|
|
278
|
+
|
|
279
|
+
### Changed
|
|
280
|
+
- **README restructured for a first-time reader**: what goes wrong and what
|
|
281
|
+
super-ux does about it, the chain diagram, what you get, quick start per
|
|
282
|
+
channel, the hard rule, the typical cycle, companions, then the internals
|
|
283
|
+
(skills, commands, and a second table for the contracts). Value first,
|
|
284
|
+
reference last.
|
|
285
|
+
- Manifest descriptions rewritten to describe the current system — the whole
|
|
286
|
+
chain, the four skills, the linter, and the style pack — instead of the
|
|
287
|
+
0.17-era feature list.
|
|
288
|
+
- The historical `docs/superpowers/` spec and plan carry a banner marking them
|
|
289
|
+
as v0.1.0 provenance, with pointers to the live contract; they described two
|
|
290
|
+
skills and four commands and are not maintained.
|
|
291
|
+
|
|
292
|
+
## 0.22.0 — 2026-07-28
|
|
293
|
+
|
|
294
|
+
### Added
|
|
295
|
+
- **The visual layer has an owner: the `sheleg-design` companion.** super-ux
|
|
296
|
+
decided what every screen must contain and which craft floors it had to
|
|
297
|
+
clear, then left the actual look to be invented frame by frame — the visual
|
|
298
|
+
half of the drift this system exists to prevent. New reference
|
|
299
|
+
[`visual-identity.md`](plugins/super-ux/skills/references/visual-identity.md)
|
|
300
|
+
makes one **style pack** the identity for the whole product: picked with the
|
|
301
|
+
sheleg-design skill (`workbench` for product UI, dashboards and tools;
|
|
302
|
+
`instrument-console`; `editorial-luxury`; or a new pack authored on its
|
|
303
|
+
contract), recorded once, obeyed everywhere. A cinematic scroll-driven
|
|
304
|
+
landing also takes that skill's motion methodology.
|
|
305
|
+
- **`Style pack` field** in `screens.md` → Design system (contract + template).
|
|
306
|
+
One owner per fact: the pack is named there and referenced from everywhere
|
|
307
|
+
else, with its token file location beside it.
|
|
308
|
+
- **Wired into every design entry point** — `ux-flows` Design (before a frame
|
|
309
|
+
is drawn, not after), `/ux` step 0 beside the Figma question, `/ux-flows`,
|
|
310
|
+
the Figma design loop (pack tokens become the Figma variable collections),
|
|
311
|
+
the Cursor `ux-flows` rule, the hard rule in `templates/claude-rule.md` and
|
|
312
|
+
`/ux-rule`, and the seeded `docs/ux/README.md`.
|
|
313
|
+
- **Audited like any other record.** When a `Style pack` is recorded, the deep
|
|
314
|
+
audit's practice pass checks the built UI honors it — tokens referenced
|
|
315
|
+
instead of raw values, the pack's bans respected, dark mode from its twin;
|
|
316
|
+
a screen ignoring the recorded pack is `drifted`. No pack and an improvised
|
|
317
|
+
visual layer → the companion is suggested once, as an opportunity finding.
|
|
318
|
+
- Validator guard: the hard rule embedded in `/ux-rule` must be byte-identical
|
|
319
|
+
to `templates/claude-rule.md`. They had already drifted apart in wording —
|
|
320
|
+
two copies of a rule is the exact failure the plugin preaches against.
|
|
321
|
+
|
|
322
|
+
### Changed
|
|
323
|
+
- Recommendation, not dependency, in both directions: one offer with its
|
|
324
|
+
one-time install, then the user's answer stands and the chain continues on
|
|
325
|
+
platform defaults. A project that already has a design system records that
|
|
326
|
+
instead — two identities are worse than any one.
|
|
327
|
+
- Conflict rule stated where both sides live (`practice-selection.md`,
|
|
328
|
+
`ux-design-principles.md`): the style pack owns identity and wins on look;
|
|
329
|
+
BP-079..090 are floors (contrast, tap targets, line length, spacing rhythm)
|
|
330
|
+
and win on safety. The conflict and its resolution go in the compliance
|
|
331
|
+
table.
|
|
332
|
+
- README gains a Companions table (sheleg-design at VISUALIZE/BUILD,
|
|
333
|
+
task-pipeline after a plan) and the hard rule gains its style-pack bullet.
|
|
334
|
+
|
|
335
|
+
## 0.21.0 — 2026-07-28
|
|
336
|
+
|
|
337
|
+
Full-repo consistency pass: every file read, every contradiction between the
|
|
338
|
+
contract, the skills, the Cursor rules, the templates, and the tooling fixed.
|
|
339
|
+
|
|
340
|
+
### Fixed
|
|
341
|
+
- **`npx super-ux --cursor` crashed for every npm user.** `package.json`
|
|
342
|
+
`files[]` never shipped `plugins/super-ux/scripts/ux_lint.py`, so the CLI
|
|
343
|
+
installed the rules and templates and then died with an ENOENT stack trace
|
|
344
|
+
while copying the linter (reproduced against a packed 0.20.0 tarball). The
|
|
345
|
+
script is now in `files[]`, and a missing linter degrades to a warning with
|
|
346
|
+
a download link instead of a crash.
|
|
347
|
+
- **The linter mis-read story priorities.** `ST-NNN` bodies were scanned with
|
|
348
|
+
a fixed 600-character window, so a neighboring story's `**Priority:**`
|
|
349
|
+
line leaked into the previous story and produced false "must/should story
|
|
350
|
+
has no scenario" warnings. The scan now stops at the next heading.
|
|
351
|
+
- **The UX-plan example rendered broken.** The `` ```markdown `` block in the
|
|
352
|
+
contract contained a nested three-backtick fence, which closed the outer
|
|
353
|
+
block early and inverted the rest of the section; it is a four-backtick
|
|
354
|
+
fence now.
|
|
355
|
+
- Duplicate `refs(flows, "SCR")` computation in the linter collapsed into one.
|
|
356
|
+
- `release.yml` referenced a `pipeline.example.json` path that does not exist
|
|
357
|
+
in this repo and installed `jsonschema` the stdlib-only validator never
|
|
358
|
+
used.
|
|
359
|
+
|
|
360
|
+
### Changed
|
|
361
|
+
- **One owner per fact:** `**Design system:**` is gone from `foundation.md` →
|
|
362
|
+
Design tooling (it contradicted `screens.md`, `figma-integration.md`, and
|
|
363
|
+
the templates). Foundation records the Figma on/off choice and the file
|
|
364
|
+
URL; `screens.md` → Design system records the library, tokens, components,
|
|
365
|
+
and assets. `figma-structure.md` and `system-map.md` say the same thing.
|
|
366
|
+
- Cursor rules resynced with ux-contract v4: `ux-flows` documented a stale
|
|
367
|
+
`Screens & states` table (it is `Screens traversed` + the `screens.md`
|
|
368
|
+
entry shape); `ux-scenarios` was missing the `Alt paths` field and the
|
|
369
|
+
monetization entries of the per-product checklist; `ux-audit` said "git SHA
|
|
370
|
+
of scenarios.md" (the contract says `docs/ux`) and never mentioned
|
|
371
|
+
flow/screen conformance or the `coverage` scope; `super-ux` told Cursor
|
|
372
|
+
users to run `/ux-lint`, a Claude-Code-only command.
|
|
373
|
+
- `/ux` reports every layer (it said "all three"); `/ux-init` is incremental —
|
|
374
|
+
existing layers are left untouched and only the missing ones initialized,
|
|
375
|
+
instead of talking about "both files" from a two-file era; README no longer
|
|
376
|
+
says the skills CLI installs "both skills".
|
|
377
|
+
- `docs/ux/plans/` is created by the installers, `/ux-rule`, and `/ux`
|
|
378
|
+
alongside `audits/` — the contract has required the directory since v4.
|
|
379
|
+
- `install.sh --help` described seeding one file; it seeds the whole skeleton
|
|
380
|
+
plus the linter. README's Development section documents the four-way
|
|
381
|
+
version sync and the `sync_references.py` step.
|
|
382
|
+
|
|
383
|
+
### Added
|
|
384
|
+
- Validator check: every asset `bin/super-ux.js` copies must be covered by
|
|
385
|
+
`package.json` `files[]`, parsed from the CLI source rather than a
|
|
386
|
+
hand-kept list — the packaging regression above cannot come back silently.
|
|
387
|
+
- `templates/flows.md` carries the contract's `Wireframe` field.
|
|
388
|
+
|
|
389
|
+
## 0.20.0 — 2026-07-28
|
|
390
|
+
|
|
391
|
+
### Changed
|
|
392
|
+
- Skill descriptions restructured English-first: every Russian trigger now sits
|
|
393
|
+
beside its English equivalent (`"user flow" / "юзер флоу"`) instead of forming
|
|
394
|
+
a Russian-only tail, and the `/ux` routing table follows the same pairing.
|
|
395
|
+
- README is English-only: the Russian section is gone, replaced by a plain
|
|
396
|
+
statement of what the skill gives you and an author/links block.
|
|
397
|
+
|
|
398
|
+
### Added
|
|
399
|
+
- Validator enforces the three description canon rules on every skill —
|
|
400
|
+
`Use when` opening, Russian trigger aliases present, front-matter under 1024
|
|
401
|
+
characters. Twelve new checks; all four skills pass.
|
|
402
|
+
|
|
3
403
|
## 0.19.0 — 2026-07-25
|
|
4
404
|
|
|
5
405
|
Review pass — the contracts were not reaching non-Claude agents.
|