ui-ux-master 1.1.0 → 1.2.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/README.md +109 -3
- package/SKILL.md +38 -20
- package/ai-discovery/ui-ux-master.manifest.json +84 -0
- package/bin/ui-ux-master-mcp.mjs +243 -0
- package/bin/ui-ux-master.mjs +6 -4
- package/docs/mcp-server.md +106 -0
- package/docs/package-publishing.md +82 -0
- package/index.cjs +37 -0
- package/index.d.ts +17 -0
- package/index.mjs +27 -0
- package/llms.txt +24 -0
- package/package.json +91 -8
- package/scripts/validate_skill.py +69 -4
- package/system-prompts/ui-ux-master-compact.md +5 -0
- package/system-prompts/ui-ux-master-mcp-add-on.md +49 -0
- package/system-prompts/ui-ux-master-system-add-on.md +47 -0
- package/tests/install-smoke.test.mjs +64 -4
package/README.md
CHANGED
|
@@ -1,6 +1,15 @@
|
|
|
1
|
-
# UI/UX Master
|
|
1
|
+
# UI/UX Master 🎨✨
|
|
2
2
|
|
|
3
|
-
|
|
3
|
+
[](https://www.npmjs.com/package/ui-ux-master)
|
|
4
|
+
[](https://www.npmjs.com/package/ui-ux-master)
|
|
5
|
+
[](https://github.com/Seance1723/UI-UX-Skills/blob/main/LICENSE)
|
|
6
|
+
[](https://github.com/Seance1723/UI-UX-Skills/stargazers)
|
|
7
|
+
[](https://github.com/Seance1723/UI-UX-Skills/commits/main)
|
|
8
|
+
[](http://makeapullrequest.com)
|
|
9
|
+
|
|
10
|
+
**The ultimate UI/UX skill for AI coding agents.** Turn your AI into a Senior Product Designer, UX Researcher, and Frontend Lead in seconds.
|
|
11
|
+
|
|
12
|
+
Author: Rupak Biswas.
|
|
4
13
|
|
|
5
14
|
Use it with a normal prompt plus one trigger:
|
|
6
15
|
|
|
@@ -16,6 +25,15 @@ Most AI UI prompts produce pretty screens but miss the hard parts: research assu
|
|
|
16
25
|
|
|
17
26
|
UI/UX Master is built to make agents behave like a senior product designer, UX researcher, accessibility reviewer, design-system lead, and frontend handoff partner in one workflow.
|
|
18
27
|
|
|
28
|
+
## 🚀 Supercharge Your AI Workflow
|
|
29
|
+
|
|
30
|
+
AI agents are great at writing code, but they often struggle with **Information Architecture**, **Accessibility (WCAG)**, and **Design Systems**. `ui-ux-master` bridges this gap.
|
|
31
|
+
|
|
32
|
+
By installing this tool, you instantly give **Claude**, **Cursor**, **Windsurf**, **Codex**, **Gemini**, **Antigravity**, and universal/custom-instruction agents the ability to:
|
|
33
|
+
- 🧠 **Think like a designer:** Understand user flows and journey maps before coding.
|
|
34
|
+
- ♿ **Audit for accessibility:** Automatically check for WCAG 2.2 AA compliance and ARIA patterns.
|
|
35
|
+
- 🧩 **Enforce design systems:** Keep your brand colors, typography, and spacing consistent.
|
|
36
|
+
|
|
19
37
|
## What Makes It Different
|
|
20
38
|
|
|
21
39
|
| Common open-source prompt/skill | UI/UX Master |
|
|
@@ -28,6 +46,17 @@ UI/UX Master is built to make agents behave like a senior product designer, UX r
|
|
|
28
46
|
| Weak accessibility coverage | WCAG 2.2 AA plus advanced ARIA/widget patterns and test matrix |
|
|
29
47
|
| No deployment validation | Release validator, npm package metadata, tests, and deployment zip builder |
|
|
30
48
|
| No product-risk coverage | Ethics, privacy, dark-pattern, high-risk domain, AI-interface, and inclusive-design checks |
|
|
49
|
+
| Hidden from AI tooling | Ships `llms.txt`, machine-readable manifest, system prompt add-ons, and a local MCP server for automatic discovery |
|
|
50
|
+
|
|
51
|
+
## AI Discoverability
|
|
52
|
+
|
|
53
|
+
UI/UX Master is now designed for both humans and AI systems to discover:
|
|
54
|
+
|
|
55
|
+
- `llms.txt` gives agents a concise map of the package.
|
|
56
|
+
- `ai-discovery/ui-ux-master.manifest.json` provides a machine-readable manifest.
|
|
57
|
+
- `system-prompts/` contains full, compact, and MCP-focused system prompt add-ons.
|
|
58
|
+
- `ui-ux-master-mcp` exposes the package through a local MCP server with tools, resources, and prompts.
|
|
59
|
+
- Project installs copy these discovery assets into `.ui-ux-master/` so no-save `npx` installs remain usable after the npm cache disappears.
|
|
31
60
|
|
|
32
61
|
## Capabilities
|
|
33
62
|
|
|
@@ -81,6 +110,25 @@ Dry run:
|
|
|
81
110
|
npx ui-ux-master install --project --dry-run
|
|
82
111
|
```
|
|
83
112
|
|
|
113
|
+
## Package
|
|
114
|
+
|
|
115
|
+
| Channel | Package | Purpose |
|
|
116
|
+
|---|---|---|
|
|
117
|
+
| npmjs | [`ui-ux-master`](https://www.npmjs.com/package/ui-ux-master) | Primary public package for normal installs and `npx` usage |
|
|
118
|
+
| GitHub | [`Seance1723/UI-UX-Skills`](https://github.com/Seance1723/UI-UX-Skills) | Source, issues, releases, workflows, and open-source collaboration |
|
|
119
|
+
| GitHub Packages | Optional scoped mirror | Use only if you want the repository Packages section to show a package |
|
|
120
|
+
|
|
121
|
+
The canonical npm package is intentionally unscoped as `ui-ux-master`. GitHub Packages requires npm packages to be scoped, so a GitHub Packages mirror should use `@seance1723/ui-ux-master` while the public npmjs package remains `ui-ux-master`.
|
|
122
|
+
|
|
123
|
+
Package entrypoints:
|
|
124
|
+
|
|
125
|
+
- `ui-ux-master` - CLI installer and project integration tool.
|
|
126
|
+
- `ui-ux-master-mcp` - local MCP server for tools, resources, and prompts.
|
|
127
|
+
- `import { assets, bins, trigger } from "ui-ux-master"` - lightweight ESM metadata API.
|
|
128
|
+
- `require("ui-ux-master")` - CommonJS metadata API.
|
|
129
|
+
|
|
130
|
+
Package metadata is connected to GitHub through `repository`, `homepage`, `bugs`, license, funding, exports, engines, and npm provenance-ready publish settings in `package.json`.
|
|
131
|
+
|
|
84
132
|
## Supported Agents
|
|
85
133
|
|
|
86
134
|
| Agent | Install target | Trigger |
|
|
@@ -92,9 +140,43 @@ npx ui-ux-master install --project --dry-run
|
|
|
92
140
|
| Gemini CLI | `GEMINI.md` marked section | type `/ui-ux-master` |
|
|
93
141
|
| Cursor | `.cursor/rules/ui-ux-master.mdc` | type `/ui-ux-master` |
|
|
94
142
|
| Other agents | `agent-templates/universal/ui-ux-master-trigger.md` | copy trigger into instruction file |
|
|
143
|
+
| MCP clients | `ui-ux-master-mcp` | discover tools/resources/prompts automatically |
|
|
95
144
|
|
|
96
145
|
See `docs/slash-command-compatibility.md` for details.
|
|
97
146
|
|
|
147
|
+
## System Prompt Add-ons
|
|
148
|
+
|
|
149
|
+
Copy one of these into any AI custom-instructions field when the agent does not support project rules:
|
|
150
|
+
|
|
151
|
+
- `system-prompts/ui-ux-master-system-add-on.md` — full add-on.
|
|
152
|
+
- `system-prompts/ui-ux-master-compact.md` — compact add-on.
|
|
153
|
+
- `system-prompts/ui-ux-master-mcp-add-on.md` — MCP-focused add-on.
|
|
154
|
+
|
|
155
|
+
## MCP Server
|
|
156
|
+
|
|
157
|
+
Run the local MCP server:
|
|
158
|
+
|
|
159
|
+
```bash
|
|
160
|
+
ui-ux-master-mcp
|
|
161
|
+
# or without global install
|
|
162
|
+
npx -y --package ui-ux-master ui-ux-master-mcp
|
|
163
|
+
```
|
|
164
|
+
|
|
165
|
+
MCP client config:
|
|
166
|
+
|
|
167
|
+
```json
|
|
168
|
+
{
|
|
169
|
+
"mcpServers": {
|
|
170
|
+
"ui-ux-master": {
|
|
171
|
+
"command": "npx",
|
|
172
|
+
"args": ["-y", "--package", "ui-ux-master", "ui-ux-master-mcp"]
|
|
173
|
+
}
|
|
174
|
+
}
|
|
175
|
+
}
|
|
176
|
+
```
|
|
177
|
+
|
|
178
|
+
See `docs/mcp-server.md` for tools, resources, prompts, and Hermes config.
|
|
179
|
+
|
|
98
180
|
## Usage Examples
|
|
99
181
|
|
|
100
182
|
```text
|
|
@@ -126,21 +208,42 @@ ui-ux-master install --project --agents claude,codex,windsurf,antigravity,gemini
|
|
|
126
208
|
ui-ux-master install --project --dry-run
|
|
127
209
|
ui-ux-master doctor
|
|
128
210
|
ui-ux-master where
|
|
211
|
+
ui-ux-master mcp
|
|
212
|
+
ui-ux-master-mcp
|
|
129
213
|
ui-ux-master uninstall --project
|
|
130
214
|
```
|
|
131
215
|
|
|
132
216
|
## Package Structure
|
|
133
217
|
|
|
134
218
|
- `SKILL.md` — main orchestration skill.
|
|
219
|
+
- `index.mjs`, `index.cjs`, `index.d.ts` — ESM, CommonJS, and TypeScript metadata entrypoints.
|
|
135
220
|
- `references/` — advanced playbooks and standards-aligned checklists.
|
|
136
221
|
- `templates/` — briefs, audits, component specs, design-system specs, and project UI/UX memory template.
|
|
137
222
|
- `agent-templates/` — Claude, Codex, Windsurf, Antigravity, Gemini, Cursor, and universal `/ui-ux-master` activation rules.
|
|
138
|
-
- `docs/` — cross-agent slash-command compatibility docs.
|
|
223
|
+
- `docs/` — cross-agent slash-command compatibility docs and MCP server docs.
|
|
224
|
+
- `system-prompts/` — full, compact, and MCP-focused system prompt add-ons.
|
|
225
|
+
- `ai-discovery/` — machine-readable discovery manifest.
|
|
226
|
+
- `llms.txt` — AI-readable package map.
|
|
139
227
|
- `bin/ui-ux-master.mjs` — npm CLI installer.
|
|
228
|
+
- `bin/ui-ux-master-mcp.mjs` — local MCP server.
|
|
140
229
|
- `scripts/validate_skill.py` — dependency-free release validator.
|
|
141
230
|
- `scripts/build_deployment_zip.py` — clean deployment zip builder.
|
|
142
231
|
- `tests/` — npm installer and package smoke tests.
|
|
143
232
|
|
|
233
|
+
## GitHub Repository Setup
|
|
234
|
+
|
|
235
|
+
Recommended About section:
|
|
236
|
+
|
|
237
|
+
- Description: `Opt-in UI/UX master skill, CLI, and MCP server for AI coding agents. Accessibility, design systems, UX research, and frontend handoff in one workflow.`
|
|
238
|
+
- Website: `https://www.npmjs.com/package/ui-ux-master`
|
|
239
|
+
- Enable releases and issues. Enable discussions when you are ready to support community questions.
|
|
240
|
+
|
|
241
|
+
Recommended GitHub topics:
|
|
242
|
+
|
|
243
|
+
`ai-agent`, `ai-coding`, `ui-ux`, `ux-research`, `product-design`, `design-system`, `accessibility`, `wcag`, `mcp`, `model-context-protocol`, `claude-code`, `codex`, `windsurf`, `cursor`, `gemini-cli`, `npm-package`, `cli`, `prompt-engineering`, `frontend`, `llms-txt`
|
|
244
|
+
|
|
245
|
+
For publishing and registry details, see `docs/package-publishing.md`.
|
|
246
|
+
|
|
144
247
|
## Validation and Testing
|
|
145
248
|
|
|
146
249
|
Run from this folder:
|
|
@@ -175,6 +278,7 @@ UI/UX Master is designed to outperform narrow UI prompt packs and simple design
|
|
|
175
278
|
5. Project memory: durable brand/design consistency via `.ui-ux-memory.md`.
|
|
176
279
|
6. Release engineering: npm packaging, CLI installer, validation, tests, and deployment zip.
|
|
177
280
|
7. Advanced risk coverage: ethics, privacy, dark patterns, localization, platform conventions, high-risk domains, and AI UX transparency.
|
|
281
|
+
8. AI discoverability: `llms.txt`, manifest, system prompt add-ons, and local MCP server.
|
|
178
282
|
|
|
179
283
|
## Deployment Readiness Checklist
|
|
180
284
|
|
|
@@ -183,6 +287,8 @@ UI/UX Master is designed to outperform narrow UI prompt packs and simple design
|
|
|
183
287
|
- [ ] `npm pack --dry-run` contains only intended files.
|
|
184
288
|
- [ ] `ui-ux-master install --project --dry-run` works.
|
|
185
289
|
- [ ] Agent templates contain `/ui-ux-master` and do not include local absolute paths.
|
|
290
|
+
- [ ] System prompt add-ons and MCP docs are included and mention `/ui-ux-master`.
|
|
291
|
+
- [ ] MCP smoke test returns `tools/list` and `resources/list` successfully.
|
|
186
292
|
- [ ] No `node_modules`, `__pycache__`, `.pyc`, graphify cache, coverage, logs, secrets, or local credentials are included.
|
|
187
293
|
|
|
188
294
|
## Known Limitations
|
package/SKILL.md
CHANGED
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: ui-ux-master
|
|
3
3
|
description: "Use when an agent must design, audit, improve, prototype, specify, or hand off any UI/UX work end-to-end. Provides one-stop UX strategy, research, IA, flows, wireframes, visual design, design systems, accessibility, usability testing, conversion, and engineering handoff workflows."
|
|
4
|
-
version: 1.1
|
|
5
|
-
author:
|
|
4
|
+
version: 1.2.1
|
|
5
|
+
author: Rupak Biswas
|
|
6
6
|
license: MIT
|
|
7
7
|
platforms: [linux, macos, windows]
|
|
8
8
|
metadata:
|
|
@@ -19,15 +19,26 @@ This is a one-stop UI/UX skill for agents. Use it whenever the user asks for any
|
|
|
19
19
|
|
|
20
20
|
The job is not only to make screens look good. The job is to solve the user's goal with a usable, accessible, coherent, implementable interface. Always connect design choices to user needs, product goals, content, system constraints, and measurable outcomes.
|
|
21
21
|
|
|
22
|
-
## Cross-Agent Activation
|
|
22
|
+
## Cross-Agent Activation
|
|
23
|
+
|
|
24
|
+
This skill is opt-in. In Codex, Claude, Windsurf, Antigravity, Gemini, Cursor, and other agents, activate it only when the user includes `/ui-ux-master` in the prompt or invokes the installed native slash command. If the user does not mention `/ui-ux-master`, do not apply this skill automatically.
|
|
25
|
+
|
|
26
|
+
When activated, the user can write naturally, for example: `/ui-ux-master audit this checkout flow` or `/ui-ux-master design a premium SaaS landing page`. Treat the rest of the prompt as the task and follow this SKILL.md plus the referenced files.
|
|
23
27
|
|
|
24
|
-
|
|
28
|
+
## AI Discovery and MCP
|
|
25
29
|
|
|
26
|
-
|
|
30
|
+
This package exposes the workflow through human-readable instructions and machine-readable discovery assets:
|
|
27
31
|
|
|
28
|
-
|
|
32
|
+
- `llms.txt` gives AI agents a short map of the package.
|
|
33
|
+
- `ai-discovery/ui-ux-master.manifest.json` describes activation, entrypoints, tools, resources, prompts, and supported agents.
|
|
34
|
+
- `system-prompts/` contains full, compact, and MCP-focused system prompt add-ons.
|
|
35
|
+
- `bin/ui-ux-master-mcp.mjs` runs a local read-only MCP server that exposes UI/UX Master tools, resources, and prompts.
|
|
29
36
|
|
|
30
|
-
|
|
37
|
+
Use MCP and system prompt add-ons only as discovery/activation layers. The workflow remains opt-in and should still require `/ui-ux-master` unless the user explicitly asks to use UI/UX Master.
|
|
38
|
+
|
|
39
|
+
## Core Operating Rule
|
|
40
|
+
|
|
41
|
+
Do not jump directly to visuals. Work in this order unless the user explicitly asks for a narrow task:
|
|
31
42
|
|
|
32
43
|
1. Check for existing UI/UX memory and branding first: `.ui-ux-memory.md`, design tokens, CSS variables, theme files, existing components, fonts, color scheme, and representative screens.
|
|
33
44
|
2. If memory exists, follow it as the design baseline. If no memory exists, create one for the application using `templates/ui-ux-memory.md` after inspecting existing branding or asking minimum high-value questions for a fresh project.
|
|
@@ -693,22 +704,29 @@ Use the supporting files in this skill folder when useful:
|
|
|
693
704
|
- `references/ui-ux-frontend-implementation-rules.md` — mandatory frontend implementation rules so agents do not miss stack inspection, states, accessibility, responsiveness, tokens, QA, or handoff.
|
|
694
705
|
- `references/wcag-aa-quick-reference.md` — practical WCAG 2.2 AA reference for agents.
|
|
695
706
|
- `references/design-system-playbook.md` — how to create or extend a design system.
|
|
696
|
-
- `references/top-100-brand-website-analysis.md` — top global brand website patterns and reusable frontend methods.
|
|
697
|
-
- `references/ux-research-methods.md` — research planning, method selection, evidence confidence, and ethical research rules.
|
|
698
|
-
- `references/usability-heuristics.md` — heuristic review, cognitive rules, and severity scoring.
|
|
699
|
-
- `references/platform-guidelines.md` — web, iOS, Android/Material, Windows, desktop, kiosk, email, TV, and cross-platform rules.
|
|
700
|
-
- `references/content-design-and-i18n.md` — UX writing, microcopy, localization, RTL, and content handoff.
|
|
701
|
-
- `references/ux-measurement-quality-gates.md` — task success metrics, UX measurement, accessibility gates, and definition of done.
|
|
702
|
-
- `references/ethical-inclusive-design.md` — dark-pattern avoidance, privacy UX, inclusive design, high-risk and AI interface rules.
|
|
703
|
-
- `references/service-design-journey-mapping.md` — journey maps, service blueprints, support handoff, and omnichannel checks.
|
|
704
|
-
- `references/data-visualization-dashboard-ux.md` — dashboard, table, chart, data-grid, and alerting UX rules.
|
|
705
|
-
- `references/accessibility-advanced-patterns.md` — complex widget accessibility and screen-reader test matrix.
|
|
706
|
-
- `references/ui-ux-curriculum-and-standards.md` — basic-to-advanced UI/UX curriculum and standards map.
|
|
707
|
-
- `references/competitive-landscape.md` — competitor gaps and strategy for staying ahead.
|
|
707
|
+
- `references/top-100-brand-website-analysis.md` — top global brand website patterns and reusable frontend methods.
|
|
708
|
+
- `references/ux-research-methods.md` — research planning, method selection, evidence confidence, and ethical research rules.
|
|
709
|
+
- `references/usability-heuristics.md` — heuristic review, cognitive rules, and severity scoring.
|
|
710
|
+
- `references/platform-guidelines.md` — web, iOS, Android/Material, Windows, desktop, kiosk, email, TV, and cross-platform rules.
|
|
711
|
+
- `references/content-design-and-i18n.md` — UX writing, microcopy, localization, RTL, and content handoff.
|
|
712
|
+
- `references/ux-measurement-quality-gates.md` — task success metrics, UX measurement, accessibility gates, and definition of done.
|
|
713
|
+
- `references/ethical-inclusive-design.md` — dark-pattern avoidance, privacy UX, inclusive design, high-risk and AI interface rules.
|
|
714
|
+
- `references/service-design-journey-mapping.md` — journey maps, service blueprints, support handoff, and omnichannel checks.
|
|
715
|
+
- `references/data-visualization-dashboard-ux.md` — dashboard, table, chart, data-grid, and alerting UX rules.
|
|
716
|
+
- `references/accessibility-advanced-patterns.md` — complex widget accessibility and screen-reader test matrix.
|
|
717
|
+
- `references/ui-ux-curriculum-and-standards.md` — basic-to-advanced UI/UX curriculum and standards map.
|
|
718
|
+
- `references/competitive-landscape.md` — competitor gaps and strategy for staying ahead.
|
|
708
719
|
- `docs/slash-command-compatibility.md` — cross-agent `/ui-ux-master` trigger compatibility.
|
|
720
|
+
- `docs/mcp-server.md` — MCP tools, resources, prompts, client configs, and smoke testing.
|
|
721
|
+
- `llms.txt` — AI-readable package map for discovery by agents and indexing tools.
|
|
722
|
+
- `ai-discovery/ui-ux-master.manifest.json` — machine-readable manifest for activation, entrypoints, MCP, and capabilities.
|
|
723
|
+
- `system-prompts/ui-ux-master-system-add-on.md` — full system prompt add-on.
|
|
724
|
+
- `system-prompts/ui-ux-master-compact.md` — compact system prompt add-on.
|
|
725
|
+
- `system-prompts/ui-ux-master-mcp-add-on.md` — MCP-focused system prompt add-on.
|
|
709
726
|
- `agent-templates/` — Claude, Codex, Windsurf, Antigravity, Gemini, Cursor, and universal installer templates.
|
|
710
727
|
- `bin/ui-ux-master.mjs` — npm CLI installer.
|
|
711
|
-
- `
|
|
728
|
+
- `bin/ui-ux-master-mcp.mjs` — local read-only MCP server.
|
|
729
|
+
- `templates/ui-ux-brief.md` — intake and requirements template.
|
|
712
730
|
- `templates/ui-ux-memory.md` — project UI/UX memory file template to copy into an application root as `.ui-ux-memory.md`.
|
|
713
731
|
- `templates/ui-ux-audit-report.md` — audit output template.
|
|
714
732
|
- `templates/component-spec.md` — component handoff template.
|
|
@@ -0,0 +1,84 @@
|
|
|
1
|
+
{
|
|
2
|
+
"schema_version": "1.0",
|
|
3
|
+
"name": "ui-ux-master",
|
|
4
|
+
"title": "UI/UX Master",
|
|
5
|
+
"version": "1.2.0",
|
|
6
|
+
"author": "Rupak Biswas",
|
|
7
|
+
"description": "One-stop UI/UX master skill for AI agents with opt-in /ui-ux-master activation, system prompt add-ons, project-local skill assets, and local MCP discovery.",
|
|
8
|
+
"activation": {
|
|
9
|
+
"trigger": "/ui-ux-master",
|
|
10
|
+
"mode": "opt-in-only",
|
|
11
|
+
"do_not_auto_apply_without_trigger": true
|
|
12
|
+
},
|
|
13
|
+
"entrypoints": {
|
|
14
|
+
"skill": "SKILL.md",
|
|
15
|
+
"readme": "README.md",
|
|
16
|
+
"llms": "llms.txt",
|
|
17
|
+
"mcp_server_bin": "ui-ux-master-mcp",
|
|
18
|
+
"cli_bin": "ui-ux-master"
|
|
19
|
+
},
|
|
20
|
+
"system_prompt_addons": [
|
|
21
|
+
"system-prompts/ui-ux-master-system-add-on.md",
|
|
22
|
+
"system-prompts/ui-ux-master-compact.md",
|
|
23
|
+
"system-prompts/ui-ux-master-mcp-add-on.md"
|
|
24
|
+
],
|
|
25
|
+
"mcp": {
|
|
26
|
+
"server_name": "ui-ux-master",
|
|
27
|
+
"transport": "stdio",
|
|
28
|
+
"command": "npx",
|
|
29
|
+
"args": ["-y", "--package", "ui-ux-master", "ui-ux-master-mcp"],
|
|
30
|
+
"tools": [
|
|
31
|
+
"get_skill",
|
|
32
|
+
"list_assets",
|
|
33
|
+
"get_asset",
|
|
34
|
+
"generate_system_prompt",
|
|
35
|
+
"create_memory_template",
|
|
36
|
+
"install_instructions"
|
|
37
|
+
],
|
|
38
|
+
"resources": [
|
|
39
|
+
"ui-ux-master://skill",
|
|
40
|
+
"ui-ux-master://readme",
|
|
41
|
+
"ui-ux-master://llms",
|
|
42
|
+
"ui-ux-master://manifest",
|
|
43
|
+
"ui-ux-master://system-prompt",
|
|
44
|
+
"ui-ux-master://compact-prompt",
|
|
45
|
+
"ui-ux-master://mcp-prompt",
|
|
46
|
+
"ui-ux-master://mcp-docs",
|
|
47
|
+
"ui-ux-master://checklist",
|
|
48
|
+
"ui-ux-master://memory-template"
|
|
49
|
+
],
|
|
50
|
+
"prompts": [
|
|
51
|
+
"ui-ux-master",
|
|
52
|
+
"ui-ux-audit",
|
|
53
|
+
"ui-ux-redesign",
|
|
54
|
+
"ui-ux-design-system",
|
|
55
|
+
"ui-ux-accessibility-review"
|
|
56
|
+
]
|
|
57
|
+
},
|
|
58
|
+
"supported_agents": [
|
|
59
|
+
"Claude Code",
|
|
60
|
+
"Codex",
|
|
61
|
+
"Windsurf",
|
|
62
|
+
"Antigravity",
|
|
63
|
+
"Gemini CLI",
|
|
64
|
+
"Cursor",
|
|
65
|
+
"MCP clients",
|
|
66
|
+
"Universal agents"
|
|
67
|
+
],
|
|
68
|
+
"capabilities": [
|
|
69
|
+
"UX strategy",
|
|
70
|
+
"UX research planning",
|
|
71
|
+
"information architecture",
|
|
72
|
+
"user flows",
|
|
73
|
+
"wireframes",
|
|
74
|
+
"visual design direction",
|
|
75
|
+
"design systems",
|
|
76
|
+
"accessibility",
|
|
77
|
+
"responsive design",
|
|
78
|
+
"content design",
|
|
79
|
+
"localization",
|
|
80
|
+
"ethical UX",
|
|
81
|
+
"frontend implementation handoff",
|
|
82
|
+
"QA and acceptance criteria"
|
|
83
|
+
]
|
|
84
|
+
}
|
|
@@ -0,0 +1,243 @@
|
|
|
1
|
+
#!/usr/bin/env node
|
|
2
|
+
import fs from 'node:fs';
|
|
3
|
+
import path from 'node:path';
|
|
4
|
+
import readline from 'node:readline';
|
|
5
|
+
import { fileURLToPath } from 'node:url';
|
|
6
|
+
|
|
7
|
+
const __filename = fileURLToPath(import.meta.url);
|
|
8
|
+
const packageRoot = path.resolve(path.dirname(__filename), '..');
|
|
9
|
+
const protocolVersion = '2024-11-05';
|
|
10
|
+
|
|
11
|
+
const assetMap = {
|
|
12
|
+
skill: 'SKILL.md',
|
|
13
|
+
readme: 'README.md',
|
|
14
|
+
llms: 'llms.txt',
|
|
15
|
+
manifest: 'ai-discovery/ui-ux-master.manifest.json',
|
|
16
|
+
system_prompt: 'system-prompts/ui-ux-master-system-add-on.md',
|
|
17
|
+
compact_prompt: 'system-prompts/ui-ux-master-compact.md',
|
|
18
|
+
mcp_prompt: 'system-prompts/ui-ux-master-mcp-add-on.md',
|
|
19
|
+
mcp_docs: 'docs/mcp-server.md',
|
|
20
|
+
slash_docs: 'docs/slash-command-compatibility.md',
|
|
21
|
+
memory_workflow: 'references/ui-ux-memory-workflow.md',
|
|
22
|
+
frontend_rules: 'references/ui-ux-frontend-implementation-rules.md',
|
|
23
|
+
complete_checklist: 'references/ui-ux-complete-checklist.md',
|
|
24
|
+
wcag: 'references/wcag-aa-quick-reference.md',
|
|
25
|
+
accessibility_patterns: 'references/accessibility-advanced-patterns.md',
|
|
26
|
+
design_system_playbook: 'references/design-system-playbook.md',
|
|
27
|
+
memory_template: 'templates/ui-ux-memory.md',
|
|
28
|
+
};
|
|
29
|
+
|
|
30
|
+
const resourceMap = {
|
|
31
|
+
'ui-ux-master://skill': 'SKILL.md',
|
|
32
|
+
'ui-ux-master://readme': 'README.md',
|
|
33
|
+
'ui-ux-master://llms': 'llms.txt',
|
|
34
|
+
'ui-ux-master://manifest': 'ai-discovery/ui-ux-master.manifest.json',
|
|
35
|
+
'ui-ux-master://system-prompt': 'system-prompts/ui-ux-master-system-add-on.md',
|
|
36
|
+
'ui-ux-master://compact-prompt': 'system-prompts/ui-ux-master-compact.md',
|
|
37
|
+
'ui-ux-master://mcp-prompt': 'system-prompts/ui-ux-master-mcp-add-on.md',
|
|
38
|
+
'ui-ux-master://mcp-docs': 'docs/mcp-server.md',
|
|
39
|
+
'ui-ux-master://checklist': 'references/ui-ux-complete-checklist.md',
|
|
40
|
+
'ui-ux-master://memory-template': 'templates/ui-ux-memory.md',
|
|
41
|
+
};
|
|
42
|
+
|
|
43
|
+
function readRel(rel) {
|
|
44
|
+
const full = path.resolve(packageRoot, rel);
|
|
45
|
+
if (!full.startsWith(packageRoot)) throw new Error('Path escapes package root');
|
|
46
|
+
return fs.readFileSync(full, 'utf8');
|
|
47
|
+
}
|
|
48
|
+
|
|
49
|
+
function textContent(text) {
|
|
50
|
+
return [{ type: 'text', text }];
|
|
51
|
+
}
|
|
52
|
+
|
|
53
|
+
function jsonText(obj) {
|
|
54
|
+
return textContent(JSON.stringify(obj, null, 2));
|
|
55
|
+
}
|
|
56
|
+
|
|
57
|
+
function tool(name, description, properties = {}, required = []) {
|
|
58
|
+
return {
|
|
59
|
+
name,
|
|
60
|
+
description,
|
|
61
|
+
inputSchema: {
|
|
62
|
+
type: 'object',
|
|
63
|
+
properties,
|
|
64
|
+
required,
|
|
65
|
+
additionalProperties: false,
|
|
66
|
+
},
|
|
67
|
+
};
|
|
68
|
+
}
|
|
69
|
+
|
|
70
|
+
function listTools() {
|
|
71
|
+
return [
|
|
72
|
+
tool('get_skill', 'Return the main UI/UX Master SKILL.md content.', {}, []),
|
|
73
|
+
tool('list_assets', 'List discoverable UI/UX Master assets, references, prompts, and resources.', {}, []),
|
|
74
|
+
tool('get_asset', 'Return a named package asset such as skill, readme, system_prompt, complete_checklist, or memory_template.', {
|
|
75
|
+
name: { type: 'string', description: `Asset name. Allowed: ${Object.keys(assetMap).join(', ')}` },
|
|
76
|
+
}, ['name']),
|
|
77
|
+
tool('generate_system_prompt', 'Generate a system prompt add-on for an AI agent.', {
|
|
78
|
+
mode: { type: 'string', enum: ['full', 'compact', 'mcp'], default: 'full' },
|
|
79
|
+
agent: { type: 'string', description: 'Optional target agent name such as Claude, Codex, Windsurf, Cursor, Gemini, Antigravity, or universal.' },
|
|
80
|
+
}, []),
|
|
81
|
+
tool('create_memory_template', 'Return a project .ui-ux-memory.md template with optional project name inserted.', {
|
|
82
|
+
projectName: { type: 'string', description: 'Optional project/product name.' },
|
|
83
|
+
}, []),
|
|
84
|
+
tool('install_instructions', 'Return install instructions for npm, project agent rules, or MCP clients.', {
|
|
85
|
+
target: { type: 'string', enum: ['npm', 'project', 'global', 'mcp', 'claude-desktop', 'hermes', 'cursor', 'codex', 'windsurf', 'gemini', 'antigravity', 'universal'], default: 'project' },
|
|
86
|
+
}, []),
|
|
87
|
+
];
|
|
88
|
+
}
|
|
89
|
+
|
|
90
|
+
function callTool(name, args = {}) {
|
|
91
|
+
switch (name) {
|
|
92
|
+
case 'get_skill':
|
|
93
|
+
return { content: textContent(readRel('SKILL.md')) };
|
|
94
|
+
case 'list_assets':
|
|
95
|
+
return { content: jsonText({ assets: assetMap, resources: Object.keys(resourceMap), prompts: listPrompts().map(p => p.name), tools: listTools().map(t => t.name) }) };
|
|
96
|
+
case 'get_asset': {
|
|
97
|
+
const rel = assetMap[args.name];
|
|
98
|
+
if (!rel) throw new Error(`Unknown asset '${args.name}'. Use list_assets first.`);
|
|
99
|
+
return { content: textContent(readRel(rel)) };
|
|
100
|
+
}
|
|
101
|
+
case 'generate_system_prompt': {
|
|
102
|
+
const mode = args.mode || 'full';
|
|
103
|
+
const rel = mode === 'compact' ? assetMap.compact_prompt : mode === 'mcp' ? assetMap.mcp_prompt : assetMap.system_prompt;
|
|
104
|
+
const agentLine = args.agent ? `\n\nTarget agent: ${args.agent}. Keep the /ui-ux-master opt-in rule and use that agent's instruction format when applying this add-on.\n` : '';
|
|
105
|
+
return { content: textContent(readRel(rel) + agentLine) };
|
|
106
|
+
}
|
|
107
|
+
case 'create_memory_template': {
|
|
108
|
+
let text = readRel('templates/ui-ux-memory.md');
|
|
109
|
+
if (args.projectName) text = text.replace('# UI/UX Memory', `# UI/UX Memory — ${args.projectName}`);
|
|
110
|
+
return { content: textContent(text) };
|
|
111
|
+
}
|
|
112
|
+
case 'install_instructions':
|
|
113
|
+
return { content: textContent(installInstructions(args.target || 'project')) };
|
|
114
|
+
default:
|
|
115
|
+
throw new Error(`Unknown tool '${name}'`);
|
|
116
|
+
}
|
|
117
|
+
}
|
|
118
|
+
|
|
119
|
+
function installInstructions(target) {
|
|
120
|
+
const common = 'After install, activate with: /ui-ux-master <your normal UI/UX request>';
|
|
121
|
+
const map = {
|
|
122
|
+
npm: 'npm install -g ui-ux-master\nui-ux-master install --global',
|
|
123
|
+
project: 'npm install --save-dev ui-ux-master\nnpx ui-ux-master install --project',
|
|
124
|
+
global: 'npm install -g ui-ux-master\nui-ux-master install --global',
|
|
125
|
+
mcp: 'npx -y --package ui-ux-master ui-ux-master-mcp\n# or after install: ui-ux-master-mcp',
|
|
126
|
+
hermes: 'mcp_servers:\n ui_ux_master:\n command: "npx"\n args: ["-y", "--package", "ui-ux-master", "ui-ux-master-mcp"]',
|
|
127
|
+
'claude-desktop': '{\n "mcpServers": {\n "ui-ux-master": {\n "command": "npx",\n "args": ["-y", "--package", "ui-ux-master", "ui-ux-master-mcp"]\n }\n }\n}',
|
|
128
|
+
cursor: 'npx ui-ux-master install --project --agents cursor',
|
|
129
|
+
codex: 'npx ui-ux-master install --project --agents codex',
|
|
130
|
+
windsurf: 'npx ui-ux-master install --project --agents windsurf',
|
|
131
|
+
gemini: 'npx ui-ux-master install --project --agents gemini',
|
|
132
|
+
antigravity: 'npx ui-ux-master install --project --agents antigravity',
|
|
133
|
+
universal: 'Copy system-prompts/ui-ux-master-system-add-on.md into the agent custom instructions, or run npx ui-ux-master install --project --agents universal',
|
|
134
|
+
};
|
|
135
|
+
return `${map[target] || map.project}\n\n${common}`;
|
|
136
|
+
}
|
|
137
|
+
|
|
138
|
+
function listResources() {
|
|
139
|
+
return Object.entries(resourceMap).map(([uri, rel]) => ({
|
|
140
|
+
uri,
|
|
141
|
+
name: path.basename(rel),
|
|
142
|
+
description: `UI/UX Master asset: ${rel}`,
|
|
143
|
+
mimeType: rel.endsWith('.json') ? 'application/json' : 'text/markdown',
|
|
144
|
+
}));
|
|
145
|
+
}
|
|
146
|
+
|
|
147
|
+
function readResource(uri) {
|
|
148
|
+
const rel = resourceMap[uri];
|
|
149
|
+
if (!rel) throw new Error(`Unknown resource '${uri}'`);
|
|
150
|
+
return { contents: [{ uri, mimeType: rel.endsWith('.json') ? 'application/json' : 'text/markdown', text: readRel(rel) }] };
|
|
151
|
+
}
|
|
152
|
+
|
|
153
|
+
function listPrompts() {
|
|
154
|
+
return [
|
|
155
|
+
{ name: 'ui-ux-master', description: 'Activate the full UI/UX Master workflow for a normal user task.', arguments: [{ name: 'task', description: 'The user UI/UX request.', required: true }] },
|
|
156
|
+
{ name: 'ui-ux-audit', description: 'Audit a screen, flow, app, or URL for UX, UI, accessibility, and handoff issues.', arguments: [{ name: 'target', description: 'What to audit.', required: true }] },
|
|
157
|
+
{ name: 'ui-ux-redesign', description: 'Redesign a product area while preserving or intentionally evolving brand conventions.', arguments: [{ name: 'target', description: 'What to redesign.', required: true }] },
|
|
158
|
+
{ name: 'ui-ux-design-system', description: 'Create or extend a design system with tokens, components, governance, and QA.', arguments: [{ name: 'scope', description: 'Product/component scope.', required: true }] },
|
|
159
|
+
{ name: 'ui-ux-accessibility-review', description: 'Run a WCAG-focused accessibility and interaction review.', arguments: [{ name: 'target', description: 'Screen, component, or flow.', required: true }] },
|
|
160
|
+
];
|
|
161
|
+
}
|
|
162
|
+
|
|
163
|
+
function getPrompt(name, args = {}) {
|
|
164
|
+
const task = args.task || args.target || args.scope || 'the requested UI/UX work';
|
|
165
|
+
const map = {
|
|
166
|
+
'ui-ux-master': `/ui-ux-master ${task}\n\nUse the full UI/UX Master workflow. Check UI/UX memory first. Produce implementation-ready output.`,
|
|
167
|
+
'ui-ux-audit': `/ui-ux-master audit ${task} for UX clarity, accessibility, responsive behavior, content, trust, conversion, states, and implementation quality. Return prioritized findings and fixes.`,
|
|
168
|
+
'ui-ux-redesign': `/ui-ux-master redesign ${task}. Preserve existing brand/tokens/components unless a redesign is requested. Include IA, flow, layout, states, accessibility, responsive rules, copy, and developer handoff.`,
|
|
169
|
+
'ui-ux-design-system': `/ui-ux-master create or extend a design system for ${task}. Include tokens, components, variants, states, accessibility, governance, examples, QA, and acceptance criteria.`,
|
|
170
|
+
'ui-ux-accessibility-review': `/ui-ux-master review ${task} for WCAG 2.2 AA, keyboard, focus, semantics, screen reader behavior, contrast, motion, forms, error recovery, and test coverage.`,
|
|
171
|
+
};
|
|
172
|
+
if (!map[name]) throw new Error(`Unknown prompt '${name}'`);
|
|
173
|
+
return { messages: [{ role: 'user', content: { type: 'text', text: map[name] } }] };
|
|
174
|
+
}
|
|
175
|
+
|
|
176
|
+
function ok(id, result) {
|
|
177
|
+
process.stdout.write(JSON.stringify({ jsonrpc: '2.0', id, result }) + '\n');
|
|
178
|
+
}
|
|
179
|
+
|
|
180
|
+
function err(id, error, code = -32603) {
|
|
181
|
+
process.stdout.write(JSON.stringify({ jsonrpc: '2.0', id, error: { code, message: error?.message || String(error) } }) + '\n');
|
|
182
|
+
}
|
|
183
|
+
|
|
184
|
+
function handle(message) {
|
|
185
|
+
const { id, method, params = {} } = message;
|
|
186
|
+
try {
|
|
187
|
+
if (method === 'initialize') {
|
|
188
|
+
ok(id, {
|
|
189
|
+
protocolVersion,
|
|
190
|
+
capabilities: { tools: {}, resources: {}, prompts: {} },
|
|
191
|
+
serverInfo: { name: 'ui-ux-master', version: readPackageVersion() },
|
|
192
|
+
});
|
|
193
|
+
} else if (method === 'notifications/initialized') {
|
|
194
|
+
// no response for notifications
|
|
195
|
+
} else if (method === 'ping') {
|
|
196
|
+
ok(id, {});
|
|
197
|
+
} else if (method === 'tools/list') {
|
|
198
|
+
ok(id, { tools: listTools() });
|
|
199
|
+
} else if (method === 'tools/call') {
|
|
200
|
+
ok(id, callTool(params.name, params.arguments || {}));
|
|
201
|
+
} else if (method === 'resources/list') {
|
|
202
|
+
ok(id, { resources: listResources() });
|
|
203
|
+
} else if (method === 'resources/read') {
|
|
204
|
+
ok(id, readResource(params.uri));
|
|
205
|
+
} else if (method === 'prompts/list') {
|
|
206
|
+
ok(id, { prompts: listPrompts() });
|
|
207
|
+
} else if (method === 'prompts/get') {
|
|
208
|
+
ok(id, getPrompt(params.name, params.arguments || {}));
|
|
209
|
+
} else {
|
|
210
|
+
err(id, new Error(`Method not found: ${method}`), -32601);
|
|
211
|
+
}
|
|
212
|
+
} catch (e) {
|
|
213
|
+
err(id, e);
|
|
214
|
+
}
|
|
215
|
+
}
|
|
216
|
+
|
|
217
|
+
function readPackageVersion() {
|
|
218
|
+
try {
|
|
219
|
+
return JSON.parse(readRel('package.json')).version || '0.0.0';
|
|
220
|
+
} catch {
|
|
221
|
+
return '0.0.0';
|
|
222
|
+
}
|
|
223
|
+
}
|
|
224
|
+
|
|
225
|
+
function printHelp() {
|
|
226
|
+
console.log(`UI/UX Master MCP Server\n\nRun over stdio for MCP clients:\n ui-ux-master-mcp\n\nExample client config:\n{\n "mcpServers": {\n "ui-ux-master": {\n "command": "npx",\n "args": ["-y", "--package", "ui-ux-master", "ui-ux-master-mcp"]\n }\n }\n}`);
|
|
227
|
+
}
|
|
228
|
+
|
|
229
|
+
if (process.argv.includes('--help') || process.argv.includes('-h')) {
|
|
230
|
+
printHelp();
|
|
231
|
+
process.exit(0);
|
|
232
|
+
}
|
|
233
|
+
|
|
234
|
+
const rl = readline.createInterface({ input: process.stdin, crlfDelay: Infinity });
|
|
235
|
+
rl.on('line', (line) => {
|
|
236
|
+
const trimmed = line.trim();
|
|
237
|
+
if (!trimmed) return;
|
|
238
|
+
try {
|
|
239
|
+
handle(JSON.parse(trimmed));
|
|
240
|
+
} catch (e) {
|
|
241
|
+
err(null, e);
|
|
242
|
+
}
|
|
243
|
+
});
|
package/bin/ui-ux-master.mjs
CHANGED
|
@@ -81,8 +81,8 @@ function wanted(opts, name) {
|
|
|
81
81
|
|
|
82
82
|
function copyProjectSkillAssets(root, dryRun) {
|
|
83
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'];
|
|
84
|
+
const files = ['SKILL.md', 'README.md', 'LICENSE', 'package.json', 'llms.txt'];
|
|
85
|
+
const dirs = ['references', 'templates', 'docs', 'system-prompts', 'ai-discovery'];
|
|
86
86
|
for (const file of files) {
|
|
87
87
|
writeFile(path.join(dest, file), read(file), dryRun);
|
|
88
88
|
}
|
|
@@ -161,7 +161,7 @@ function doctor(opts) {
|
|
|
161
161
|
console.log(`target root: ${root}`);
|
|
162
162
|
console.log(`node: ${process.version}`);
|
|
163
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'];
|
|
164
|
+
const required = ['SKILL.md', 'README.md', 'llms.txt', 'references/ui-ux-complete-checklist.md', 'agent-templates/universal/ui-ux-master-trigger.md', 'system-prompts/ui-ux-master-system-add-on.md', 'docs/mcp-server.md', 'bin/ui-ux-master-mcp.mjs'];
|
|
165
165
|
let ok = true;
|
|
166
166
|
for (const rel of required) {
|
|
167
167
|
const exists = fs.existsSync(path.join(packageRoot, rel));
|
|
@@ -172,7 +172,7 @@ function doctor(opts) {
|
|
|
172
172
|
}
|
|
173
173
|
|
|
174
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
|
|
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 ui-ux-master mcp\n ui-ux-master-mcp\n\nAfter install, use: /ui-ux-master <your normal UI/UX prompt>\nMCP: npx -y --package ui-ux-master ui-ux-master-mcp`);
|
|
176
176
|
}
|
|
177
177
|
|
|
178
178
|
const opts = parseArgs(process.argv.slice(2));
|
|
@@ -185,6 +185,8 @@ if (opts.postinstall) {
|
|
|
185
185
|
uninstallProject(findProjectRoot(opts.dir || process.cwd()), opts);
|
|
186
186
|
} else if (opts.command === 'doctor') {
|
|
187
187
|
doctor(opts);
|
|
188
|
+
} else if (opts.command === 'mcp' || opts.command === 'ui-ux-master-mcp') {
|
|
189
|
+
await import('./ui-ux-master-mcp.mjs');
|
|
188
190
|
} else if (opts.command === 'where') {
|
|
189
191
|
console.log(packageRoot);
|
|
190
192
|
} else {
|