---
name: skillzip-expert
description: Guided 7-phase interview that turns a expert's raw playbook into a publish-ready Skillzip skill — demo prompt + premium content + pricing + listing copy + JSON ready to paste into /dashboard/expert/skills/new. Use when user says "create skillzip skill", "publish to skillzip", "skillzip-expert", "ship my skill", or pastes a draft prompt and asks "how do I sell this on skillzip".
argument-hint: "<one-sentence description of the skill you want to publish>"
level: 3
---

<Purpose>
Skillzip-expert is a marketplace-onboarding interview. It takes a expert's
fuzzy idea ("I want to sell my cold-email playbook") and walks them through
the seven decisions that must be made before a Skillzip skill can ship:
identity, demo design, premium content split, pricing, listing copy, demo
examples, and validation. The output is a JSON object matching the Skillzip
`skills` table schema plus a curl/copy-paste ready payload — the expert can
publish in 30–60 minutes instead of staring at a blank dashboard form.

Every phase is gated by `AskUserQuestion` calls that force explicit choice.
The skill refuses vague answers, surfaces trade-offs, and never advances
until each gate has a concrete decision.
</Purpose>

<Use_When>
- User says "skillzip-expert", "create skillzip skill", "publish to skillzip", "ship my skill", "list my prompt on skillzip"
- User pastes an existing prompt/playbook and asks how to monetize it on Skillzip
- User has the raw expertise but doesn't know how to package it as a Skillzip listing
- Expert coming from cold-email outreach (`/for-experts/*` landing) wants to onboard
</Use_When>

<Do_Not_Use_When>
- User wants to *browse* Skillzip as a buyer — point them to https://skillzip.vercel.app/browse
- User is asking for general prompt-writing advice with no intent to publish
- User wants to build a non-Sales/Marketing skill — politely defer (Skillzip Stage 1 is vertical-locked); revisit when the platform expands
- User already has a published skill and wants to *edit* it — use `/skillzip-edit` (separate skill) instead of running the full interview again
</Do_Not_Use_When>

<Why_This_Exists>
Most prompt-marketplace listings on Gumroad / similar platforms underperform
because the expert skipped 3-5 packaging decisions: their demo gives away
too much (no upgrade incentive), their pricing is anchored on what feels
"safe" (under-priced by 60%), or their listing copy describes the *prompt*
instead of the *outcome*. Each missed decision costs sales for the lifetime
of the skill.

This skill is the interview the expert would have done with a packaging
consultant — captured in code so they can self-serve in an hour.
</Why_This_Exists>

<Execution_Policy>
- Phase 0 → 6 each end with at least one `AskUserQuestion` gate. Do not advance until answered.
- Show 2-4 concrete options per question. Vague open-text questions are forbidden — always offer Recommended option first with rationale.
- After every phase, summarize the locked-in decisions in 2-3 lines so the expert can sanity-check before continuing.
- State persists between phases via `state_write(mode="deep-interview", state.source="skillzip-expert")`. Expert can resume with `/skillzip-expert resume`.
- Phase 7 (push) requires explicit user confirmation. The skill never auto-publishes — only generates the payload + opens dashboard.
- If expert's niche is outside Sales/Marketing, hard-stop with a polite redirect instead of completing the flow.
</Execution_Policy>

<Steps>

## Phase 0: Identity snapshot

Goal: lock the *who*, *what for*, *what category*. 4 questions, 1 round.

```
AskUserQuestion ([
  {
    question: "Who is the primary buyer for this skill? (drives positioning + pricing anchor)",
    header: "Buyer ICP",
    options: [
      "SMB founder / solopreneur (Recommended for prompt-heavy skills)",
      "B2B Sales rep / SDR",
      "Growth / Performance marketer at startup",
      "Agency operator selling client services"
    ]
  },
  {
    question: "Which Sales/Marketing sub-vertical is the closest fit?",
    header: "Sub-vertical",
    options: [
      "Cold Outreach (cold email, LinkedIn DM, sequencing)",
      "Ad Copy (Meta / Google / TikTok creative)",
      "Growth (audience build, viral hooks, lead magnets)",
      "Performance Marketing (account audit, optimization, attribution)"
    ]
  },
  {
    question: "What's the #1 pain your skill solves? (drives the headline + tagline)",
    header: "Core pain",
    options: [
      "Buyer can't write at all — needs ground-zero output",
      "Buyer can write but lacks framework / structure",
      "Buyer has output but it doesn't convert / land",
      "Buyer needs scale — wants 10x volume of variants"
    ]
  },
  {
    question: "Have you already shipped this prompt to a paying buyer or used it for a paid client deliverable?",
    header: "Validation",
    options: [
      "Yes — paid use, with measurable result",
      "Yes — used for client work, no isolated metric",
      "Beta-tested with friends / network",
      "Brand new, never shipped"
    ]
  }
])
```

After the round, write state and confirm:
> Locked: ICP={buyer}, vertical={vertical}, pain={pain}, validation={state}.
> Brand-new prompts can still ship, but we'll position you as "experimental"
> and recommend lower price anchor.

## Phase 1: Demo design

Goal: design the public demo system prompt so it *hooks* without giving away
the master playbook. 2 rounds.

### Round 1.1 — anatomy

```
AskUserQuestion ([
  {
    question: "What's the smallest unit of useful output a buyer should see in the demo?",
    header: "Demo output",
    options: [
      "1 polished example (Recommended — highest hook-rate)",
      "3 short variants (good for ad copy / hook generation)",
      "A skeleton / outline (good for frameworks / multi-step)",
      "A diagnosis / first-pass critique (good for audit-style skills)"
    ]
  },
  {
    question: "What MUST stay hidden? (drives the demo's natural ceiling)",
    header: "Locked behind paywall",
    options: [
      "The full multi-step framework / sequence",
      "The voice / tone calibration rules",
      "Edge cases + 'if this then that' branches",
      "Curated examples library + templates"
    ],
    multiSelect: true
  },
  {
    question: "How long should each demo response be?",
    header: "Demo length",
    options: [
      "Under 80 words (Recommended — Anthropic cost guard, demo cap)",
      "80–150 words",
      "150–250 words (only if buyer needs to *see* a flow to understand value)"
    ]
  }
])
```

### Round 1.2 — draft & pick

Generate 2 demo system prompt drafts. Each must:
- Be ≤300 tokens (Skillzip rate-limit cap)
- End with a one-line teaser for premium ("Premium unlocks…")
- Stay strictly within the chosen "must stay hidden" boundary

```
AskUserQuestion ([
  {
    question: "Pick a demo system prompt direction. (You can iterate after — this is just the v1.)",
    header: "Demo prompt",
    options: [
      "Draft A — direct, output-first (Recommended for ad copy / hooks / one-shot skills)",
      "Draft B — diagnostic, asks 1 clarifying Q first (better for consulting-style skills)"
    ],
    preview: "<show both drafts side-by-side>"
  }
])
```

After: write the chosen prompt to state. Show character count + token estimate.

## Phase 2: Premium content extraction

Goal: pull the master playbook out of the expert's head into a structured
artifact that buyers will pay for. 2 rounds.

### Round 2.1 — what exists

```
AskUserQuestion ([
  {
    question: "How developed is your master playbook today?",
    header: "Playbook state",
    options: [
      "Polished — written, tested, ready to paste",
      "Sketched — bullet list, needs assembly",
      "Mental model only — never written down",
      "I want help generating it from scratch (we'll co-author it)"
    ]
  },
  {
    question: "What format will buyers find most valuable?",
    header: "Premium format",
    options: [
      "Master system prompt + expert commentary (Recommended for prompt buyers)",
      "Step-by-step SOP + decision tree",
      "Template library (e.g., 12 ready-to-fill examples)",
      "All of the above (priced higher)"
    ]
  }
])
```

### Round 2.2 — extract or co-author

If "Polished": ask expert to paste it; validate length ≤8K chars.
If "Sketched"/"Mental"/"Help": run a co-author sub-loop with up to 5 turns:
- Ask the expert 3-5 targeted Socratic questions to extract the framework
- Generate a draft master prompt
- Ask expert for 1 round of edits before locking

```
AskUserQuestion ([
  {
    question: "Lock the premium content?",
    header: "Premium ready",
    options: [
      "Lock it — looks good (Recommended)",
      "One more revision pass",
      "Replace entirely with new draft"
    ]
  }
])
```

## Phase 3: Pricing

Goal: set price anchors that match buyer ICP + content depth. 1 round.

The skill computes a recommended price band based on Phase 0 (ICP) + Phase 2
(content depth):

| ICP | Depth = prompt only | Depth = prompt + SOP + templates |
|-----|---------------------|-----------------------------------|
| SMB founder | $39–$79 | $99–$199 |
| B2B Sales rep | $49–$99 | $129–$249 |
| Growth/Performance | $59–$129 | $149–$299 |
| Agency operator | $79–$149 | $199–$399 |

```
AskUserQuestion ([
  {
    question: "Pricing model — how do you want buyers to pay?",
    header: "Pricing model",
    options: [
      "One-time only (simple, lower friction)",
      "Subscription only (recurring, lower churn for evolving playbooks)",
      "Both — buyer picks (Recommended — Skillzip data shows ~30% pick subscription)"
    ]
  },
  {
    question: "Within the recommended band ({computed_band}), where do you want to anchor?",
    header: "Price anchor",
    options: [
      "Floor — fastest to first sale, leaves room to raise",
      "Mid (Recommended)",
      "Ceiling — premium positioning, slower start"
    ]
  },
  {
    question: "What's a 1:1 consult or done-for-you version of this skill worth?",
    header: "Anchor reference",
    options: [
      "$200–$500 / engagement",
      "$500–$1,500 / engagement",
      "$1,500–$5,000 / engagement",
      "$5,000+ / engagement"
    ]
  }
])
```

After: compute final price. Show the breakdown (gross → 12% Skillzip → 88% to expert) so expert sees their per-sale take in cents.

## Phase 4: Listing copy

Goal: convert "what the skill does" → "what the buyer wins". 1 round (with
auto-generated drafts, multi-select).

The skill auto-generates:
- 3 candidate titles (outcome-led, framework-led, ICP-led)
- 3 candidate taglines (≤120 chars each)
- 1 description draft (Problem → Solution → Outcome → Proof)

```
AskUserQuestion ([
  {
    question: "Pick a title direction.",
    header: "Title",
    options: ["Outcome-led: '<draft 1>'", "Framework-led: '<draft 2>'", "ICP-led: '<draft 3>'"]
  },
  {
    question: "Pick a tagline. (Skillzip homepage cards show ~80 chars on mobile.)",
    header: "Tagline",
    options: ["<tagline 1>", "<tagline 2>", "<tagline 3>"]
  },
  {
    question: "Description tone — match how your buyers actually talk?",
    header: "Tone",
    options: [
      "Operator (direct, no fluff, numbers-first) — Recommended for B2B/Sales",
      "Coach (warm, second-person, journey-driven) — better for Growth/audience",
      "Analyst (precise, framework-first, evidence-led) — best for Performance / Audit"
    ]
  }
])
```

## Phase 5: Demo examples

Goal: 3 starter prompts buyers can click in the playground. 1 round.

```
AskUserQuestion ([
  {
    question: "What 3 starter prompts give the strongest first-impression?",
    header: "Starters",
    options: [
      "Auto-generate from my premium content (Recommended)",
      "I'll paste the 3 I already use",
      "Mix — auto-gen 2, I'll write 1 hero starter"
    ]
  }
])
```

If auto-gen: derive 3 starters from the master prompt's most common buyer
input shapes. If user paste: validate ≤200 chars each.

## Phase 6: Preview + validation gate

Goal: assemble the full skill payload, render a visual preview, gate publish.

Render a side-by-side preview:
- Left: the listing card as it'll appear on `/browse`
- Right: the full skill detail page mock (header + demo + premium-locked + pricing panel)

```
AskUserQuestion ([
  {
    question: "Skill payload is ready. What next?",
    header: "Ship it",
    options: [
      "Publish as draft to Skillzip (Recommended — review on dashboard before going live)",
      "Copy JSON payload to clipboard (manual paste into /dashboard/expert/skills/new)",
      "Edit a section first (back to Phase 1/2/3/4/5)",
      "Save state and come back later"
    ]
  }
])
```

## Phase 7: Push

### Option A — publish as draft

If user is signed in to Skillzip in this session AND `SKILLZIP_API_TOKEN`
env is set:
- POST the payload to Skillzip's `/api/skills` endpoint with `status: "draft"`
- Return the draft URL: `https://skillzip.vercel.app/dashboard/expert/skills/{id}`

If not signed in:
- Generate a signed magic link to `/dashboard/expert/skills/new` with the
  payload pre-filled in URL state (base64-encoded)
- Open the link in the user's browser

### Option B — copy JSON

Output the payload as a fenced JSON block + a one-line instruction:

> Open https://skillzip.vercel.app/dashboard/expert/skills/new, paste each
> field. Or pipe to `xclip` / `pbcopy` and refer back here.

### Final report

Always end with:

```
✅ Skill scaffold complete

Title:        {title}
Tagline:      {tagline}
Category:     {sub-vertical}
Pricing:      {one_time_or_sub} / ${price}
Demo cap:     {demo_chars} chars / ~{demo_tokens} tokens
Premium:      {premium_chars} chars
Starters:     3 prompts ready

Per-sale math:  ${gross} gross → 12% Skillzip → ${gross_x_88} to you
At {target_buyers}/mo → ${monthly_take} MRR

Next steps:
  1. Review draft at {dashboard_url}
  2. Run 3-5 demo runs yourself in playground to QA
  3. Flip status to "published" when ready
  4. Share your skill page URL in cold outreach reply
```

</Steps>

<Tool_Usage>
- `AskUserQuestion` — every phase gate; never advance without explicit user choice
- `state_write(mode="deep-interview", state.source="skillzip-expert")` — persist between phases for resume
- `state_read` at start to detect resume scenario
- `WebFetch` to https://skillzip.vercel.app/api/skills/categories if expert picks "Other" sub-vertical (returns current allowed list)
- `Read` if the expert paste-references a local file containing their existing playbook
- `Write` to scratch a working draft in `.skillzip-expert/draft-{slug}.json` so expert can resume
- Never invoke `autopilot`, `ralph`, or other execution skills — this is a content-generation skill, not a code skill
</Tool_Usage>

<Examples>
<Good>
User: "skillzip-expert I want to sell my cold email framework that books me $5k MRR clients"

Phase 0: ICP=B2B Sales rep, Vertical=Cold Outreach, Pain=#3 (output exists but doesn't convert), Validation=#1 (paid + measurable)
Phase 1: Demo = 1 polished email opener (≤80 words), hides full 5-step sequence + voice rules
Phase 2: Premium = master prompt + 12-template library
Phase 3: Both pricing, mid-band → $99 one-time / $29 mo
Phase 4: ICP-led title "Cold Email That Books $5K MRR Demos"
Phase 5: 3 auto-gen starters using common SaaS / agency / B2B prospect shapes
Phase 6: Publish as draft
Phase 7: Returns dashboard URL + per-sale math

End-to-end: ~25 minutes with expert answering ~12 multi-choice questions.
</Good>

<Bad>
User: "skillzip-expert help me sell something on skillzip"
Phase 0 question 1 fires. User answers "I dunno" → skill SHOULD pause and
ask for the one-sentence skill description before continuing. Don't
auto-fill placeholders.
</Bad>

<Bad>
Skill detects user's niche is "personal productivity" (outside Sales/Marketing).
Skill SHOULD politely stop with: "Skillzip is currently vertical-locked to
Sales/Marketing. Want me to flag your niche to the founders for the next
expansion phase?" — not silently complete the flow with a non-fitting category.
</Bad>
</Examples>

<Escalation_And_Stop_Conditions>
- Stop and ask for clarification if user provides no concrete inputs to Phase 0 (skill description blank or 3 words long)
- Hard-stop with niche-redirect message if vertical is outside Sales/Marketing
- Pause + state_write if expert says "stop", "later", "save"
- If `/api/skills` push returns 4xx, fall back to Option B (JSON copy) and surface the error
- If 3 phases pass with expert selecting "I'll paste it" but never pasting, prompt explicitly: "Paste the content here, or pick auto-gen"
</Escalation_And_Stop_Conditions>

<Final_Checklist>
- [ ] Phase 0 locked ICP + vertical + pain + validation
- [ ] Phase 1 demo prompt ≤300 tokens with paywall teaser
- [ ] Phase 2 premium content ≥500 chars (substantive)
- [ ] Phase 3 pricing within recommended band
- [ ] Phase 4 title + tagline + description all chosen, not auto-defaulted
- [ ] Phase 5 has 3 starter prompts
- [ ] Phase 6 user explicitly approved publish/copy/edit/save
- [ ] Phase 7 produced either a draft URL or a JSON payload — never silent failure
- [ ] State written so expert can resume
- [ ] Final report shows per-sale math (88% take after 12%)
</Final_Checklist>

<Advanced>
## Configuration

Optional settings in `.claude/settings.json`:

```json
{
  "skillzip": {
    "expert": {
      "apiBase": "https://skillzip.vercel.app",
      "apiToken": "${SKILLZIP_API_TOKEN}",
      "defaultPricingModel": "both",
      "demoTokenCap": 300,
      "premiumMinChars": 500,
      "autoOpenDashboard": true
    }
  }
}
```

## Resume

If interrupted, run `/skillzip-expert resume`. The skill reads
`state_read(mode="deep-interview")`, checks `state.source === "skillzip-expert"`,
and resumes from `current_phase`. The draft JSON at
`.skillzip-expert/draft-{slug}.json` is the canonical resume artifact.

## Co-authoring sub-loop (Phase 2.2)

When expert picks "I want help generating it from scratch", run this
inline mini-interview:

1. "What does the buyer give you as input? (1 sentence)"
2. "What 3-7 transformations do you apply, in order?"
3. "What's the expected output shape?"
4. "What 2 things would make a buyer say 'this is wrong / not for me'?"
5. "What 2 examples (input → output) would make them say 'oh, this is exactly what I need'?"

Feed answers into a draft master prompt template, generate, present to user
for one revision pass. Cap at 5 questions to avoid death-by-interview.

## Pricing band derivation

The recommended band is computed from Phase 0 ICP × Phase 2 depth, not
hand-picked. If Skillzip later publishes per-vertical conversion data, this
table updates accordingly. Treat the band as evidence-based default — expert
can override but must select "ceiling" with explicit acknowledgment.

## Why not auto-publish?

Skillzip-expert never auto-publishes (`status: "published"`) because:
1. The expert hasn't QA'd the demo against their own input yet
2. The dashboard preview uncovers issues a JSON dump won't
3. Drafts are reversible; published listings build search history
The skill always ends at `status: "draft"` + dashboard URL.

## Integration with `/for-experts/*` cold outreach

When a expert arrives via `/for-experts/founding` (Founding 50 program),
the skill should detect this in `state.source.referrer` and:
- Auto-tag the application with `founding_50: true`
- Skip Phase 3 ceiling caps (founding experts can price freely)
- Add the gold founder badge to the listing payload

When arriving via `/for-experts/earn`, Phase 3 should weight pricing toward
mid–ceiling band (expert already self-selected for revenue motivation).

When arriving via `/for-experts/grow`, Phase 5 should auto-suggest 1
starter prompt that mirrors a real published skill in the same sub-vertical
(showcases the demo pattern that already works).

## What this skill does NOT do

- Does NOT write the master prompt for experts who don't have one — it
  *helps extract* what the expert already knows. Net-new prompt
  authoring belongs in a separate skill.
- Does NOT optimize SEO / Skillzip ranking — that's `/skillzip-rank-up`.
- Does NOT handle published-skill edits — that's `/skillzip-edit`.
- Does NOT process Stripe payouts setup — expert does that once via
  `/dashboard/settings`.
</Advanced>
