feat: add content creation skill for composing primitives#6
feat: add content creation skill for composing primitives#6recoupableorg wants to merge 13 commits intomainfrom
Conversation
Teaches LLM agents how to use the modular content creation primitives (image, video, text, audio, render, upscale) via CLI. Includes step-by-step and quick full-pipeline workflows, template selection guidance, and iteration strategies. Made-with: Cursor
📝 WalkthroughWalkthroughAdded Changes
Estimated code review effort🎯 2 (Simple) | ⏱️ ~8 minutes Poem
🚥 Pre-merge checks | ✅ 3✅ Passed checks (3 passed)
✏️ Tip: You can configure your own custom pre-merge checks in the settings. ✨ Finishing Touches🧪 Generate unit tests (beta)
Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out. Comment |
- Pushy description with comprehensive trigger phrases - Creative decision-making guidance (template selection, song choice, quality evaluation) instead of just procedural steps - Explains WHY (e.g. start with audio because mood informs template) - Edge case handling (instrumentals, missing face guide, song URLs) - Iteration strategies showing cost savings of modular approach Made-with: Cursor
There was a problem hiding this comment.
Actionable comments posted: 2
🧹 Nitpick comments (1)
content-creation/SKILL.md (1)
44-51: Consider converting prose to bullet points.The "Choosing a song clip" section is prose-heavy. Per coding guidelines, bullet points and numbered lists are preferred.
♻️ More concise structure with bullets
### Choosing a song clip -Start with audio before image because the song's mood should influence your template choice. If the artist has multiple songs, pick one that matches the content goal: +Start with audio before image — the song's mood influences your template choice. + +**When to target a specific song:** - Promoting a new release? Use `--song <slug>` to target it - General content? Let the pipeline pick randomly - Have a specific audio file? Pass the URL: `--song https://...` -After audio selection completes, check `clipMood` and `clipLyrics` in the output. If the mood doesn't match the template you planned, switch templates before generating the image. +**After audio selection:** Check `clipMood` and `clipLyrics`. If the mood doesn't match your planned template, switch templates before generating the image.As per coding guidelines: "Prefer bullet points and numbered lists over prose in SKILL.md files"
🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed. In `@content-creation/SKILL.md` around lines 44 - 51, Convert the prose under the "Choosing a song clip" section into concise bullet points and/or a short numbered list: keep the header "Choosing a song clip", then list steps such as "Start with audio before image", selection options (use `--song <slug>` for a new release, let pipeline pick for general content, pass URL `--song https://...` for a specific file), and a final bullet instructing to check `clipMood` and `clipLyrics` and switch templates if mood mismatches; preserve the existing command examples and the `clipMood`/`clipLyrics` identifiers so readers can find the relevant output fields.
🤖 Prompt for all review comments with AI agents
Verify each finding against the current code and only fix it if needed.
Inline comments:
In `@content-creation/SKILL.md`:
- Line 29: The SKILL.md text refers to a non-existent resource
"context/artist.md"; update SKILL.md (content-creation/SKILL.md) to either point
to an existing file or add the missing artist context: create a new
context/artist.md with the artist’s personality, aesthetic direction, mood,
colors, and sacred rules, or change the sentence to reference the correct
existing resource (e.g., an actual path or a shared README) or instruct readers
to consult an inline "Artist Context" section within SKILL.md; ensure the
reference string "context/artist.md" is removed or replaced so it matches the
repository’s actual structure.
- Around line 73-115: Replace all XML-style angle-bracket placeholders in
SKILL.md (e.g., occurrences in the command examples like "recoup content audio
--artist <id> --json", "recoup content image --artist <id> --template <name>
--json", "recoup content video --image <imageUrl> --json", "recoup content
render --video <videoUrl> --audio <songUrl> --start <startSeconds> --duration 15
--text \"<content>\" --json", and prose mentions of <id>, <runId>, <slug>,
<url>, etc.) with one of the approved formats (ALL_CAPS tokens like ARTIST_ID,
RUN_ID, SONG_SLUG, IMAGE_URL; or {id}/{runId}/{slug}/{url}; or
{{id}}/{{runId}}/{{slug}}/{{url}}) consistently throughout the file, ensuring
each placeholder type is replaced in both prose and code blocks (examples and
quick/lipsync snippets) so no angle brackets remain.
---
Nitpick comments:
In `@content-creation/SKILL.md`:
- Around line 44-51: Convert the prose under the "Choosing a song clip" section
into concise bullet points and/or a short numbered list: keep the header
"Choosing a song clip", then list steps such as "Start with audio before image",
selection options (use `--song <slug>` for a new release, let pipeline pick for
general content, pass URL `--song https://...` for a specific file), and a final
bullet instructing to check `clipMood` and `clipLyrics` and switch templates if
mood mismatches; preserve the existing command examples and the
`clipMood`/`clipLyrics` identifiers so readers can find the relevant output
fields.
🪄 Autofix (Beta)
Fix all unresolved CodeRabbit comments on this PR:
- Push a commit to this branch (recommended)
- Create a new PR with the fixes
Commands renamed to verb-qualifier pattern: generate-image, generate-video, generate-caption, transcribe-audio. Made-with: Cursor
- Removed music-specific language and param names - Added model selection docs and edit operations reference - Updated all workflow examples with new CLI flags - Added analyze-video to primitives table Made-with: Cursor
Teaches the agent to watch its own generated videos using analyze-video after every generation step, evaluate quality, and iterate based on the feedback. Made-with: Cursor
Two distinct evaluation passes: QA (artifacts, glitches, motion) after generation, and taste (hook, aesthetic, platform readiness) after the final edit. Scoring rubric guides iteration decisions. Made-with: Cursor
Gives guidance on what to look for (QA, taste, platform readiness) and how to act on feedback, but lets the agent write its own prompts. Made-with: Cursor
…lows Analyze at every creative checkpoint: after each clip, each edit pass, multi-clip assembly, audio sync, text overlay, and version comparison. Fix issues early before building on top of them. Made-with: Cursor
Address CodeRabbit review: skills repo guidelines prohibit XML-style
angle brackets in SKILL.md files. All placeholders now use {curly}
brace syntax.
Made-with: Cursor
Image is optional — video can be generated from just a prompt. Made-with: Cursor
…ples - New Video Generation Modes section with mode table and when-to-use guide - Updated model selection table with all auto-selected models - Added extend and first-last workflow examples - Updated lipsync to use --mode lipsync instead of --lipsync flag - Added extend and first-last to iteration and acting-on-feedback sections Made-with: Cursor
All commands now use short nouns: image, video, caption, transcribe, analyze, edit, upscale. Made-with: Cursor
There was a problem hiding this comment.
Actionable comments posted: 1
🧹 Nitpick comments (2)
content-creation/SKILL.md (2)
30-30: Use one command naming convention consistently (noun endpoint names).This file mixes
generate-video/analyze-videolabels with noun-based commands (recoup content video,recoup content analyze). Standardizing terminology will reduce operator confusion and better match the PR’s endpoint naming direction.As per coding guidelines: "Prefer bullet points and numbered lists over prose in SKILL.md files; place critical instructions at the top of the file."
Also applies to: 125-133, 151-151, 202-207
🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed. In `@content-creation/SKILL.md` at line 30, The SKILL.md currently mixes verb-based commands like `generate-video` and `analyze-video` with noun-style CLI usages such as `recoup content video` and `recoup content analyze`; update the file to use one consistent naming convention (prefer the noun endpoint names: `recoup content video`, `recoup content analyze`) across all occurrences (including the sections referenced around lines 125-133, 151, and 202-207), convert the prose instructions into bullet points/numbered lists, and move the critical usage note about `--mode` (or input-inferred mode) to the top of the document so operators see it first.
24-24: Document non-success terminal states for async polling.Current guidance only says to poll until
COMPLETED. Add explicit handling forFAILED/CANCELLED(and what to do next) to avoid infinite polling loops in agent workflows.🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed. In `@content-creation/SKILL.md` at line 24, Update the async polling guidance around the recoup tasks status CLI (the line mentioning "Poll with `recoup tasks status --run {runId} --json` until `status` `COMPLETED`") to enumerate non-success terminal states and next actions: explicitly document that `FAILED` and `CANCELLED` are terminal, instruct callers to stop polling on those values, surface error/exit messages from the task output for `FAILED`, suggest retry or investigate steps and how to cancel/cleanup for `CANCELLED`, and show the recommended behavior for automation (e.g., fail the workflow, raise an error, or trigger retry/backoff) so agent loops cannot poll forever.
🤖 Prompt for all review comments with AI agents
Verify each finding against the current code and only fix it if needed.
Inline comments:
In `@content-creation/SKILL.md`:
- Around line 81-83: The example command uses --audio while the operations table
documents --mux-audio, causing inconsistency; pick the actual CLI flag
(preferably --mux-audio if the CLI performs muxing) and update both the example
command "recoup content edit --video {videoUrl} --audio {audioUrl} ...
--overlay-text" and the operations table entries to the same flag (either
replace --audio with --mux-audio everywhere or vice versa) so both examples and
docs match the real CLI behavior.
---
Nitpick comments:
In `@content-creation/SKILL.md`:
- Line 30: The SKILL.md currently mixes verb-based commands like
`generate-video` and `analyze-video` with noun-style CLI usages such as `recoup
content video` and `recoup content analyze`; update the file to use one
consistent naming convention (prefer the noun endpoint names: `recoup content
video`, `recoup content analyze`) across all occurrences (including the sections
referenced around lines 125-133, 151, and 202-207), convert the prose
instructions into bullet points/numbered lists, and move the critical usage note
about `--mode` (or input-inferred mode) to the top of the document so operators
see it first.
- Line 24: Update the async polling guidance around the recoup tasks status CLI
(the line mentioning "Poll with `recoup tasks status --run {runId} --json` until
`status` `COMPLETED`") to enumerate non-success terminal states and next
actions: explicitly document that `FAILED` and `CANCELLED` are terminal,
instruct callers to stop polling on those values, surface error/exit messages
from the task output for `FAILED`, suggest retry or investigate steps and how to
cancel/cleanup for `CANCELLED`, and show the recommended behavior for automation
(e.g., fail the workflow, raise an error, or trigger retry/backoff) so agent
loops cannot poll forever.
🪄 Autofix (Beta)
Fix all unresolved CodeRabbit comments on this PR:
- Push a commit to this branch (recommended)
- Create a new PR with the fixes
content-creation/SKILL.md
Outdated
| recoup content edit --video {videoUrl} --audio {audioUrl} \ | ||
| --template artist-caption-bedroom \ | ||
| --overlay-text "{caption}" --json |
There was a problem hiding this comment.
Fix edit audio flag inconsistency (--audio vs --mux-audio).
The workflow example uses --audio, but the operations table defines muxing as --mux-audio. One of these is wrong and will cause failed commands if copied as-is. Please align both sections to the actual CLI flag.
Also applies to: 144-145
🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.
In `@content-creation/SKILL.md` around lines 81 - 83, The example command uses
--audio while the operations table documents --mux-audio, causing inconsistency;
pick the actual CLI flag (preferably --mux-audio if the CLI performs muxing) and
update both the example command "recoup content edit --video {videoUrl} --audio
{audioUrl} ... --overlay-text" and the operations table entries to the same flag
(either replace --audio with --mux-audio everywhere or vice versa) so both
examples and docs match the real CLI behavior.
…priority - Lead with malleable-first philosophy (templates optional) - Add analyze primitive to table and workflow - Rename workflows: "Without a template" / "With a template" - Update edit command to use --url (supports images too) - Add template override priority section - Update frontmatter description Made-with: Cursor
There was a problem hiding this comment.
♻️ Duplicate comments (1)
content-creation/SKILL.md (1)
83-85:⚠️ Potential issue | 🟠 MajorAlign
editaudio flag usage (--audiovs--mux-audio).The workflow example uses
--audio, but the operations table defines audio muxing as--mux-audio. Please standardize on the actual CLI flag in both places to avoid broken copy/paste commands.Also applies to: 151-151
🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed. In `@content-creation/SKILL.md` around lines 83 - 85, The example invocation of the CLI uses the wrong audio flag: update the `recoup content edit` example to use the canonical `--mux-audio` flag (instead of `--audio`) so it matches the operations table; specifically change the flag in the sample command that includes `--template artist-caption-bedroom --overlay-text "{caption}" --json` to `--mux-audio {audioUrl}` so copy/paste works correctly.
🤖 Prompt for all review comments with AI agents
Verify each finding against the current code and only fix it if needed.
Duplicate comments:
In `@content-creation/SKILL.md`:
- Around line 83-85: The example invocation of the CLI uses the wrong audio
flag: update the `recoup content edit` example to use the canonical
`--mux-audio` flag (instead of `--audio`) so it matches the operations table;
specifically change the flag in the sample command that includes `--template
artist-caption-bedroom --overlay-text "{caption}" --json` to `--mux-audio
{audioUrl}` so copy/paste works correctly.
AI-powered content pipeline — image generation, video generation, captions, editing, upscaling, and iterative QA via analyze. Supports templates and freeform prompts. Made-with: Cursor
Summary
Rewrite content-creation skill for the new generic content primitive system.
Summary by CodeRabbit