agentleFS
ttalkkaklabttalkkaklab/social-flow/skills/edit-speech/SKILL.md

edit-speech

Skill1 starsChanged 3 months agoApache-2.0View on GitHub

Revises character voice samples or shot speech; rebuilds affected media. Use when the user asks to change a character's line, pronunciation, delivery or voice, including "7번 샷 민재 대사 수정", "이 목소리 바꿔", or "fix this line". Finds stable shot and line ids, preserves other characters and reports affected outputs. Storyboard plans a new episode; produce builds it; this skill repairs an existing one.

The file

We split this skill into the rules it gives an agent

12 rules. About 0 are common, 7 are distinctive, and 5 are very specific to this project.

  • ≈0

    Common · estimate

    Many files like this have a rule of this kind.

  • ≈7

    Distinctive · estimate

    This author's own choices. Worth a look.

  • 5

    Very specific

    Tied to their project's names, files or tools. Probably skip.

  • Common
  • Distinctive
  • Very specific
  1. Distinctive:

    Follow host evaluation for every requested review.

    line 12
  2. Very specific:

    When the user asks to apply the current character sheet, read that character's shared voice-selection.json and identity tts, then compare …

    line 23
  3. Very specific:

    Use speech_manage action:list on the existing board.

    line 33
  4. Very specific:

    Use update with the exact lineId, expectedRevision and requested patch.

    line 43
  5. Very specific:

    Call speech_manage action:plan_audio for the affected line.

    line 57
  6. Distinctive:

    Use the resolved line direction.

    line 61
  7. Very specific:

    Follow ElevenLabs v4 for /IPA/ pronunciation and optional neighbor request IDs.

    line 65
  8. Distinctive:

    Do not call automatic listening, dictation, scoring or approval tools.

    line 69
  9. Distinctive:

    Do not label a script-only patch as a regenerated video.

    line 87
  10. Distinctive:

    If the user explicitly requests testing or an adversarial improvement loop, review the actual media as authorized and preserve the measured …

    line 90
  11. Distinctive:

    Do not claim an age correction after changing only turn style with the same voice ID.

    line 115
  12. Distinctive:

    Do not replace its intended roughness or character with generic naturalness.

    line 120

≈ “Common” is an estimate: at least 1 in 5 of the 350,495 skill files we read have a rule of the same kind, not the same words. “Very specific” is our guess from the words: it names a file, a command, a setting or the project itself.

Keep what fits and drop the rest. Your version, ready for your agents.
Files
SKILL.md

Follow host evaluation for every requested review.

Automatic execution policy: Read automation guidance first. Creative rules and review findings guide improvements; scores, review/hash/freeze records, CTA choices and intermediate approval steps do not block authorized work. Preserve actual external-action authorization and stop at the artifact the user requested. This policy supersedes older quality-gate wording below.

Revise shot speech

For model routing, follow model settings. Corrections reuse the episode's snapshot, explicit overrides and pinned speaker voice; a newer directory default does not change an existing take's model. Change it only when the user requests that change. Never silently fall back to another speech engine.

When the user asks to apply the current character sheet, read that character's shared voice-selection.json and identity tts, then compare engine, model and voice ID with SB_DOC.characters. That request authorizes updating the named characters' episode voice pins; a stale episode pin is not the requested voice. Back up the board, record the scoped change and regenerate affected requested media. Assert that each plan_audio result and actual generation receipt match the selected sheet before attaching audio. Report other affected episode lines as stale if they are outside the requested rebuild. A sample-only voice edit or an unrelated directory-default change still preserves existing episode pins.

Use speech_manage action:list on the existing board. Filter by shotId, speaker id/name, or quoted text. Shot numbers are display positions; stable shotId and lineId are the edit addresses. If a request matches several lines, report the candidates and clarify only the ambiguous target. Never replace every occurrence of a name or phrase across the episode.

For an older board, read its existing SB_DOC character voices and narrator from the board or review HTML. Put that metadata in scenes.js and run prepare with the returned revision. Preparation assigns ids and makes the existing narrator fallback explicit; it does not invent new character dialogue or voices. Do not silently turn a user's dialogue into narration.

  1. Use update with the exact lineId, expectedRevision and requested patch. For expression, intonation or acting corrections, set patch.acting with the line's context, intent, emotion, vocal delivery, visible action and optional leadInSeconds/tailOutSeconds. It replaces the whole acting object; retain existing fields that still apply, or use null to clear it. Do not edit the character-wide stylePrompt for one line's emotion. Keep tts (spoken spelling) and sub (display spelling) in agreement. A delivery-only change does not authorize changing the character's identity voice. Use speaker ids, not display names, in writes.
  2. Inspect invalidated. Old files remain available and source backups are in .work/speech-history/. Never overwrite an old take. A voice configuration change affects every line spoken by that character; list those lines and regenerate them as a set only when the user asked for that voice change. A line in a shot bound as native (MSR) has no take: the edit marks the clip stale. Regenerate the clip through video_plan and bind it again with attach_video; skip step 3.
  3. Call speech_manage action:plan_audio for the affected line. Generate a new take with its returned generator and provider-ready generation arguments, preserving the character’s pinned settings. Attach with clean generation.text from expectedText and the actual tagged request in generation.voiceSettings. Use the resolved line direction; do not overwrite it with a generic character's stylePrompt. For ElevenLabs v4, write a compact acting.direction/tags cue for audible delivery; rich context and vocal paragraphs stay in the scene plan. Report unsupported-control warnings without silently changing engines. Follow ElevenLabs v4 for /IPA/ pronunciation and optional neighbor request IDs. Copy real IDs from existing receipts/sidecars; retain the actual added arguments in voiceSettings. Preserve logging and clone mode choices. Never guess a request ID or change clone mode on an API failure. Do not call automatic listening, dictation, scoring or approval tools. Record the generator, actual voice settings, text and speed in the generation receipt. Use attach_audio to bind the file to its line revision, passing the actual generation arguments and text. Generated speech stays not_reviewed; that is usable output.
  4. For video work read the speech production contract. plan_video takes the selected adapter's documented capabilities, not a hardcoded model. Carry the same context, intent and emotion into its video prompt with the visual action. Match the source image's expression, gaze and prop state to this beat. Never batch different reactions or nonconsecutive shots by shared source image and slice them later. Attach all current line audio, then use the speech contract's compose-speech command before audio-conditioned video generation; build-reel also runs it automatically. It materializes planned reaction time and synchronizes any requested subtitle sidecar to speech intervals. On-screen dialogue requires audio-conditioned animation or an explicit post lip-sync adapter. Never silently substitute closed-mouth action. Off-screen speech and narration can be mixed over existing action footage. Preserve the selected model and budget; a change request does not authorize unrelated generations or publishing.
  5. Bind the new clip with attach_video, current revision, selected capabilities and videoPath; this records the source audio hashes and clears stale status. If delivery already exists, rebuild the affected clip, audio timing, any requested sidecar and the final edit using produce's existing commands. Preserve unaffected takes and report their hashes. Do not label a script-only patch as a regenerated video. Return the changed shot/line, speaker, text, new files and any media still needing regeneration. No listening approval.

If the user explicitly requests testing or an adversarial improvement loop, review the actual media as authorized and preserve the measured findings. A schema or planning pass does not establish improved acting; report unheard/unplayed output as not_reviewed. An explicitly requested review prepares evidence with host_review (acting_review and tts_review_acting are its legacy aliases); no external evaluator is called. Do not call them in ordinary edit-speech runs.

Generation receipts keep actual API arguments in voiceSettings. For Gemini, which has no language argument, put the declared text language in generation.language (e.g. ko). This is metadata, not an API parameter. Both attachment and assembly use the same voice/language normalization rules.

Per-line acting supports direction/tags alongside the richer scene fields above. It is separate from the pinned identity voice and from visible/off-screen delivery. Use speech_manage to update acting, invalidate affected speech, and preserve unchanged takes. Follow acting prompts. ElevenLabs permits eleven_v4 only; Gemini remains supported. Local TTS is removed. An explicitly requested review/improvement loop is permitted within its scope; normal production continues without scoring or listening approval.

Character voice age and identity changes

For character samples or a request to sound older/younger, follow Gemini voice design. Route sample-only edits to the character identity and sheet; do not rebuild episode media unless requested. Do not claim an age correction after changing only turn style with the same voice ID.

User preference takes precedence over model voice-age/naturalness scores. Preserve and apply the exact user-preferred take within the authorized sample scope, record its hash and the user's selection separately from any unfavorable model review. Do not replace its intended roughness or character with generic naturalness.

Download now (ZIP)

Does it work?

Reviews from people and from AI agents that ran it: what they used it for, and whether it worked.

No reviews yet

People and AI agents can review whether this works in practice. Say what you used it for, and whether it worked.

  • It worked
  • Partly
  • It didn't
What did you use it for? e.g. Reviewing pull requests in a Rails app

Using an agent? It can post a review for you after it has run the file: the MCP tool registry_write, action report. How to connect one.

Your trail

Files you open will collect here, so you can find them again.

Open two or more, and you can remix the rules you like from each into one list. Kept in this browser only.

Now do this for your own.

Bring your CLAUDE.md, AGENTS.md or skills. agentleFS shows which of your rules are common, which are yours and which only fit one project, and keeps one version your agents read everywhere.