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.
Resources
29Install
npx skillscat add blinds123/auralo-base-template Install via the SkillsCat registry.
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 inproduct-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-fastsuffix 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 Agent →
competitor-audit.md— real browser competitor teardown, verbatim copy extraction, REJECTED vocabulary list. Prompt:~/.claude/skills/sofa-v3/phases/phase-1a-intel.md - VoC Agent →
intel-dossier.md— TikTok comment mining + Reddit/Amazon verbatim buyer language (≥30 phrases). Prompt:~/.claude/skills/sofa-v3/phases/phase-1b-voc.md - Vault Agent →
swipe-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 + whitespaceangle-brainstorm.md— 10-12 angles, each with Evaldo One Belief sentenceangle-scoring.md— all angles scored + top 3 with One Belief sentencesavatar-pack.md— buyer psychology, V-I-E objections, testimonial seedsone-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 agent →
halbert-hero.md— hero section with ENGAGE framework (Exploit/Narrate/Give/Attach/Guarantee/Embed) - Kennedy agent →
kennedy-body.md— mechanism + comparison + 3 Secrets (Vehicle/Internal/External) + FIBS feature blocks + FAQ (5 questions) - Hormozi agent →
hormozi-offer.md— offer stack + bundle + guarantee + CTA - Throssell agent →
throssell-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 agent →
phase-2-config.md— fills ALL ~400 variables inproduct.config+bubbles.json. Writesphase-2b-config.done. - Images agent →
phase-2b-images.md— writesimage-prompts.txt(35 briefs, PROVES fields populated). Writesphase-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.jsonIf 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:
rsync -a --exclude='product.config' --exclude='images/' --exclude='index.html' ~/Desktop/anchor-template/ "$PROJECT_DIR/"- Verify pricing lock in product.config
cd "$PROJECT_DIR" && bash ./kangaroo-build.sh 2>&1 | tee build-output.log- Validate: index.html exists + >50KB + zero
{{placeholders}} 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:
bash ~/.claude/skills/real-browser/scripts/ensure-chrome-session.sh 9333 my-browserthen CDP verifynetlify 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 $19 / Bundle $59 / Order Bump $10 — never change
[ ] 4. DOLLAR SIGNS in product.config use $ 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 existsBuild 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