super-ux 0.30.0 → 0.30.2
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 +39 -1
- package/bin/super-ux.js +26 -0
- package/package.json +1 -1
- package/templates/brand/voice.md +1 -1
package/CHANGELOG.md
CHANGED
|
@@ -1,6 +1,44 @@
|
|
|
1
1
|
# Changelog
|
|
2
2
|
|
|
3
|
-
## 0.30.
|
|
3
|
+
## 0.30.2 — 2026-08-05
|
|
4
|
+
|
|
5
|
+
### Added
|
|
6
|
+
- **The installer offers the family routing block.** After `npx super-ux
|
|
7
|
+
--cursor`, it delegates to `npx --no-install sshlg-skills routers --member
|
|
8
|
+
super-ux`, which writes the `super-ux` and `copywriting` routers into the
|
|
9
|
+
global agent instructions so both engage by default in every project.
|
|
10
|
+
Delegated rather than reimplemented: the block carries a precedence table
|
|
11
|
+
describing what the machine actually has, and a lone member rendering it
|
|
12
|
+
would list routers nobody installed. When the launcher is absent the
|
|
13
|
+
installer prints the one command instead of failing, and `--no-install`
|
|
14
|
+
keeps it from downloading a package nobody asked for.
|
|
15
|
+
|
|
16
|
+
— 2026-08-05
|
|
17
|
+
|
|
18
|
+
### Fixed
|
|
19
|
+
- **`templates/brand/voice.md` told projects to write `PER-NN` where the UX
|
|
20
|
+
contract numbers personas `P-NN`.** `B004` traces `Derived-from` against
|
|
21
|
+
`foundation.md`, so a project following our own template earned a false
|
|
22
|
+
blocking error — the failure mode that teaches people to ignore a linter.
|
|
23
|
+
Shipped in 0.30.0; found by the code graph built afterwards.
|
|
24
|
+
- Four check codes (`B005`, `B054`, `B060`, `B072`) shipped with no fixture
|
|
25
|
+
behind them while the suite was green and the count looked right.
|
|
26
|
+
|
|
27
|
+
### Added
|
|
28
|
+
- **`brand-contract.md` now owns all 33 check codes** with their severities.
|
|
29
|
+
Eighteen were documented only in the linter's source, in a repo whose canon
|
|
30
|
+
is one owner per fact.
|
|
31
|
+
- **`validate_brand_lint_coverage`** — every code the linter can emit must have
|
|
32
|
+
a fixture and a contract row. The audit finding became a gate rather than a
|
|
33
|
+
ledger entry.
|
|
34
|
+
- `system-map.md` names the brand reference shelf. It names rather than links:
|
|
35
|
+
a link would make every skill ship all ten files, and the map's job is
|
|
36
|
+
telling you what exists.
|
|
37
|
+
- The code graph itself (`graphify-out/`), with `.graphifyignore` excluding the
|
|
38
|
+
115 sync_references copies whose hubs would describe the distribution
|
|
39
|
+
mechanism rather than the design.
|
|
40
|
+
|
|
41
|
+
— 2026-08-05
|
|
4
42
|
|
|
5
43
|
The verbal identity layer. `docs/ux/` decides what the product does; the new
|
|
6
44
|
`docs/brand/` decides how it speaks — one voice, many registers, and a linter
|
package/bin/super-ux.js
CHANGED
|
@@ -331,6 +331,31 @@ async function menu() {
|
|
|
331
331
|
if (keys.includes('skills')) installSkillsCli();
|
|
332
332
|
}
|
|
333
333
|
|
|
334
|
+
/**
|
|
335
|
+
* Ask the launcher to write the family's routing block.
|
|
336
|
+
*
|
|
337
|
+
* Delegated rather than reimplemented. The block lists several routers and a
|
|
338
|
+
* precedence table describing what this machine actually has, so a lone
|
|
339
|
+
* member rendering it would produce a table for routers nobody installed.
|
|
340
|
+
* `--no-install` keeps this from silently downloading a package the user did
|
|
341
|
+
* not ask for; when the launcher is absent we print the one command instead.
|
|
342
|
+
*/
|
|
343
|
+
function offerRouters() {
|
|
344
|
+
const { spawnSync } = require('child_process');
|
|
345
|
+
const r = spawnSync(
|
|
346
|
+
'npx',
|
|
347
|
+
['--no-install', 'sshlg-skills', 'routers', '--member', 'super-ux'],
|
|
348
|
+
{ stdio: 'inherit', shell: process.platform === 'win32' }
|
|
349
|
+
);
|
|
350
|
+
if (r.status !== 0) {
|
|
351
|
+
console.log(
|
|
352
|
+
'\nЧтобы скилы включались по умолчанию во всех проектах, допиши блок\n' +
|
|
353
|
+
'роутинга в глобальные инструкции агента:\n\n' +
|
|
354
|
+
' npx --yes sshlg-skills routers --member super-ux\n'
|
|
355
|
+
);
|
|
356
|
+
}
|
|
357
|
+
}
|
|
358
|
+
|
|
334
359
|
function main() {
|
|
335
360
|
const args = process.argv.slice(2);
|
|
336
361
|
if (args[0] === '--help' || args[0] === '-h') {
|
|
@@ -349,6 +374,7 @@ function main() {
|
|
|
349
374
|
const force = args.includes('--force');
|
|
350
375
|
const dirArg = args[1] && args[1] !== '--force' ? args[1] : '.';
|
|
351
376
|
installCursor(path.resolve(dirArg), force);
|
|
377
|
+
offerRouters();
|
|
352
378
|
}
|
|
353
379
|
|
|
354
380
|
main();
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "super-ux",
|
|
3
|
-
"version": "0.30.
|
|
3
|
+
"version": "0.30.2",
|
|
4
4
|
"description": "Scenario-driven UI development for AI agents (Claude Code, Cursor, 70+ agents): a versioned design chain in docs/ux/, a scenario-first hard rule, a deterministic drift linter, and evidence-backed UX audits. This package is the installer CLI.",
|
|
5
5
|
"bin": {
|
|
6
6
|
"super-ux": "bin/super-ux.js"
|
package/templates/brand/voice.md
CHANGED
|
@@ -2,7 +2,7 @@ Contract: brand-contract v1
|
|
|
2
2
|
Voice pack: <pack id from voice-packs.md, or `custom`>
|
|
3
3
|
Locales: <en (primary)>
|
|
4
4
|
Locale parity threshold: 80%
|
|
5
|
-
Derived-from: <
|
|
5
|
+
Derived-from: <P-NN, JTBD-NN from docs/ux/foundation.md — or `inferred`>
|
|
6
6
|
Status: draft
|
|
7
7
|
Last calibrated: <YYYY-MM-DD>
|
|
8
8
|
|