intro
Skill1 starsChanged 3 months agoApache-2.0View on GitHub
Makes the channel's opening video — character action, name plate, sonic logo. Use when the user asks to "인트로 영상 만들어", "채널 인트로", "오프닝 영상", "로고 애니메이션 영상", "make a channel intro video", "create a logo sting", or right after /social-flow:branding installs the profile image. Designs 4 concepts (character action × mood × sonic logo) for a human pick, generates the character acting with the saved video model, reveals the channel name on a deterministic text plate, aligns a Lyria sonic logo to the landing frame, runs brand-reviewer's intro mode on request, and installs master, stinger, lockup and sonic assets under data/[slug]/assets/intro/. Boundary — branding makes the still profile image, this makes the moving opening.
- Reads credentials
4 other projects use a version of this.
Adopted by
Most recently taken up by
- manor-os/manor-aitheir own version, first seen Oct 31, 2026
- tonydzi/second-brain-starter-kittheir own version, first seen Sep 8, 2026
- jorekai/skillstheir own version, first seen Sep 7, 2026
- noticedso/skillstheir own version, first seen Aug 24, 2026
Other versions4 projects use a version of this.
Word for word · 0
None found.
Edited · 0
None found.
Wrote their own version · 4
- manor-os/manor-ai★ 158same name
- tonydzi/second-brain-starter-kit★ 6same name
- noticedso/skills★ 2same name
- jorekai/skills★ 0same name
How matches are found. Word for word: the exact same text. Edited: shares passages with this file (“99% same” means 99% of its five-word phrases also appear here; 10% or more counts). Their own version: similar meaning, or, weakest, the same name. We can’t tell which project had it first. Projects are counted among the 200 most-starred candidates, and mentions are links to the repository we found, up to 50 per site, so both counts are a floor.
In this repository30 other files it gives its agents.
- AGENTS.mdAGENTS.md
- CLAUDE.mdCLAUDE.md
- autoproduceSkill
- brandingSkill
- channelSkill
- compose-blenderSkill
- datagoSkill
- edit-speechSkill
- generate-cut-imagesSkill
- generate-cut-videosSkill
- grow-instagramSkill
- grow-threadsSkill
- grow-youtubeSkill
- ingestSkill
- inspect-contentSkill
- platform-guideSkill
- produceSkill
- project-initSkill
- publishSkill
- review-cameraSkill
- review-contextSkill
- review-cut-imagesSkill
- review-cut-videosSkill
- review-recentSkill
- setup-instagramSkill
- setup-threadsSkill
- setup-youtubeSkill
- storyboardSkill
- topic-scoutSkill
- upscale-videoSkill
The file
We split this skill into the rules it gives an agent
9 rules. 0 are common, 4 are distinctive, and 5 are very specific to this project.
0
Common
Most of the 3 edited versions we read keep these.
4
Distinctive
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
- Distinctive: line 16
Follow host evaluation for every requested review.
- Distinctive: line 21
HITL records: Keep the chosen concept and action/music details in channel intro files.
- Very specific: line 65
Read references/intro-playbook.md — the SoT for concept axes, prompt skeletons, and review criteria.
- Very specific: line 67
If an intro already exists, always confirm first — replacing it puts the brand tone out of step with existing posts.
- Very specific: line 71
Check whether GEMINI_API_KEY is set.
- Very specific: line 136
If the concept is scene-led (a mini scene with props, a dark studio, etc.), generate the first frame with gpt_image_img2img (logo master as …
- Very specific: line 182
If <slug>-sonic-logo.wav exists, just copy it to .work/sonic.wav (sonic branding = repetition).
- Distinctive: line 187
If that fails too, skip this step (the clip's native sound only).
- Distinctive: line 266
Update the intro assets line in profile.md §6 (add it if missing).
“Common” is measured: kept by at least 6 in 10 of the 3 edited versions of this file we could read. “Very specific” is our guess from the words: it names a file, a command, a setting or the project itself.
Files
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.
HITL records: Keep the chosen concept and action/music details in channel intro files. Preserve actual provenance in local files and reuse existing authorization. This adds no approval gate.
Channel intro video — data/[channel]/assets/intro/
Makes the intro (logo sting) that the channel's profile character acts in
person — in this order: 4-concept HITL pick → video generation with the saved
video model → channel-name reveal + sonic-logo alignment → review on request →
HITL watch approval. The channel name and tagline
must appear so a viewer knows "what channel this is" within 3 seconds, and a
memorable sonic logo is aligned to the landing frame. The design rationale
lives in references/intro-playbook.md — the SoT. Read it before starting.
Deliverables (path contract)
data/<slug>/assets/intro/
├── .work/ # intermediates (not committed)
│ ├── brief.md # 4 concepts + pick + video prompt record
│ ├── lockup.html # lockup card instance (template substitution)
│ ├── lockup.png # full lockup (background+character+channel name) 1080×1920
│ ├── text-plate.png # transparent text plate (channel-name reveal)
│ ├── char-card.png # character card (no text — video first/last frame)
│ ├── open-frame.png # (per concept) opening keyframe
│ ├── intro-raw.mp4 # video render (regenerations: intro-raw-r2.mp4 …)
│ ├── sonic.wav # sonic-logo working copy
│ ├── frames/ # review frames (from build-intro.sh)
│ └── preview.html # browser preview (candidate/final check)
├── <slug>-intro-master.mp4 # final master (~4.8s — post-roll closing splice, trailer)
├── <slug>-intro-stinger.mp4 # stinger (≤2.5s — series opener, ultra-compact splice)
├── <slug>-intro-lockup.png # full lockup card (reused for covers/end cards)
└── <slug>-sonic-logo.wav # sonic logo (shared across all videos — never regenerate)Procedure
1. Load prerequisites
data/<slug>/profile.md— if missing, stop and point to/social-flow:channel add. Take §1 identity (topic, target, content promise), §3 THEME, and the banned subjects as fixed constraints.- Logo (character) master
assets/branding/<slug>-logo-master-1024.png— if missing, stop and point to/social-flow:brandingfirst (the intro is built on the finalized character). - Read
references/intro-playbook.md— the SoT for concept axes, prompt skeletons, and review criteria. - If an intro already exists, always confirm first — replacing it puts the
brand tone out of step with existing posts. An existing
<slug>-sonic-logo.wavis reused by default (replace only on explicit request). - Check whether
GEMINI_API_KEYis set. Without itmusic_generate_clipfails; if MLX Core is up,mlx_music_generatecan still write the sonic logo (2–3s instrumental). If both are down, announce in §2 that the run will proceed with the clip's native sound only, no sonic logo.
2. Design 4 concepts → HITL pick
Design 4 distinct concepts along the playbook §3 axes (character action × scene mood × sonic-logo character) — at least one must include the signature gesture (the action that symbolizes the channel), and spread the emotional register (energy/trust/wit/cinematic).
Present them as one AskUserQuestion with 4 options — each option is a label (short concept name) + description (action, mood, sonic logo in one line) + a scene scenario in preview (3–4 lines of what the character does at which second). Other can carry a blend ("A's action with C's mood") or a full redesign — fold in a blend and confirm, or build 4 fresh concepts for a redesign.
Record the confirmed concept, scenario, and prompt draft in .work/brief.md —
the baseline document for the review rounds and re-runs. The tagline
(the §1 content promise compressed, 2 lines max) is also finalized here.
3. Capture the 3 brand cards (deterministic — logo pixels never pass through a generative model)
sed-substitute references/lockup-template.html into .work/lockup.html —
{{INK}}, {{ACCENT}}, {{ACCENT2}} (profile §3 hex), {{CHANNEL_NAME}},
{{TAGLINE}} (line breaks as <br>), {{LOGO_SRC}} (the logo master — copy
into .work/ and reference by file name). Shoot the 3 modes with the shared
produce capture script:
CAP=${CLAUDE_PLUGIN_ROOT}/skills/produce/references/capture-frames.sh
WD="data/<slug>/assets/intro/.work"
# The intro has no episode scope — we call this from the repo root and only the
# output goes under the channel, so there's no `.work/format.env` to find.
# So pass the window size directly.
# Portrait 1080×1920 equals today's default, so behavior doesn't change. For a
# landscape intro use `CAP_W=1920 CAP_H=1080` and end the URL with `&format=wide`.
CAPENV='CAP_W=1080 CAP_H=1920'
env $CAPENV $CAP "file://$PWD/$WD/lockup.html?mode=full" "$WD/lockup.png" 0
env $CAPENV $CAP "file://$PWD/$WD/lockup.html?mode=text" "$WD/text-plate.png" 1 # alpha required
env $CAPENV $CAP "file://$PWD/$WD/lockup.html?mode=char" "$WD/char-card.png" 0The shell variable was renamed from W to WD — W now means canvas width,
and keeping the same name would confuse the reader (it isn't exported, so even
before this it never reached child processes).
Open the 3 captures with Read and check them — channel-name typos, tagline line breaks, character crop. An error here corrupts everything downstream.
Once burned into the frame, the tagline can't be fixed. Run it through the style checker once and treat its findings as suggestions (the channel name is a proper noun, outside the checker's scope).
echo "<tagline>" | python3 ${CLAUDE_PLUGIN_ROOT}/skills/platform-guide/references/check-style.py --surface screen -On request, or when the line reads off, delegate to the growth-post-reviewer agent on the
standalone surface — use the review's concrete wording suggestions before putting the
tagline on screen (it's a one-line copy, so delegate 2–3 candidates together and pick).
4. Opening keyframe (long version only — skipped at the 4-second standard)
If the concept is scene-led (a mini scene with props, a dark studio, etc.),
generate the first frame with gpt_image_img2img (logo master as reference,
1080×1920; under Codex image_gen after view_image on the master, under Grok
image_edit with the master as image) (an exception to the local-first default
path — reference editing doesn't exist in image_local_generate) — the pre-entrance state or a
silhouette, with the profile negative prompt + text exclusion, saved as
.work/open-frame.png. Skip it for front-facing character-entrance concepts.
5. Video generation (the saved video model)
The body of the intro is always made with a video-generation tool — never
substituted by HTML captures and ffmpeg assembly alone (cards and text are
only the §7 finishing overlays). The tool is the saved video model
(.social-flow/models.json → models.video); channel assets follow the directory
model settings like episodes do, and a different engine needs the user's explicit
request. In a configured workspace (one with .social-flow/models.json) an intro clip is a
channel asset, not an episode: call the saved model's adapter directly with an outputPath
under data/<slug>/assets/, without videoContext (video_plan takes an episode). The
server binds the call to the saved video model and resolution (a different engine fails with
model_selection_mismatch) and logs it to data/<slug>/assets/.work/video-requests.jsonl.
- Host video model — the host
image_to_videomakes it:char-card.pngas the source,duration4, 720p,video.hostin the ledger. - Default (4-second standard — user-confirmed): the saved model's image-to-video
call (
astra_genai_img2video,astra_img2videoorseedance_img2video) — source =char-card.png(first frame = final pose card), 9:16, 4 seconds, the saved resolution. An intro has no dialogue, so any adapter works. Put "the framing and crop never change" + "returns to the exact starting pose by the 3-second mark" in the prompt; ending alignment is guaranteed by the §7 lockup crossfade, and the build normalizes the source to 1080×1920. - Long version (trailer use only): 8 seconds, with char-card as
lastFramePathwhere the adapter takes one (astra_*image-to-video). - Mascot-acting-focused concepts: the saved engine's reference call
(
seedance_reference,astra_genai_msr) — the logo master (+ 1–2 other angles if available) as references, 9:16. Its strength is keeping the character on-model. - The prompt follows the playbook §5 L.O.G.O. skeleton: character preservation
rules → the concept's single gesture (with per-second timing) → motion SFX
description → "ends settled in the exact pose of the final frame, last
second nearly static". Exclusions go in a
negativePromptargument where the adapter has one (astra_*guided tiers), never the body —text, letters, captions, subtitles, music, background score+ the profile's banned subjects as noun phrases (playbook §5). Save as.work/intro-raw.mp4.
6. Sonic logo
If <slug>-sonic-logo.wav exists, just copy it to .work/sonic.wav (sonic
branding = repetition). Otherwise generate the concept's sonic-logo
description (playbook §7 — rise→impact→tail, 2–3s, no vocals) with
music_generate_clip (Lyria) and save as .work/sonic.wav. If
GEMINI_API_KEY is unset, try mlx_music_generate (instrumental, ~3s).
If that fails too, skip this step (the clip's native sound only).
Voice tag (optional — when the user wants one): premix a TTS reading of
the channel name, delivered with impact, into the sting. Generate with
tts_generate, but fix a tag-specific voice and delivery in the brief (it
may differ from the channel narration voice — e.g., a male voice with a
signature delivery like "딸깍. 랩↗", the channel name stretched with a
rising tone. Direct stretch and intonation via the text spelling ("따알깍")
and stylePrompt). After trimming silence, align the end of the reading to
the sting impact and premix with sidechain ducking (updating
.work/sonic.wav), and sync TEXT_AT to the reading's start (text appears =
reading starts). The confirmed premix becomes the <slug>-sonic-logo.wav
asset — the voice tag is sonic branding too, so once confirmed it never changes.
7. Post-processing (build-intro.sh)
REF=${CLAUDE_PLUGIN_ROOT}/skills/intro/references
$REF/build-intro.sh "data/<slug>/assets/intro/.work"Reads intro-raw.mp4 + lockup.png (+ text-plate.png · sonic.wav) from .work/
and builds intro-master.mp4 · intro-stinger.mp4 · frames/. Order:
normalization (1080×1920/30fps) → channel-name plate slide-in → real-pixel
lockup crossfade → hold → aligned sonic-logo mix (-14 LUFS). Knobs
(environment variables):
| Knob | Default | Purpose |
TRIM_START | 0 | cut a stalled opening (mostly for the long version — usually unneeded at the 4s standard) |
TEXT_AT / SONIC_AT | landing −1.2s / −0.2s | fine-tune reveal and sonic-logo timing |
LOCKUP_XF / HOLD | 0.6 / 0.8 | lockup transition, ending hold |
STINGER | 2.5 | stinger length |
AUDIO / SONIC_VOL | native / 1.0 | drop the clip's audio / sonic-logo gain |
8. Optional adversarial review (brand-reviewer intro mode)
Delegate to the brand-reviewer agent (Agent) — pass the paths of
intro-master.mp4, frames/, lockup.png, profile.md, .work/brief.md, plus any
unresolved findings from the previous round, and state that this is
"intro video mode". Parse the verdict tail
INTRO_REVIEW: score=NN p0=N verdict=PASS|FAIL.
- No findings worth acting on → §9.
- Findings fixable in post (stalled opening, timing misalignment, level balance): re-run §7 with only the knobs changed (no video re-call — cheap).
- Generation defects (character off-model, near-glyphs, effect soup): fold the findings into the prompt via the playbook §9 correction table and regenerate §5 — only when the user asks for the regeneration and it fits the authorized budget. A higher model grade is likewise the user's explicit request, never an automatic escalation after a FAIL label.
- Report the chosen version and unresolved findings. Further generation depends on the authorized budget and task, not a reviewer score or an automatic escalation.
9. HITL watch approval (browser)
Substitute references/preview-template.html into .work/preview.html —
{{TITLE}} "Final intro check", A = intro-master.mp4, B = intro-stinger.mp4,
with the timeline (reveal, sonic logo, lockup times) in DESC. Open it with
open, tell the user to unmute and verify the sonic logo too, then get
approval via AskUserQuestion. Fix requests route back to §7 (knobs) or §5
(regeneration) depending on their nature.
10. Install & report
IN="data/<slug>/assets/intro"
cp "$IN/.work/intro-master.mp4" "$IN/<slug>-intro-master.mp4"
cp "$IN/.work/intro-stinger.mp4" "$IN/<slug>-intro-stinger.mp4"
cp "$IN/.work/lockup.png" "$IN/<slug>-intro-lockup.png"
cp "$IN/.work/sonic.wav" "$IN/<slug>-sonic-logo.wav" # only if the sonic logo is new
ASSET=${CLAUDE_PLUGIN_ROOT}/skills/channel/references/resolve-asset.py
python3 "$ASSET" --ensure data/<slug> intro master "intro/<slug>-intro-master.mp4" "post-roll splice, trailer"
python3 "$ASSET" --ensure data/<slug> intro stinger "intro/<slug>-intro-stinger.mp4" "series opener"
python3 "$ASSET" --ensure data/<slug> intro lockup "intro/<slug>-intro-lockup.png" "cover, end card"
# only if the sonic logo is new
python3 "$ASSET" --ensure data/<slug> intro sonic "intro/<slug>-sonic-logo.wav" "shared across all videos"Update the intro assets line in profile.md §6 (add it if missing). Report: review findings when a review ran, regeneration count, timeline, deliverable path table + usage guidance (the playbook §1 table — always state never placed in front of short-form content). Note that uploading to platform channel pages (trailer, profile intro) is manual work.
Rules
- The video body is always generated with the saved video model — card captures and ffmpeg handle only the finishing (text reveal, lockup guarantee, mix).
- Never call the video model before the concept is confirmed — the pick happens on the 4 text concepts of §2. Generating multiple video candidates to choose from is banned on cost.
- Reviews are advisory — brand-reviewer (intro mode) findings inform revisions and are reported as they came; no score manipulation, no fabricated review, no regeneration spent on a verdict label alone.
- Channel-name and tagline text is never left to the generative model —
textgoes innegativePromptwhere the adapter has one, and text is handled by the lockup card and plate (deterministic render). Writing "no text" in the body makes letters appear instead. - The sonic logo is a channel asset — once confirmed, reuse it across all videos; regenerate only on the user's explicit request.
- No concept drift after the HITL pick — if it must change, stop the loop and return to §2 for a fresh pick.
- Intermediates live in
.work/(gitignored); only the 4 final files go intoassets/intro/. - The intro is never placed in front of short-form content — the default uses are post-roll splice (brand closing), trailer, and series opener (after the hook). Follow the playbook §1 table.
Additional Resources
Reference Files
references/intro-playbook.md— best-practice SoT (placement, length, concept axes, L.O.G.O. prompting, sonic logo, final-frame contract, correction table)references/lockup-template.html— brand lockup card (full/text/char 3 modes, for 1080×1920 headless capture)references/build-intro.sh— post-processing render (normalization, text reveal, lockup crossfade, sonic-logo mix, stinger derivation)references/preview-template.html— browser preview (2-slot video comparison — final check and candidate comparison)
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
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.

