Repository navigation
v2.4.0 — skills-styles: local style library + upstream PR helper
Adds a meta-skill to manage the local style library — CRUD on user overrides at ~/.claude/style-library/<modality>/<id>.md, plus a submit subcommand that builds a self-contained upstream-PR package.
New skill: skills-styles
| Subcommand | What |
|---|---|
list [modality] |
Show styles with status (bundled / user-only / override) |
show <modality> <id> |
Print the resolved file (user wins) |
path [modality] [id] |
Print resolved path(s) |
add <modality> <id> |
Create user-override from bundled template |
add <modality> <id> --from <existing> |
Copy a bundled style as starting point |
edit <modality> <id> |
Open user-override in $EDITOR |
remove <modality> <id> --force |
Delete user-override (bundled untouched) |
validate <modality> <id> |
Frontmatter + body schema check |
diff <modality> <id> |
Diff user-override vs bundled |
submit <modality> <id> |
Build ./style-submission-<ts>-<modality>-<id>/ for upstream PR |
Validation enforces per-modality schema:
- carousel:
id, modality, display, mood, tags, text_friendly, photoreal+ 11 body fields incl. style anchors (carousel + text-in-image mode) - video: +
pacing(enum slow/medium/snap/kinetic) +dialogue_friendly+ 14 body fields incl. shot anchor + 8-12 action vocabulary items - music: +
bpm_range(regex^\\d{2,3}-\\d{2,3}$) +energy(enum calm/warm/driving/aggressive) +two_box+vocal_friendly+ 15 body fields incl. Suno Style box + meta-tag stacks
Anchor length check (≥40 chars), id must be kebab-case + match filename stem, modality must match directory.
submit workflow
Validates first; refuses invalid styles without --force. Builds a self-contained package:
style-submission-<ts>-<modality>-<id>/
├── common/style-library/<modality>/<id>.md # the file at exact repo path
├── PR-DESCRIPTION.md # fillable PR body + reviewer checklist
└── README.md # step-by-step manual PR instructions
No auto-gh pr create in v1 — fork detection + multi-step gh interaction is brittle. The skill prints exact next steps; you do the git ops + gh pr create manually (~2 minutes).
Per-modality templates
New bundled common/style-library/<modality>/_template.md (carousel + video + music) with all required frontmatter + body fields as <placeholders>, plus an inline <!-- conventions --> block reminding the user of validator rules and reviewer expectations. add copies the template and replaces <ID> + <MODALITY>.
Programmatic API
Direct Python use (skips the CLI):
from common.runners import styles
issues = styles.validate_style(styles.load_style(\"my-id\", \"carousel\"))
path = styles.copy_template(\"carousel\", \"my-new-style\")
status = styles.resolution_status(\"kinfolk-minimal\", \"carousel\") # → bundled / user-only / override / missingCounter
23 skills total (was 22). New skill is layer=meta, sibling to skills-update and skills-keys.
No breaking changes — additive. carousel-builder / reel-builder / music-prompt consume the style library exactly the same way; bundled styles unchanged.
Install / update
curl -fsSL https://raw.githubusercontent.com/Mikefluff/skills/main/install.sh | bash -s -- --updateOr /skills-update in Claude Code.
Example session
~ /skills-styles add carousel retro-soviet-poster
✓ Created carousel/retro-soviet-poster.md (from template)
Path: /Users/.../.claude/style-library/carousel/retro-soviet-poster.md
Next: skills-styles edit carousel retro-soviet-poster
Then: skills-styles validate carousel retro-soviet-poster
~ (edit the file — fill palette, typography, anchor text, etc)
~ /skills-styles validate carousel retro-soviet-poster
✓ valid — passes all schema checks
~ /skills-styles submit carousel retro-soviet-poster
✓ Submission package ready: ./style-submission-20260521-204512-carousel-retro-soviet-poster
Next steps (manual, ~2 min):
1. Fork https://github.com/Mikefluff/skills
2. cp ... into <fork>/common/style-library/carousel/
3-7. git checkout/add/commit/push + gh pr create