plugin / 2.3 / system guide
vakari plugin 2.3 · Claude Code 2026-06-01

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.

20
Skills
6
Agents
25
References
18
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 twenty 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

Twenty-five shared reference files hold the operating doctrine — confidence levels, packet shapes, artifact system, diagnostic rules, craft schema, output routing, and the per-medium video doctrine (b-roll / captions / HyperFrames). Skills consult them. 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 20 skills compose into one workflow.

The canonical chain runs through research → strategy → planning → 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:campaign
vakari:creative-strategy
Production
vakari:scripts
vakari:broll
vakari:hyperframes
vakari:captions
video production
vakari:static-ads
vakari:design
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 + campaign + 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 the approved script, zero drift). Each emits a packet + preview and gates the render.


03 · Skills

Twenty 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 — foundation or campaign-add mode. Spawns 5 specialist agents in parallel; produces research-packet, brand.json updates, and an HTML client-intelligence dashboard.

Use when
  • New client onboarding (foundation mode)
  • New campaign targeting a different market or segment (campaign-add)
  • 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 · 5 per-phase MD files · brand.json fill/augment · HTML dashboard
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 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)
Outputs
meta-strategy-packet · HTML architecture map
References
methodology · packet-contracts · artifact-system · artifact-components · creative-intelligence
/vakari:campaign copy
Strategy

Campaign launch planner — the launch container. Defines slots to be tested (format + hypothesis + production route), budget allocation, success/kill criteria. Hands off slots; doesn't fill them.

Boundary
Defines slots; doesn't fill them with concepts (that's /vakari:creative-strategy).
Inputs
research-packet · meta-strategy-packet · campaign brief · spend ceiling
Outputs
campaign-packet · HTML architecture + variants matrix · campaign folder scaffold · README initialized
References
methodology · packet-contracts · artifact-system · artifact-components · creative-intelligence
/vakari:creative-strategy copy
Strategy

Concept generator. Fills each campaign variant 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.

Boundary
Concept layer only — NOT scripts (/vakari:scripts), NOT static copy (/vakari:static-ads), NOT design execution (/vakari:design).
Hand-off rule
"Video" concept → /vakari:scripts · "static" or "carousel" → /vakari:static-ads → /vakari:design
Inputs
campaign-packet · research-packet (audience language)
Outputs
creative-strategy-packet · 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.

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) · HTML script-board with copy buttons
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. On-image text, primary text, description, CTA, format, dimensions, carousel order. Plans the copy; doesn't execute the design.

Boundary
NOT visual design (/vakari:design). NOT video (/vakari:scripts). NOT concept (/vakari:creative-strategy).
Inputs
creative-strategy-packet OR client + service + concept · brand.json · research-packet (audience language)
Outputs
static-ad-packet · 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:design copy
Production

Static ad design + production-route recommendation. Per-job tooling (Figma / AI generation / HTML render / hybrid) — owns the design spec and recommends the route, optionally executes HTML render for typographic ads. Reads the _craft bank for prior route/tool lessons before recommending.

Doctrine
Not the universal ad builder. Owns standard static design; routes weird jobs to the right tool per the per-job creative-toolkit principle.
Production route recommendations
  • Real photo + typographic overlay → Figma
  • AI-generated imagery → Banana / Seedance / GPT Image, composite via Figma or HTML
  • Typographic offer/rating/testimonial at scale → HTML render (skill can execute)
  • Photoreal product compositing → Photoshop (operator-led)
  • Client-managed templates → Canva
Inputs
static-ad-packet OR creative-strategy-packet · brand.json · client asset inventory
Outputs
design-packet · HTML design-spec board · optional rendered PNG (for HTML route)
References
methodology · packet-contracts · artifact-system · artifact-components · creative-intelligence (visual patterns) · craft-schema (+ live _craft bank — route/tool lessons)
/vakari:broll copy
Production · video

B-roll planner, router, and prompter. Plans supporting footage for a cut, picks the route, writes the prompt. NOT a blind text-to-video generator: the default AI route is image-first (Carter photo OR a generated still via Nano Banana Pro / GPT Image 2 → operator approves the still → Seedance 2.0 via Higgsfield). Emits a broll-plan + preview 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 · 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 (lower-thirds, stat callouts, proof tags, CTA bugs, kinetic type, end cards), then wraps the HeyGen HyperFrames runtime — delegating composition mechanics to its native skills, driving the native preview for the approval gate, and gating the render. 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 stop. Render runs only on approval. Local + deterministic, so normally no paid gate.
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 · 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 + the approved script and produces timed, brand-styled captions. The load-bearing rule: timing comes from the cut, words come from the approved script — Whisper supplies timings only, never the caption words. Zero paraphrase drift. Emits a caption-packet + preview by default; the final burn-in is gated.

The no-drift contract
Forced-alignment (existing <spot>/transcript.json, else a local Whisper pass on the WIP) supplies timing only. Where the transcript text disagrees with the approved words, the approved words win and the timing snaps to them.
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 · 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 · artifact-system (preview gate) · packet-contracts · craft-schema · transcribe (timing source)
/vakari:transcribe copy
Feedback

Local video transcription via yt-dlp + mlx_whisper. Accepts Instagram URLs, Meta Ad Library URLs, business names, batch instructions. Produces transcript-packet + JSON word-timings for HyperFrames caption sync.

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.

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 — and which route/tool/model fit the job. Gated on judgment at production time, not conversion. 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) · strict route (8-value enum) + open tool/model · 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
design · static-ads · creative-strategy (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. 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.
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. Produces priority-tagged actions (Immediate / This Week / Monitor). Internal tier — direct, no client softening.

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 · internal-tier HTML dashboard (funnel-leak map shows attribution confidence per stage) · optimization_log entries (when actions confirmed)
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. Three tiers — internal (sources cited), client-facing (polished), prospect-facing (one-paragraph + KPI bar). ONE headline metric discipline; named transferable pattern.

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
Headline metric rule
ONE number per case study. Strongest, defensible, concrete. Not "300% lift." Not "significantly improved."
Outputs
case-study-packet · internal HTML (default) · optional client-facing + prospect-facing HTML
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 advisor for agency operations. Modes spanning the sales cycle — outreach, blueprint framing, pre-call prep, discovery, qualification, objection handling, proposal drafting, follow-up. 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
Skill-local references hold doctrine, proof, objection patterns, offer construction, qualification signals, proposal scaffold + voice context. Plugin-level methodology + artifact-system apply.

04 · References

Twenty-five shared references hold the doctrine.

Skills stay lean by deferring shared concepts here. Updating one reference makes every consuming skill smarter without per-skill rewrites — the engine for ongoing improvement. The 11 core references are joined by 14 video-family references — a per-medium set of system / vocabulary / taste-rubric / failure-taxonomy / output-contract docs for b-roll, captions, and HyperFrames.

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 18 packet shapes: research · meta-strategy · campaign · creative-strategy · script · static-ad · design · performance (Meta + CRM full-funnel with attribution confidence, exact lead submissions, lead-path attribution) · winner · diagnosis · prospect-blueprint · case-study · ingest · transcript · video packet shapes: broll-plan · broll-packet · caption-packet · overlay-packet 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 · design · 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 · design · sell · growth-diagnostic · meta-strategy · diagnose
craft-schema.md Make-time craft capture → _craft/ bank · locked frontmatter (type · verdict · confidence · strict 8-value route enum) · human→strict route/tool/model mapping · condition-tag vocabulary · canonical_creative_id format (shared with the DB spine, so files join the DB) · asymmetric read-back algorithm craft · design · 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
broll-*.md (5) Video. broll-system (reference-image → Seedance pipeline · intake/routing · cost gate · silent-by-default · claim safety) · broll-shot-types (10-shot vocabulary) · broll-taste-rubric · broll-failure-taxonomy (labels → craft redirects) · broll-output-contract broll · creative-strategy
captions-*.md (4) Video. captions-system (caption-last doctrine · timing-from-cut / words-from-approved-script · the no-drift contract) · captions-taste-rubric · captions-failure-taxonomy · captions-output-contract (sidecar .srt/.vtt) captions · transcribe · scripts
hyperframes-*.md (5) Video. hyperframes-system (director wraps the HeyGen runtime · delegates to native skills · never edits _hyperframes/ · Pattern A/B route) · hyperframes-components · hyperframes-taste-rubric · hyperframes-failure-taxonomy · hyperframes-output-contract hyperframes · scripts

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:campaign to plan the first launch (variants matrix with slots, budget per slot, success + kill criteria, README scaffolded).
  4. Run /vakari:creative-strategy to fill each slot with a concept. Splits output: video slots route to scripts; static slots route to static-ads → design.
  5. For each video slot: /vakari:scripts in the client's voice using brand.json + winners library.
  6. For each static slot: /vakari:static-ads for copy → /vakari:design for visual spec + production-route recommendation.
  7. Production happens (HyperFrames / Figma / DaVinci / AI tools per the recommended route).
  8. 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.
  9. 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 + Meta copy).
  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 the approved script, zero drift. 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, or request a performance-packet from the external data layer (Meta + CRM downstream bundled for the period). 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. Confirm back in the diagnose loop — gets logged to optimization_log for closed-loop tracking.
  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. Three mechanics make every campaign improve every future campaign.

Winners → patterns → intelligence

Proven creative gets captured via /vakari:winners with structured evidence. 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, design) 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

campaign reads packet · slots inherit grounding

creative-strategy fills 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. design, 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, automatic)
design / 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; /vakari:reconcile-ads links the ad to its workspace creative and stamps its route. 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 by default. /vakari:broll, /vakari:captions, and /vakari:hyperframes emit a packet + a cheap preview first, surface an estimated cost, and require explicit per-run approval before any paid generation or final render. /vakari:hyperframes wraps the HeyGen runtime rather than reimplementing it — and the same preview-gate doctrine lives in one 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