plugin / 3.2 / system guide
vakari plugin 3.2 · Claude Code 2026-07-02

The Vakari Creative system,
as one plugin.

A consolidated Claude Code plugin that encodes the full Vakari workflow — research, strategy, creative, production guidance, diagnostics, reporting, case studies, sell — as skills that hand off clean packets to each other. It includes a make-time craft loop and a Meta-ID-keyed ad-lifecycle data spine tying production route to live outcome, plus a video skill family — b-roll, captions, and HyperFrames overlays — each gated preview-first, none of them silently spending or rendering.

18
Skills
6
Agents
11
References
17
Packet shapes
1
Plugin

01 · Principles

Six architectural moves the plugin is built on.

Each one is load-bearing. Together they explain why this is one plugin instead of eighteen separate skills — and why outputs feel coherent across skills you've never explicitly trained together.

01

Single plugin, namespaced

All Vakari work routes through /vakari:<skill>. No fragmented plugin maze, no name collisions, no "which version of /research is this." One pull, one install, one source of truth.

02

Packets as handoffs

Skills produce Markdown packets with named sections — not rigid JSON. Enough structure to make the next skill's job reliable; loose enough that judgment isn't squeezed out.

03

References crystallize doctrine

Eleven shared reference files hold the operating doctrine — confidence levels, packet shapes, artifact system, diagnostic rules, craft schema, output routing. The per-medium video doctrine (b-roll / captions / HyperFrames) lives inside each skill's own folder — single-consumer files stay local. Skills consult references section-scoped, so a compliant run loads under 900 lines. Updating one reference makes every consuming skill smarter without per-skill rewrites.

04

MD as carrier, HTML as deliverable

Every generating skill produces both — a text-heavy Markdown packet (the carrier) and a fit-for-purpose HTML artifact (the action surface, designed for what someone actually wants to do with it).

05

Craft learning, not scarring

A make-time craft loop records which route/tool/model fit each job and what worked or fell short — gated on judgment at production time, not on conversion. Read-back is asymmetric: misses redirect the next build immediately; wins stay advisory until proven. Lessons live in files the skills read, never hard-coded into prompts — so the system gets less bad without getting less creative.

06

Preview before spend, wrap don't rebuild

The video skills generate assets and can cost money, so they obey a preview-then-approve gate: emit the packet + a cheap preview by default, surface an estimated cost, and never run a paid generation or final render without explicit per-run approval. And /vakari:hyperframes wraps the HeyGen HyperFrames runtime — it directs the native skills and gates the render, but never reimplements the framework or edits its workspace.


02 · System map

How the 18 skills compose into one workflow.

The canonical chain runs through research → strategy → creative strategy (launch frame + concepts) → production — including the video family (b-roll, captions, HyperFrames overlays). Three loops sit around it: feedback (winners + craft), data (campaigns DB + reconciliation), artifact + sell (proof and growth). Click any skill node to jump to its detail.

Primary chain

Research to production

Research → strategy
vakari:research
vakari:meta-strategy
vakari:creative-strategy
Production
vakari:scripts
vakari:broll
vakari:hyperframes
vakari:captions
video production
vakari:static-ads
static production

Feedback loop

final render
vakari:transcribe
after a creative push
vakari:craft
when an ad wins
vakari:winners

Data loop

Meta CSV or performance-packet
vakari:ingest
link ad ↔ creative + route
vakari:reconcile-ads
vakari:diagnose
internal
vakari:report
client-facing

Artifact + sell loop

closed campaign
vakari:case-study
prospect
vakari:growth-diagnostic
used by
vakari:sell

Each handoff is a packet — a Markdown doc with named sections defined in references/packet-contracts.md. Skills can skip levels (case-study consumes research + the campaign README + winners + transcripts directly), but the chain is the default reliable route. The data loop accepts two input shapes: a Meta CSV (loaded into the campaigns DB) or a performance-packet bundling Meta-side metrics with downstream CRM funnel data (Meta rows written to the DB; full-funnel context preserved as queryable Markdown — along with exact Meta lead submissions and lead → GHL contact → opportunity attribution). /vakari:ingest stamps each ad's Meta ad_id into the DB and queues it for /vakari:reconcile-ads, which links the ad to its workspace creative and stamps its production route — so the _craft bank's route lessons join live period_metrics and route-vs-outcome becomes answerable. A video slot from /vakari:scripts flows through the video family — /vakari:broll plans supporting footage (reference-image → Seedance, gated), /vakari:hyperframes directs overlays/motion-graphics on the HeyGen runtime, and /vakari:captions adds the caption-last track (timing from the cut, words from what was actually said — a three-way reconcile of approved script × as-delivered × audio). Each emits a packet + preview and gates the render.


03 · Skills

Eighteen skills. Six layers.

Each skill stays lean by deferring shared concepts to references. Click + details on any skill to see inputs, outputs, agents, and references. Click any slash command to copy it.

/vakari:research copy
Research

Client research orchestrator. Campaign-add mode (the common path) researches only a new campaign's delta with a scoped subset of the 5 specialist agents; foundation mode runs the full 5-agent audit for a cold client. Produces research-packet + Markdown carrier brief; HTML dashboard on request or when prospect-facing; updates brand.json as a byproduct.

Use when
  • New campaign targeting a different market, segment, or angle (campaign-add — the common path)
  • New client onboarding (foundation mode — first-time cold client)
  • Periodic refresh (annual or after major market shifts)
  • Sales context — prospect intelligence ahead of a pitch
Inputs
Intake brief (local Markdown file). Minimum: business, website, industry, location, audience sketch, services, USPs.
Outputs
research-packet · per-phase MD files · brand.json fill/augment · HTML dashboard (on request / prospect-facing)
Agents (parallel)
client-auditor · competitor-auditor · audience-miner · local-market-researcher · benchmarks-researcher → synthesis-writer
References
methodology · packet-contracts · artifact-system · artifact-components
/vakari:meta-strategy copy
Strategy

Meta account architecture + operational strategy. Translates research — or, for known clients, campaigns.db history + brand kit + wiki client page via the fast path — into how the account is structured and operated. ABO equal-spend default per methodology.

Use when
  • After /vakari:research lands — before the first campaign for a new client
  • Account structure needs reset (ad-set bloat, audience overlap)
  • Major shift forces re-design (new optimization event, conversion path)
Covers
  • Account structure (campaigns, ad sets, ABO splits, naming)
  • Audience structure (per-set seed + rationale)
  • Objective + optimization event
  • Conversion path (form / LP / call / messenger)
  • Measurement plan + launch readiness checklist
Inputs
research-packet + business goal (quantified) — or the known-client fast path: campaigns.db history + brand kit + wiki client page, no fresh research-packet demanded
Outputs
meta-strategy-packet · HTML architecture map
References
methodology · packet-contracts · artifact-system · artifact-components · creative-intelligence
/vakari:creative-strategy copy
Strategy

Launch framing + concept generation. Owns the launch frame (falsifiable campaign goal, success/kill criteria, 3–6 slot band, budget allocation, timeline — written into the campaign README, not a separate artifact) AND fills each slot with a concept (angle + hook + visual + format + production route + what it tests). Consults the winners library, the _craft bank, and creative intelligence by default. Replaces the retired /vakari:campaign.

Boundary
Frame + concept layer — NOT scripts (/vakari:scripts), NOT static copy/design execution (/vakari:static-ads).
Hand-off rule
"Video" concept → /vakari:scripts · "static" or "carousel" → /vakari:static-ads (copy + design + production)
Inputs
research-packet + meta-strategy-packet (packet-driven) OR ad-hoc/concept-first — both first-class modes
Outputs
creative-strategy-packet · launch frame written into the campaign README · HTML concept board
References
methodology · packet-contracts · artifact-system · artifact-components · winners-schema (+ live bank) · craft-schema (+ live _craft bank) · creative-intelligence
/vakari:scripts copy
Production

Video ad script writer. Each script follows the Vakari 5-beat path (hook → pain → outcome → offer → CTA) in the client's voice. Reads winners + brand.json + audience language. Ships a print-ready teleprompter export; Meta launch copy is NOT here — /vakari:static-ads writes it at launch time from the as-delivered VO.

Style variations
fake-phone-call · before/after · offer-led-spokesperson · customer-testimonial · problem-agitation · custom
Inputs
creative-strategy-packet OR client + service + angle
Outputs
script-packet (per-script word count + pacing) · teleprompter-formatted section per script + print-ready teleprompter export (one page per script) · HTML script-board
References
methodology · packet-contracts · artifact-system · artifact-components · creative-intelligence (5-beat path + hook patterns) · winners library
/vakari:static-ads copy
Production

Static (and carousel) ad planning, copy, AND design. On-image text, primary text, description, CTA, format, dimensions, carousel order — then the design phase: layout, typography, color, asset list, production-route recommendation (Figma / AI gen / HTML render / hybrid, per-job, not pipeline-locked), with a campaign design-system lock created on the first static run and reused after. Also writes Meta launch copy for finished video spots at launch time from the as-delivered VO. Replaces the retired /vakari:design.

Boundary
NOT video scripts (/vakari:scripts). NOT concept (/vakari:creative-strategy). Owns copy + design + Meta launch copy — /vakari:design is absorbed here.
Production route recommendations (design phase)
  • Real photo + typographic overlay → Figma
  • AI-generated imagery → Nano Banana Pro / GPT Image 2 via Higgsfield, composite via Figma or HTML
  • Typographic offer/rating/testimonial at scale → HTML render via headless Chrome (skill executes)
  • Hybrid → per-job judgment, never pipeline-locked
Inputs
creative-strategy-packet OR ad-hoc concept · brand.json · research-packet (audience language) — or a finished video spot's as-delivered VO for launch copy
Outputs
static-ad-packet (copy + design phase) · campaign design-system lock · Meta fill-in sheet · rendered PNG (HTML route) · HTML ad-board (per-slot cards with all copy elements)
References
methodology · packet-contracts · artifact-system · artifact-components · creative-intelligence (CTA + offer patterns) · winners library · craft-schema (+ live _craft bank)
/vakari:broll copy
Production · video

B-roll planner, router, and prompter. Produces one broll.md — the pre-spend plan first, then the generation record appended after approved generation — per-clip objective, shot type, route, prompts, provenance. NOT a blind text-to-video generator: the default AI route is reference-image-first (Carter photo OR a generated still → operator approves the still → Seedance via Higgsfield). Planning + dry-run by default; paid generation is gated behind explicit per-run approval with a surfaced cost estimate.

Boundary
NOT overlays/motion-graphics (/vakari:hyperframes). NOT captions (/vakari:captions). NOT the script (/vakari:scripts). NOT blind text-to-video.
The cost gate (D-cost)
No paid generation without explicit per-run approval + a surfaced estimate. Default run = broll-plan + contact-sheet preview, then stop.
Shot vocabulary
environment-establishing · process-closeup · product-beauty · problem-state · result-state · trust-signal · texture-abstract · transition-bridge · proof-visual · cta-support
Discipline
Silent by default (strip AI audio); never fabricate proof; provenance + approval state recorded per clip; fallback-routing stops spend after repeated failure.
Inputs
creative-strategy-packet / script-packet OR shot list + edit notes · reference assets · brand.json
Outputs
broll-plan (pre-spend) · broll-packet (after approval) · HTML contact sheet (first/mid/last frames)
References
broll-system · broll-shot-types · broll-taste-rubric · broll-failure-taxonomy · broll-output-contract (skill-local) · artifact-system (preview gate) · packet-contracts · craft-schema (+ live _craft bank) · winners-schema
/vakari:hyperframes copy
Production · video

Overlay / motion-graphics director. Plans the overlay-packet (lower-thirds, stat callouts, proof tags, CTA bugs, kinetic type, end cards), ports proven prior-campaign overlay comps before authoring fresh, then wraps the HeyGen HyperFrames runtime — delegating composition mechanics to its native skills and driving the native preview for creative approval. The render itself is local + free, no spend gate. Does NOT reimplement HyperFrames; does NOT edit the framework workspace.

Wraps, doesn't rebuild (D2)
Delegates the HTML/GSAP/data-* composition to the native /hyperframes, /hyperframes-cli, /hyperframes-media skills. If those are absent, it surfaces the install step and stops — never reimplements.
Boundary
NOT captions (/vakari:captions). NOT b-roll (/vakari:broll). NOT hand-authoring compositions.
Render route
Pattern A → MP4 (all-in HyperFrames, default) · Pattern B → transparent overlay MOV → DaVinci (when audio / brand-quality / edit needs demand it). Exact render flags delegated to /hyperframes-cli.
Gate
Default = overlay-packet + native preview, then creative approval. The render is local + free — no spend gate. Ports proven prior-campaign comps before authoring fresh.
Inputs
the cut / spot context · overlay needs · <spot>/transcript.json (beat timing) · brand.json (ingredient, not prison)
Outputs
overlay-packet · native preview / contact-sheet · composition HTML (built by native skill) · render (route container) on approval
References
hyperframes-system · hyperframes-components · hyperframes-taste-rubric · hyperframes-failure-taxonomy · hyperframes-output-contract (skill-local) · artifact-system (preview gate) · packet-contracts · craft-schema (+ live _craft bank) · native HeyGen /hyperframes skills
/vakari:captions copy
Production · video

Caption-last finishing pass. Takes a picture-locked WIP MP4 + script-as-delivered.md + the approved script and produces timed, brand-styled captions. The load-bearing rule: timing comes from the cut, words come from what was actually said — resolved by a three-way reconcile (approved script × as-delivered × audio). Whisper is authoritative for timing only. Emits a caption-packet + preview by default; the final burn-in/alpha render follows operator approval.

The reconcile contract
Forced-alignment (existing <spot>/transcript.json, else a local Whisper pass on the WIP) supplies timing only. Words resolve by the three-way reconcile — approved script × as-delivered × audio; where sources disagree, what was actually said wins and the timing snaps to it.
Boundary
NOT overlays/motion-graphics (/vakari:hyperframes). NOT b-roll (/vakari:broll). NOT authoring a script (/vakari:scripts). NOT research/winners transcription (/vakari:transcribe).
Discipline
Safe zones (clear of faces / product / UI / chrome); readable phrase chunks; brand caption style as ingredient; editable before final render.
Inputs
WIP/final-cut MP4 · script-as-delivered.md · approved script (<spot>/_docs/script.md) · transcript.json if present · brand.json (caption style)
Outputs
caption-packet · caption-preview (text over a frame + timing window) · sidecar .srt/.vtt on approval
References
captions-system · captions-taste-rubric · captions-failure-taxonomy · captions-output-contract (skill-local) · artifact-system (preview gate) · packet-contracts · craft-schema · transcribe (timing source)
/vakari:transcribe copy
Feedback

Local video transcription via mlx_whisper. Primary path — a local final render in a Vakari spot → script-as-delivered.md + transcript.json (word timings) + an as-delivered-vs-scripted diff. Other modes on request: URL download via yt-dlp (Instagram / Meta Ad Library), business-name Ad Library search, batch. Preserves transcripts; cleans up downloaded media.

Use when
  • Capturing as-delivered script for a Vakari spot (cut drifted from script)
  • Transcribing a competitor ad for research / pattern extraction
  • Batch transcribing a creator's reposts
Tooling
yt-dlp (download) · mlx_whisper (Apple Silicon, ~5-8× faster than CPU whisper)
Save destinations
  • Spot context → <spot>/_docs/script-as-delivered.md + <spot>/transcript.json
  • Wiki capture (default for non-spot) → ~/wikis/vakari/raw/notes/
  • Winners handoff → /vakari:winners
Outputs
transcript-packet (cleaned MD + JSON timings + as-delivered-vs-scripted diff)
/vakari:winners copy
Feedback

7-category winner capture. Stores proven creative — video scripts, static ads, prompts, offers, visual hooks, campaign structures, downstream-quality observations — with templatized versions for cross-client reuse. Reconciles headline evidence against campaigns.db lifetime data at capture and cite time; accepts pre-filled data-triggered handoffs from /vakari:ingest and /vakari:diagnose.

What counts as a winner
An element with downstream evidence (lead quality, close rate) — not just CPL/CTR alone.
7 categories
video-script · static-ad · prompt · offer · visual-hook · campaign-structure · downstream-quality
File location
_winners/<vertical>/<category>/<slug>.md
Templatization
Client-specifics get bracket placeholders ([COMPANY], [CITY], [SPEC], etc.) so future skills can fill the template for new clients in the same vertical.
Promotion path
3+ winners with the same underlying mechanism → pattern crystallizes in creative-intelligence.md via wiki ingest.
/vakari:craft copy
Feedback

Make-time craft capture. Run after producing a creative element (static or video) to record what worked or fell short per production stage — descriptive route/tool/model naming + tagged conditions. Gated on judgment at production time, not conversion. Feeds semantic read-back in static-ads + creative-strategy. Writes _craft/ files only (no DB). "Less bad, not less creative."

Pipeline walked
outline → prompt → generation → technique → decisions → quality (skip stages with no signal)
Per entry
type · verdict (worked / fell-short / mixed) · descriptive route + open tool/model naming (semantic read-back — matched on meaning, not a locked enum) · condition tags · confidence (never prospect-facing) · linked_creatives identity
Asymmetric read-back
Misses produce an actionable Redirect immediately (a positive workflow change, never a "don't do this" prompt line). Wins stay advisory until working-doctrine or promoted. Multi-entry per run — one ad fans across several decisions.
Boundary
NOT script copy / hook / voice quality (that's /vakari:scripts + video-script winners). NOT conversion-proven wins (/vakari:winners). Reading the bank needs no skill — production skills read it directly.
Read back by
static-ads · creative-strategy (semantically, before generating) · case-study (post-mortem)
References
craft-schema (schema · route mapping · condition vocab · read-back) · output-paths · methodology · creative-intelligence · winners-schema (distinct sibling)
/vakari:ingest copy
Data

Two modes — Meta Ads-Manager CSV → campaigns DB (Mode A), or C2 performance-packet (Meta + CRM full-funnel together) → campaigns DB (Meta rows) + preserved as queryable Markdown, plus exact Meta lead submissions and lead-path attribution (Mode B). Auto-detects mode. Idempotent. Auto-populates optimization_log from status/budget diffs between ingests — no interactive prompt. Stamps each ad's Meta ad_id onto the lifecycle spine and queues new ads for /vakari:reconcile-ads — never blocks on identity. Doesn't make recommendations — emits an ingest log + recommended-next-skill pointer.

Mode A — Meta Ads-Manager CSV
Parses Meta Ads Manager export · maps columns · dedupes on (entity, date) · writes to period_metrics at the ads_manager_sliced grain (demographic age/gender slices) · prefers an external ingest script, falls back to inline SQL.
Mode B — C2 performance-packet
Validates packet shape · writes Meta-side metrics to the DB (packet_lifetime_all_up grain) where entity IDs + dates fit · preserves the GHL/full-funnel packet at the canonical drop location as queryable Markdown · loads exact lead submissions (meta_lead_submissions) + lead-path attribution (lead_paths) + per-asset-element sidecars. Accepts C2's title-cased all-time CSV and the …_asset-insights sidecar filenames.
Identity + lifecycle
Stamps each ad's Meta ad_id onto the DB lifecycle spine; new or changed ads are queued pending for /vakari:reconcile-ads. Ingest never blocks on identity — reconciliation is a separate, interactive step.
Cadence — the loop runs on a clock
A weekly launchd Meta pull lands fresh data automatically; a Tuesday freshness checkpoint alerts if the DB goes >9 days stale. optimization_log is auto-populated from status/budget diffs between ingests — the closed loop no longer depends on remembering to confirm.
Two grains, freshness-aware
period_metrics holds both ads_manager_sliced demographic rows and packet_lifetime_all_up packet-lifetime rows. Reads pick between them via queries.select_grain so a stale demographic export never shadows a fresher all-up packet; a documented retire_sliced_for_client path drops stale slices once all-up is authoritative.
Lead-path attribution
Each lead is matched to a GHL contact + opportunity with a typed confidence: exact_id_match · exact_contact_match (same phone OR email + a compatible name, high-confidence) · strong_inferred · weak_inferred · unmatched. A value_tier guard never promotes pipeline/opportunity value to booked/won/revenue without explicit evidence.
Form data
Four states, packet-scoped: no data · metadata-only · exact submissions loaded · aggregates derivable — with submissions-by-form queryable. Missing ad-set settings is logged as a settings-freshness caveat, not a failure.
Use when
  • Fresh Meta export needs to land before /vakari:diagnose or /vakari:report
  • External pipeline returns a performance-packet for a period
  • Backfilling historical performance for a client
  • One-off correction for a previous import
Outputs
ingest-log · campaigns DB rows added/updated · (Mode B) preserved performance-packet at canonical path + loaded lead submissions / lead-path attribution / per-asset sidecars · recommended-next-skill pointer
Boundary
No interpretation — diagnose, report, winners, and case-study own that. No live Meta or CRM API calls — the plugin reads packets/files only.
References
data-paths · packet-contracts
/vakari:reconcile-ads copy
Data

The identity bridge. Resolves the pending reconciliations /vakari:ingest queued — links each live Meta ad to its workspace creative (canonical_creative_id) and stamps its production route onto the campaigns-DB lifecycle spine. Batch-confirms confident matches; handles ambiguous ones one-by-one; never auto-merges.

Why it exists
Ad names drift; meta_ad_id is the stable key. Closing the bridge is what lets the _craft route lessons join live period_metrics — route-vs-outcome.
Matching
Confident = normalized name equals a creative's slug, OR a single ad_aliases hit (auto-suggested, batch-confirmed). Ambiguous = fuzzy / multiple candidates → resolved one-by-one or marked ignored.
Route pre-fill
Reads the _craft bank for the matched creative and pre-fills route (route_source: craft vs manual). Conflicting craft routes are never auto-filled — it asks.
Authority
Confirmed / ignored rows aren't re-surfaced unless reopened. Re-runs refresh route from _craft only where route_source='craft' — never overwrites a manual route.
Boundary
The only interactive data step. /vakari:ingest (never blocks) and /vakari:craft never touch reconciliation.
References
data-paths (DB lifecycle spine) · craft-schema (canonical-id + route enum) · db-lifecycle-spine spec
/vakari:diagnose copy
Data

Live-campaign triage. Reads the performance-packet (Meta + CRM together) where available, plus the campaigns DB. Applies kill rules / troubleshooting patterns / fatigue thresholds / scaling triggers. Separates cheap leads from leads that actually progress, weighted by attribution confidence. Reads optimization_log (auto-populated at ingest) for the recently-optimized rule. Produces priority-tagged actions (Immediate / This Week / Monitor). Internal tier — direct, no client softening; Markdown carrier by default, HTML on request.

Use when
  • "Diagnose this," "what should I do with this campaign," "CPL is too high"
  • After /vakari:ingest lands fresh data
  • Before a creative refresh decision — confirm the fatigue signal
Distinct from
/vakari:report (recurring client artifact) and /vakari:growth-diagnostic (prospect blueprint, not live)
Cross-reference discipline
When packet has downstream data: separate cheap-but-junk leads (low CPL, never progress past first contact) from expensive-but-real leads (higher CPL, reach booked-walkthrough or beyond). Attribution confidence weighting: exact matches reliable, strong-inferred usable with caveats, weak-inferred shouldn't drive kill/scale decisions alone.
Rule citations
Every flagged issue cites the rule from diagnostic-rules.md
Outputs
diagnosis-packet (Markdown carrier default; internal-tier HTML on request — funnel-leak map shows attribution confidence per stage). Reads optimization_log — auto-populated at ingest, not written interactively here.
References
diagnostic-rules · data-paths · methodology · packet-contracts · artifact-system · artifact-components · creative-intelligence
/vakari:report copy
Data

Recurring client-facing performance report. Reads the performance-packet (Meta + CRM together) where available for full-funnel framing — lead quality and pipeline movement alongside the headline metrics, not just CPL. Client-facing tier — polished, narrative, no internal jargon.

Use when
  • End of period (monthly default)
  • Mid-period status update on request
  • "Final" report when an engagement closes (expanded sections)
Full-funnel framing rule
When packet has downstream data, report frames results as "spend produced X leads at $Y cost per lead — and of those leads, Z% progressed past first contact, W% booked walkthroughs" — not just "$Y cost per lead, here's the trend chart." Lead quality and pipeline movement are what clients actually care about.
Tier discipline
"Cost per lead" not "CPL" in body text. Attribution-confidence detail stays internal — client tier uses readable language ("of leads we tracked through to a sales conversation, X% booked"). Lead with good news. Specific numbers, not "significantly improved."
Outputs
report-packet · client-facing HTML artifact (includes pipeline-progression visual when packet has downstream data) · reports table row in DB
References
data-paths · artifact-system · artifact-components · diagnostic-rules (for recommendations) · methodology · packet-contracts
/vakari:growth-diagnostic copy
Artifact

Prospect Blueprint diagnostic. 6 weighted pillars (acquisition, conversion, lead handoff, sales process, measurement integrity, unit economics). Scorecard + funnel leak map + top findings + quick wins + 30-day roadmap. Engine for the paid Blueprint deliverable.

6 pillars (weighted)
  • Acquisition (20%) — are the ads earning attention
  • Conversion (15%) — does attention become a lead
  • Lead handoff (25%) — the Vakari moat
  • Sales process (15%) — does qualified become closed
  • Measurement integrity (10%) — pixel + CAPI + attribution
  • Unit economics (15%) — does the math pay back
Tier
Prospect-facing artifact default (honest observations, polished framing). Optional internal-tier version for the operator.
Outputs
prospect-blueprint-packet · prospect-facing HTML · optional internal HTML
References
methodology · packet-contracts · artifact-system · artifact-components · diagnostic-rules · creative-intelligence
/vakari:case-study copy
Artifact

Durable proof / narrative artifact from a closed campaign — or, in backfill mode, rebuilt retroactively from campaigns.db + results + captured winners when artifacts predate the packet discipline. Three tiers — internal (sources cited), client-facing (polished), prospect-facing (one-paragraph + KPI bar, reconciled campaigns.db figures; familial engagements disclose the relationship). ONE headline metric discipline; named transferable pattern; publishes shareable tiers to the vault on request.

Distinct from /vakari:report
Report = recurring status. Case study = durable proof / narrative / sales asset.
When to write
  • Campaign closed AND produced clear proof worth carrying forward
  • Mid-flight pivot produced an instructive lesson
  • A pattern emerged that should anchor future sales
  • Backfill — a pre-packet-era campaign deserves a retroactive proof artifact
Headline metric rule
ONE number per case study. Strongest, defensible, concrete. Not "300% lift." Not "significantly improved."
Outputs
case-study-packet · internal (default) · optional client-facing + prospect-facing tiers · vault publish (share.vakaricreative.com) on request
References
case-study-schema · artifact-system · artifact-components · methodology · packet-contracts · craft-schema (reads _craft at post-mortem)
/vakari:sell copy
Artifact

Founder-led sales — a lazy-loading router across 8 modes spanning the sales cycle: outreach, Blueprint framing, pre-call prep, discovery, qualification, objection handling, proposal drafting, follow-up. Detects the mode and loads ONLY that mode's doctrine (~400 lines a run, down from 1,799). Written outputs save to the workspace _sell/ pipeline (per-prospect files + pipeline.md board). Composes with public sales frameworks for depth on hard prospects.

Modes
  • OUTREACH — first-touch DM/email options
  • BLUEPRINT — paid diagnostic framing for prospects
  • PRE-CALL — prospect summary + hypotheses + diagnostic questions
  • DISCOVERY — structured call shape (SPIN-style)
  • QUALIFICATION — fit verdict + unit economics math
  • OBJECTION — structured response per named objection
  • PROPOSAL — structured proposal outline
  • FOLLOW-UP — staged follow-up sequence
Composes with public skills
100m-offers · 100m-leads · mom-test · spin-selling · storybrand · obviously-awesome · monetizing-innovation · diagnose · thinking-skills · stratarts · brand-toolkit
Scaffold-for-discovery rule
Every output appends "Assumptions made" + "Please validate before using externally" — the skill gets sharper as real-call feedback flows back into its references.
Reference structure
A ~132-line router; each mode's doctrine lives in skill-local references/modes/ and loads only when that mode fires. Proof, objection patterns, offer construction, qualification signals, proposal scaffold + voice context stay skill-local. Plugin-level methodology + artifact-system apply.

04 · References

Eleven shared references hold the doctrine.

Skills stay lean by deferring shared concepts here — and references are section-scoped, so a compliant run loads only what it cites (under 900 lines, down from 1,700–2,200). Updating one reference makes every consuming skill smarter without per-skill rewrites — the engine for ongoing improvement. The 14 single-consumer video-family references (system / vocabulary / taste-rubric / failure-taxonomy / output-contract per medium) moved into their skills' own folders — b-roll, captions, and HyperFrames doctrine now travels with its skill.

ReferenceWhat it ownsConsumed by
methodology.md Operating doctrine: account-structure defaults (ABO equal-spend) · four-level confidence scale · brand-as-reference framing · lead-conversion moat every skill
artifact-system.md MD-as-carrier / HTML-as-deliverable doctrine · use-first design · 3 tiers (internal/client/prospect) · rejection of default shapes every generating skill
artifact-components.md Component vocabulary: KPI cards · scorecards · funnel leak maps · campaign architecture maps · script cards · hook tables · creative test matrices · persona cards · competitor blocks · prompt blocks · source drawers · action cards · tier markers · video-family components (storyboard/timeline · caption-preview · contact sheet · render-review) · the preview-then-approve gate lives in artifact-system.md every HTML-rendering skill
packet-contracts.md 17 packet shapes: research · meta-strategy · creative-strategy · script · static-ad · performance (Meta + CRM full-funnel with attribution confidence, exact lead submissions, lead-path attribution) · winner · diagnosis · report · prospect-blueprint · case-study · ingest · transcript · video packet shapes: broll-plan · broll-packet · caption-packet · overlay-packet — campaign + design packets absorbed into creative-strategy + static-ad every skill
winners-schema.md 7-category winner taxonomy · per-type required content · file location convention · templatization rules · promotion path winners · scripts · static-ads · creative-strategy · case-study · sell · growth-diagnostic
creative-intelligence.md Crystallized patterns from validated winners — hook patterns · offer patterns · visual patterns · campaign-structure patterns · downstream-quality patterns · format patterns · script structure patterns · vertical notes scripts · static-ads · creative-strategy · sell · growth-diagnostic · meta-strategy · diagnose
craft-schema.md Make-time craft capture → _craft/ bank · locked frontmatter (type · verdict · confidence) · descriptive route + open tool/model naming (semantic read-back — matched on meaning, not a locked enum) · condition-tag vocabulary · canonical_creative_id format (shared with the DB spine, so files join the DB) · asymmetric read-back algorithm craft · static-ads · creative-strategy · case-study
case-study-schema.md Three tier shapes · ONE-headline-metric discipline · pattern naming · sources discipline · file naming case-study · sell
data-paths.md Canonical paths to the campaigns DB + scripts · the tables clients · campaigns · ad_sets · ads (the Meta-ID-keyed ad lifecycle spine: meta_ad_id · canonical_creative_id · route · reconcile_status · launched/retired) · period_metrics at two grains (ads_manager_sliced demographic slices + packet_lifetime_all_up packet-lifetime rows, chosen freshness-aware via queries.select_grain; retire_sliced_for_client maintenance path) · asset_metrics · adset_settings_snapshot · meta_lead_submissions (exact Meta Page-token submissions) · lead_paths (lead → GHL contact → opportunity attribution, typed match confidence + value_tier guard) · optimization_log · ad_aliases · performance-packet drop + preservation · idiomatic queries ingest · reconcile-ads · diagnose · report
output-paths.md Canonical output routing — every skill writes to _docs/<skill>/<YYYY-MM-DD>/<carrier>.md · the _craft/ bank location · uniform client + campaign naming every generating skill
diagnostic-rules.md Kill rules (hard + soft) · troubleshooting pattern matching · frequency / fatigue thresholds · scaling rules · don't-recommend-changes rules · common-mistakes watchlist diagnose · report

05 · Workflows

Common end-to-end paths.

These are the canonical compositions. Skip-level invocations are fine (case-study can consume research + winners directly), but these are the reliable default chains.

New client onboarding

When: a new client signs up. Goal: get from intake brief to a launched campaign with a documented creative foundation.

  1. Run /vakari:research in foundation mode against the intake brief. Spawns 5 specialist agents in parallel; lands the research-packet + brand.json baseline.
  2. Run /vakari:meta-strategy to design the account architecture (campaigns, ad sets, audience structure, budget split, conversion path, measurement plan).
  3. Run /vakari:creative-strategy — its opening launch frame sets the falsifiable campaign goal, success + kill criteria, 3–6 slot band, and budget allocation (written into the campaign README, not a separate artifact), then fills each slot with a concept. Video slots route to scripts; static slots route to static-ads.
  4. For each video slot: /vakari:scripts in the client's voice using brand.json + winners library.
  5. For each static slot: /vakari:static-ads — copy, then the design phase (layout, typography, color, production-route recommendation; campaign design-system lock created on the first static run and reused after).
  6. Production happens (HyperFrames / Figma / DaVinci / AI tools per the recommended route).
  7. After the creative push, run /vakari:craft to log which route/tool/model fit and what worked or fell short — so the next build for this vertical starts closer to one-shot. Usually several entries per run, all stamped with the creative's identity.
  8. Launch. Capture as-delivered transcripts via /vakari:transcribe for any final render that drifted from script.

Video spot — script to finished cut

When: a video slot needs producing end-to-end. Goal: a finished cut with supporting footage, overlays, and captions — each step gated, nothing spent or rendered silently.

  1. Start from the /vakari:scripts output (the approved spoken track + print-ready teleprompter export; Meta launch copy comes later — /vakari:static-ads writes it at launch time from the as-delivered VO).
  2. Run /vakari:broll to plan supporting footage. It emits a broll-plan + contact-sheet preview and stops — review it, then approve the (cost-estimated) generation. The default AI route is image-first: approve the reference still before any Seedance video spend.
  3. Cut the spot (DaVinci or all-in HyperFrames per the production pattern). Run /vakari:hyperframes to direct overlays / motion-graphics — it plans the overlay-packet, drives the native HyperFrames preview, and gates the render (Pattern A MP4 or Pattern B transparent overlay MOV → DaVinci).
  4. On the picture-locked cut, run /vakari:captions for the caption-last pass — timing from the cut, words from what was actually said (three-way reconcile: approved script × as-delivered × audio). Review the caption-preview, then produce the sidecar / burn-in.
  5. After the push, run /vakari:craft to log what route/tool/model fit and what fell short (overlay-render / video-element entries) — so the next video spot starts sharper.
  6. Capture the as-delivered transcript via /vakari:transcribe; if the spot proves out downstream, capture it with /vakari:winners.

Live campaign mid-flight

When: a campaign is running. Goal: surface what to do this week + capture what's working.

  1. Export Meta CSV, request a performance-packet from the external data layer (Meta + CRM downstream bundled for the period), or let the weekly launchd Meta pull land it automatically — a Tuesday freshness checkpoint alerts if the DB goes >9 days stale. Run /vakari:ingest — Meta rows land in the campaigns DB (each stamped with its Meta ad_id); the packet (when supplied) is preserved as the queryable artifact for downstream context.
  2. If ingest reports pending reconciliations, run /vakari:reconcile-ads — batch-confirm the confident name matches, resolve any ambiguous ones, and stamp each ad's production route. Route-vs-outcome is now queryable for those ads.
  3. Run /vakari:diagnose for internal triage — kill rules, troubleshooting patterns, frequency/fatigue, scaling. When the packet is available, the diagnosis separates cheap-but-junk leads from leads-that-actually-progress (weighted by attribution confidence). Produces priority-tagged action list.
  4. Execute the Immediate actions in Ads Manager. The next /vakari:ingest auto-populates optimization_log from the status/budget diffs — closed-loop tracking with no manual confirmation step.
  5. If a creative element is clearly winning with downstream evidence, run /vakari:winners to capture it (templatized for cross-client reuse).
  6. End of period: run /vakari:report for the client-facing performance update — full-funnel framing (lead quality + pipeline movement) when the packet has the downstream data.

Closed campaign worth crystallizing

When: a campaign closes with proof worth carrying forward. Goal: durable proof artifact + named transferable pattern.

  1. Fill the campaign README's closure section (final spend, leads, CPL, what worked, what didn't, carry-forward).
  2. Confirm winners from the campaign are captured via /vakari:winners (one entry per proven element).
  3. Confirm transcripts for winning ads are saved via /vakari:transcribe if not already.
  4. Run /vakari:case-study with tier(s) specified (internal default; client-facing and prospect-facing on request).
  5. If the case study surfaces a transferable pattern that holds across 3+ campaigns, flag for promotion to creative-intelligence.md in the next wiki ingest.

Prospect Blueprint diagnostic

When: a prospect signs up for the paid Blueprint diagnostic (or a new client needs a baseline assessment).

  1. Collect observable prospect data (site audit, social presence, Meta Ad Library scrape, discovery numbers, CRM access if available).
  2. Optionally run /vakari:research if deep prospect context is warranted (rare — sell modes usually use lighter pre-call sweep).
  3. Run /vakari:growth-diagnostic — produces 6-pillar scorecard, funnel leak map, findings, quick wins, 30-day roadmap. Prospect-facing tier default.
  4. Use /vakari:sell Blueprint mode to wrap the technical diagnostic in sales framing — credit rule, DIY-vs-DFY positioning, paid-ads readiness verdict.
  5. If the prospect converts: chain into the new-client-onboarding workflow.

Sales conversation

When: any sales interaction — outreach, pre-call prep, discovery, qualification, objection handling, proposal, follow-up.

  1. Pick the matching /vakari:sell mode (8 to choose from). Each mode produces the right-shaped output for that conversation stage.
  2. For OUTREACH and DISCOVERY, compose with public skills (100m-leads, spin-selling, mom-test) for depth.
  3. For PROPOSAL, the skill renders the 11-section structured outline + optional HTML artifact (client-facing tier).
  4. Every output appends "Assumptions made" + "Please validate before using externally" — flag what to verify before sending.
  5. When real-call feedback comes back, drop the verified version into the relevant reference's <!-- ADD: --> slot. The skill gets sharper with each completed conversation.

06 · Improvement

How the system gets better over time.

The architecture isn't just for organization — it's for compounding. Six mechanics make every campaign improve every future campaign — and as of 3.0 the loops run on a clock, not on memory.

Winners → patterns → intelligence

Proven creative gets captured via /vakari:winners with structured evidence — and capture is now data-triggered: ingest and diagnose hand off pre-filled candidates instead of waiting on memory, and headline numbers are refreshed against campaigns.db lifetime data at capture and cite time. When 3+ winners share an underlying mechanism, the pattern crystallizes in creative-intelligence.md through wiki ingest. All consuming skills (scripts, static-ads, creative-strategy) immediately reference the new pattern on next invocation.

single winner · 1 campaign
↓ (3+ confirmations)
crystallized pattern · creative-intelligence
↓ (automatic)
N skills get smarter

Packet contracts force discipline

Every skill consumes and produces packets with named sections. The contract forces skills to surface what they need rather than guess; it forces upstream skills to deliver substantive output rather than narrate. Brittle conversations become reliable handoffs that survive across sessions and across machines.

research → research-packet

meta-strategy reads packet · cites gaps

creative-strategy frames the launch · slots inherit grounding

concepts fill the slots · contract holds

One reference update → N skills sharper

When the diagnostic rules need a new kill threshold, edit diagnostic-rules.md once. /vakari:diagnose and /vakari:report both pick it up immediately. When a new artifact component earns its place, add to artifact-components.md — every HTML-producing skill has the new vocabulary. No per-skill rewrites.

edit one reference

every consuming skill picks it up
on next invocation
everywhere the plugin is installed

Craft capture → fewer regenerations

Every creative push can leave a make-time craft trail via /vakari:craft — which route/tool/model fit, what worked, what to redirect. Naming is descriptive, and read-back is semantic — consuming skills match on meaning, not a locked enum. static-ads and creative-strategy read it back before generating, so each build starts closer to one-shot. Read-back is asymmetric and lives in files — the system gets less bad without converging on one look.

make a creative · capture craft

route/tool/model + lessons → _craft bank
↓ (next build, semantic read-back)
static-ads / creative-strategy start sharper

Route meets outcome

The campaigns DB became a Meta-ID-keyed lifecycle spine — every ad tracked conception → death. /vakari:ingest stamps the ad_id and auto-populates optimization_log from status/budget diffs; /vakari:reconcile-ads links the ad to its workspace creative and stamps its route. A weekly launchd Meta pull plus a Tuesday freshness checkpoint (alerts past 9 days stale) keep the spine current without anyone remembering to. Because _craft and the DB share the canonical_creative_id, a route hypothesis ("Figma overlay beat AI-gen for this offer") can finally be checked against live period_metrics.

_craft route lesson (files)
↕ join on canonical_creative_id / ad_id
ads lifecycle + period_metrics (DB)

route-vs-outcome, answerable

Generation gated, not yolo'd

The video family can spend money and render assets — so it's built to be safe where money moves. /vakari:broll gates paid generation behind explicit per-run approval with a surfaced cost estimate; /vakari:captions gates the final burn-in behind the caption-preview. /vakari:hyperframes wraps the HeyGen runtime rather than reimplementing it, and its local render is free and ungated — approval there is creative, not financial. The preview-gate doctrine lives in one shared reference, so a fourth video skill would inherit it for free.

video skill invoked

packet + preview + cost estimate
↓ (explicit approval only)
paid generation / final render