blinds123

sofa-v3

Builds a complete DTC landing page using mechanism-first angle discovery, 4-specialist council copy, ENGAGE/FIBS/3-Secrets frameworks, vault-anchored writing, and the real anchor-template build system.

blinds123 0 Updated 1mo ago

Resources

29
GitHub

Install

npx skillscat add blinds123/auralo-base-template

Install via the SkillsCat registry.

SKILL.md

SOFA v3 — Landing Page Pipeline

Trigger: /sofa-v3 [PRODUCT]

What This Skill Does

Combines sofa-v2's mechanism-first research + angle approval gate with anchor's 4-specialist council copy system, full copywriting-vault integration, ENGAGE/FIBS/3-Secrets copy frameworks, and the production anchor-template build (real kangaroo-build.sh, 27 HTML sections, ~400 config vars).

Result: better sales copy angles AND better-built pages — not one or the other.


Minimum Input Required

PRODUCT_SLUG=   [slug — e.g. "safety-necklace"]
PRODUCT_TYPE=   [what the product is — e.g. necklace, supplement, pillow]
BRAND_NAME=     [customer-facing brand name]
DESCRIPTION=    [one paragraph — what it is, who it's for, why different, proof]
COMPETITOR_URL= [required — competitor product page URL]
TIKTOK_URL=     [required — relevant TikTok for buyer comment intelligence]
REFERENCE_IMAGES= [1-3 product photos for visual continuity]

Project Setup

PRODUCT_SLUG="[from user input]"
BUILD_TS=$(date +%Y%m%d-%H%M%S)
PROJECT_DIR="${HOME}/Desktop/sofa-builds/${BUILD_TS}-${PRODUCT_SLUG}"
mkdir -p "${PROJECT_DIR}/.sofa"
mkdir -p "${PROJECT_DIR}/images/product"
mkdir -p "${PROJECT_DIR}/images/testimonials/overlayed"
mkdir -p "${PROJECT_DIR}/images/product/overlayed"
mkdir -p "${PROJECT_DIR}/images/founder"
mkdir -p "${PROJECT_DIR}/product-reference"

# Write product brief (strict KEY=VALUE schema — Phase 0.5 and Phase 1 agents depend on this format)
cat > "${PROJECT_DIR}/product-brief.txt" << EOF
PRODUCT_SLUG=${PRODUCT_SLUG}
PRODUCT_TYPE=[what the product is — e.g. necklace, supplement, pillow]
BRAND_NAME=[customer-facing brand name]
DESCRIPTION=[one paragraph — what it is, who it's for, why different, proof]
COMPETITOR_URL=[required — competitor product page URL]
TIKTOK_URL=[required — relevant TikTok for buyer comment intelligence]
REFERENCE_IMAGES=product-reference/
EOF

# Copy seed images into product-reference/
cp [user_images] "${PROJECT_DIR}/product-reference/"

# Helper functions
phase_done() { [ -f "${PROJECT_DIR}/.sofa/phase-${1}.done" ]; }
mark_done()  { touch "${PROJECT_DIR}/.sofa/phase-${1}.done"; }

Write mark_done 0 after setup. This is Phase 0.


Phase Execution Loop

PHASE 0 — Preflight

When: Start of build
Run: Execute project setup bash block above. Copy reference photos into $PROJECT_DIR/product-reference/.
Gate: product-brief.txt exists + seed images in product-reference/.
Next: Phase 1 (sequential)


PHASE 0.5 — Fast-Path Image Brief (PARALLEL WITH PHASE 1)

When: phase-0.done exists
Run: Dispatch ONE sub-agent with prompt from ~/.claude/skills/sofa-v3/phases/phase-0-fast-images.md.

  • Reads: $PROJECT_DIR/product-brief.txt + reference images in product-reference/ + 2026-visual-grammar.md
  • Writes: $PROJECT_DIR/image-prompts-fast.txt (35 slots, PROVES=TBD)
  • Copies raw prompts to: ~/Downloads/${SLUG}-image-prompts-fast.txt (the -fast suffix avoids collision with Phase 2B's final version which writes ~/Downloads/${SLUG}-image-prompts.txt)
  • Announces: "IMAGE PROMPTS READY — start generation now"

Dispatch this in the SAME message as Phase 1 research agents — Phase 0.5 runs concurrently with Phase 1A/1B/1C intel gathering.

Gate: ~/Downloads/${SLUG}-image-prompts-fast.txt exists. phase-05.done written.
Target: 4-7 min from /sofa-v3 invocation (agent reads visual-grammar + observes reference photos + writes 35 briefs).
Next: Does NOT block Phase 1. Phase 2B later writes a FINAL version to ~/Downloads/${SLUG}-image-prompts.txt (no -fast suffix) with PROVES fields populated. The user should prefer the final version if both exist; use the fast version only while waiting for Phase 2B.


PHASE 1 — Research + Intelligence + Angle Approval (HARD STOP)

When: phase-0.done exists

Run in two steps — Step 1A dispatches 3 parallel agents, Step 1B is the synthesis:

Step 1A: Intel Agents + Phase 0.5 in Parallel (single message, four Agent blocks total)

Send all 4 in ONE message — 3 intel agents AND Phase 0.5 fast-image agent simultaneously:

  • Intel Agentcompetitor-audit.md — real browser competitor teardown, verbatim copy extraction, REJECTED vocabulary list. Prompt: ~/.claude/skills/sofa-v3/phases/phase-1a-intel.md
  • VoC Agentintel-dossier.md — TikTok comment mining + Reddit/Amazon verbatim buyer language (≥30 phrases). Prompt: ~/.claude/skills/sofa-v3/phases/phase-1b-voc.md
  • Vault Agentswipe-file.md — copywriting-vault pattern matching per copy zone + Evaldo One Belief candidate. Prompt: ~/.claude/skills/sofa-v3/phases/phase-1c-vault.md

Wait for all 3 to complete.

Step 1B: Synthesis Agent (after all 3 outputs exist)

Dispatch ONE agent with prompt from ~/.claude/skills/sofa-v3/phases/phase-1d-synthesis.md. Reads competitor-audit.md + intel-dossier.md + swipe-file.md. Produces:

  • mechanism-map.md — 3-axis mechanism spectrum + competitor positions + whitespace
  • angle-brainstorm.md — 10-12 angles, each with Evaldo One Belief sentence
  • angle-scoring.md — all angles scored + top 3 with One Belief sentences
  • avatar-pack.md — buyer psychology, V-I-E objections, testimonial seeds
  • one-belief.md — written after user approves angle (see gate below)

Gate: HARD STOP — present top 3 angles, each with One Belief sentence (Evaldo formula), VoC evidence, vault pattern. Do NOT write phase-1.done. Wait for "APPROVE [number]" or "REDIRECT [changes]". After approval: write one-belief.md with the approved sentence, then mark_done 1.

Target timing: Step 1A parallel ≈ 6-10 min (bottlenecked by real-browser competitor teardown). Step 1B synthesis ≈ 4-6 min. Total Phase 1 AI time: 10-15 min.

Next: Phase 2 (after user approval confirmed)


PHASE 2 — Specialist Council + Config + Image Briefs

When: phase-1.done exists

Run in two sub-steps:

Step 2A: 4 Specialists in Parallel (single message, four Agent blocks)

Dispatch all 4 in one message. Full prompts at ~/.claude/skills/sofa-v3/phases/phase-2-council.md:

  • Halbert agenthalbert-hero.md — hero section with ENGAGE framework (Exploit/Narrate/Give/Attach/Guarantee/Embed)
  • Kennedy agentkennedy-body.md — mechanism + comparison + 3 Secrets (Vehicle/Internal/External) + FIBS feature blocks + FAQ (5 questions)
  • Hormozi agenthormozi-offer.md — offer stack + bundle + guarantee + CTA
  • Throssell agentthrossell-voice.md — founder story + 25 complete testimonials

Each agent reads: one-belief.md + angle-scoring.md + avatar-pack.md + mechanism-map.md + intel-dossier.md + swipe-file.md + product-brief.txt

Specialist zones are hard. No overlap.

Step 2B: Config + Image Briefs in Parallel (after all 4 council files exist)

Dispatch BOTH agents in ONE message:

  • Config agentphase-2-config.md — fills ALL ~400 variables in product.config + bubbles.json. Writes phase-2b-config.done.
  • Images agentphase-2b-images.md — writes image-prompts.txt (35 briefs, PROVES fields populated). Writes phase-2b-images.done.

Wait for BOTH agents to complete, then run the combined gate:

# Confirm both done files exist
[ ! -f "$PROJECT_DIR/.sofa/phase-2b-config.done" ] && { echo "FAIL: config agent not done"; exit 1; }
[ ! -f "$PROJECT_DIR/.sofa/phase-2b-images.done" ] && { echo "FAIL: images agent not done"; exit 1; }

# Fill rate
bash ~/.claude/skills/anchor/scripts/fill-rate-check.sh "$PROJECT_DIR"

# Pricing lock
source "$PROJECT_DIR/product.config"
[ "$SINGLE_PRICE" != "19" ] && exit 1
[ "$BUNDLE_PRICE" != "59" ] && exit 1
[ "$ORDER_BUMP_PRICE" != "10" ] && exit 1

# image-prompts.txt has 35 slots
SLOT_COUNT=$(grep -c "^PLACEMENT:" "$PROJECT_DIR/image-prompts.txt")
[ "$SLOT_COUNT" -lt 35 ] && { echo "FAIL: only $SLOT_COUNT image briefs"; exit 1; }

# ecom-voice-gate on all 4 specialist files
for f in halbert-hero.md kennedy-body.md hormozi-offer.md throssell-voice.md; do
  bash ~/.claude/skills/anchor/scripts/ecom-voice-gate.sh "$PROJECT_DIR/$f" || exit 1
done

echo "[phase-2] All gates passed — writing phase-2.done"
touch "$PROJECT_DIR/.sofa/phase-2.done"

Time saved vs. sequential: config-only agent is ~5-7 min, images-only agent is ~4-6 min. Running parallel cuts Phase 2B wall-clock by ~4-6 min.

Next: Phase 3 (sequential)


PHASE 3 — Image Sort + Bubble Overlay

When: phase-2.done exists

Image generation is manual. image-prompts.txt contains the 35 briefs with naming guidance. Generate with any tool (Gemini, Midjourney, Firefly, etc.), then drop the files into $PROJECT_DIR/images/raw/.

HARD STOP before sort: Claude announces it is waiting for images and does NOT proceed until user says "images done" or equivalent.

Step 3A: Sort raw images into fixed schema paths
Claude reads the PLACEMENT field from each prompt block in image-prompts.txt and matches raw files to slots by name pattern. Converts any non-webp to webp (cwebp -q 85). See full logic in ~/.claude/skills/sofa-v3/phases/phase-3-images.md.

Step 3B: Bubble overlay

cd "$PROJECT_DIR"
python ~/Desktop/anchor-template/scripts/overlay_ttbubble.py \
  --in ./images \
  --config ./bubbles.json

If overlay fails: copy raw testimonial images to overlayed/ paths (kangaroo-build.sh auto-fallbacks for product overlays).

Gate: ≥30 of 35 images exist in correct paths. phase-3.done written.

Next: Phase 4 (sequential)


PHASE 4 — Build

When: phase-3.done exists
Run: Execute the build procedure from ~/.claude/skills/sofa-v3/phases/phase-4-build.md:

  1. rsync -a --exclude='product.config' --exclude='images/' --exclude='index.html' ~/Desktop/anchor-template/ "$PROJECT_DIR/"
  2. Verify pricing lock in product.config
  3. cd "$PROJECT_DIR" && bash ./kangaroo-build.sh 2>&1 | tee build-output.log
  4. Validate: index.html exists + >50KB + zero {{placeholders}}
  5. bash ~/.claude/skills/anchor/scripts/ecom-voice-gate.sh "$PROJECT_DIR/index.html"

Gate: kangaroo-build.sh exits 0. index.html > 50KB. Zero unreplaced placeholders. ecom-voice-gate exits 0.

Next: Phase 5 (sequential)


PHASE 5 — QA + Deploy

When: phase-4.done exists
Run:

  1. bash ~/.claude/skills/real-browser/scripts/ensure-chrome-session.sh 9333 my-browser then CDP verify
  2. netlify deploy --prod --dir "$PROJECT_DIR" 2>&1 | tee "$PROJECT_DIR/deploy-output.log"

Gate: Live Netlify URL returned.


Fast Build Mode

Add TEARDOWN_DEPTH=fast to product-brief.txt to activate Phase 1A fast teardown. This skips FAQs, testimonials, and below-fold sections of the competitor page — saves ~4-5 min on competitor scraping. Use when you already know the competitor well or the product category is straightforward.

Full timing with all speed changes applied:

  • Phase 2B: ~5-7 min (was ~10-12 min) — parallel config + image agents
  • Phase 1A fast mode: ~5-6 min (was ~10 min) — above-fold only
  • Combined AI time saving: ~8-12 min per build

Supervised Fast Mode (eliminates notification latency)

The largest wall-clock overhead is notification latency — the orchestrator sitting idle between phase completions (~20-30 min total). The fix: stay present and manually advance between phases.

When you want a fast supervised build, add SUPERVISED=true to product-brief.txt. The orchestrator will poll every 30 seconds for .sofa/*.done files rather than waiting for notification delivery:

# Polling loop pattern (orchestrator uses this between async dispatches)
NEXT_PHASE_DONE="$PROJECT_DIR/.sofa/phase-${NEXT}.done"
echo "Polling for $NEXT_PHASE_DONE..."
until [ -f "$NEXT_PHASE_DONE" ]; do
  sleep 30
  echo "  still waiting... $(date +%H:%M:%S)"
done
echo "Phase $NEXT complete — advancing"

This means: instead of the orchestrator going idle and waiting for a notification ping (which can take 5-8 min per transition), it checks every 30 seconds and advances immediately when the done file appears.

Supervised mode wall-clock target (all optimizations combined):

  • AI work: ~45-60 min
  • Polling overhead (not idle): ~5-10 min
  • User gates (angle approval + image generation): ~20-35 min
  • Total supervised wall-clock: ~70-105 min (vs. ~90-150 min unsupervised)

TeamCreate Execution Model (when /sofa-v3 is invoked with TeamCreate)

When the user invokes sofa-v3 via TeamCreate, the pipeline uses a native agent team with anti-groupthink cross-checking:

Phase 2A Anti-Groupthink Cross-Check Protocol (combined review + fix — 4 agents, not 8):

After all 4 specialist files are written, dispatch 4 "review-and-fix" agents in a single message. Each agent reads the TARGET specialist's file, flags inconsistencies, AND immediately writes the fix to that file in the same pass. No separate fix round-trip needed.

Cross-check assignments:

  • Halbert reviews + fixes Kennedy — are mechanism claims supported by intel-dossier.md evidence? Are any stats invented? Does "Live GPS" or other competitor vocabulary appear?
  • Kennedy reviews + fixes Hormozi — does each value-stack item address a real buyer problem from avatar-pack.md? Is the arithmetic correct (sum the items, verify the total)?
  • Hormozi reviews + fixes Throssell — does the founder storyline match the chosen Q7 archetype? Is the invitation confident (not needy)? Do testimonials have before-states?
  • Throssell reviews + fixes Halbert — does the Narrate beat open a real unresolved loop? Does the ATTACH beat match the approved angle identity register exactly?

Each agent writes a single [SPECIALIST]-cross-check.md note:

REVIEWED: [target file]
FLAG: [what was inconsistent — exact quote from file vs. exact quote from research stack]
FIX_APPLIED: [what was changed — brief description]
PASS: [what was verified as correct]

Skepticism rule: Each reviewer MUST find at least one thing to question AND fix. If the first read looks clean, re-read every stat, every verbatim quote attribution, every arithmetic total, and every VoC phrase for exact wording. No-flag outputs are a failure of skepticism.


Hard-Stop Gates

Phase 1 — Angle Approval
Present top 3 angles. Do NOT write phase-1.done. Wait for "APPROVE [number]". Only proceed after explicit approval.

Gate script failures
ecom-voice-gate.sh or fill-rate-check.sh exit non-zero → STOP. Report exact violations. Route back to relevant specialist. Never skip.


Critical Invariants

[ ] 1. PHASE 1 IS HARD STOP — angle approval required before Phase 2
[ ] 2. PHASE 3 IS HARD STOP — wait for "images done" before sorting
[ ] 3. PRICING LOCKED: Single &#36;19 / Bundle &#36;59 / Order Bump &#36;10 — never change
[ ] 4. DOLLAR SIGNS in product.config use &#36; NOT $
[ ] 5. ENGAGE powers every hero headline — 6 beats, all must be present
[ ] 6. FIBS powers every feature block — Fear/Intrigue/Believability/Stakes
[ ] 7. 3 SECRETS structure: Vehicle (why others fail) / Internal (not their fault) / External (external blockers)
[ ] 8. VAULT ANCHORED: every headline/offer/guarantee cites ≥1 pattern from copywriting-vault
[ ] 9. FIXED IMAGE SCHEMA: 6 product + 25 testimonials + comparison + orderbump + bundle + founder = 35
[ ] 10. SUBDIRECTORY STRUCTURE: images/product/ + images/testimonials/ + images/founder/ — not flat
[ ] 11. SPECIALIST ZONES HARD: Halbert=hero, Kennedy=mechanism+secrets+FAQ, Hormozi=offer+guarantee+CTA, Throssell=founder+testimonials
[ ] 12. REAL BUILD: rsync anchor-template → kangaroo-build.sh — never build from scratch
[ ] 13. ECOM-VOICE-GATE: banned phrases = hard fail — never warnings
[ ] 14. EVIDENCE CHAIN: every product.config field traces to avatar-pack.md or intel-dossier.md
[ ] 15. MODEL AGNOSTIC: no hardcoded model names in prompts — use sub-agent, not "Opus" or "Gemini"
[ ] 16. EVALDO ONE BELIEF: every angle has a one-belief sentence — "This [new opportunity] is the key to [buyer desire] — only attainable through [new mechanism]." Written to one-belief.md after approval.
[ ] 17. PHASE 1 PARALLEL: Step 1A dispatches 3 agents in a SINGLE message (Intel + VoC + Vault). Never serialize. Target: ~10 min total Phase 1 AI time.
[ ] 18. STORIES > STATEMENTS (Kennedy): specialists use story/confrontational-question openings, NOT assertions. The reader concludes — we don't tell them.
[ ] 19. EVALDO 10-QUESTION SEQUENCE: Q1 (novelty in headline), Q2 (WIIFM big promise page 1), Q3 (ABT proof wrapper on all evidence), Q4 (REAL PROBLEM = reverse of Q1), Q5 (us-vs-them enemy using existing beliefs), Q6 (either-or urgency in offer), Q7 (founder credibility storyline: I've-been-in-your-shoes / Robin Hood / Expert), Q8 (mechanism explanation makes reader nod), Q9 (SIN no-brainer offer + value gap), Q10 (push-pull close: 3 options, no neediness).
[ ] 20. JIM EDWARDS BULLET FORMULA: FIBS Believability beat uses Feature + Benefit + Meaning: "It ___ so you can ___ which means ___." The "which means" is required — ties to the buyer motivator.
[ ] 21. JIM EDWARDS 10 BUYER MOTIVATORS: avatar-pack.md identifies top 3 motivators for this product. FIBS Fear beats target those motivators in buyer language.
[ ] 22. YOU-NOT-I RULE: all 4 specialists scan for I/me/my/we/ours before output. Rewrite to you/your/yours except in narrative story beats.
[ ] 23. FAST IMAGE DELIVERY: image-prompts.txt raw prompts must land in ~/Downloads within 3-5 min of /sofa-v3 invocation. Phase 0.5 runs parallel to Phase 1 intel.
[ ] 24. MOBILE-FIRST: Every angle must pass the 3-second mobile phone test. Angle scoring includes Mobile Punch dimension.
[ ] 25. ABOVE-FOLD PRIORITY: Headline + subhead + hero opening get explicit extra reasoning pass. Most copy energy goes to above-the-fold elements.
[ ] 26. INTENTIONAL RESEARCH: Every VoC phrase in intel-dossier.md is tagged with the copy zone it feeds (hero/mechanism/faq/cta/testimonial). No untagged research.

Realistic Timeline

Honest estimates for a fresh build (no cached research, no existing images):

Phase Work AI time Wall-clock note
0 bash setup 30 sec
0.5 fast-images (parallel with Phase 1) 4-7 min Parallel — no wall cost
1A/1B/1C intel + VoC + vault (parallel) 8-12 min Bottleneck: real-browser competitor teardown
1D synthesis (sequential after 1A/B/C) 5-7 min Notification latency adds ~5-8 min overhead between phases
HARD STOP #1 angle approval 2-5 min user
2A 4 specialists + 4 cross-check-and-fix (parallel) 15-20 min Cross-check is now combined — no extra round trip
2B config extraction + image-prompts.txt 8-12 min Most complex agent — quote escaping pass included
HARD STOP #2 user image generation Starts from Phase 0.5 delivery; overlaps all of Phase 1/2
3 sort + overlay 1-3 min flow-slot-map.json path: <1 min
4 build 1-2 min
5 QA + deploy 2-4 min

AI-only time (excluding user gates and notification latency): ~45-65 min.
Notification latency overhead: ~20-30 min additional wall-clock across multi-phase transitions.
Wall-clock with user gates + overlapping image gen: 90-150 min.
Dominant bottleneck: Phase 1A real-browser competitor teardown (~8-12 min, cannot be parallelized further).
Biggest recoverable time: Notification latency between agent completions. If running supervised (user watching), manually advancing between phases eliminates most of this overhead.

Phase 0.5 delivers image prompts in 4-7 min so the user can start manual generation while Phase 1/2 run — this is where wall-clock savings come from, not from shortening the AI work itself.

Image output convention (Flow / Imagen): When generating with Google Flow or Imagen, save the 35 images to ~/Downloads/[PRODUCT_SLUG]-flow-images/ with a flow-slot-map.json in that folder. The slot map format is {"image-01.jpeg": 1, "image-02.jpeg": 2, ...} where the integer is the sequential slot number (1=product-01, 2=product-02, ..., 35=founder-1). Phase 3 detects this file and uses it directly — no manual renaming needed.


Resume Protocol

ls "$PROJECT_DIR/.sofa/"
# Last incomplete phase = next to run
# Never re-run a phase whose .done file already exists

Build Artifacts Reference

~/.claude/skills/sofa-v3/
  SKILL.md                    — this file
  phases/
    phase-0-fast-images.md    — fast-path image brief agent (Phase 0.5, parallel with Phase 1)
    phase-1a-intel.md         — competitor teardown agent (parallel, Step 1A)
    phase-1b-voc.md           — VoC mining agent (parallel, Step 1A)
    phase-1c-vault.md         — vault anchoring agent (parallel, Step 1A)
    phase-1d-synthesis.md     — mechanism + angles + one-belief (Step 1B)
    phase-2-council.md        — 4 specialist agent prompts
    phase-2-config.md         — config extraction + image briefs agent
    phase-3-images.md         — image sorting + overlay
    phase-4-build.md          — rsync + build + gates
    phase-5-deploy.md         — QA + Netlify deploy

Per-build ($PROJECT_DIR/):
  product-brief.txt
  image-prompts-fast.txt      (Phase 0.5 — fast path, PROVES=TBD)
  competitor-audit.md         (Phase 1A)
  intel-dossier.md            (Phase 1A)
  swipe-file.md               (Phase 1A)
  mechanism-map.md            (Phase 1B)
  angle-brainstorm.md         (Phase 1B)
  angle-scoring.md            (Phase 1B)
  avatar-pack.md              (Phase 1B)
  one-belief.md               (Phase 1B — written after user approves angle)
  halbert-hero.md             (Phase 2A)
  kennedy-body.md             (Phase 2A)
  hormozi-offer.md            (Phase 2A)
  throssell-voice.md          (Phase 2A)
  product.config              (Phase 2B)
  product.config.citations.md (Phase 2B)
  bubbles.json                (Phase 2B)
  image-prompts.txt           (Phase 2B)
  images/product/*.webp
  images/testimonials/*.webp
  images/testimonials/overlayed/*_ttbubble.webp
  images/product/overlayed/*_ttbubble.webp
  images/founder/*.webp
  product-reference/seed.webp
  index.html
  .sofa/phase-*.done