Skip to content

feat: add content creation skill for composing primitives#6

Open
recoupableorg wants to merge 13 commits intomainfrom
feature/content-creation-skill
Open

feat: add content creation skill for composing primitives#6
recoupableorg wants to merge 13 commits intomainfrom
feature/content-creation-skill

Conversation

@recoupableorg
Copy link
Copy Markdown
Contributor

@recoupableorg recoupableorg commented Apr 2, 2026

Summary

Rewrite content-creation skill for the new generic content primitive system.

  • Removed all music/artist-specific language and parameter names
  • Updated all CLI examples to verb-qualifier names (generate-image, transcribe-audio, etc.)
  • Replaced render with edit command (template + manual modes)
  • Replaced angle-bracket placeholders with curly braces per repo guidelines
  • Added model selection table and edit operations reference
  • Added analyze-video feedback loop: QA evaluation, taste evaluation, iterative multi-clip workflow
  • Analyze at every creative checkpoint, not just the final output

Summary by CodeRabbit

  • Documentation
    • Added comprehensive docs for creating short-form social videos and visual assets
    • Described seven callable primitives (transcription, image/video generation, captions, editing, upscaling, analysis) and async job polling with runId
    • Documented multiple video generation modes, per-mode inputs, common flags, and model override options
    • Explained editing operations, template override priority, end-to-end examples, and iterative QA/analysis guidance

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
@coderabbitai
Copy link
Copy Markdown

coderabbitai bot commented Apr 2, 2026

📝 Walkthrough

Walkthrough

Added content-creation/SKILL.md, a documentation page describing the Content Creation skill: seven primitives (which are async vs sync), async runId polling, a higher-level recoup content create pipeline, multiple generate-video modes, edit/upscale/caption primitives, per-primitive --model overrides, and iterative QA guidance using recoup content analyze. (≤50 words)

Changes

Cohort / File(s) Summary
Content Creation Documentation
content-creation/SKILL.md
New skill doc specifying seven primitives: recoup content transcribe (async), recoup content image (async), recoup content video (async), recoup content caption (sync), recoup content edit (async), recoup content upscale (async), recoup content analyze (sync). Documents async control flow via runId with polling (recoup tasks status --run {runId} --json) and consuming output. Describes recoup content create end‑to‑end pipeline, video generate-video modes (prompt, animate, reference, extend, first-last, lipsync) with per-mode required flags and common flags (--aspect-ratio, --duration, --resolution), edit operations (trim, crop aspect, overlay text, mux audio, templates) and template override priority, --model overrides and default model mappings, plus iterative QA/analysis guidance and example workflows (including lipsync, extend, transitions).

Estimated code review effort

🎯 2 (Simple) | ⏱️ ~8 minutes

Poem

🐇 I nibbled through lines to graft a helpful ploy,
Seven little skills to craft a short-form joy,
Transcribe, image, motion — stitch and then refine,
Edit, upscale, analyze, then press export and shine,
Tiny hops, big reels — creation's carrot's mine 🌟

🚥 Pre-merge checks | ✅ 3
✅ Passed checks (3 passed)
Check name Status Explanation
Description Check ✅ Passed Check skipped - CodeRabbit’s high-level summary is enabled.
Title check ✅ Passed The title 'feat: add content creation skill for composing primitives' directly describes the main change: adding a new content-creation skill documentation that defines composable primitives for video/visual asset generation.
Docstring Coverage ✅ Passed No functions found in the changed files to evaluate docstring coverage. Skipping docstring coverage check.

✏️ Tip: You can configure your own custom pre-merge checks in the settings.

✨ Finishing Touches
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Commit unit tests in branch feature/content-creation-skill

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.

❤️ Share

Comment @coderabbitai help to get the list of available commands and usage tips.

- 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
Copy link
Copy Markdown

@coderabbitai coderabbitai bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

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

ℹ️ Review info
⚙️ Run configuration

Configuration used: defaults

Review profile: CHILL

Plan: Pro

Run ID: 7ad67b76-6a00-475e-8703-667678dffc58

📥 Commits

Reviewing files that changed from the base of the PR and between 8365d5e and d699466.

📒 Files selected for processing (1)
  • content-creation/SKILL.md

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
Copy link
Copy Markdown

@coderabbitai coderabbitai bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

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-video labels 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 for FAILED/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

ℹ️ Review info
⚙️ Run configuration

Configuration used: defaults

Review profile: CHILL

Plan: Pro

Run ID: d4dfad27-1dd4-47ac-9eff-46d54473afa7

📥 Commits

Reviewing files that changed from the base of the PR and between 0b56977 and 24f2bea.

📒 Files selected for processing (1)
  • content-creation/SKILL.md

Comment on lines +81 to +83
recoup content edit --video {videoUrl} --audio {audioUrl} \
--template artist-caption-bedroom \
--overlay-text "{caption}" --json
Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

⚠️ Potential issue | 🟠 Major

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
Copy link
Copy Markdown

@coderabbitai coderabbitai bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

♻️ Duplicate comments (1)
content-creation/SKILL.md (1)

83-85: ⚠️ Potential issue | 🟠 Major

Align edit audio flag usage (--audio vs --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.

ℹ️ Review info
⚙️ Run configuration

Configuration used: defaults

Review profile: CHILL

Plan: Pro

Run ID: 0649fba3-2ee1-4e79-9b61-3748ca8c7459

📥 Commits

Reviewing files that changed from the base of the PR and between 24f2bea and b5b3b70.

📒 Files selected for processing (1)
  • content-creation/SKILL.md

sidneyswift added a commit that referenced this pull request Apr 4, 2026
AI-powered content pipeline — image generation, video generation,
captions, editing, upscaling, and iterative QA via analyze.
Supports templates and freeform prompts.

Made-with: Cursor
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants