PORTAL / LIBRARY / pb-script

[ COPY & CONTENT · OPERATOR UTILITY ]

/pb-script

Turn a video idea into a YouTube script for @faris-bio.

Download the skill file (.md)

Placeholders like ACME Agency, <id> and you@example.com mark values that are per-agency — your install fills them with YOUR clients and accounts. If a section references a helper script you don't have yet, it ships with that workflow's install.

/pb-script — Personal Brand YouTube Script Generator

Triggers

What this skill does

  1. Reads faris-bio/brand/voice.md, positioning.md, pillars.md for context
  2. If commits are referenced, runs node faris-bio/scripts/read_commit_diff.mjs <hash> per commit (capped at 300 lines each) to get real code context
  3. Scaffolds the video folder via node faris-bio/scripts/init_video.mjs <slug>
  4. Generates the five output sections (see below)
  5. Presents everything to Faris with driver's-seat checkpoints
  6. After Faris picks, writes consolidated script.md to the video folder

What this skill does NOT do

Output sections

Section 1 — Hook block (5 variants)

Each variant has three components:

### Hook A
**Spoken (20-30s, word-for-word):**
> "Six AI agents now handle 70% of the work I used to do across 25 ad accounts. Here's exactly what each one does and what it refuses to do."

**Visual (what's on screen):**
> Quick montage: Slack message triggering Claude → analyst agent output → creative-director picking a generator → Instantly dashboard

**Text overlay (optional, mainly for Shorts):**
> "6 agents. 25 clients. 1 person."

Voice enforcement on hooks:

Section 2 — Full intro scripted (2-3 variants, 30-60s each)

Word-for-word script that follows the hook. This is where voice matters most. Faris will hand-rewrite this (Joey's method), so generate 2-3 variants with different structural approaches:

Each variant should feel like the real voice samples in voice.md. Read them before writing. If a generated line wouldn't fit alongside "I'm not a beginner at this. I run an agency for 10 years. But I started a new agency just on the side without using any social proof, just to prove that it's not luck" — rewrite it.

Section 3 — Outline (Boardmix-card-shaped)

Target length suggestion (8-12 min for the first videos). Then N sections, each structured as a Boardmix card Faris can put on his canvas:

### Card 3: The Diagnostician Agent (refuses to fix until it diagnoses)
**Talking points:**
- Show the diagnostician refusing to propose a code change
- Explain the GSD-inspired quality gate: hypothesis → test → only then propose
- Real example: Creatomate black-screen bug (commit 072cc90)
- "Most AI agent tutorials skip constraints. Constraints are the whole point."

**Visual aid:**
> Screen-share: `.claude/agents/diagnostician.md` open in editor, highlight the refusal rule

**Source material to show on screen:**
> `072cc90` commit diff — Creatomate fix

Rules for cards:

Section 4 — CTA block

One ask. Not three. Make it specific. Default to soft CTAs until Faris has an offer to sell.

Good: "Drop a comment with your biggest agency bottleneck and I'll tell you which agent to build first." Bad: "Like, share, subscribe, and see you in the next video."

Section 5 — Title variants (5 options)

Grounded in voice.md rules:

Present as a ranked list with one-line reasoning per title.

Driver's-seat checkpoints

After generating all 5 sections, ask:

"Here are your 5 hooks, 3 intros, the outline, CTA, and 5 titles. Pick: - Hook: which number? (or 'none, let me rewrite') - Intro: which variant? (A/B/C or 'I'll rewrite from scratch') - Outline: any cards to cut, add, or reorder? - Title: which number? (or 'let me AB test 2-3 on YouTube') - CTA: keep or change?"

After picks, write the consolidated script.md to the video folder. Format:

# Script — <title>

## Hook
<picked hook, word-for-word>

## Intro
<picked intro variant, word-for-word>

## Outline

### Card 1: ...
### Card 2: ...
...

## CTA
<picked CTA>

## Metadata
- **Title:** <picked title>
- **Alt titles for AB test:** <if Faris wants to test 2-3>
- **Target length:** Xm
- **Source commits:** <hashes>
- **Pillar:** <from idea>

Also update brief.md and metadata.md stubs in the same folder with the final picks.

Voice enforcement checklist (run before presenting output)

Before showing any output to Faris, self-check:

  1. Zero em-dashes (—) anywhere in the output
  2. Zero matches against voice.md banned phrases list
  3. Every hook opens with a number, claim, or contrarian take
  4. At least one napkin-math moment in the outline
  5. At least one "I tested X, this one works" moment
  6. At least one "don't waste time on X" moment
  7. At least one open loop in a card transition
  8. CTA is a single specific ask, not a triple stack
  9. All tool/method names are specific (name the tool, not "various tools")
  10. Generated lines pass the calibration test: would this sentence fit alongside the real voice samples in voice.md?

Helper scripts

Files read

Files written