This skill does NOT:
- Modify bundled styles (under
<repo>/common/style-library/) — only user overrides.
- Run the auto-PR creation flow end-to-end (no
gh pr create). The submit subcommand builds a self-contained submission package + step-by-step instructions; you run the git ops + the PR yourself.
- Generate the style content for you. The skill creates a template skeleton; YOU (or Claude in the conversation) fill in the anchor + body.
- Manage API keys (that's
skills-keys) or skill updates (that's skills-update).
ROLE
Read the user's intent (list / show / add / edit / remove / validate / diff / path / submit) → call the matching common/runners/cli/styles.py subcommand → relay the result. For add workflows, after the skeleton file is created, OPEN the file and FILL OUT the placeholders based on the user's description, then run validate to confirm.
PIPELINE
- Parse intent: which subcommand + modality (carousel|video|music) + style id.
- Run
python3 scripts/run.py <subcommand> [args].
- For add workflows: after the skeleton is created, READ the new file, FILL the placeholders (frontmatter + body anchors) using the user's description, then run
validate to confirm.
- Relay the output — masked / structured by the CLI.
- Suggest next step: edit / validate / submit as appropriate.
MODES
Inspection
skills-styles list [modality] — show all styles with status (bundled / user-only / override)
skills-styles list [modality] --user-only — only user-overrides
skills-styles list [modality] --bundled-only — only bundled
skills-styles show <modality> <id> — print the resolved file (user wins over bundled)
skills-styles path [modality] [id] — print resolved path
Creation + edit
skills-styles add <modality> <id> — create a new user style from the bundled template
skills-styles add <modality> <id> --from <existing-id> — start as a copy of an existing style
skills-styles add <modality> <id> --force — overwrite if it already exists
skills-styles edit <modality> <id> — open the user-override in $EDITOR
skills-styles remove <modality> <id> --force — delete the user-override (reverts to bundled if any)
Validation
skills-styles validate <modality> <id> — frontmatter + body schema check per modality
skills-styles diff <modality> <id> — diff user-override vs bundled (useful when customizing a bundled style)
Upstream PR
skills-styles submit <modality> <id> — validate, then build ./style-submission-<ts>-<modality>-<id>/ with the file at the correct repo path + a PR description template + a step-by-step instructions README. You do the git ops + gh pr create manually.
REFERENCES (load on demand)
| File |
When to load |
| references/usage.md |
Detailed UX for each subcommand — exit codes, edge cases, examples |
| references/templates.md |
Per-modality frontmatter schema + required body fields + validation rules + conventions reviewers enforce on PRs |
EXAMPLES
See examples/before-after.md — 4 example sessions: create a carousel style from scratch via template, create a video style as a copy of fincher-cold-lowkey, validate + submit a music genre to upstream, customize a bundled style (override → edit → diff → submit).
CONSTRAINTS
Bundled styles are read-only. This skill operates ONLY on ~/.claude/style-library/. To modify a bundled style, use add --from <id> to copy it, then edit the user override.
User wins on resolution. When both a bundled <id>.md and a user <id>.md exist, the loader picks user. skills-styles list shows the override status so you know.
Add doesn't auto-fill the content. It creates a skeleton with <placeholders>. After add, YOU (or Claude in the chat) fill the file based on user intent, then run validate.
Validation is strict on schema, soft on content. It checks frontmatter shape + required body fields + anchor length. It does NOT enforce style guidelines (no copyrighted artist names, no real-brand mimicry, no clichés) — those are reviewer checks during PR. The skill prints reviewer-checklist reminders in the submission package.
Submit doesn't run git. v1 prepares a submission package + prints exact instructions. Users do git clone fork → cp → commit → push → gh pr create themselves. Auto-PR is intentionally deferred — fork detection + multi-step gh interaction is brittle.
Submit validates first. If the style has schema issues, submit refuses unless --force is passed. Don't submit broken styles upstream.
No copyrighted living-artist names in anchor text. The video/_template.md warning + the PR checklist enforce this. Bundled video styles store the director's name in display: and Inspired by: ONLY — those fields are user-facing, not model-facing.
No real-brand mimicry in anchor text. "Apple's WWDC look" / "Stripe's hero" are banned. Use era + cultural movement instead ("developer-platform brand aesthetic of the 2022-2025 era").
No emoji. Anywhere in any style file. Reviewer rejects.
id must be kebab-case (^[a-z][a-z0-9-]{1,40}$). The validator enforces.
Style anchor minimum 40 chars. The validator enforces. Shorter anchors lose to the per-slide content prompt.
Use the bundled templates (common/style-library/<modality>/_template.md) as the schema reference. They contain inline conventions + the validator targets exactly that shape.
For Claude to fill content: after add, read the new file at the path printed by stdout, edit each <placeholder> based on the user's description, then run validate to confirm the result is parseable. Don't skip the validate step.
INVOCATION HINTS
When the user says any of:
- "add a custom style for X", "create a carousel style called Y"
- "make a video style inspired by [director]", "build a music genre preset"
- "list available styles", "show what's in [style-id]"
- "edit the [style-id] style", "tweak the [style-id]"
- "remove my [style-id] style"
- "validate my style", "check if [style-id] is valid"
- "submit my style upstream", "send [style-id] to the repo", "PR my carousel style"
- "diff my override against bundled"
RU triggers:
- «добавь свой стиль для X», «создай carousel стиль »
- «сделай директорский стиль в духе X», «сделай music-пресет жанра Y»
- «покажи доступные стили», «что внутри [style-id]»
- «отредактируй стиль [style-id]», «правка [style-id]»
- «удали мой стиль [style-id]»
- «провалидируй стиль», «проверь корректность [style-id]»
- «отправь стиль наверх / в апстрим», «PR мой carousel стиль»
- «дифф моего override и bundled»
Defaults when intent is ambiguous: list (safe — read-only, shows what's available).
This is a meta-skill, sibling to skills-keys and skills-update. All three wrap common/runners/cli/... plumbing. Their outputs are tool outputs to be relayed honestly — don't paraphrase the validation results, just show them.
When the user creates a new style and gives a brief description, the recommended flow is:
skills-styles add <modality> <id> — create skeleton
- Read the newly created file
- Fill the frontmatter + body anchors based on the user's description
skills-styles validate <modality> <id> — confirm schema
- Optionally:
skills-styles submit <modality> <id> — prepare PR package
For modifying a bundled style:
skills-styles add <modality> <id> --from <id> — copy bundled as starting point
- Edit the user-override file (the file the user is allowed to change)
skills-styles diff <modality> <id> — review what changed
skills-styles validate <modality> <id>
- Optionally submit upstream
1---2name: skills-styles3description: Manage the local style library — bundled (24 carousel + 12 video director + 12 music genre) plus user overrides at ~/.claude/style-library/. CRUD + submit (upstream-PR packages) + schema validation. Use when: 'add a custom carousel style', 'create a directorial style', 'genre preset for k-pop', 'list available styles', 'submit my style upstream'.4license: MIT5---67<objective>8Provide a thin CLI on top of `~/.claude/style-library/` so users can manage custom styles without editing dotfiles by hand. The library is the source of truth for `carousel-builder`, `reel-builder`, and `music-prompt` — bundled styles ship with the repo; user overrides + new entries live under `~/.claude/style-library/<modality>/<id>.md` and take priority when the loader resolves a style id.910This skill does NOT:11- Modify bundled styles (under `<repo>/common/style-library/`) — only user overrides.12- Run the auto-PR creation flow end-to-end (no `gh pr create`). The `submit` subcommand builds a self-contained submission package + step-by-step instructions; you run the git ops + the PR yourself.13- Generate the style content for you. The skill creates a template skeleton; YOU (or Claude in the conversation) fill in the anchor + body.14- Manage API keys (that's `skills-keys`) or skill updates (that's `skills-update`).15</objective>1617## ROLE1819Read the user's intent (list / show / add / edit / remove / validate / diff / path / submit) → call the matching `common/runners/cli/styles.py` subcommand → relay the result. For `add` workflows, after the skeleton file is created, OPEN the file and FILL OUT the placeholders based on the user's description, then run `validate` to confirm.2021## PIPELINE22231. **Parse intent**: which subcommand + modality (carousel|video|music) + style id.242. **Run** `python3 scripts/run.py <subcommand> [args]`.253. **For add workflows**: after the skeleton is created, READ the new file, FILL the placeholders (frontmatter + body anchors) using the user's description, then run `validate` to confirm.264. **Relay the output** — masked / structured by the CLI.275. **Suggest next step**: edit / validate / submit as appropriate.2829## MODES3031### Inspection3233- `skills-styles list [modality]` — show all styles with status (bundled / user-only / override)34- `skills-styles list [modality] --user-only` — only user-overrides35- `skills-styles list [modality] --bundled-only` — only bundled36- `skills-styles show <modality> <id>` — print the resolved file (user wins over bundled)37- `skills-styles path [modality] [id]` — print resolved path3839### Creation + edit4041- `skills-styles add <modality> <id>` — create a new user style from the bundled template42- `skills-styles add <modality> <id> --from <existing-id>` — start as a copy of an existing style43- `skills-styles add <modality> <id> --force` — overwrite if it already exists44- `skills-styles edit <modality> <id>` — open the user-override in `$EDITOR`45- `skills-styles remove <modality> <id> --force` — delete the user-override (reverts to bundled if any)4647### Validation4849- `skills-styles validate <modality> <id>` — frontmatter + body schema check per modality50- `skills-styles diff <modality> <id>` — diff user-override vs bundled (useful when customizing a bundled style)5152### Upstream PR5354- `skills-styles submit <modality> <id>` — validate, then build `./style-submission-<ts>-<modality>-<id>/` with the file at the correct repo path + a PR description template + a step-by-step instructions README. You do the git ops + `gh pr create` manually.5556## REFERENCES (load on demand)5758| File | When to load |59|---|---|60| [references/usage.md](references/usage.md) | Detailed UX for each subcommand — exit codes, edge cases, examples |61| [references/templates.md](references/templates.md) | Per-modality frontmatter schema + required body fields + validation rules + conventions reviewers enforce on PRs |6263## EXAMPLES6465See [examples/before-after.md](examples/before-after.md) — 4 example sessions: create a carousel style from scratch via template, create a video style as a copy of `fincher-cold-lowkey`, validate + submit a music genre to upstream, customize a bundled style (override → edit → diff → submit).6667## CONSTRAINTS6869- **Bundled styles are read-only.** This skill operates ONLY on `~/.claude/style-library/`. To modify a bundled style, use `add --from <id>` to copy it, then edit the user override.7071- **User wins on resolution.** When both a bundled `<id>.md` and a user `<id>.md` exist, the loader picks user. `skills-styles list` shows the `override` status so you know.7273- **Add doesn't auto-fill the content.** It creates a skeleton with `<placeholders>`. After `add`, YOU (or Claude in the chat) fill the file based on user intent, then run `validate`.7475- **Validation is strict on schema, soft on content.** It checks frontmatter shape + required body fields + anchor length. It does NOT enforce style guidelines (no copyrighted artist names, no real-brand mimicry, no clichés) — those are reviewer checks during PR. The skill prints reviewer-checklist reminders in the submission package.7677- **Submit doesn't run git.** v1 prepares a submission package + prints exact instructions. Users do `git clone fork → cp → commit → push → gh pr create` themselves. Auto-PR is intentionally deferred — fork detection + multi-step gh interaction is brittle.7879- **Submit validates first.** If the style has schema issues, submit refuses unless `--force` is passed. Don't submit broken styles upstream.8081- **No copyrighted living-artist names in anchor text.** The `video/_template.md` warning + the PR checklist enforce this. Bundled video styles store the director's name in `display:` and `Inspired by:` ONLY — those fields are user-facing, not model-facing.8283- **No real-brand mimicry in anchor text.** "Apple's WWDC look" / "Stripe's hero" are banned. Use era + cultural movement instead ("developer-platform brand aesthetic of the 2022-2025 era").8485- **No emoji.** Anywhere in any style file. Reviewer rejects.8687- **id must be kebab-case** (`^[a-z][a-z0-9-]{1,40}$`). The validator enforces.8889- **Style anchor minimum 40 chars.** The validator enforces. Shorter anchors lose to the per-slide content prompt.9091- **Use the bundled templates** (`common/style-library/<modality>/_template.md`) as the schema reference. They contain inline conventions + the validator targets exactly that shape.9293- **For Claude to fill content**: after `add`, read the new file at the path printed by stdout, edit each `<placeholder>` based on the user's description, then run `validate` to confirm the result is parseable. Don't skip the validate step.9495## INVOCATION HINTS9697When the user says any of:9899- "add a custom style for X", "create a carousel style called Y"100- "make a video style inspired by [director]", "build a music genre preset"101- "list available styles", "show what's in [style-id]"102- "edit the [style-id] style", "tweak the [style-id]"103- "remove my [style-id] style"104- "validate my style", "check if [style-id] is valid"105- "submit my style upstream", "send [style-id] to the repo", "PR my carousel style"106- "diff my override against bundled"107108RU triggers:109- «добавь свой стиль для X», «создай carousel стиль <name>»110- «сделай директорский стиль в духе X», «сделай music-пресет жанра Y»111- «покажи доступные стили», «что внутри [style-id]»112- «отредактируй стиль [style-id]», «правка [style-id]»113- «удали мой стиль [style-id]»114- «провалидируй стиль», «проверь корректность [style-id]»115- «отправь стиль наверх / в апстрим», «PR мой carousel стиль»116- «дифф моего override и bundled»117118Defaults when intent is ambiguous: `list` (safe — read-only, shows what's available).119120This is a meta-skill, sibling to `skills-keys` and `skills-update`. All three wrap `common/runners/cli/...` plumbing. Their outputs are tool outputs to be relayed honestly — don't paraphrase the validation results, just show them.121122When the user creates a new style and gives a brief description, the recommended flow is:1231241. `skills-styles add <modality> <id>` — create skeleton1252. Read the newly created file1263. Fill the frontmatter + body anchors based on the user's description1274. `skills-styles validate <modality> <id>` — confirm schema1285. Optionally: `skills-styles submit <modality> <id>` — prepare PR package129130For modifying a bundled style:1311321. `skills-styles add <modality> <id> --from <id>` — copy bundled as starting point1332. Edit the user-override file (the file the user is allowed to change)1343. `skills-styles diff <modality> <id>` — review what changed1354. `skills-styles validate <modality> <id>`1365. Optionally submit upstream