Source profileQuality 86/100

MoizIbnYousaf/marketing-cli/skills/mktg-setup/SKILL.md

mktg-setup

First-run conversational setup wizard for marketing-cli. Use when /cmo detects no populated brand files and no cmo-preferences.md, when the user just installed marketing-cli for the first time, or when they say things like "set up marketing", "start marketing", "marketing wizard", "I just installed marketing-cli", "onboard me", "first time", "initial setup". Asks 3 sharp questions (identity, posture, distribution preferences), records the answers to brand/cmo-preferences.md, then hands off to /c

Source repository stars
27
Declared platforms
0
Static risk flags
2
Last source update
2026-07-28
Source checked
2026-07-28

Decision brief

What it does—and where it fits

First-run conversational setup wizard for marketing-cli. md, when the user just installed marketing-cli for the first time, or when they say things like "set up marketing", "start marketing", "marketing wizard", "I just installed marketing-cli", "onboard me", "first time", "initial setup".

Best for

  • Use when /cmo detects no populated brand files and no cmo-preferences.

Not for

  • Tasks that require unconfirmed production actions or broad system permissions.
  • Environments where the pinned source and install steps cannot be inspected.

Compatibility matrix

Platform support, with evidence labels

PlatformStatusEvidenceWhat to check
CodexNot declaredNo explicit evidencePortability before use
Claude CodeNot declaredNo explicit evidencePortability before use
CursorNot declaredNo explicit evidencePortability before use
Gemini CLINot declaredNo explicit evidencePortability before use
Open the compatibility checker

Installation

Inspect first. Install second.

The source command is displayed only when detected. A safe inspection prompt is always available so your agent can explain every action before execution.

Source-detected install commandSource
npx skills add https://github.com/MoizIbnYousaf/marketing-cli --skill "skills/mktg-setup"
Safe inspection promptEditorial

Inspect the Agent Skill "mktg-setup" from https://github.com/MoizIbnYousaf/marketing-cli/blob/f12fbcbe4929584697b309b9096c9427b0cfce8e/skills/mktg-setup/SKILL.md at commit f12fbcbe4929584697b309b9096c9427b0cfce8e. List every install step, command, network request, credential, file read/write, external action, and rollback step. Explain whether it fits my task. Do not install or execute anything until I approve.

Workflow

What the source asks the agent to do

  1. 01

    Step 1 — Ask: Identity

    Step 1 is a single-select question (1a) plus exactly one free-text follow-up (1b or 1c). Don't merge them and don't add extra prompts in between.

    "From a URL — I'll scrape your site to seed brand files (recommended if you have a website)""Local conversational setup — I'll ask a few questions instead""Pre-launch / open source / personal brand — describe in 1 sentence"
  2. 02

    Step 1a — Setup mode

    Use AskUserQuestion. Single-select.

    "From a URL — I'll scrape your site to seed brand files (recommended if you have a website)""Local conversational setup — I'll ask a few questions instead""Pre-launch / open source / personal brand — describe in 1 sentence"
  3. 03

    Step 1b — URL capture (only if Step 1a = "From a URL")

    Use AskUserQuestion. Single-select with the "Other" free-text path (so the user can paste the URL inline).

    "I'll paste the URL in the next message" — the user types the URL in their next chat message.(Use the built-in "Other" free-text option for inline URL entry — paste-and-go.)Use AskUserQuestion. Single-select with the "Other" free-text path (so the user can paste the URL inline).
  4. 04

    Step 1c — Sentence capture (only if Step 1a = "Local conversational setup" OR "Pre-launch / open source / personal brand")

    No URL here — this is the deliberate no-URL path. Ask a single short follow-up:

    No URL here — this is the deliberate no-URL path. Ask a single short follow-up:"Got it — describe what we're marketing in one sentence."Capture the response verbatim. Hold it as the seed for brand/voice-profile.md (it lands in the "What we are" section during Step 5 / foundation flow). Don't run mktg init --from; the foundation research agents fill the…
  5. 05

    Step 2 — Ask: Posture

    Use AskUserQuestion. Single-select.

    "Aggressive launch" — Product Hunt + Hacker News + X campaign blitz. Best for new product launches with momentum to capture."Steady authority build" — SEO + newsletter + slow-burn thought leadership. Best for long-game category ownership."Founder-led / personal brand" — voice-driven content, personality forward. Best when the founder IS the differentiator.

Permission review

Static risk signals and limitations

Reads files

low · line 10

The documentation asks the agent to read local files, directories, or repositories.

The user typically never types `/mktg-setup`. They install marketing-cli (`npm i -g marketing-cli`), open Claude Code in any project directory, type `/cmo` (or just say "help me with marketing"), and `/cmo`'s activation routes here. The wiz

Writes files

medium · line 140

The documentation asks the agent to create, modify, or delete local files.

Recorded by /mktg-setup on {ISO 8601 date}. Edit this file to change /cmo's runtime behavior.

Writes files

medium · line 171

The documentation asks the agent to create, modify, or delete local files.

To change preferences, edit this file directly OR ask Claude to "re-run mktg setup" (it will overwrite this file).

Evidence record

Why each signal appears

EvidenceSourceComputedTestedEditorial
SignalValueEvidence typeMeaning
Quality score86/100ComputedDocumentation, specificity, maintenance, and trust rules
Repository stars27SourceRepository attention, not individual Skill quality
Compatibility0 platformsSourceDeclared in the catalog source record
Usage guideautomated source guideEditorialGenerated or reviewed according to the visible evidence level

Pinned source

Provenance and original SKILL.md

Repository
MoizIbnYousaf/marketing-cli
Skill path
skills/mktg-setup/SKILL.md
Commit
f12fbcbe4929584697b309b9096c9427b0cfce8e
License
MIT
Collected
2026-07-28
Default branch
main
View the original SKILL.md

/mktg-setup — First-Run Conversational Setup

When This Runs

/cmo invokes this skill automatically when both conditions are true:

  1. brand/cmo-preferences.md does not exist (or is template content), AND
  2. mktg status --json reports brandSummary.populated < 3.

The user typically never types /mktg-setup. They install marketing-cli (npm i -g marketing-cli), open Claude Code in any project directory, type /cmo (or just say "help me with marketing"), and /cmo's activation routes here. The wizard is a conversational on-ramp, not a slash command users have to memorize.

What This Skill Does

Three AskUserQuestion calls. That is the entire wizard. No batched questions, no progress bars, no long forms.

Each answer becomes a persistent decision in brand/cmo-preferences.md. After question 3, hand off to /cmo's foundation flow (3 research agents in parallel — see cmo/rules/sub-agents.md).

The wizard's job is to record the small set of decisions Claude cannot make for the user. Filling out the 10 brand files is /cmo's job, not the wizard's.

On Activation

  1. Run mktg status --json --fields project,brand,brandSummary from the project root.
  2. If brandSummary.populated >= 3 AND cmo-preferences.md doesn't exist: a returning user got upgraded to a version that introduced preferences. Tell them: "I see you have a populated brand but no preferences file yet. I'll write one based on what's already here." Skip directly to step 3 (write preferences) using inferred defaults from existing brand files.
  3. If cmo-preferences.md already exists and is non-template: skip the wizard entirely. Hand back to /cmo immediately. Tell the user: "Looks like you've already onboarded. Hand off to /cmo for your next move."
  4. Otherwise (genuine first run): proceed to Step 1.

Step 1 — Ask: Identity

Step 1 is a single-select question (1a) plus exactly one free-text follow-up (1b or 1c). Don't merge them and don't add extra prompts in between.

Step 1a — Setup mode

Use AskUserQuestion. Single-select.

Question text: "How should we set up your brand?"

Options:

  • "From a URL — I'll scrape your site to seed brand files (recommended if you have a website)"
  • "Local conversational setup — I'll ask a few questions instead"
  • "Pre-launch / open source / personal brand — describe in 1 sentence"

The user's choice determines the follow-up:

  • "From a URL" → go to Step 1b (URL capture).
  • "Local conversational setup" OR "Pre-launch / open source / personal brand" → go to Step 1c (sentence capture).

Step 1b — URL capture (only if Step 1a = "From a URL")

Use AskUserQuestion. Single-select with the "Other" free-text path (so the user can paste the URL inline).

Question text: "Paste your URL"

Options:

  • "I'll paste the URL in the next message" — the user types the URL in their next chat message.
  • (Use the built-in "Other" free-text option for inline URL entry — paste-and-go.)

Capture the URL exactly as the user provides it. Do NOT validate it inside the wizard — no regex, no protocol check, no normalization. Pass the raw string straight to the CLI:

mktg init --from <url>

mktg init --from is the single source of truth for URL handling. If the URL is malformed, unreachable, or scrape-blocked, the CLI surfaces the error; the wizard relays that error to the user and falls back to the local sentence path (offer "I'll describe it in one sentence instead" without re-asking Step 1a).

On success, the scrape seeds brand/voice-profile.md, brand/positioning.md, brand/audience.md, and brand/competitors.md. Hold the captured URL and the "scrape ran" status (yes/no) for Step 5.

Step 1c — Sentence capture (only if Step 1a = "Local conversational setup" OR "Pre-launch / open source / personal brand")

No URL here — this is the deliberate no-URL path. Ask a single short follow-up:

"Got it — describe what we're marketing in one sentence."

Capture the response verbatim. Hold it as the seed for brand/voice-profile.md (it lands in the "What we are" section during Step 5 / foundation flow). Don't run mktg init --from; the foundation research agents fill the gaps.


Step 2 — Ask: Posture

Use AskUserQuestion. Single-select.

Question text: "What's the marketing posture you want?"

Options:

  • "Aggressive launch" — Product Hunt + Hacker News + X campaign blitz. Best for new product launches with momentum to capture.
  • "Steady authority build" — SEO + newsletter + slow-burn thought leadership. Best for long-game category ownership.
  • "Founder-led / personal brand" — voice-driven content, personality forward. Best when the founder IS the differentiator.
  • "Product-led growth" — free tier hooks, referrals, viral mechanics. Best when the product itself drives acquisition.

This is the single most important answer. It shapes which skills /cmo prioritizes downstream:

PostureSkills /cmo prioritizes
aggressive-launchlaunch-strategy, startup-launcher, social-campaign, direct-response-copy
steady-authorityseo-content, keyword-research, newsletter, ai-seo
founder-ledbrand-voice, voice-extraction, content-atomizer, mktg-x
product-led-growthfree-tool-strategy, referral-program, lead-magnet, conversion-flow-cro

Step 3 — Ask: Distribution

Use AskUserQuestion. multiSelect = true.

Question text: "Which distribution channels should we wire up first?"

Options:

  • "Typefully" — X/Twitter and threads. Best for short-form and thread-first audiences.
  • "Postiz" — LinkedIn, Reddit, Bluesky, Mastodon, Threads, Instagram, TikTok, etc. (30+ providers via the postiz catalog).
  • "Resend" — transactional email and newsletter delivery.
  • "Skip for now — I'll connect later" — /cmo will use --adapter file for export until the user wires something up.

Multiple selections are fine. If the user picks "Skip", record that explicitly — a deliberate skip is signal, not absence of data.


Step 4 — Ask: Studio (beta)

Use AskUserQuestion. Single-select.

Question text: "Want to use the Studio dashboard? (beta)"

Options:

  • "Yes — auto-open the Studio at the end of setup (recommended)" — /cmo will run mktg studio automatically at the end of foundation flow and on subsequent activations when the user says "show me the dashboard."
  • "No — keep me in the CLI only" — /cmo will not auto-launch Studio. The user can still run mktg studio manually any time.

Why this question: Studio is in beta. Some users prefer pure CLI workflows (especially headless/agent-only environments). Recording the choice once means /cmo never nags later.

If the user picks "No", /cmo reads studio_enabled: no from preferences and skips the studio launch step in its foundation flow. If they later change their mind, they can edit brand/cmo-preferences.md directly or just say "let's open studio" and /cmo will respect the explicit ask.


Step 5 — Write Preferences

Create brand/cmo-preferences.md with this shape:

# CMO Preferences

> Recorded by /mktg-setup on {ISO 8601 date}. Edit this file to change /cmo's runtime behavior.
> /cmo reads this file on every activation and uses it to shape skill prioritization and distribution routing.

## Identity

- **What we're marketing**: {URL or one-sentence description from Step 1}
- **Setup mode**: {from-url | local | pre-launch}
- **URL**: {captured URL if Setup mode is from-url, otherwise omit this line}
- **Scrape ran**: {yes if mktg init --from succeeded, no if from-url failed or mode is local/pre-launch}

## Posture

- **Mode**: {aggressive-launch | steady-authority | founder-led | product-led-growth}
- **Why this mode**: {one-line rationale based on the user's choice — pull from the option description in Step 2}
- **Skill priority shortlist**: {comma-separated list from the posture-to-skills mapping}

## Distribution

- **Selected**: {comma-separated list of selected platforms, or "none" if skipped}
- **Skipped**: {whichever options weren't selected}
- **Default adapter**: {typefully if X selected and only X | postiz if multi-platform | file if skipped}

## Studio

- **studio_enabled**: {yes | no}
- **Beta**: yes (Studio is in beta — record the user's preference; /cmo respects this on every activation)
- **Auto-open at end of setup**: {yes if studio_enabled is yes, no otherwise}

## Notes

- This file is the persistent contract. /cmo reads it on every activation.
- To change preferences, edit this file directly OR ask Claude to "re-run mktg setup" (it will overwrite this file).

Make sure the directory exists before writing:

test -d brand || mkdir -p brand

Step 6 — Hand Off to /cmo

SEO backend handoff (before spawning agents): run mktg catalog info openseo --json --fields configured,missing_envs. OpenSEO is the default SEO data plane (measured KD, volume, SERP, backlinks, GSC).

  • configured: true → tell the user: "OpenSEO is connected. After foundation, I'll link a project (mktg seo link-project) so keyword research uses measured metrics." After the foundation chain, if .seo/openseo.json is still missing, recommend /openseo-project-setup as the first SEO move.
  • configured: false → one line only, no blocking: "OpenSEO isn't set up — keyword metrics will be unknown until it is. Setup takes a minute: openseo.so → connect the MCP, or set OPENSEO_API_KEY." Never install anything or ask for keys inside the wizard.

Tell the user clearly what's happening next. Tailor the closing line to their Studio choice:

  • studio_enabled = yes → "Recorded your preferences. Now I'm spawning 3 research agents in parallel — brand voice, audience, and competitors — to fill out your foundation. ~5 minutes. Then I'll auto-open the Studio dashboard."
  • studio_enabled = no → "Recorded your preferences. Now I'm spawning 3 research agents in parallel — brand voice, audience, and competitors — to fill out your foundation. ~5 minutes. Studio stays off per your choice; I'll surface results in the CLI."

Then invoke the foundation flow per cmo/rules/sub-agents.md:

  1. Spawn mktg-brand-researcher with the identity context from Step 1
  2. Spawn mktg-audience-researcher with the posture context from Step 2
  3. Spawn mktg-competitive-scanner with both

Wait for all 3, then chain:

  • /landscape-scan for ecosystem grounding
  • /positioning-angles to lock the angle
  • If studio_enabled is yes: run mktg studio to auto-open the dashboard with the populated state.
  • If studio_enabled is no: skip the Studio launch. Print a one-line summary of what was populated and the next recommended skill in the CLI. Tell the user: "Studio's off per your preference. If you change your mind, edit brand/cmo-preferences.md or just say 'open studio'."

Anti-Patterns

Anti-patternInsteadWhy
Asking more than 3 questions in the wizardStop at 3 — hand off to /cmo for the restMore questions = abandonment. /cmo's research agents fill the rest in 5 minutes via real research.
Asking for a URL before letting the user pick a setup modeAlways ask Step 1a (setup mode) first, then branch to Step 1b (URL) or Step 1c (sentence)URL is just one of three paths. Pre-launch / open-source / personal-brand users don't have a URL yet, and the local conversational path bypasses the scrape entirely. Forcing a URL up front blocks them.
Validating the URL inside the wizard (regex, http vs https, "is this real?")Pass the raw string straight to mktg init --from <url> and let the CLI handle malformed inputsThe CLI already returns structured errors for bad URLs. Re-validating in the wizard duplicates logic, drifts from the CLI, and frustrates users who paste valid-but-unusual URLs.
Silently routing to brand-voice / audience-research before recording preferencesAlways record cmo-preferences.md FIRSTWithout it, every future /cmo activation re-runs the wizard. The preferences file is the contract that prevents that.
Skipping the wizard if voice-profile.md exists but cmo-preferences.md doesn'tRun the wizard regardless of other brand files (use the migration path in step 2)cmo-preferences.md is the persistent contract — separate from brand content. A user who upgraded from pre-mktg-setup needs to record their posture explicitly.
Treating "Skip distribution" as missing dataRecord the skip explicitly as selected: none and default_adapter: fileA deliberate skip is signal. The user told us not to wire anything yet — respect that.
Spawning research agents BEFORE writing cmo-preferences.mdAlways write the file firstIf the user kills the conversation mid-research, we lose the preferences. The file write is the savepoint.
Letting the user re-run the wizard accidentallyAfter writing the file, /cmo on the next activation will see it and skip the wizardThis is the whole point of the persistent contract. /cmo only re-routes here when the file is missing.

Iteration / Re-Running

The user can change their preferences three ways:

  1. Edit brand/cmo-preferences.md directly — it's just markdown.
  2. Ask Claude: "I want to change my marketing posture" — /cmo will re-route here, overwriting the file.
  3. Future: mktg setup --force (CLI flag, not yet implemented at v0.5.0; tracked for a future release).

Dependencies

  • Reads: mktg status --json, optionally URL via mktg init --from <url>.
  • Writes: brand/cmo-preferences.md (new). Optionally seeds brand/voice-profile.md if the user provided a sentence in Step 1.
  • Hands off to: /cmo foundation flow (which spawns the 3 research agents and chains /landscape-scan/positioning-anglesmktg studio).

Alternatives

Compare before choosing

Computed 9327

MoizIbnYousaf/marketing-cli

off-page-seo

Backlink + distribution checklist that expands a site's KD ceiling beyond what on-page work alone can earn. Use when the user mentions 'backlinks', 'off-page SEO', 'directory submissions', 'guest posts', 'outreach targets', 'link building', 'submit to directories', 'get listed in listicles', 'Product Hunt launch backlinks', or asks 'how do I get more domain authority'. Generates a prioritized, researched target list across directories, listicles, and guest-post candidates — does NOT submit anyth

Computed 9237,126

github/awesome-copilot

competitor-ad-intelligence

Use this skill when the user asks to analyze, tear down, or reverse-engineer a competitor's paid ads. Trigger for prompts like "what ads is [competitor] running", "tear down their ad strategy", "competitor ad analysis", "find ad angles we haven't tried", or "reverse-engineer their paid funnel". Do not trigger for organic/SEO competitor research or website positioning analysis.

Computed 9227

MoizIbnYousaf/marketing-cli

seo-machine

Build an organic-traffic operating system for any site or app: a multi-phase, resumable engine that ships programmatic landing pages (alternatives, comparisons, use-cases, playbooks) on top of real keyword research. Use when the user says 'SEO machine', 'build organic traffic', 'rank on Google', 'we need traffic', 'alternatives pages', 'comparison pages', '/for/ pages', 'programmatic SEO', or 'build an SEO engine'. Distinct from `seo-audit` (one-off diagnostic) and `seo-content` (single-article

Computed 9142,015

coreyhaines31/marketingskills

sales-enablement

When the user wants to create sales collateral, pitch decks, one-pagers, objection handling docs, or demo scripts. Also use when the user mentions 'sales deck,' 'pitch deck,' 'one-pager,' 'leave-behind,' 'objection handling,' 'deal-specific ROI analysis,' 'demo script,' 'talk track,' 'sales playbook,' 'proposal template,' 'buyer persona card,' 'help my sales team,' 'sales materials,' or 'what should I give my sales reps.' Use this for any document or asset that helps a sales team close deals. Fo