* fix(design): make workflows self-contained, add bundled-skill contract (#474 finding 2) The design skill's banner and social-photos workflows named skills the plugin does not ship (frontend-design, ai-artist, ai-multimodal, chrome-devtools, project-management, assets-organizing) and claudekit command namespaces (/ckm:brand, /ck:ui-ux-pro-max), so those steps fail or force the agent to improvise under a plugin or CLI install. Rewrite them after the pattern of #473: bundled skills stay referenced by name, optional tooling becomes an optional runtime capability, unbundled steps are implemented inline or dropped. The same references sat in references/social-photos-design.md, so the fix covers the skill directory, not just SKILL.md; the CLI copy is synced. check-asset-sync.yml gains a bundled-skill contract over both skill trees: no /ck: or /ckm: namespace, every "`name` skill" reference must be a directory under .claude/skills, and none of the claudekit-only names above in any spelling. Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com> * fix(design): address review - list-aware skill grep, case-insensitive denylist, banner intro, report naming - contract grep 2 walks comma/and/or lists so every member is checked, not only the last one, and accepts the sub-skill and bold forms; grep 3 matches case-insensitively; the step comment states what is not covered - banner intro no longer claims "no sibling skills" while step 2 names the bundled ui-ux-pro-max skill - social-photos report name stated inline instead of "naming pattern from session hooks" (a claudekit convention nothing in the bundle provides); "persistent" dropped from the task-list step; device-scale note scoped to tools that support it Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com> * fix(ci): match wrapped skill lists - read each file as one record in the bundled-skill contract A Markdown list wrapped over two lines ("`playwright-mcp`,\n`brand`, and `ui-ux-pro-max` skills") passed the line-oriented allowlist grep. Read the file as one record (-z, separators as \s+) so wrapped lists are still lists; a hit now names the file and the name instead of the line. grep's own exit status is taken inside the substitution so an unreadable file still fails the step under plain bash -e, pipefail or not. Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com> --------- Co-authored-by: Claude Fable 5.1 <noreply@anthropic.com>
ui-ux-pro-max-cli
CLI to install UI/UX Pro Max skill for AI coding assistants.
Installation
npm install -g ui-ux-pro-max-cli
Usage
# Install for specific AI assistant
uipro init --ai claude # Claude Code
uipro init --ai cursor # Cursor
uipro init --ai windsurf # Windsurf
uipro init --ai antigravity # Antigravity
uipro init --ai copilot # GitHub Copilot
uipro init --ai kiro # Kiro
uipro init --ai codex # Codex (Skills)
uipro init --ai roocode # Roo Code
uipro init --ai qoder # Qoder
uipro init --ai gemini # Gemini CLI
uipro init --ai trae # Trae
uipro init --ai opencode # OpenCode
uipro init --ai universal # Universal / Agent Standard (.agents/skills/)
uipro init --ai all # All assistants
# Options
uipro init --offline # Compatibility flag; installs bundled templates
uipro init --force # Overwrite existing files
uipro init --global # Install globally to home directory (~/)
# Other commands
uipro versions # List available versions
uipro update # Update the global CLI to the latest release
uipro update --global # Refresh globally installed skill files from this CLI package
GitHub Authentication
GitHub's unauthenticated API allows 60 requests/hour per IP. If you hit rate limits, you can provide a GitHub Personal Access Token (PAT) to raise the limit to 5,000 requests/hour.
Options (in order of precedence):
# 1. Pass directly as a flag (one-off use)
uipro init --token ghp_yourtoken
uipro versions --token ghp_yourtoken
uipro update --token ghp_yourtoken
# 2. Set as a project-scoped environment variable (recommended)
export UI_PRO_MAX_GITHUB_TOKEN=ghp_yourtoken
uipro init
# 3. Fallback: GITHUB_TOKEN is also read if UI_PRO_MAX_GITHUB_TOKEN is not set
export GITHUB_TOKEN=ghp_yourtoken
uipro init
Creating a token: Go to https://github.com/settings/tokens, click Generate new token (classic), and select no scopes — public repo access requires no permissions. Copy the token and store it as an environment secret; never hardcode it in source files.
Warning:
GITHUB_TOKENis automatically injected by GitHub Actions with broad repo permissions. PreferUI_PRO_MAX_GITHUB_TOKENin CI to avoid accidentally attaching workflow credentials to release download requests.
How It Works
uipro init generates assistant-specific files from the templates bundled with the installed CLI package. To get newer templates and data, update the package, then regenerate:
uipro update # updates the global CLI to the latest release
uipro init --ai codex --force # regenerate skill files from the new package
uipro update runs npm install -g ui-ux-pro-max-cli@latest for you (it shells out to npm only on Windows, where npm is a .cmd). You can still run that command manually if you prefer. When the CLI is already current, uipro update just refreshes the installed skill files.
Development
# Install dependencies
bun install
# Run locally
bun run src/index.ts --help
# Build
bun run build
# Sync bundled CLI assets from the source skill
npm run sync:assets
# Verify bundled assets are current before publishing
npm run check:assets
# Link for local testing
bun link
License
MIT