super-ux 0.3.0
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 +41 -0
- package/LICENSE +21 -0
- package/README.md +108 -0
- package/bin/super-ux.js +92 -0
- package/cursor/rules/super-ux.mdc +17 -0
- package/cursor/rules/ux-audit.mdc +34 -0
- package/cursor/rules/ux-scenarios.mdc +48 -0
- package/package.json +13 -0
- package/templates/audit-report.md +26 -0
- package/templates/claude-rule.md +11 -0
- package/templates/scenarios.md +38 -0
package/CHANGELOG.md
ADDED
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
# Changelog
|
|
2
|
+
|
|
3
|
+
All notable changes to this project are documented in this file. The format
|
|
4
|
+
follows [Keep a Changelog](https://keepachangelog.com/en/1.1.0/); versions
|
|
5
|
+
follow [SemVer](https://semver.org/spec/v2.0.0.html).
|
|
6
|
+
|
|
7
|
+
## [0.3.0] - 2026-07-19
|
|
8
|
+
|
|
9
|
+
### Added
|
|
10
|
+
|
|
11
|
+
- npx installer: `npx github:ssheleg/super-ux --cursor [project-dir]`
|
|
12
|
+
(`bin/super-ux.js`, cross-platform Node CLI, no dependencies) — same
|
|
13
|
+
behavior as `install.sh`, plus `package.json` for npm/npx distribution.
|
|
14
|
+
- Validator now checks `package.json` (name, bin shebang, files whitelist)
|
|
15
|
+
and includes its version in the version-sync check.
|
|
16
|
+
|
|
17
|
+
## [0.2.0] - 2026-07-19
|
|
18
|
+
|
|
19
|
+
### Added
|
|
20
|
+
|
|
21
|
+
- `/ux` — one-command entry point: inspects the project, installs the hard
|
|
22
|
+
rule and seeds/initializes the scenario base if anything is missing,
|
|
23
|
+
otherwise prints a status report and suggests exactly one next action.
|
|
24
|
+
Idempotent; `/ux-init`, `/ux-update`, `/ux-audit`, `/ux-rule` remain as
|
|
25
|
+
direct controls.
|
|
26
|
+
|
|
27
|
+
## [0.1.0] - 2026-07-19
|
|
28
|
+
|
|
29
|
+
### Added
|
|
30
|
+
|
|
31
|
+
- Claude Code plugin `super-ux`: skills `ux-scenarios` (maintain the scenario
|
|
32
|
+
base) and `ux-audit` (scenario audit loop); commands `/ux-init`,
|
|
33
|
+
`/ux-update`, `/ux-audit`, `/ux-rule`.
|
|
34
|
+
- Scenario format contract v1
|
|
35
|
+
(`plugins/super-ux/skills/references/scenario-format.md`).
|
|
36
|
+
- Cursor rules: `cursor/rules/super-ux.mdc` (always-on hard rule),
|
|
37
|
+
`ux-scenarios.mdc`, `ux-audit.mdc`.
|
|
38
|
+
- Templates: scenario base skeleton, audit report skeleton, CLAUDE.md hard
|
|
39
|
+
rule snippet.
|
|
40
|
+
- `install.sh --cursor <project-dir>` installer for Cursor projects.
|
|
41
|
+
- Repo validator (`test/validate.py`) and GitHub Actions CI.
|
package/LICENSE
ADDED
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
MIT License
|
|
2
|
+
|
|
3
|
+
Copyright (c) 2026 ssheleg
|
|
4
|
+
|
|
5
|
+
Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
6
|
+
of this software and associated documentation files (the "Software"), to deal
|
|
7
|
+
in the Software without restriction, including without limitation the rights
|
|
8
|
+
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
|
9
|
+
copies of the Software, and to permit persons to whom the Software is
|
|
10
|
+
furnished to do so, subject to the following conditions:
|
|
11
|
+
|
|
12
|
+
The above copyright notice and this permission notice shall be included in all
|
|
13
|
+
copies or substantial portions of the Software.
|
|
14
|
+
|
|
15
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
16
|
+
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
17
|
+
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
18
|
+
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
19
|
+
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|
20
|
+
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
|
21
|
+
SOFTWARE.
|
package/README.md
ADDED
|
@@ -0,0 +1,108 @@
|
|
|
1
|
+
# super-ux
|
|
2
|
+
|
|
3
|
+
Scenario-driven UI development for AI agents (Claude Code + Cursor).
|
|
4
|
+
|
|
5
|
+
AI agents generate poor interfaces because they build UI without a model of
|
|
6
|
+
user behavior: screens appear feature by feature, while error states, empty
|
|
7
|
+
states, and cross-feature flows get invented ad hoc or skipped. **super-ux**
|
|
8
|
+
fixes the process, not the symptom — a versioned base of UX scenarios becomes
|
|
9
|
+
the source of truth for all user-facing behavior. Scenarios are written and
|
|
10
|
+
validated *before* UI is built, updated in the same change as any behavior
|
|
11
|
+
change, and used as the checklist for recurring, evidence-backed audits of
|
|
12
|
+
the codebase.
|
|
13
|
+
|
|
14
|
+
```mermaid
|
|
15
|
+
flowchart LR
|
|
16
|
+
A[Feature idea] --> B[Draft scenarios]
|
|
17
|
+
B --> C{Validate vs existing base:\nconflicts, overlaps, gaps}
|
|
18
|
+
C -->|approved| D[Design & build UI]
|
|
19
|
+
D --> E[Update scenarios\nin the same change]
|
|
20
|
+
E --> F[/ux-audit: batched check\nof code vs every scenario/]
|
|
21
|
+
F --> G[Audit report + findings]
|
|
22
|
+
G --> H[Plan fixes] --> D
|
|
23
|
+
```
|
|
24
|
+
|
|
25
|
+
## What's inside
|
|
26
|
+
|
|
27
|
+
| Piece | Purpose |
|
|
28
|
+
|---|---|
|
|
29
|
+
| skill `ux-scenarios` | Maintain `docs/ux/scenarios.md`: init (greenfield interview or existing-code inventory sweep), update on every change, validate for conflicts and coverage |
|
|
30
|
+
| skill `ux-audit` | Batched audit loop: trace every scenario through the code, verdicts PASS/PARTIAL/FAIL/BLOCKED with `file:line` evidence, report into `docs/ux/audits/` |
|
|
31
|
+
| `/ux` | **The one command**: sets everything up if missing (rule, `docs/ux/`, initial base), otherwise status report + one suggested next action. Idempotent |
|
|
32
|
+
| `/ux-init` `/ux-update` `/ux-audit` `/ux-rule` | Direct controls over the skills; `/ux-rule` installs the hard rule into the project's CLAUDE.md |
|
|
33
|
+
| `cursor/rules/*.mdc` | The same methodology for Cursor (always-on hard rule + two agent-requested rules) |
|
|
34
|
+
| `templates/` | Skeletons for the scenario base, the audit report, and the CLAUDE.md rule snippet |
|
|
35
|
+
|
|
36
|
+
The format all of them share is locked in
|
|
37
|
+
[scenario-format.md](plugins/super-ux/skills/references/scenario-format.md):
|
|
38
|
+
scenario entries with stable `SCN-NNN` IDs, personas, per-feature and
|
|
39
|
+
per-product completeness checklists, the `draft → validated → implemented`
|
|
40
|
+
lifecycle, audit verdicts and severities.
|
|
41
|
+
|
|
42
|
+
## The hard rule
|
|
43
|
+
|
|
44
|
+
- `docs/ux/scenarios.md` is the source of truth for all user-facing behavior.
|
|
45
|
+
- Any change touching user-facing behavior updates the scenario base **in the
|
|
46
|
+
same change**.
|
|
47
|
+
- Any new feature or project **starts** with scenarios: draft, validate
|
|
48
|
+
against the existing base, approve — only then design and build UI.
|
|
49
|
+
|
|
50
|
+
## Install
|
|
51
|
+
|
|
52
|
+
### Claude Code
|
|
53
|
+
|
|
54
|
+
```
|
|
55
|
+
/plugin marketplace add ssheleg/super-ux
|
|
56
|
+
/plugin install super-ux@super-ux
|
|
57
|
+
```
|
|
58
|
+
|
|
59
|
+
Then in your project: `/ux`. That's it — it installs the hard rule, seeds
|
|
60
|
+
`docs/ux/`, builds the scenario base if empty, and on every later run just
|
|
61
|
+
reports status and the next action.
|
|
62
|
+
|
|
63
|
+
### Cursor
|
|
64
|
+
|
|
65
|
+
```sh
|
|
66
|
+
npx github:ssheleg/super-ux --cursor /path/to/your/project
|
|
67
|
+
```
|
|
68
|
+
|
|
69
|
+
(or clone and run `./install.sh --cursor <dir>` — same behavior.) Copies the
|
|
70
|
+
three rules into `.cursor/rules/` and seeds `docs/ux/scenarios.md`. An
|
|
71
|
+
existing scenario base is never overwritten; re-run with `--force` to update
|
|
72
|
+
rules after a new release.
|
|
73
|
+
|
|
74
|
+
## Typical cycle
|
|
75
|
+
|
|
76
|
+
1. `/ux` — first run sets everything up and builds the base (greenfield:
|
|
77
|
+
interview first, UI later; existing code: inventory sweep, scenarios for
|
|
78
|
+
everything found, gaps flagged in both directions).
|
|
79
|
+
2. Work normally; every user-facing change updates the base in the same
|
|
80
|
+
change (the always-on rule catches it; `/ux-update` for manual control).
|
|
81
|
+
3. `/ux` any time — status + the one next action; `/ux-audit` — batched
|
|
82
|
+
verification of code vs scenarios; report lands in
|
|
83
|
+
`docs/ux/audits/YYYY-MM-DD.md`, statuses update in the base.
|
|
84
|
+
4. Turn FAIL/PARTIAL findings into a plan with your planning workflow; build;
|
|
85
|
+
repeat.
|
|
86
|
+
|
|
87
|
+
## Development
|
|
88
|
+
|
|
89
|
+
`python3 test/validate.py` checks repo consistency (manifests, versions,
|
|
90
|
+
front-matter, templates, links); CI runs it on every push and PR. Versioning
|
|
91
|
+
is semver; bump `marketplace.json` + `plugin.json` + `CHANGELOG.md` together
|
|
92
|
+
— the validator enforces the sync.
|
|
93
|
+
|
|
94
|
+
## По-русски (коротко)
|
|
95
|
+
|
|
96
|
+
Проблема: агенты генерируют плохие интерфейсы, потому что строят UI без
|
|
97
|
+
модели поведения пользователя. super-ux делает базу UX-сценариев
|
|
98
|
+
(`docs/ux/scenarios.md`) источником правды: сценарии пишутся и валидируются
|
|
99
|
+
**до** интерфейса, обновляются тем же изменением, что и поведение, и служат
|
|
100
|
+
чек-листом для регулярных аудитов кода (`/ux-audit`) с вердиктами
|
|
101
|
+
PASS/PARTIAL/FAIL/BLOCKED и доказательствами `file:line`. Установка: в
|
|
102
|
+
Claude Code — `/plugin marketplace add ssheleg/super-ux`, в Cursor —
|
|
103
|
+
`npx github:ssheleg/super-ux --cursor <проект>`. Дальше одна команда — `/ux`: сама ставит
|
|
104
|
+
правило и базу, а при повторных запусках показывает статус и следующий шаг.
|
|
105
|
+
|
|
106
|
+
## License
|
|
107
|
+
|
|
108
|
+
MIT © ssheleg
|
package/bin/super-ux.js
ADDED
|
@@ -0,0 +1,92 @@
|
|
|
1
|
+
#!/usr/bin/env node
|
|
2
|
+
/*
|
|
3
|
+
* super-ux installer CLI.
|
|
4
|
+
* Cross-platform equivalent of install.sh: copies Cursor rules into a target
|
|
5
|
+
* project and seeds the docs/ux skeleton. Claude Code needs no installer —
|
|
6
|
+
* see usage.
|
|
7
|
+
*/
|
|
8
|
+
'use strict';
|
|
9
|
+
|
|
10
|
+
const fs = require('fs');
|
|
11
|
+
const path = require('path');
|
|
12
|
+
|
|
13
|
+
const ROOT = path.resolve(__dirname, '..');
|
|
14
|
+
|
|
15
|
+
function usage() {
|
|
16
|
+
console.log(`super-ux installer
|
|
17
|
+
|
|
18
|
+
Usage:
|
|
19
|
+
npx github:ssheleg/super-ux --cursor [project-dir] [--force]
|
|
20
|
+
npx super-ux --cursor [project-dir] [--force] (once published to npm)
|
|
21
|
+
|
|
22
|
+
Copies cursor/rules/*.mdc into <project-dir>/.cursor/rules/ (default:
|
|
23
|
+
current directory) and seeds docs/ux/scenarios.md from templates/ if absent.
|
|
24
|
+
An existing scenario base is NEVER overwritten. Existing rule files are
|
|
25
|
+
skipped unless --force is given.
|
|
26
|
+
|
|
27
|
+
Claude Code (no installer needed):
|
|
28
|
+
/plugin marketplace add ssheleg/super-ux
|
|
29
|
+
/plugin install super-ux@super-ux
|
|
30
|
+
Then in your project: /ux`);
|
|
31
|
+
}
|
|
32
|
+
|
|
33
|
+
function fail(message) {
|
|
34
|
+
console.error(`error: ${message}`);
|
|
35
|
+
process.exit(1);
|
|
36
|
+
}
|
|
37
|
+
|
|
38
|
+
function installCursor(target, force) {
|
|
39
|
+
if (!fs.existsSync(target) || !fs.statSync(target).isDirectory()) {
|
|
40
|
+
fail(`'${target}' is not a directory`);
|
|
41
|
+
}
|
|
42
|
+
|
|
43
|
+
const rulesSrc = path.join(ROOT, 'cursor', 'rules');
|
|
44
|
+
const rulesDst = path.join(target, '.cursor', 'rules');
|
|
45
|
+
fs.mkdirSync(rulesDst, { recursive: true });
|
|
46
|
+
|
|
47
|
+
let installed = 0;
|
|
48
|
+
let skipped = 0;
|
|
49
|
+
const rules = fs.readdirSync(rulesSrc).filter((f) => f.endsWith('.mdc')).sort();
|
|
50
|
+
if (rules.length === 0) fail(`no .mdc rules found in ${rulesSrc}`);
|
|
51
|
+
|
|
52
|
+
for (const name of rules) {
|
|
53
|
+
const dst = path.join(rulesDst, name);
|
|
54
|
+
if (fs.existsSync(dst) && !force) {
|
|
55
|
+
console.log(`skip: ${dst} exists (use --force to overwrite)`);
|
|
56
|
+
skipped += 1;
|
|
57
|
+
} else {
|
|
58
|
+
fs.copyFileSync(path.join(rulesSrc, name), dst);
|
|
59
|
+
console.log(`install: ${dst}`);
|
|
60
|
+
installed += 1;
|
|
61
|
+
}
|
|
62
|
+
}
|
|
63
|
+
|
|
64
|
+
const base = path.join(target, 'docs', 'ux', 'scenarios.md');
|
|
65
|
+
if (fs.existsSync(base)) {
|
|
66
|
+
console.log(`keep: ${base} exists (never overwritten)`);
|
|
67
|
+
} else {
|
|
68
|
+
fs.mkdirSync(path.join(target, 'docs', 'ux', 'audits'), { recursive: true });
|
|
69
|
+
fs.copyFileSync(path.join(ROOT, 'templates', 'scenarios.md'), base);
|
|
70
|
+
console.log(`seed: ${base}`);
|
|
71
|
+
}
|
|
72
|
+
|
|
73
|
+
console.log(`done: ${installed} installed, ${skipped} skipped`);
|
|
74
|
+
}
|
|
75
|
+
|
|
76
|
+
function main() {
|
|
77
|
+
const args = process.argv.slice(2);
|
|
78
|
+
if (args.length === 0 || args[0] === '--help' || args[0] === '-h') {
|
|
79
|
+
usage();
|
|
80
|
+
return;
|
|
81
|
+
}
|
|
82
|
+
if (args[0] !== '--cursor') {
|
|
83
|
+
console.error(`error: unknown mode '${args[0]}'`);
|
|
84
|
+
usage();
|
|
85
|
+
process.exit(1);
|
|
86
|
+
}
|
|
87
|
+
const force = args.includes('--force');
|
|
88
|
+
const dirArg = args[1] && args[1] !== '--force' ? args[1] : '.';
|
|
89
|
+
installCursor(path.resolve(dirArg), force);
|
|
90
|
+
}
|
|
91
|
+
|
|
92
|
+
main();
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
---
|
|
2
|
+
description: "super-ux hard rule: scenario-driven UI development"
|
|
3
|
+
alwaysApply: true
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
# UX scenarios — hard rule (super-ux)
|
|
7
|
+
|
|
8
|
+
- `docs/ux/scenarios.md` is the source of truth for all user-facing behavior.
|
|
9
|
+
- Any change that touches user-facing behavior MUST update
|
|
10
|
+
`docs/ux/scenarios.md` in the same change (add/adjust scenarios, statuses,
|
|
11
|
+
coverage). New user-facing behavior with no scenario is a blocker, not a
|
|
12
|
+
warning.
|
|
13
|
+
- Any new feature or project STARTS with scenarios: draft them, validate
|
|
14
|
+
against existing scenarios (conflicts, overlaps, gaps), get them approved —
|
|
15
|
+
only then design and build UI.
|
|
16
|
+
- Scenario maintenance workflows: see the `ux-scenarios` rule. Codebase
|
|
17
|
+
audits against the base: see the `ux-audit` rule.
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
---
|
|
2
|
+
description: "Audit the codebase against docs/ux/scenarios.md: apply for UX audits, scenario compliance checks, pre-release UX verification, or when asked to verify that all buttons/states/errors exist"
|
|
3
|
+
alwaysApply: false
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
# ux-audit — Scenario Audit Loop
|
|
7
|
+
|
|
8
|
+
Verify the code delivers every scenario in `docs/ux/scenarios.md`. Output: a
|
|
9
|
+
report in `docs/ux/audits/YYYY-MM-DD[-scope].md` + updated `Last audit`
|
|
10
|
+
column in the base. If the base is missing, create it first (ux-scenarios
|
|
11
|
+
rule) — there is nothing to audit against.
|
|
12
|
+
|
|
13
|
+
**Evidence discipline:** every verdict cites `file:line`. Cannot verify →
|
|
14
|
+
verdict BLOCKED with the exact reason. Never guess, never a courtesy PASS.
|
|
15
|
+
|
|
16
|
+
## Loop
|
|
17
|
+
|
|
18
|
+
1. Read the base; scope = all | feature:<name> | ID range; note the git SHA
|
|
19
|
+
of scenarios.md for the report header; skip retired scenarios.
|
|
20
|
+
2. Batch by feature, ~5–8 scenarios per batch; list batches up front.
|
|
21
|
+
3. Per scenario check against the code: entry point reachable; every step
|
|
22
|
+
implemented; every listed UI element present and wired; every listed
|
|
23
|
+
state (loading/empty/error/success) has a rendering branch; every error
|
|
24
|
+
surfaced honestly (no silent catch, no fake success) with the described
|
|
25
|
+
recovery; expected result observably occurs. Gaps → findings
|
|
26
|
+
`[AUD-YYYY-MM-DD-NN] (critical|major|minor) description -> suggested fix`.
|
|
27
|
+
4. Verdicts: PASS (complete), PARTIAL (flow exists, gaps), FAIL (missing or
|
|
28
|
+
broken), BLOCKED (cannot verify — say why).
|
|
29
|
+
5. Write the report batch by batch: header (scope, method, base SHA),
|
|
30
|
+
Summary (totals, top issues, prioritized next actions), per-batch
|
|
31
|
+
verdicts with evidence, findings-register table.
|
|
32
|
+
6. Update the base: `Last audit` = `YYYY-MM-DD VERDICT`; validated →
|
|
33
|
+
implemented where PASSed. Do not edit scenario content during an audit.
|
|
34
|
+
7. Offer (don't auto-run) to turn FAIL/PARTIAL findings into a work plan.
|
|
@@ -0,0 +1,48 @@
|
|
|
1
|
+
---
|
|
2
|
+
description: "Maintain docs/ux/scenarios.md (the UX scenario base): apply when creating or updating UX scenarios, starting any new feature or project, changing user-facing behavior, or onboarding a codebase into scenario-driven development"
|
|
3
|
+
alwaysApply: false
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
# ux-scenarios — Maintain the Scenario Base
|
|
7
|
+
|
|
8
|
+
`docs/ux/scenarios.md` describes everything the user can do, see, and hit —
|
|
9
|
+
every feature, button, state, error, result. Keep it true.
|
|
10
|
+
|
|
11
|
+
## File structure (scenario-format v1)
|
|
12
|
+
|
|
13
|
+
Title, then header comment, then: **Index** table
|
|
14
|
+
(`| ID | Title | Feature | Persona | Status | Last audit |`), **Personas**
|
|
15
|
+
(1–3 sentences each), **Scenarios** grouped by feature.
|
|
16
|
+
|
|
17
|
+
Scenario entry fields (exact names): `Persona`, `Feature`, `Entry point`,
|
|
18
|
+
`Preconditions`, `Steps` (numbered, one user action each), `Expected result`
|
|
19
|
+
(observable), `UI elements` (every button/field/link/dialog/toast involved —
|
|
20
|
+
this is what audits check), `States covered` (loading|empty|error|success),
|
|
21
|
+
`Errors & recovery` (each failure: what the user sees, how they recover),
|
|
22
|
+
`Status` (draft|validated|implemented|retired), `Coverage` (file:line or
|
|
23
|
+
`none yet`).
|
|
24
|
+
|
|
25
|
+
Rules: IDs `SCN-NNN`, sequential, never reused; retired entries are kept,
|
|
26
|
+
never deleted. Lifecycle: draft → validated (human approval) → implemented
|
|
27
|
+
(audit-confirmed); changed scenarios drop back to draft.
|
|
28
|
+
|
|
29
|
+
Per-feature completeness: happy path, every error path, empty state, visible
|
|
30
|
+
loading, destructive-action confirmation, returning-user variant.
|
|
31
|
+
Per-product: first-run onboarding, every core flow, settings, multi-entity
|
|
32
|
+
flows (e.g. second project), account/data lifecycle.
|
|
33
|
+
|
|
34
|
+
## Workflows
|
|
35
|
+
|
|
36
|
+
- **Init (greenfield):** no code yet — interview the user (personas, jobs,
|
|
37
|
+
features), draft the full base, get approval. UI only after validation.
|
|
38
|
+
- **Init (existing code):** inventory sweep (routes/screens, interactive
|
|
39
|
+
elements, state branches, error paths, onboarding, settings) → scenarios
|
|
40
|
+
covering everything found, `Coverage` filled with evidence; report both
|
|
41
|
+
gap directions (code without scenario, checklist item without code).
|
|
42
|
+
- **Update:** for any behavior change — adjust affected scenarios in the
|
|
43
|
+
SAME change; add scenarios for new behavior; retire untrue ones; keep the
|
|
44
|
+
Index in sync. Behavior fitting no scenario → stop and escalate.
|
|
45
|
+
- **Validate:** integrity (IDs, index sync, personas, statuses), coverage
|
|
46
|
+
vs checklists, conflicts between scenarios; for a new feature idea —
|
|
47
|
+
which existing scenarios it touches/contradicts/duplicates, reconcile
|
|
48
|
+
before any UI work.
|
package/package.json
ADDED
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "super-ux",
|
|
3
|
+
"version": "0.3.0",
|
|
4
|
+
"description": "Scenario-driven UI development for AI agents (Claude Code + Cursor): scenario base, scenario-first hard rule, evidence-backed UX audits. This package is the installer CLI.",
|
|
5
|
+
"bin": { "super-ux": "bin/super-ux.js" },
|
|
6
|
+
"files": ["bin", "cursor", "templates", "README.md", "LICENSE", "CHANGELOG.md"],
|
|
7
|
+
"repository": "github:ssheleg/super-ux",
|
|
8
|
+
"homepage": "https://github.com/ssheleg/super-ux",
|
|
9
|
+
"license": "MIT",
|
|
10
|
+
"author": "ssheleg",
|
|
11
|
+
"engines": { "node": ">=16" },
|
|
12
|
+
"keywords": ["ux", "scenarios", "audit", "ui", "user-flows", "scenario-driven", "claude-code", "cursor"]
|
|
13
|
+
}
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
# UX Audit — YYYY-MM-DD
|
|
2
|
+
|
|
3
|
+
- **Scope:** all
|
|
4
|
+
- **Method:** static code trace
|
|
5
|
+
- **Base version:** <git SHA of scenarios.md at audit time>
|
|
6
|
+
|
|
7
|
+
## Summary
|
|
8
|
+
|
|
9
|
+
- Totals: PASS 0 / PARTIAL 0 / FAIL 0 / BLOCKED 0
|
|
10
|
+
- Top issues:
|
|
11
|
+
- Recommended next actions (prioritized):
|
|
12
|
+
|
|
13
|
+
<!-- One "## Batch N" section per scenario batch:
|
|
14
|
+
|
|
15
|
+
## Batch 1: <feature> (SCN-001..SCN-005)
|
|
16
|
+
|
|
17
|
+
### SCN-001 — PASS|PARTIAL|FAIL|BLOCKED
|
|
18
|
+
- **Evidence:** file:line, file:line
|
|
19
|
+
- **Findings:**
|
|
20
|
+
- [AUD-YYYY-MM-DD-01] (critical|major|minor) <finding> -> <suggested fix>
|
|
21
|
+
-->
|
|
22
|
+
|
|
23
|
+
## Findings register
|
|
24
|
+
|
|
25
|
+
| # | Scenario | Severity | Finding | Suggested fix |
|
|
26
|
+
|---|----------|----------|---------|---------------|
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
## UX scenarios — hard rule (super-ux)
|
|
2
|
+
|
|
3
|
+
- `docs/ux/scenarios.md` is the source of truth for all user-facing behavior.
|
|
4
|
+
- Any change that touches user-facing behavior MUST update
|
|
5
|
+
`docs/ux/scenarios.md` in the same change (add/adjust scenarios, statuses,
|
|
6
|
+
coverage).
|
|
7
|
+
- Any new feature or project STARTS with scenarios: draft them, validate
|
|
8
|
+
against existing scenarios (conflicts, overlaps, gaps), get them approved —
|
|
9
|
+
only then design and build UI.
|
|
10
|
+
- Use the `ux-scenarios` skill to maintain the base and `ux-audit` to verify
|
|
11
|
+
the codebase against it.
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
# UX Scenarios
|
|
2
|
+
|
|
3
|
+
<!-- Managed with super-ux (scenario-format v1). Update in the same change as any user-facing behavior change. -->
|
|
4
|
+
|
|
5
|
+
## Index
|
|
6
|
+
|
|
7
|
+
| ID | Title | Feature | Persona | Status | Last audit |
|
|
8
|
+
|----|-------|---------|---------|--------|------------|
|
|
9
|
+
|
|
10
|
+
## Personas
|
|
11
|
+
|
|
12
|
+
<!-- Every persona referenced below, 1-3 sentences each: who they are, what
|
|
13
|
+
they know, what they want. Example:
|
|
14
|
+
|
|
15
|
+
### new-user
|
|
16
|
+
Opens the product for the first time. Knows nothing about it; wants to reach
|
|
17
|
+
first value with zero reading.
|
|
18
|
+
-->
|
|
19
|
+
|
|
20
|
+
## Scenarios
|
|
21
|
+
|
|
22
|
+
<!-- Group scenarios by feature under "## <feature>" headings. Entry shape
|
|
23
|
+
(see scenario-format v1 for field rules):
|
|
24
|
+
|
|
25
|
+
### SCN-001: <Title>
|
|
26
|
+
- **Persona:** <persona-id>
|
|
27
|
+
- **Feature:** <feature>
|
|
28
|
+
- **Entry point:** <where the user starts>
|
|
29
|
+
- **Preconditions:** <state required, or "none">
|
|
30
|
+
- **Steps:**
|
|
31
|
+
1. <one user action per step>
|
|
32
|
+
- **Expected result:** <what the user observes on success>
|
|
33
|
+
- **UI elements:** <every button, field, link, dialog, toast involved>
|
|
34
|
+
- **States covered:** <loading | empty | error | success>
|
|
35
|
+
- **Errors & recovery:** <each failure: what the user sees, how they recover>
|
|
36
|
+
- **Status:** draft
|
|
37
|
+
- **Coverage:** none yet
|
|
38
|
+
-->
|