~ / rigs / plugin87 / ux-ui-agent-skills

plugin87/ux-ui-agent-skills

Turn Claude into a senior design architect: DTCG tokens, 50 components, WCAG 2.2 AA-AAA, 138 design systems, any-framework code, and 48 objective gates that fail the build instead of faking success.

↗ GitHub ★ 1,531 mit updated 4d ago project Claude CodeCodex Claude plugin
share on X
ARCHETYPE
Skill Collector
Ten-plus skills loaded on demand. A procedural-knowledge library.
CONTEXT TAX · EVERY TURN
~18.4k tokens
Context hog · median rig: 2.3k · breakdown
GUARDRAILS
1/5
No YOLO mode · details

Copy this rig

# review before running: this installs third-party code
$ claude mcp add figma -e FIGMA_<redacted> -- npx -y figma-developer-mcp --stdio
$ claude mcp add notion -e NOTION_<redacted> -- npx -y @notionhq/notion-mcp-server
$ npx degit plugin87/ux-ui-agent-skills/.claude ./rig-ux-ui-agent-skills  # inspect, then merge into .claude/

MCP servers are added to Claude Code at local scope; env vars are shown as YOUR_… placeholders — we never store values. Files are fetched with degit into a separate folder so you can review before merging.

$ claude mcp add figma -e FIGMA_<redacted> -- npx -y figma-developer-mcp --stdio
$ claude mcp add notion -e NOTION_<redacted> -- npx -y @notionhq/notion-mcp-server
$ npx degit plugin87/ux-ui-agent-skills/.claude/skills/a11y-audit .claude/skills/a11y-audit
$ npx degit plugin87/ux-ui-agent-skills/.claude/skills/apply-aesthetic .claude/skills/apply-aesthetic
$ npx degit plugin87/ux-ui-agent-skills/.claude/skills/brandkit .claude/skills/brandkit
$ npx degit plugin87/ux-ui-agent-skills/.claude/skills/critique .claude/skills/critique
$ npx degit plugin87/ux-ui-agent-skills/.claude/skills/data-dashboard .claude/skills/data-dashboard
$ npx degit plugin87/ux-ui-agent-skills/.claude/skills/design-code .claude/skills/design-code
$ npx degit plugin87/ux-ui-agent-skills/.claude/skills/design-component .claude/skills/design-component
$ npx degit plugin87/ux-ui-agent-skills/.claude/skills/design-doctrine .claude/skills/design-doctrine
$ npx degit plugin87/ux-ui-agent-skills/.claude/skills/design-qa .claude/skills/design-qa
$ npx degit plugin87/ux-ui-agent-skills/.claude/skills/design-review .claude/skills/design-review
$ npx degit plugin87/ux-ui-agent-skills/.claude/skills/design-screen .claude/skills/design-screen
$ npx degit plugin87/ux-ui-agent-skills/.claude/skills/design-tokens .claude/skills/design-tokens
$ npx degit plugin87/ux-ui-agent-skills/.claude/skills/figma-integration .claude/skills/figma-integration
$ npx degit plugin87/ux-ui-agent-skills/.claude/skills/gate .claude/skills/gate
$ npx degit plugin87/ux-ui-agent-skills/.claude/skills/governance .claude/skills/governance
$ npx degit plugin87/ux-ui-agent-skills/.claude/skills/grill-me .claude/skills/grill-me
$ npx degit plugin87/ux-ui-agent-skills/.claude/skills/image-to-code .claude/skills/image-to-code
$ npx degit plugin87/ux-ui-agent-skills/.claude/skills/migrate-design-system .claude/skills/migrate-design-system
$ npx degit plugin87/ux-ui-agent-skills/.claude/skills/performance .claude/skills/performance
$ npx degit plugin87/ux-ui-agent-skills/.claude/skills/prototype .claude/skills/prototype
$ npx degit plugin87/ux-ui-agent-skills/.claude/skills/redesign .claude/skills/redesign
$ npx degit plugin87/ux-ui-agent-skills/.claude/skills/scaffold-project .claude/skills/scaffold-project
$ npx degit plugin87/ux-ui-agent-skills/.claude/skills/ship .claude/skills/ship
$ npx degit plugin87/ux-ui-agent-skills/.claude/skills/token-build .claude/skills/token-build
$ npx degit plugin87/ux-ui-agent-skills/.claude/skills/ux-writing .claude/skills/ux-writing
$ curl -fsSL --create-dirs -o .claude/agents/design-critic.md https://raw.githubusercontent.com/plugin87/ux-ui-agent-skills/main/.claude/agents/design-critic.md

This rig commits no guardrails. Here is the community baseline instead — the deny/ask rules most often found across all 7,204 rigs:

{
  "permissions": {
    "deny": [
      "Read(./.env)",
      "Read(**/.env)",
      "Read(~/.ssh/**)",
      "Bash(rm -rf *)",
      "Read(**/*.pem)",
      "Bash(rm -rf /)",
      "Bash(git push --force:*)",
      "Bash(sudo *)",
      "Read(.env)",
      "Bash(rm -rf /*)",
      "Read(./.env.*)",
      "Read(~/.aws/**)",
      "Bash(git push --force*)",
      "Bash(rm -rf:*)",
      "Read(**/*.key)",
      "Read(**/.env.*)",
      "Bash(sudo:*)",
      "Bash(git reset --hard*)",
      "Bash(git reset --hard:*)",
      "Read(.env.*)"
    ],
    "ask": [
      "Bash(git push:*)",
      "Bash(git push *)",
      "Bash(git commit:*)",
      "Bash(rm *)",
      "Bash(rm:*)",
      "Bash(git rebase *)",
      "Bash(wget *)",
      "Bash(npm publish:*)",
      "Bash(git commit *)",
      "Bash(gh pr merge *)"
    ]
  }
}

MCP servers (2)

serversourceest. tokens
Figma
env: FIGMA_API_KEY
npm 3.0k
Notion
env: NOTION_API_KEY
npm 6.0k

Skills (25)

Subagents (1)

design-critic
model: inherit
Adversarial senior design critic. Renders the work, looks at it, and argues for rejection. Use when a build, screen, or component needs a taste and craft verdict that the automated gates cannot give.

Hooks (3)

eventmatcherruns
SessionStartstartup|resume|clear|compactnode "$CLAUDE_PROJECT_DIR/hooks/session-start-preflight.mjs"
PostToolUseWrite|Editnode "$CLAUDE_PROJECT_DIR/hooks/posttooluse-fast-gates.mjs"
Stop*node "$CLAUDE_PROJECT_DIR/hooks/stop-require-measurement.mjs"

Slash commands (1)

/gate

Permissions

deny (0)
—
ask (0)
—
allow (56)
Bash(node scripts/gate.mjs:*)
Bash(node scripts/accuracy_report.mjs)
Bash(node scripts/measure_render.mjs:*)
Bash(node scripts/verify_states.mjs:*)
Bash(node scripts/verify_responsive.mjs:*)
Bash(node scripts/verify_rtl.mjs:*)
Bash(node scripts/verify_focustrap.mjs:*)
Bash(node scripts/axe_audit.mjs:*)
Bash(node scripts/taste_audit.mjs:*)
Bash(node scripts/slop_tells.mjs:*)
Bash(node scripts/verify_target_size.mjs:*)
Bash(node scripts/verify_reduced_motion.mjs:*)
Bash(node scripts/verify_keyboard.mjs:*)
Bash(node scripts/verify_overflow.mjs:*)
Bash(node scripts/verify_interactive.mjs:*)
Bash(node scripts/lint_intent.mjs:*)
Bash(node scripts/build_tokens.mjs:*)
Bash(python3 scripts/validate_tokens.py:*)
Bash(python3 scripts/validate_contrast.py:*)
Bash(python3 scripts/validate_component_spec.py:*)
Bash(python3 scripts/validate_theme_refs.py:*)
Bash(python3 scripts/validate_template.py:*)
Bash(python3 scripts/validate_instruction_surface.py:*)
Bash(node evals/run.mjs:*)
Bash(python3 scripts/lint_hardcodes.py:*)
Bash(python3 scripts/lint_taste.py:*)
Bash(python3 scripts/check_no_emoji.py:*)
Bash(python3 scripts/contrast.py:*)
Bash(python3 scripts/scaffold_component.py:*)
Bash(npm test)
Bash(npm run:*)
Bash(node hooks/:*)
Bash(node scripts/measure_render.mjs:*)
Bash(node scripts/verify_states.mjs:*)
Bash(node scripts/verify_responsive.mjs:*)
Bash(node scripts/verify_rtl.mjs:*)
Bash(node scripts/verify_focustrap.mjs:*)
Bash(node scripts/verify_target_size.mjs:*)
Bash(node scripts/verify_reduced_motion.mjs:*)
Bash(node scripts/verify_keyboard.mjs:*)
Bash(node scripts/verify_overflow.mjs:*)
Bash(node scripts/axe_audit.mjs:*)
Bash(node scripts/taste_audit.mjs:*)
Bash(node scripts/slop_tells.mjs:*)
Bash(node scripts/lint_intent.mjs:*)
Bash(node scripts/build_tokens.mjs:*)
Bash(python3 scripts/validate_tokens.py:*)
Bash(python3 scripts/validate_contrast.py:*)
Bash(python3 scripts/validate_theme_refs.py:*)
Bash(python3 scripts/lint_hardcodes.py:*)
Bash(python3 scripts/check_no_emoji.py:*)
Bash(python3 scripts/contrast.py:*)
Bash(git status:*)
Bash(git diff:*)
Bash(npm test)
Bash(npm run:*)

Similar rigs

copied ✓