| name | format-script-to-style |
| description | transform an unformatted script (already in the calling agent's conversation context) into a v3-tagged script that matches an approved delivery style at a target duration. use when an agent has just brainstormed a script and needs to apply a specific creator/ad vibe + pacing before voice generation. |
format-script-to-style
Purpose
Take a delivery style from DELIVERY_STYLES.md and a target duration, and transform the script currently in the calling agent's conversation context into a v3-tagged script ready for voice generation. The output should match the chosen style's beat structure, signature language, pacing, and audio-tag recipe.
Inputs
delivery_style_name: a key from DELIVERY_STYLES.md (e.g. UGC-Creator-Confiding).
target_duration_seconds: an integer; the desired final spoken length after any post-processing (e.g. 29 for a typical UGC ad).
Assumed context (not loaded by this skill): the unformatted script content lives in the calling agent's conversation. This skill does not accept a --script flag or read from a file — the calling agent supplies the content from its own context and applies this skill's rules to it.
Workflow
- Load the style entry for
delivery_style_name from /Users/0xhbam/Desktop/Cursor/content-goose/DELIVERY_STYLES.md. If the name is not found, list available styles and stop.
- Compute target word count. Use the style's word-count-by-duration table if available, otherwise derive from
target_duration_seconds × (raw_wpm / 60). For styles that apply atempo > 1.0 post-process, compute on the rendered (post-atempo) duration, not the raw v3 read.
- Map the existing script to the style's beat structure. The agent rewrites the script so each beat lands close to its template, preserving the brand/product facts already in conversation context. Hit each beat's word-count target within ±20%.
- Apply v3 tagging:
- Open with the single directional audio tag specified in the style's recipe (e.g.
[soft, casual]).
- Insert
… for breath-pauses inside the slower beats named in the recipe.
- Insert
— for emotional pivots in the beats named in the recipe.
- Do not stack or swap audio tags mid-script — they re-color all subsequent sentences.
- Apply signature language patterns from the style entry (softeners, possessive intimacy, sensory triads, signature close).
- Avoid anti-patterns listed in the style entry.
- Return the tagged script as plain text (paragraph per beat). Include a comment block at the bottom listing target duration, target word count, actual word count, and the voice ID + settings recommended by the style entry — so the next skill (
generate-voiceover-elevenlabs-v3) has everything it needs.
Output
Tagged script as text, returned to the calling agent. Example shape:
[soft, casual] <Beat 1 line with … breath pauses>
<Beat 2 line with — pivot>
...
<!-- format-script-to-style
delivery_style: UGC-Creator-Confiding
target_duration_seconds: 29
target_word_count: 115
actual_word_count: 118
recommended_voice_id: jqcCZkN6Knx8BJ5TBdYR # Zara
voice_settings: {stability: 0.40, similarity_boost: 0.75, style: 0.05, use_speaker_boost: true}
post_process: atempo=1.2
-->
Quality Checks
- Every beat from the style's structure is present in the tagged script.
- Actual word count is within ±20% of target word count.
- Exactly one directional audio tag appears at the open. No additional audio tags mid-script.
… and — are placed only in the beats specified by the style's recipe.
- Signature close is preserved verbatim if the style entry specifies one (e.g. "perfect for every day").
- None of the style's anti-patterns appear in the tagged script.
Failure Modes
delivery_style_name not found in DELIVERY_STYLES.md — list available, stop.
- Calling agent has no script content in context — surface this and stop; this skill cannot invent product facts.
- Target duration is unachievable for the style (e.g. asking for 10s of a style whose minimum is ~24s). Surface the conflict and ask for either a longer duration or a different style.
- Script content involves claims/CTAs forbidden by the style's anti-patterns and cannot be reformulated without losing the brand message — surface the conflict to the user.