mirror of
https://github.com/nextlevelbuilder/ui-ux-pro-max-skill.git
synced 2026-09-16 09:08:36 +00:00
* 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>