Recoup Release — Plan Rollout
The whole release lifecycle. plan runs the full workflow end to end; brief /
campaign / doc are the individual stages, runnable alone. Everything reads from and
writes to releases/{artist-slug}/{release-slug}/. The workspace schema is in
references/release-workspace.md (read it first); the scaffold is in
templates/release-workspace/. Deterministic helpers ship in scripts/
(build_campaign_timeline.py, validate_release.py). Requires RECOUP_API_KEY for
the brief/targeting stages.
Mode: plan (the full workflow — don't stop between phases)
Run every phase in order; do not stop to ask what's next. Stop only when the workspace is populated (brief + campaign + RELEASE.md exist) or a hard blocker hits.
- Intake + scaffold (≤30s). Confirm release facts in one prompt (artist, title,
type, date-or-TBD, goal, channels, one-line creative direction, asset gaps). Derive
slugs. Copy
templates/release-workspace/into the workspace and fillassumptions.yaml. - Creative brief → run brief mode; land in
brief/. - Dated campaign → compute dates deterministically:
python3 scripts/build_campaign_timeline.py --release-date {YYYY-MM-DD|TBD} --type {type}(returns every milestone + timing warnings like the ~28-day DSP editorial window), then run campaign mode; land incampaign/. - Master doc + deliverables → run doc mode; pull every fact from
assumptions.yaml+ the brief, never from memory. - Playlist targeting (chained) → call recoup-research-playlist-targets (targets +
gaps) and recoup-research-find-contacts (curator + drafted pitch — draft only); if
audience is thin, recoup-research-artist-overview (audience). Land in
targeting/. - Arm monitoring → note standing watches: recoup-release-track-drop (drop + launch alert) and recoup-research-weekly-brief (recurring + streaming spikes).
- Review + completion gate (do not skip). Run
python3 scripts/validate_release.py releases/{artist-slug}/{release-slug}— it must returnstatus: "ok"; fix anything inmissing[]and re-run, then dispatch the release-readiness-reviewer agent. On Claude Code a Stop hook enforces this; elsewhere it's your job.
End with the landing card: workspace path, "open first" list (RELEASE.md, brief/, campaign/, targeting/, reports/), an honest "what I did NOT do and why" bullet per gap, and next stages. Truthfulness over polish — never claim "ready" while a stage is missing.
Mode: brief (the creative brief)
Require artist, title, date-or-TBD, type, one-line creative direction, asset gaps
(ask once if missing). Pull in parallel (references/endpoints.md): audience
(TikTok+IG), similar, current playlists. Synthesize to brief/brief-$(date +%F).md:
creative direction (verbatim) · narrative thread · 3 visualizer directions ·
5 content angles · platform hooks (each anchored in a concrete audience number) ·
ranked playlist targets · geo rollout · open decisions. It's a plan, not assets — to
produce assets use the recoup-content-* skills. No invented audience numbers.
Mode: campaign (the dated rollout schedule)
Compute the timeline with scripts/build_campaign_timeline.py (never hand-do
release-date math), then turn it + the brief into a phase-by-phase plan (pre-release →
release-week → post-release) with channels, assets, owners, and exact dates counted
back from the release date. Land in campaign/. Flag timing risks.
Mode: doc (the master RELEASE.md + deliverables)
Create/maintain RELEASE.md as the single source of truth using
references/release-template.md + references/section-guide.md, then generate the
DSP pitch and press one-sheet into reports/ per references/deliverables.md. Pull
every fact from assumptions.yaml + the brief. Copy that needs the house voice →
recoup-content-write-caption. Never fabricate placements/press — blank + flag in §8.
Guardrails
- No mid-workflow stops in plan mode — run the next phase anyway.
- One workspace — everything under
releases/{artist-slug}/{release-slug}/. - Deterministic dates —
build_campaign_timeline.py, never by hand. - Completion gate —
validate_release.pymust sayokbefore "ready". - Never fabricate release facts, numbers, placements, or press — blank + flag.
References
references/release-workspace.md·references/endpoints.md·references/response-shapes.md·references/release-template.md·references/section-guide.md·references/deliverables.mdscripts/build_campaign_timeline.py·scripts/validate_release.py— ship alongside this skill; invoke relatively.