README.md
June 27, 2026 · View on GitHub
Plug-and-play MCP. UI superpowers for your agent.
Overview · Setup · Reference · Tools · Development
npm i designer-skill-mcp
Route
|
Know15 reference files cover type, color, motion, a11y, anti-slop, and redesign loops. Your agent reads the right file before writing UI code. |
CheckA 44-rule deterministic detector plus |
designer-skill-mcp is a small MCP server you add in one line. Your agent gets design tools, reference docs, and a ship gate so UI work stops looking generic.
flowchart LR A[Your prompt] --> B[dispatch_intent] B --> C[get_reference] C --> D[Build / polish UI] D --> E[anti_slop_checklist] E --> F[Ship] style A fill:#f8fafc,stroke:#94a3b8,color:#18181b style B fill:#eff6ff,stroke:#3b82f6,color:#1e3a8a style C fill:#faf5ff,stroke:#7c3aed,color:#4c1d95 style D fill:#fff7ed,stroke:#e87a3d,color:#7c2d12 style E fill:#ecfdf5,stroke:#10b981,color:#065f46 style F fill:#f1f5f9,stroke:#64748b,color:#0f172a
Add the server. Ask in plain language. The agent handles the rest.
Plugin (recommended)
One install gets both the skill and the MCP server:
/plugin marketplace add Pythoughts-labs/designer-skill
/plugin install designer-skill@pythoughts-labs
Codex CLI:
codex plugin marketplace add Pythoughts-labs/designer-skill
Then install designer-skill from the pythoughts-labs marketplace in /plugins. The skill appears as designer-skill:designer-skill.
Cursor: install from the marketplace (or open this repo). Plugin ships mcp.json, skills, and /designer-setup · /designer-status commands.
Plug in (any client)
Same one-liner everywhere. No API key. Repo-root mcp.json is the canonical MCP config (plugins reference it too):
{
"mcpServers": {
"designer-skill": {
"command": "npx",
"args": ["-y", "designer-skill-mcp@latest"]
}
}
}
Updates: @latest for newest npm; pin @0.11.0 for teams. Plugin skill content updates separately (/plugin update …). Registry: io.github.pythoughts-labs/designer-skill-mcp (publish via mcp-publisher after npm release).
| Client | Quick install |
|---|---|
| Pythinker | pythinker mcp add --transport stdio designer-skill -- npx -y designer-skill-mcp · guide |
| Codex CLI | codex mcp add designer-skill -- npx -y designer-skill-mcp |
| Claude Code | claude mcp add designer-skill -- npx -y designer-skill-mcp |
| Cursor | Cursor plugin or copy mcp.json → .cursor/mcp.json |
| VS Code | .vscode/mcp.json ("servers" + "type": "stdio") |
| Kilo Code | MCP Settings → mcp_settings.json |
| Open Code | opencode.json (key "mcp") |
| Pi | MCP config or native skill path |
Per-client config snippets
Pythinker (~/.pythinker/mcp.json)
{ "mcpServers": { "designer-skill": { "command": "npx", "args": ["-y", "designer-skill-mcp@latest"] } } }
Verify: pythinker mcp test designer-skill · TUI: /mcp lists the server, /tools shows mcp_designer-skill_*.
Codex CLI (~/.codex/config.toml)
[mcp_servers.designer-skill]
command = "npx"
args = ["-y", "designer-skill-mcp"]
Claude Desktop (~/Library/Application Support/Claude/claude_desktop_config.json)
{ "mcpServers": { "designer-skill": { "command": "npx", "args": ["-y", "designer-skill-mcp@latest"] } } }
Cursor (.cursor/mcp.json — same shape as repo-root mcp.json)
VS Code (.vscode/mcp.json, requires 1.99+ or MCP extension)
{
"servers": {
"designer-skill": {
"type": "stdio",
"command": "npx",
"args": ["-y", "designer-skill-mcp"]
}
}
}
Kilo Code (MCP Settings → Edit MCP Settings)
{
"mcpServers": {
"designer-skill": {
"command": "npx",
"args": ["-y", "designer-skill-mcp"],
"disabled": false,
"alwaysAllow": []
}
}
}
Open Code (opencode.json or ~/.config/opencode/config.json)
{
"mcp": {
"designer-skill": {
"type": "local",
"command": ["npx", "-y", "designer-skill-mcp"]
}
}
}
Pi (MCP config, same JSON as Pythinker, or register the skill natively):
{ "skills": [{ "path": "/path/to/skills/designer-skill/SKILL.md" }] }
Skill-only
cp -r skills/designer-skill/ ~/.claude/skills/designer-skill/ # Claude Code
cp -r skills/designer-skill/ ~/.codex/skills/designer-skill/ # Codex
Invoke with the Skill tool or $designer-skill on design tasks.
Invoke
|
Use designer-skill to redesign this pricing page without breaking functionality.
|
Files
| File | Use when | Tier |
|---|---|---|
design-principles.md | Typography, spacing, color, layout, hierarchy (neutral baseline) | core |
differentiation-playbook.md | How to be distinctive: inverse test, layout menu, one weird thing, named references | core |
aesthetic-systems.md | Picking a look: 5 systems with palettes, fonts, shadows | core |
motion-and-interaction.md | Animation timing, springs, scroll, reduced-motion | core |
engineering-and-performance.md | Tokens, a11y, responsive, Core Web Vitals, real-data hardening | core |
avoid-ai-slop.md | Ban-list, category-reflex checks, output-completeness contract | core |
refactor-and-redesign.md | Audit → diagnose → redesign without breaking behavior | core |
command-playbook.md | Intent → verb dispatch (build, finish, amplify, ship, …) | core |
interaction-design.md | Fitts/Hick/Miller, forms, navigation, errors, loading states | extended |
visual-critique.md | Seven-dimension critique instrument | extended |
design-systems.md | Token architecture, component specs, theming | extended |
project-init.md | Discovery interview, PRODUCT.md, DESIGN.md setup | extended |
craft-flow.md | Shape-then-build pipeline with user gates | extended |
live-mode.md | Browser variant mode: element select, HMR, poll/steer/accept | extended |
css-techniques.md | Modern CSS cookbook: resets, centering, selectors, logical props, container queries, :has(), clamp() | extended |
Intent → verb
| Phrase | Verb(s) | Read |
|---|---|---|
| "make it pop" | amplify · color | aesthetic-systems, design-principles |
| "it feels off" | check · layout | refactor-and-redesign, avoid-ai-slop |
| "production-ready" | ship · check | engineering-and-performance |
| "add some motion" | motion | motion-and-interaction |
| "it looks AI-made" | review · brand | avoid-ai-slop, aesthetic-systems |
| "redesign this" | check · refresh | refactor-and-redesign, command-playbook |
Preflight
| 1 | Scope the surface: brand register (distinctiveness) vs product register (earned familiarity). |
| 2 | Commit to one aesthetic system; never mix two signatures on one surface. |
| 3 | Run the category-reflex check in avoid-ai-slop.md. |
| 4 | Build on design-principles.md + engineering-and-performance.md; add motion last. |
| 5 | For existing UI, audit → diagnose → redesign. Do not rebuild from scratch. |
| 6 | Run the ship gate (anti_slop_checklist) before declaring done. |
| Tool | Purpose |
|---|---|
get_design_system | SKILL.md router (call first) |
load_project_context | Read PRODUCT.md / DESIGN.md from the project |
get_reference | One of fifteen reference files by name |
list_commands | All design verbs with descriptions |
get_command | Full guidance + references for a specific verb |
dispatch_intent | Map a request → verb(s) + files to read |
detect_antipatterns | Deterministic scan (44 rules), no LLM, no API key |
get_palette_seed | OKLCH brand-seed for greenfield palette work |
anti_slop_checklist | Ship gate: run before finishing any UI work |
Resources: designer://skill · designer://reference/{name}
Prompt: design (args: task required, aesthetic optional)
cd designer-skill-mcp
npm install
npm run build # syncs skills/designer-skill/ → assets/skill/, compiles TypeScript
npm test
HTTP mode (remote clients):
node dist/index.js --http --port 3017 # 127.0.0.1 (default)
node dist/index.js --http --port 3017 --host 0.0.0.0 # public: add auth/proxy
Endpoint: http://127.0.0.1:3017/mcp (Streamable HTTP). Includes Origin guard against DNS-rebinding; no built-in auth for public exposure.
Local checkout: replace npx with "command": "node", "args": ["/abs/path/to/designer-skill-mcp/dist/index.js"] in any config above.
