ui-ux-master 1.1.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.
Files changed (39) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +198 -0
  3. package/SKILL.md +717 -0
  4. package/agent-templates/antigravity/AGENTS.append.md +15 -0
  5. package/agent-templates/claude/commands/ui-ux-master.md +25 -0
  6. package/agent-templates/codex/AGENTS.append.md +15 -0
  7. package/agent-templates/cursor/rules/ui-ux-master.mdc +10 -0
  8. package/agent-templates/gemini/GEMINI.append.md +9 -0
  9. package/agent-templates/universal/ui-ux-master-trigger.md +18 -0
  10. package/agent-templates/windsurf/rules/ui-ux-master.md +17 -0
  11. package/bin/ui-ux-master.mjs +192 -0
  12. package/docs/slash-command-compatibility.md +58 -0
  13. package/package.json +55 -0
  14. package/references/accessibility-advanced-patterns.md +43 -0
  15. package/references/competitive-landscape.md +47 -0
  16. package/references/content-design-and-i18n.md +53 -0
  17. package/references/data-visualization-dashboard-ux.md +46 -0
  18. package/references/design-system-playbook.md +133 -0
  19. package/references/ethical-inclusive-design.md +52 -0
  20. package/references/platform-guidelines.md +59 -0
  21. package/references/service-design-journey-mapping.md +39 -0
  22. package/references/top-100-brand-website-analysis.md +302 -0
  23. package/references/ui-ux-complete-checklist.md +214 -0
  24. package/references/ui-ux-curriculum-and-standards.md +40 -0
  25. package/references/ui-ux-frontend-implementation-rules.md +378 -0
  26. package/references/ui-ux-memory-workflow.md +175 -0
  27. package/references/usability-heuristics.md +65 -0
  28. package/references/ux-measurement-quality-gates.md +58 -0
  29. package/references/ux-research-methods.md +99 -0
  30. package/references/wcag-aa-quick-reference.md +85 -0
  31. package/scripts/build_deployment_zip.py +42 -0
  32. package/scripts/validate_skill.py +303 -0
  33. package/templates/component-spec.md +127 -0
  34. package/templates/design-system-spec.md +121 -0
  35. package/templates/top-brand-frontend-spec.md +133 -0
  36. package/templates/ui-ux-audit-report.md +146 -0
  37. package/templates/ui-ux-brief.md +86 -0
  38. package/templates/ui-ux-memory.md +204 -0
  39. package/tests/install-smoke.test.mjs +71 -0
@@ -0,0 +1,15 @@
1
+ <!-- ui-ux-master:start -->
2
+ ## UI/UX Master opt-in trigger
3
+
4
+ When the user writes `/ui-ux-master`, activate the UI/UX Master workflow from the installed `ui-ux-master` package. If the prompt does not include `/ui-ux-master`, do not use this workflow automatically.
5
+
6
+ Use it for UI/UX design, audits, redesigns, frontend polish, accessibility, responsive behavior, design systems, product flows, and implementation handoff.
7
+
8
+ Activation requirements:
9
+ - Read `.ui-ux-master/SKILL.md` from this project first. If `.ui-ux-master/` is missing, fall back to the installed package.
10
+ - Follow `references/ui-ux-memory-workflow.md`.
11
+ - Follow `references/ui-ux-frontend-implementation-rules.md` for frontend implementation.
12
+ - Check for `.ui-ux-memory.md` or equivalent before making UI decisions.
13
+ - Preserve existing design tokens, components, and brand style unless the user asks for redesign.
14
+ - End with a note saying whether UI/UX memory was read, created, updated, or unavailable.
15
+ <!-- ui-ux-master:end -->
@@ -0,0 +1,25 @@
1
+ ---
2
+ description: Activate UI/UX Master for design, audit, accessibility, frontend polish, and implementation-ready handoff.
3
+ argument-hint: [task, screen, URL, repository area, product, or design goal]
4
+ ---
5
+
6
+ Activate the `ui-ux-master` skill only for this `/ui-ux-master` request.
7
+
8
+ Read and follow `.ui-ux-master/SKILL.md` in the target project first. If `.ui-ux-master/` is missing, fall back to the installed package:
9
+ - `SKILL.md`
10
+ - `references/ui-ux-memory-workflow.md`
11
+ - `references/ui-ux-frontend-implementation-rules.md`
12
+ - `references/ui-ux-complete-checklist.md`
13
+ - `references/wcag-aa-quick-reference.md`
14
+ - `templates/ui-ux-memory.md`
15
+
16
+ User request:
17
+ $ARGUMENTS
18
+
19
+ Required behavior:
20
+ 1. Check for existing UI/UX memory and branding first.
21
+ 2. If memory exists, follow it.
22
+ 3. If no memory exists, inspect tokens, CSS, components, routes, screenshots, dependencies, and brand clues.
23
+ 4. Create `.ui-ux-memory.md` in the target project when useful; do not put project memory inside the skill package.
24
+ 5. Produce concrete UI/UX artifacts: flow, IA, layout, states, accessibility, responsive behavior, copy, QA, and implementation handoff.
25
+ 6. Mention whether UI/UX memory was read, created, updated, or unavailable.
@@ -0,0 +1,15 @@
1
+ <!-- ui-ux-master:start -->
2
+ ## UI/UX Master opt-in trigger
3
+
4
+ When the user writes `/ui-ux-master`, activate the UI/UX Master workflow from the installed `ui-ux-master` package. If the prompt does not include `/ui-ux-master`, do not use this workflow automatically.
5
+
6
+ Use it for UI/UX design, audits, redesigns, frontend polish, accessibility, responsive behavior, design systems, product flows, and implementation handoff.
7
+
8
+ Activation requirements:
9
+ - Read `.ui-ux-master/SKILL.md` from this project first. If `.ui-ux-master/` is missing, fall back to the installed package.
10
+ - Follow `references/ui-ux-memory-workflow.md`.
11
+ - Follow `references/ui-ux-frontend-implementation-rules.md` for frontend implementation.
12
+ - Check for `.ui-ux-memory.md` or equivalent before making UI decisions.
13
+ - Preserve existing design tokens, components, and brand style unless the user asks for redesign.
14
+ - End with a note saying whether UI/UX memory was read, created, updated, or unavailable.
15
+ <!-- ui-ux-master:end -->
@@ -0,0 +1,10 @@
1
+ ---
2
+ description: Activate UI/UX Master only when the user writes /ui-ux-master.
3
+ alwaysApply: false
4
+ ---
5
+
6
+ # UI/UX Master opt-in trigger
7
+
8
+ When the user writes `/ui-ux-master`, activate the installed UI/UX Master workflow. Do not use it automatically without the trigger.
9
+
10
+ Follow `.ui-ux-master/SKILL.md` first, with installed-package fallback. Check UI/UX memory first, preserve existing brand/tokens/components, and include accessibility, responsive behavior, states, content, quality gates, and implementation handoff.
@@ -0,0 +1,9 @@
1
+ <!-- ui-ux-master:start -->
2
+ ## UI/UX Master opt-in trigger
3
+
4
+ When the user writes `/ui-ux-master`, activate the UI/UX Master workflow. Read `.ui-ux-master/SKILL.md` first; if `.ui-ux-master/` is missing, fall back to the installed `ui-ux-master` package. If the prompt does not include `/ui-ux-master`, do not use this workflow automatically.
5
+
6
+ Required references from `.ui-ux-master/` first, with installed package fallback: `SKILL.md`, `references/ui-ux-memory-workflow.md`, `references/ui-ux-frontend-implementation-rules.md`, and `references/ui-ux-complete-checklist.md`.
7
+
8
+ Always check UI/UX memory and existing brand/tokens/components before designing. Preserve the baseline unless the user asks for redesign. Include accessibility, responsive behavior, states, content, platform conventions, quality gates, and handoff. State whether UI/UX memory was read, created, updated, or unavailable.
9
+ <!-- ui-ux-master:end -->
@@ -0,0 +1,18 @@
1
+ # /ui-ux-master Trigger
2
+
3
+ When the user writes `/ui-ux-master`, activate the UI/UX Master skill. If the user does not include `/ui-ux-master`, do not apply this skill automatically.
4
+
5
+ Use UI/UX Master for UI design, UX strategy, audits, redesigns, frontend polish, accessibility, responsive behavior, design systems, content design, user flows, wireframes, prototypes, and engineering handoff.
6
+
7
+ Activation behavior:
8
+
9
+ 1. Treat the rest of the user prompt as the task.
10
+ 2. Read `.ui-ux-master/SKILL.md` from the target project. If `.ui-ux-master/` is missing, fall back to the installed `ui-ux-master` package.
11
+ 3. Check for existing UI/UX memory first: `.ui-ux-memory.md`, `docs/ui-ux-memory.md`, `docs/design/ui-ux-memory.md`, or `design/ui-ux-memory.md`.
12
+ 4. If memory exists, follow it as the source of truth.
13
+ 5. If memory does not exist, inspect branding, tokens, CSS variables, components, fonts, layouts, screenshots, and dependencies before designing.
14
+ 6. Preserve existing brand and component conventions unless the user asks for redesign/rebrand.
15
+ 7. Always include accessibility, responsive behavior, loading/empty/error/success states, copy, platform conventions, and implementation handoff.
16
+ 8. State whether UI/UX memory was read, created, updated, or unavailable.
17
+
18
+ Default output should be concrete and useful: design direction, IA/flow, layout, component states, accessibility, responsive behavior, copy, quality gates, and developer handoff.
@@ -0,0 +1,17 @@
1
+ # UI/UX Master Rule
2
+
3
+ Trigger: activate only when the user writes `/ui-ux-master`.
4
+
5
+ Do not apply this rule automatically to normal prompts without `/ui-ux-master`.
6
+
7
+ When active, use `.ui-ux-master/SKILL.md` in this project as the source of truth. If `.ui-ux-master/` is missing, fall back to the installed `ui-ux-master` package:
8
+ - `SKILL.md`
9
+ - `references/ui-ux-memory-workflow.md`
10
+ - `references/ui-ux-frontend-implementation-rules.md`
11
+ - `references/ui-ux-complete-checklist.md`
12
+
13
+ Required workflow:
14
+ 1. Inspect existing UI/UX memory, brand, tokens, components, CSS, dependencies, and similar screens.
15
+ 2. Preserve existing brand and components unless the user asks for redesign.
16
+ 3. Produce practical UI/UX output: IA/flow, layout, states, accessibility, responsive rules, copy, and developer handoff.
17
+ 4. Mention whether UI/UX memory was read, created, updated, or unavailable.
@@ -0,0 +1,192 @@
1
+ #!/usr/bin/env node
2
+ import fs from 'node:fs';
3
+ import os from 'node:os';
4
+ import path from 'node:path';
5
+ import { fileURLToPath } from 'node:url';
6
+
7
+ const __filename = fileURLToPath(import.meta.url);
8
+ const packageRoot = path.resolve(path.dirname(__filename), '..');
9
+ const markerStart = '<!-- ui-ux-master:start -->';
10
+ const markerEnd = '<!-- ui-ux-master:end -->';
11
+
12
+ function read(rel) {
13
+ return fs.readFileSync(path.join(packageRoot, rel), 'utf8');
14
+ }
15
+
16
+ function mkdirp(dir, dryRun) {
17
+ if (dryRun) return;
18
+ fs.mkdirSync(dir, { recursive: true });
19
+ }
20
+
21
+ function writeFile(target, content, dryRun) {
22
+ if (dryRun) {
23
+ console.log(`[dry-run] write ${target}`);
24
+ return;
25
+ }
26
+ mkdirp(path.dirname(target), false);
27
+ fs.writeFileSync(target, content, 'utf8');
28
+ console.log(`wrote ${target}`);
29
+ }
30
+
31
+ function appendMarked(target, block, dryRun) {
32
+ const content = block.includes(markerStart) ? block.trim() + '\n' : `${markerStart}\n${block.trim()}\n${markerEnd}\n`;
33
+ const old = fs.existsSync(target) ? fs.readFileSync(target, 'utf8') : '';
34
+ const re = new RegExp(`${escapeRegExp(markerStart)}[\\s\\S]*?${escapeRegExp(markerEnd)}\\n?`, 'm');
35
+ const next = re.test(old) ? old.replace(re, content) : `${old.replace(/\s*$/, '')}${old.trim() ? '\n\n' : ''}${content}`;
36
+ if (dryRun) {
37
+ console.log(`[dry-run] append/update marked section ${target}`);
38
+ return;
39
+ }
40
+ mkdirp(path.dirname(target), false);
41
+ fs.writeFileSync(target, next, 'utf8');
42
+ console.log(`updated ${target}`);
43
+ }
44
+
45
+ function escapeRegExp(s) {
46
+ return s.replace(/[.*+?^${}()|[\]\\]/g, '\\$&');
47
+ }
48
+
49
+ function parseArgs(argv) {
50
+ const opts = { command: 'help', scope: 'project', agents: null, dryRun: false, dir: null, postinstall: false };
51
+ const args = [...argv];
52
+ if (args.includes('--postinstall')) opts.postinstall = true;
53
+ const first = args.find(a => !a.startsWith('--'));
54
+ if (first) opts.command = first;
55
+ for (let i = 0; i < args.length; i++) {
56
+ const a = args[i];
57
+ if (a === '--project') opts.scope = 'project';
58
+ else if (a === '--global') opts.scope = 'global';
59
+ else if (a === '--dry-run') opts.dryRun = true;
60
+ else if (a === '--dir') opts.dir = path.resolve(args[++i]);
61
+ else if (a === '--agents') opts.agents = args[++i].split(',').map(x => x.trim().toLowerCase()).filter(Boolean);
62
+ }
63
+ return opts;
64
+ }
65
+
66
+ function findProjectRoot(start) {
67
+ let cur = path.resolve(start || process.cwd());
68
+ while (true) {
69
+ for (const name of ['package.json', '.git', 'pyproject.toml', 'Cargo.toml', 'go.mod']) {
70
+ if (fs.existsSync(path.join(cur, name))) return cur;
71
+ }
72
+ const parent = path.dirname(cur);
73
+ if (parent === cur) return path.resolve(start || process.cwd());
74
+ cur = parent;
75
+ }
76
+ }
77
+
78
+ function wanted(opts, name) {
79
+ return !opts.agents || opts.agents.includes(name) || opts.agents.includes('all');
80
+ }
81
+
82
+ function copyProjectSkillAssets(root, dryRun) {
83
+ const dest = path.join(root, '.ui-ux-master');
84
+ const files = ['SKILL.md', 'README.md', 'LICENSE', 'package.json'];
85
+ const dirs = ['references', 'templates', 'docs'];
86
+ for (const file of files) {
87
+ writeFile(path.join(dest, file), read(file), dryRun);
88
+ }
89
+ for (const dir of dirs) {
90
+ copyDir(path.join(packageRoot, dir), path.join(dest, dir), dryRun);
91
+ }
92
+ console.log(`${dryRun ? '[dry-run] ' : ''}project skill assets available at ${dest}`);
93
+ }
94
+
95
+ function installProject(root, opts) {
96
+ const dry = opts.dryRun;
97
+ const installedPath = packageRoot;
98
+ console.log(`Installing /ui-ux-master project trigger into ${root}`);
99
+ console.log(`Package root: ${installedPath}`);
100
+
101
+ copyProjectSkillAssets(root, dry);
102
+
103
+ if (wanted(opts, 'claude')) writeFile(path.join(root, '.claude', 'commands', 'ui-ux-master.md'), read('agent-templates/claude/commands/ui-ux-master.md'), dry);
104
+ if (wanted(opts, 'codex') || wanted(opts, 'antigravity') || wanted(opts, 'universal')) appendMarked(path.join(root, 'AGENTS.md'), read('agent-templates/codex/AGENTS.append.md'), dry);
105
+ if (wanted(opts, 'windsurf')) {
106
+ writeFile(path.join(root, '.windsurf', 'rules', 'ui-ux-master.md'), read('agent-templates/windsurf/rules/ui-ux-master.md'), dry);
107
+ appendMarked(path.join(root, '.windsurfrules'), read('agent-templates/universal/ui-ux-master-trigger.md'), dry);
108
+ }
109
+ if (wanted(opts, 'antigravity')) writeFile(path.join(root, '.antigravity', 'rules', 'ui-ux-master.md'), read('agent-templates/universal/ui-ux-master-trigger.md'), dry);
110
+ if (wanted(opts, 'gemini')) appendMarked(path.join(root, 'GEMINI.md'), read('agent-templates/gemini/GEMINI.append.md'), dry);
111
+ if (wanted(opts, 'cursor')) writeFile(path.join(root, '.cursor', 'rules', 'ui-ux-master.mdc'), read('agent-templates/cursor/rules/ui-ux-master.mdc'), dry);
112
+
113
+ console.log('Done. Use: /ui-ux-master <your normal UI/UX request>');
114
+ }
115
+
116
+ function copyDir(src, dest, dryRun) {
117
+ if (dryRun) {
118
+ console.log(`[dry-run] copy ${src} -> ${dest}`);
119
+ return;
120
+ }
121
+ fs.cpSync(src, dest, { recursive: true, force: true, filter: (p) => !p.includes(`${path.sep}.git${path.sep}`) && !p.includes(`${path.sep}graphify-out${path.sep}`) && !p.includes(`${path.sep}__pycache__${path.sep}`) && !p.endsWith('.pyc') });
122
+ }
123
+
124
+ function installGlobal(opts) {
125
+ const root = path.join(os.homedir(), '.ui-ux-master');
126
+ console.log(`Installing global UI/UX Master files into ${root}`);
127
+ copyDir(packageRoot, root, opts.dryRun);
128
+ const claudeTarget = path.join(os.homedir(), '.claude', 'commands', 'ui-ux-master.md');
129
+ writeFile(claudeTarget, read('agent-templates/claude/commands/ui-ux-master.md'), opts.dryRun);
130
+ console.log('Global install complete. Project-local install is still recommended for Codex/Windsurf/Gemini rules.');
131
+ }
132
+
133
+ function uninstallProject(root, opts) {
134
+ const dry = opts.dryRun;
135
+ const files = [
136
+ path.join(root, '.ui-ux-master'),
137
+ path.join(root, '.claude', 'commands', 'ui-ux-master.md'),
138
+ path.join(root, '.windsurf', 'rules', 'ui-ux-master.md'),
139
+ path.join(root, '.antigravity', 'rules', 'ui-ux-master.md'),
140
+ path.join(root, '.cursor', 'rules', 'ui-ux-master.mdc'),
141
+ ];
142
+ for (const file of files) {
143
+ if (fs.existsSync(file)) {
144
+ if (dry) console.log(`[dry-run] remove ${file}`);
145
+ else { fs.rmSync(file, { force: true, recursive: true }); console.log(`removed ${file}`); }
146
+ }
147
+ }
148
+ for (const file of [path.join(root, 'AGENTS.md'), path.join(root, 'GEMINI.md'), path.join(root, '.windsurfrules')]) {
149
+ if (!fs.existsSync(file)) continue;
150
+ const old = fs.readFileSync(file, 'utf8');
151
+ const re = new RegExp(`${escapeRegExp(markerStart)}[\\s\\S]*?${escapeRegExp(markerEnd)}\\n?`, 'm');
152
+ const next = old.replace(re, '').trimEnd() + '\n';
153
+ if (dry) console.log(`[dry-run] remove marker block from ${file}`);
154
+ else { fs.writeFileSync(file, next, 'utf8'); console.log(`updated ${file}`); }
155
+ }
156
+ }
157
+
158
+ function doctor(opts) {
159
+ const root = opts.scope === 'global' ? os.homedir() : findProjectRoot(opts.dir || process.cwd());
160
+ console.log(`ui-ux-master package root: ${packageRoot}`);
161
+ console.log(`target root: ${root}`);
162
+ console.log(`node: ${process.version}`);
163
+ console.log(`trigger: /ui-ux-master`);
164
+ const required = ['SKILL.md', 'README.md', 'references/ui-ux-complete-checklist.md', 'agent-templates/universal/ui-ux-master-trigger.md'];
165
+ let ok = true;
166
+ for (const rel of required) {
167
+ const exists = fs.existsSync(path.join(packageRoot, rel));
168
+ console.log(`${exists ? 'ok' : 'missing'} ${rel}`);
169
+ ok = ok && exists;
170
+ }
171
+ if (!ok) process.exitCode = 1;
172
+ }
173
+
174
+ function help() {
175
+ console.log(`UI/UX Master\n\nUsage:\n ui-ux-master install [--project|--global] [--agents claude,codex,windsurf,antigravity,gemini,cursor,universal] [--dir path] [--dry-run]\n ui-ux-master uninstall [--project] [--dir path] [--dry-run]\n ui-ux-master doctor [--dir path]\n ui-ux-master where\n\nAfter install, use: /ui-ux-master <your normal UI/UX prompt>`);
176
+ }
177
+
178
+ const opts = parseArgs(process.argv.slice(2));
179
+ if (opts.postinstall) {
180
+ console.log('ui-ux-master installed. Run `npx ui-ux-master install --project` inside a repo, then use `/ui-ux-master ...`.');
181
+ } else if (opts.command === 'install') {
182
+ if (opts.scope === 'global') installGlobal(opts);
183
+ else installProject(findProjectRoot(opts.dir || process.cwd()), opts);
184
+ } else if (opts.command === 'uninstall') {
185
+ uninstallProject(findProjectRoot(opts.dir || process.cwd()), opts);
186
+ } else if (opts.command === 'doctor') {
187
+ doctor(opts);
188
+ } else if (opts.command === 'where') {
189
+ console.log(packageRoot);
190
+ } else {
191
+ help();
192
+ }
@@ -0,0 +1,58 @@
1
+ # Slash Command Compatibility
2
+
3
+ `/ui-ux-master` is the opt-in activation phrase for this package.
4
+
5
+ ## What `/ui-ux-master` Does
6
+
7
+ When a user writes `/ui-ux-master`, the agent switches into the UI/UX Master workflow for that request: research-aware UX, IA, flows, design systems, accessibility, responsive states, content design, platform conventions, UI/UX memory, quality gates, and engineering handoff.
8
+
9
+ If the user does not include `/ui-ux-master`, the skill should not be applied automatically.
10
+
11
+ ## Native Slash Commands vs Text Triggers
12
+
13
+ Agent ecosystems are not consistent:
14
+
15
+ - Some agents support native custom slash commands.
16
+ - Some agents support project instruction files such as `AGENTS.md`, `CLAUDE.md`, `GEMINI.md`, `.windsurfrules`, or `.cursor/rules`.
17
+ - Some agents only see normal prompt text.
18
+
19
+ This package handles both models. Native slash commands are installed where available. Everywhere else, project instructions define `/ui-ux-master` as a plain-text opt-in trigger.
20
+
21
+ ## Supported Agents
22
+
23
+ | Agent | Install target | Trigger behavior |
24
+ |---|---|---|
25
+ | Claude Code | `.claude/commands/ui-ux-master.md` | Native `/ui-ux-master` command |
26
+ | Codex | `AGENTS.md` marked section | Type `/ui-ux-master` in the prompt |
27
+ | Windsurf/Cascade | `.windsurf/rules/ui-ux-master.md` and optional `.windsurfrules` | Type `/ui-ux-master` in the prompt |
28
+ | Antigravity | `AGENTS.md` / universal fallback | Type `/ui-ux-master` in the prompt |
29
+ | Gemini CLI | `GEMINI.md` marked section | Type `/ui-ux-master` in the prompt |
30
+ | Cursor | `.cursor/rules/ui-ux-master.mdc` | Type `/ui-ux-master` in the prompt |
31
+ | Other agents | `agent-templates/universal/ui-ux-master-trigger.md` | Copy the trigger into the agent's instruction file |
32
+
33
+ ## Project-local Install
34
+
35
+ Project-local install is recommended because it keeps activation scoped to a repository and copies the skill source into `.ui-ux-master/` so all agents can find it, including no-save `npx` installs.
36
+
37
+ ```bash
38
+ npx ui-ux-master install --project
39
+ ```
40
+
41
+ ## Global Install
42
+
43
+ Global install creates reusable templates under your home directory and, where supported, user-level slash commands.
44
+
45
+ ```bash
46
+ npm install -g ui-ux-master
47
+ ui-ux-master install --global
48
+ ```
49
+
50
+ ## Troubleshooting
51
+
52
+ - If `/ui-ux-master` does nothing, your agent may not support native slash commands. Add the universal trigger text to the agent's project instructions.
53
+ - If the agent applies the skill too often, ensure the installed rule says "activate only when the user writes `/ui-ux-master`."
54
+ - If project instructions already have a UI/UX rule, merge carefully and preserve the `/ui-ux-master:start` and `/ui-ux-master:end` markers.
55
+
56
+ ## Security and Consent
57
+
58
+ The installer should not overwrite existing agent instruction files without marker-based replacement. Review generated instruction files before committing them to a shared repository.
package/package.json ADDED
@@ -0,0 +1,55 @@
1
+ {
2
+ "name": "ui-ux-master",
3
+ "version": "1.1.0",
4
+ "description": "One-stop UI/UX master skill for AI agents with opt-in /ui-ux-master activation across Claude, Codex, Windsurf, Antigravity, Gemini, Cursor, and universal agents.",
5
+ "type": "module",
6
+ "bin": {
7
+ "ui-ux-master": "./bin/ui-ux-master.mjs"
8
+ },
9
+ "files": [
10
+ "SKILL.md",
11
+ "README.md",
12
+ "LICENSE",
13
+ "package.json",
14
+ "references/",
15
+ "templates/",
16
+ "agent-templates/",
17
+ "docs/",
18
+ "bin/",
19
+ "scripts/",
20
+ "tests/"
21
+ ],
22
+ "scripts": {
23
+ "validate": "python scripts/validate_skill.py --release",
24
+ "test": "node --test tests/*.test.mjs",
25
+ "prepack": "npm run validate && npm test",
26
+ "build:zip": "python scripts/build_deployment_zip.py"
27
+ },
28
+ "keywords": [
29
+ "ai-agent",
30
+ "ui",
31
+ "ux",
32
+ "ui-ux",
33
+ "design-system",
34
+ "accessibility",
35
+ "wcag",
36
+ "claude-code",
37
+ "codex",
38
+ "windsurf",
39
+ "antigravity",
40
+ "gemini-cli",
41
+ "cursor",
42
+ "slash-command",
43
+ "agent-skill",
44
+ "frontend"
45
+ ],
46
+ "license": "MIT",
47
+ "author": "UI/UX Master contributors",
48
+ "engines": {
49
+ "node": ">=18"
50
+ },
51
+ "preferGlobal": true,
52
+ "publishConfig": {
53
+ "access": "public"
54
+ }
55
+ }
@@ -0,0 +1,43 @@
1
+ # Advanced Accessibility Patterns
2
+
3
+ Use this reference when designing or implementing complex interactive components beyond simple links, buttons, and forms.
4
+
5
+ ## Core Rule
6
+
7
+ Use native HTML first. Add ARIA only when native semantics cannot express the pattern. Bad ARIA is worse than no ARIA.
8
+
9
+ ## Complex Widget Checklist
10
+
11
+ - Dialog/modal: focus moves in, is trapped, Escape closes if safe, focus returns to opener.
12
+ - Tabs: arrow-key navigation, selected state, panel association.
13
+ - Accordion: button semantics, expanded state, heading structure.
14
+ - Menu: correct role only for application menus, keyboard support, Escape, typeahead if useful.
15
+ - Combobox/autocomplete: label, active descendant or focus strategy, listbox relationship, keyboard behavior.
16
+ - Tooltip: not required to complete task, available on focus and hover.
17
+ - Toast/live region: polite/assertive only as appropriate, not focus stealing.
18
+ - Data grid: row/column headers, keyboard model, sort state, accessible names.
19
+ - Drag and drop: provide keyboard and non-drag alternative.
20
+
21
+ ## WCAG 2.2 Criteria to Remember
22
+
23
+ - Focus Appearance.
24
+ - Dragging Movements.
25
+ - Target Size.
26
+ - Consistent Help.
27
+ - Accessible Authentication.
28
+ - Redundant Entry.
29
+
30
+ ## Testing Matrix
31
+
32
+ At minimum test:
33
+
34
+ - Keyboard only.
35
+ - Browser zoom 200%.
36
+ - Reduced motion.
37
+ - High contrast/forced colors where relevant.
38
+ - Screen reader smoke test: NVDA/JAWS on Windows, VoiceOver on Apple, TalkBack on Android as applicable.
39
+ - Touch target size and orientation changes on mobile.
40
+
41
+ ## Accessible Handoff
42
+
43
+ For each complex component specify role/semantic element, name, state, keyboard interaction, focus behavior, announcements, and fallback behavior.
@@ -0,0 +1,47 @@
1
+ # Competitive Landscape and Differentiation
2
+
3
+ This reference summarizes the open-source/UI-agent landscape checked while improving UI/UX Master.
4
+
5
+ ## What Existing Tools Do Well
6
+
7
+ - `skills` / open agent skills ecosystem: broad multi-agent distribution and many supported agent names.
8
+ - `bentoskills`: simple npm-based installation for Claude-oriented UI/UX skills.
9
+ - `extract-design-system`: strong focused capability for extracting design tokens from public websites and packaging it as a CLI/agent skill.
10
+ - `@assistant-ui/react`: production-grade React components for AI chat interfaces.
11
+ - `@figma/code-connect`: strong design-to-code component mapping for Figma and codebases.
12
+ - Mature design systems such as GOV.UK Frontend, Salesforce Lightning, Material, Carbon, Atlassian, and Fluent: strong component guidance and production CSS/component foundations.
13
+
14
+ ## Where Narrow Skills Often Outperform Generic UI Prompts
15
+
16
+ - They are easier to install.
17
+ - They have a simple trigger or CLI.
18
+ - They focus on one concrete task, such as token extraction or component mapping.
19
+ - Some have npm packaging and tests.
20
+ - Some integrate with a specific agent's native command system.
21
+
22
+ ## Gaps UI/UX Master Must Beat
23
+
24
+ UI/UX Master is designed to lead by combining the best parts:
25
+
26
+ 1. One simple opt-in trigger: `/ui-ux-master`.
27
+ 2. Cross-agent installation instead of one-agent lock-in.
28
+ 3. Full lifecycle coverage from research to handoff, not only visual polish.
29
+ 4. Project UI/UX memory for consistent branding across repeated work.
30
+ 5. Standards alignment across WCAG, WAI-ARIA, NN/g-style heuristics, GOV.UK service patterns, Material, Apple HIG, Microsoft, ISO HCD concepts, and Baymard-style ecommerce practice.
31
+ 6. Advanced risk coverage: privacy, ethics, dark patterns, high-risk domains, AI transparency, localization, and platform conventions.
32
+ 7. Release engineering: npm package, CLI installer, tests, validator, and deployment zip.
33
+
34
+ ## Remaining Honest Limitations
35
+
36
+ - It does not replace specialized code libraries such as assistant-ui React components or GOV.UK Frontend CSS.
37
+ - It does not extract live design tokens from websites by itself; pair it with token-extraction tools if needed.
38
+ - It does not integrate directly with Figma APIs; pair it with Figma Code Connect or MCP/Figma tooling if needed.
39
+ - It cannot replace real user research, accessibility expert review, or legal/domain review in high-risk contexts.
40
+
41
+ ## Strategy to Stay Ahead
42
+
43
+ - Keep `/ui-ux-master` simple and opt-in.
44
+ - Keep references standards-aligned and updated.
45
+ - Add focused subcommands only when they preserve simplicity.
46
+ - Validate every release with Python, Node tests, npm pack dry-run, zip extraction validation, and independent review.
47
+ - Prefer concrete outputs: memory, specs, states, QA, acceptance criteria, and handoff.
@@ -0,0 +1,53 @@
1
+ # Content Design and Internationalization
2
+
3
+ Content is part of the interface. Agents must design words, labels, errors, empty states, and localization behavior deliberately.
4
+
5
+ ## Content Design Principles
6
+
7
+ - Start with user task and context.
8
+ - Use plain language and familiar vocabulary.
9
+ - Put the most important information first.
10
+ - Prefer specific verbs for actions.
11
+ - Avoid jargon unless the target user uses it.
12
+ - Write labels that predict the result of the action.
13
+ - Use consistent terminology across screens.
14
+ - Make errors explain what happened, why if useful, and how to recover.
15
+
16
+ ## Voice and Tone
17
+
18
+ Define:
19
+
20
+ - Voice: stable brand personality.
21
+ - Tone: adapts to user emotion and risk.
22
+ - Vocabulary: preferred terms, banned terms, product naming.
23
+ - Reading level: simpler for broad audiences, precise for expert tools.
24
+
25
+ ## Microcopy Patterns
26
+
27
+ - Button: verb + object when ambiguity exists, e.g. "Invite teammate".
28
+ - Empty state: what is missing, why it matters, first action.
29
+ - Error: problem + recovery + support if needed.
30
+ - Success: confirm outcome and next step.
31
+ - Loading: set expectation if longer than a moment.
32
+ - Permission: explain access requirement and request path.
33
+
34
+ ## Inclusive Language
35
+
36
+ Avoid stereotypes, unnecessary gendering, ableist wording, and culturally narrow examples. Do not imply blame when users make mistakes.
37
+
38
+ ## Internationalization Checklist
39
+
40
+ - Text expansion: allow 30-50% longer strings where possible.
41
+ - RTL/bidirectional layout: mirror layout where appropriate; do not mirror icons with fixed meaning.
42
+ - Dates/times: use locale-aware formatting and time zones.
43
+ - Numbers/currency: use locale-aware separators, symbols, precision.
44
+ - Names: do not require Western first/last assumptions unless legally required.
45
+ - Addresses/phones: support regional formats.
46
+ - Plurals/gender: avoid concatenated strings that cannot translate correctly.
47
+ - Sorting/search: consider accents, scripts, and transliteration.
48
+ - Images/icons: avoid culture-specific metaphors unless validated.
49
+ - Legal/regulatory copy: localize with qualified review.
50
+
51
+ ## Content Handoff
52
+
53
+ Include final copy, alternatives, character limits, translation keys, dynamic variables, fallback text, and error states.
@@ -0,0 +1,46 @@
1
+ # Data Visualization and Dashboard UX
2
+
3
+ Use this reference for dashboards, reports, analytics, monitoring, admin panels, tables, and decision-support interfaces.
4
+
5
+ ## Dashboard Principles
6
+
7
+ - Start with the decision the user must make.
8
+ - Prioritize signal over decoration.
9
+ - Show timeframe, unit, owner, freshness, and definitions.
10
+ - Separate overview, diagnosis, and action.
11
+ - Make drill-down paths clear.
12
+ - Handle missing, stale, partial, loading, and error states.
13
+
14
+ ## Chart Selection
15
+
16
+ - Line: trend over time.
17
+ - Bar: compare categories.
18
+ - Stacked bar: composition with caution.
19
+ - Scatter: relationship or distribution.
20
+ - Histogram: distribution.
21
+ - Table: exact values, scanning, operational work.
22
+ - KPI card: single important measure with context.
23
+ - Avoid pie/donut charts for precise comparison.
24
+
25
+ ## Chart Quality Checklist
26
+
27
+ - Title states insight or metric.
28
+ - Axes are labeled and not misleading.
29
+ - Units and timeframe are visible.
30
+ - Baseline and scale are appropriate.
31
+ - Colors are semantic and colorblind-safe.
32
+ - Legends are close to data or labels are direct.
33
+ - Annotations explain anomalies.
34
+ - Uncertainty and estimates are labeled.
35
+ - Screen-reader alternative or data table exists.
36
+
37
+ ## Tables and Data Grids
38
+
39
+ - Support sorting, filtering, search, pagination/virtualization, column visibility, density controls, bulk actions, export, and row-level actions where relevant.
40
+ - Keep keyboard navigation and focus visible.
41
+ - Preserve user filters and table state when returning.
42
+ - Provide empty, no-results, loading, stale, and permission states.
43
+
44
+ ## Alerting
45
+
46
+ Avoid alert fatigue. Severity, owner, cause, time, impact, and next action must be clear.