marketing-cli
Health Pass
- License — License: MIT
- Description — Repository has a description
- Active repo — Last push 0 days ago
- Community trust — 13 GitHub stars
Code Pass
- Code scan — Scanned 12 files during light audit, no dangerous patterns found
Permissions Pass
- Permissions — No dangerous permissions requested
This tool is an agent-native marketing CLI that integrates directly with AI coding assistants like Claude Code. It provides marketing skills, research agents, and a persistent brand memory so your AI agent can execute consistent marketing tasks across multiple sessions. It also includes a local Studio dashboard for human oversight.
Security Assessment
Overall Risk: Low
The automated code scan reviewed 12 files and found no dangerous patterns, hardcoded secrets, or requests for risky permissions. However, this is a light audit, and the tool does introduce an ecosystem with multiple components, including a local Next.js dashboard and an API running via Bun. The tool reads and writes to a local `brand/` directory and orchestrates AI agent tasks. While no inherently dangerous behavior was identified in the scan, the interactive nature of an agent orchestrator means you should briefly review exactly what commands the research agents are permitted to execute on your system.
Quality Assessment
Overall Quality: Good
The project is actively maintained, with the most recent push occurring today. It uses strict TypeScript, claims an impressive test suite of over 2,600 tests, and is clearly documented. It is fully open-source under the permissive and standard MIT license. The primary caveat is a low community trust indicator, currently sitting at only 13 GitHub stars. Because it is a relatively new and untested project in the wider community, there is limited crowdsourced validation of the codebase beyond the automated scans and author claims.
Verdict
Safe to use, though the small community footprint means you should perform a quick manual review of the agent routing rules before deploying in sensitive environments.
Agent-native marketing cli: 51 skills, 5 research agents, brand memory that compounds, plus a local Studio dashboard (beta). One install, then /cmo in Claude Code walks you through a 4-question setup wizard. CLI for the agent, Studio for the human.
One package. One install. CLI for the agent, Studio for the human. 53 skills, 5 research agents, brand memory that compounds.
marketing-cli ships the playbook, the agents, the runtime schemas, and the /cmo routing rules so Claude, Codex, OpenCode, and any shell-capable agent run the same marketing system. Install once. Your project picks up where the last session left off.
What's in this repo
One npm package, two surfaces. The CLI is the agent surface, the Studio dashboard is the human surface, and mktg studio launches the dashboard from inside the same install.
| Surface | What it is | Path |
|---|---|---|
mktg CLI |
53 skills, 5 agents, brand memory, /cmo orchestration |
(root) |
| Studio dashboard | Local Next.js + Bun API: pulse, signals, brand visualizer, publish queue | studio/ |
npm i -g marketing-cli installs both. The repo uses a bun workspace because Studio is a Next.js app with its own build, but at install time it is one package, one tarball.
The Problem
You ask your agent for marketing help. It writes generic copy and forgets your audience by tomorrow. The skills it would use aren't installed; the brand files don't exist; the agent learns this halfway through, when something fails mid-execution. Every session is the first session.
marketing-cli fixes that. Install once and your agent inherits 53 skills, 5 research agents, and a brand memory that compounds. Session 10 starts where session 9 ended. Every conversation builds on the last.
How It Works
/cmo reads your project state, picks the right skill, and writes the result back to brand/. The next session starts where the last one ended.
The Ecosystem: What You Actually Install
npm install -g marketing-cli drops the CLI plus the skills and agents into Claude Code. mktg init sets up the project workspace.
Core (always installed)
mktg CLI |
20 commands, 21/21 Agent DX score, JSON-by-default |
| 53 marketing skills | The playbook, copied to ~/.claude/skills/ |
| 5 research + review agents | Parallel sub-agents in ~/.claude/agents/ |
| 10 brand memory files | Persistent marketing memory in your project's brand/ (10 templates plus SCHEMA.md), created by mktg init |
/cmo orchestrator |
The brain that routes every request to the right skill |
| Studio dashboard | Local Next.js + Bun API dashboard at studio/, launched via mktg studio |
Chained-in CLIs (external tools mktg knows how to call)
Not bundled. These are external binaries the skills know how to drive. mktg doctor tells you what's missing and how to install it. Skills fall back when a tool isn't there.
| CLI | Role | Install |
|---|---|---|
firecrawl-cli |
Web scrape, search, and crawl; clean markdown out | npm i -g firecrawl-cli plus FIRECRAWL_API_KEY |
ffmpeg |
Video assembly, encoding, frame extraction | brew install ffmpeg |
remotion |
Programmatic React video rendering | npm i -g @remotion/cli |
playwright-cli |
Browser automation: demos, scrapes, CRO audits | npm i -g @playwright/cli |
gh |
GitHub CLI for launches, PRs, issue intel | brew install gh |
whisper-cli |
Speech-to-text via whisper.cpp | brew install whisper-cpp |
yt-dlp |
Media download from YouTube/TikTok/podcasts | brew install yt-dlp |
summarize |
Text compression: TL;DR, digest, key points | npm i -g @steipete/summarize |
| Exa MCP | Parallel deep research (default for agent web queries) | MCP config in .mcp.json |
Best-practices skills (how to use a tool, written down)
When a chained-in CLI needs discipline (security, rate limits, efficiency patterns), mktg ships a best-practices skill alongside it. Reference SKILL.md files with a rules/ subdirectory for depth.
Currently shipping: firecrawl (wraps the firecrawl CLI with rules/install.md and rules/security.md), summarize (wraps @steipete/summarize with rules/install.md), and mktg-x (Twitter/X auth-walled fetch with scripts/fetch-x.sh).
The orchestration philosophy
mktg orchestrates; it doesn't reimplement. When a good tool already exists, we chain it in and ship a best-practices skill next to it. mktg ships marketing playbooks, not video encoders.
Quick Start
npm i -g marketing-cli
That's it. The global npm install copies the 53 skills into ~/.claude/skills/ and the 5 agents into ~/.claude/agents/. No second install command, no mktg init to remember.
Then open Claude Code in your project and run:
> /cmo
On first run, /cmo automatically routes to the conversational setup wizard (/mktg-setup) — 4 quick questions:
- What are we marketing? URL, sentence, or open-source repo
- What posture? aggressive launch / steady authority / founder-led / product-led growth
- Which distribution channels? Typefully / Postiz / Resend / skip
- Studio dashboard? (beta) auto-open or stay CLI-only
Your answers land in brand/cmo-preferences.md (the persistent contract /cmo reads on every future activation), then /cmo spawns 3 research agents in parallel to fill your foundation — voice, audience, competitors. ~5 minutes.
After foundation, /cmo reads your project's marketing state, knows what's done and what's missing, and routes to the right skill:
> /cmo help me market this app
Looking at your brand profile...
Your positioning is strong but you have zero distribution.
Here's what I'd do: write 3 SEO articles targeting your best
keywords, then atomize them into social posts. That gives you
a content engine.
Want to start there?
Requirements
- Node.js 18+ or Bun
- Claude Code (or any agent that reads
~/.claude/skills/)
Agent Install Surfaces
The npm package ships the same knowledge across multiple agent runtimes:
| Agent / runtime | Path |
|---|---|
| Claude Code | Global install copies skills to ~/.claude/skills/ and agents to ~/.claude/agents/; plugin metadata lives in .claude-plugin/ |
| Codex | Plugin metadata in .codex-plugin/plugin.json; use the packaged skills/ directory and CONTEXT.md as the runtime index |
| Gemini CLI | Extension metadata in gemini-extension.json |
| OpenCode / shell agents | Run mktg schema --json, mktg list --routing --json, and read skills/cmo/rules/*.md |
Agent contract:
- Use
mktg schema --jsonto discover commands. Don't hardcode. - Use
--jsonfor all CLI calls. - Use
--fieldsto keep context small. - Use
--dry-runbefore mutations. - Use
/cmofor marketing judgment and directmktgcommands for infrastructure.
Studio: eyes for your agent
Run mktg studio and a local Next.js dashboard boots at http://localhost:3000. The Bun API runs alongside on :3001. Watch what your agent is doing in real time: pulse activity, the signal queue, brand state, publish history. Everything is on disk, local-first, no cloud round-trip.
The studio lives in studio/ and ships inside the same marketing-cli tarball, so mktg studio works on any machine that has the CLI installed. The launcher resolves the in-repo studio/ subfolder first, with fallbacks to a sibling checkout and a mktg-studio binary on PATH for local dev edge cases.
mktg studio # boot API + dashboard, open the browser
mktg studio --no-open # boot but skip the browser
mktg studio --dry-run --json # preview the launch envelope, no side effects
mktg studio --intent cmo # boot into the CMO startup flow
/cmo uses mktg studio --dry-run --json to discover the dashboard URL without spawning a long-running process, then opens the real launch when the user asks for it. The CLI keeps the CLI surface; the studio keeps the visual one. Same project state, two windows on it.
How It's Different
Other marketing skill repos give you a folder of markdown files. mktg is infrastructure.
| mktg | Other skill repos | |
|---|---|---|
| Install | npm i -g marketing-cli && mktg init |
git clone then manually copy files |
| CLI | 20 commands, JSON output, exit codes, --dry-run |
None |
| Memory | 10 brand files that compound across sessions | Stateless. Starts from scratch every time. |
| Health checks | mktg doctor with pass/warn/fail diagnostics |
None |
| Skill lifecycle | Dependency DAG, freshness tracking, versioning | Flat directory of markdown |
| Integration checks | Proactive env var verification before routing | Fails mid-execution |
| Schema introspection | mktg schema --json for agent self-discovery |
None |
| Orchestrator | /cmo with routing table, disambiguation, guardrails |
Command menus |
What the CLI adds on top of skills
Marketing skills tell an agent how to do specific work: write a landing page, run a competitive scan, atomize a thread for social. They work on their own.
The CLI adds the surrounding infrastructure. mktg init bootstraps a project in one command: detects what you're building, scaffolds brand/, prefers ai-agent-skills as the installer when that's around and falls back to direct install when it isn't, then runs doctor to verify. mktg status --json returns a structured snapshot of your marketing state, and that's what /cmo reads on every activation to know what exists, what's stale, and what to suggest next. mktg doctor --json runs the health checks: skills installed, brand files populated, API keys set. The agent finds out before it tries, instead of failing mid-execution. mktg update versions the skills so improvements ship without touching your brand memory. mktg schema --json exposes every command, flag, and output shape at runtime, so agents introspect rather than hardcode.
Skills know what to do. The CLI knows what's been done, what's stale, and what to do next. Together they make a feedback loop that gets sharper every session.
Brand Memory
The brand/ directory holds ten files that compound across sessions:
brand/
├── voice-profile.md # How you sound
├── positioning.md # Why you're different
├── audience.md # Who you're talking to
├── competitors.md # Who you're up against
├── landscape.md # Competitive landscape snapshot
├── keyword-plan.md # What people search for
├── creative-kit.md # Visual identity rules
├── stack.md # Marketing tools in use
├── assets.md # Created assets log (append-only)
└── learnings.md # What worked, what didn't (append-only)
Session 1: research from scratch. Session 10: your agent already knows your voice, audience, competitors, keyword gaps, and what's worked before.
Foundation research launches 3 agents in parallel: brand voice extraction, audience persona building, and competitor teardown. They write back to brand/ at the same time, so a 10-minute setup buys you research that survives every future session.
Skills (50)
Organized by marketing layer. Foundation builds up to distribution.
Foundation (9 skills): Brand identity, audience research, competitive intelligence| Skill | What it does |
|---|---|
| cmo | Orchestrates all 53 skills. Routing table, disambiguation, guardrails. |
| brand-voice | Define or extract brand voice from existing content |
| audience-research | Build buyer personas with parallel web research |
| competitive-intel | Analyze competitors with real-time web intelligence |
| positioning-angles | Find the angle that makes your product sell |
| brainstorm | Structured exploration when direction is unclear |
| document-review | Audit brand files for completeness and consistency |
| create-skill | Extend the playbook with custom marketing skills |
| marketing-psychology | Apply behavioral psychology to any marketing asset |
| Skill | What it does |
|---|---|
| keyword-research | Six Circles framework for SEO keyword strategy |
| launch-strategy | Product Hunt, beta, and go-to-market playbooks |
| pricing-strategy | Van Westendorp, value-based, freemium analysis |
| deepen-plan | Strengthen any plan with parallel research agents |
| Skill | What it does |
|---|---|
| direct-response-copy | Landing pages, cold emails, headlines, copy editing |
| seo-content | SEO articles, programmatic SEO at scale |
| lead-magnet | Ebooks, checklists, templates, opt-in resources |
| creative | Visual asset briefs, ad copy variants |
| visual-style | Build visual brand identity for image generation |
| image-gen | Generate images via Gemini API with brand context |
| marketing-demo | Product demo recordings and walkthroughs |
| paper-marketing | Design carousels and social graphics in Paper |
| slideshow-script | Generate 5 narrative scripts for visual content |
| video-content | Assemble videos from slides (ffmpeg + Remotion) |
| tiktok-slideshow | End-to-end: script, design, video |
| app-store-screenshots | App Store screenshot pages (Next.js export) |
| frontend-slides | Animated HTML presentations and pitch decks |
| seo-audit | Technical SEO, site architecture, schema markup |
| ai-seo | Optimize for AI search (ChatGPT, Perplexity) |
| competitor-alternatives | "X vs Y" and "X alternatives" comparison pages |
| page-cro | Landing page conversion rate optimization |
| conversion-flow-cro | Signup, onboarding, paywall flow optimization |
| resend-inbound | Inbound email handling via Resend |
| Skill | What it does |
|---|---|
| content-atomizer | Repurpose long-form into multi-platform social posts |
| email-sequences | Welcome, nurture, launch, drip campaigns |
| newsletter | Editorial newsletter design, writing, growth |
| churn-prevention | Cancel flows, dunning emails, win-back campaigns |
| referral-program | Viral referral loops and incentive design |
| free-tool-strategy | Engineering-as-marketing free tool planning |
| typefully | Schedule and publish social posts via Typefully API |
| send-email | Transactional emails via Resend API |
| agent-email-inbox | AI agent email inbox with Resend |
| Skill | What it does |
|---|---|
| postiz | Schedule social posts to 30+ providers via Postiz API |
| social-campaign | End-to-end social content campaign pipeline |
| landscape-scan | Ecosystem snapshot and competitive landscape research |
| startup-launcher | Launch across 56 platforms with copy and tracking |
| voice-extraction | Reverse-engineer writing voice from podcasts/essays/tweets |
| brand-kit-playground | Interactive HTML preview of your live brand identity |
| firecrawl | Best-practices wrapper for the Firecrawl CLI |
| summarize | Best-practices wrapper for @steipete/summarize |
| mktg-x | Authenticated Twitter/X reader for tweets, threads, bookmarks |
Agents (5)
Parallel sub-agents for research and review. /cmo spawns them during foundation building:
| Agent | Role |
|---|---|
| brand-researcher | Deep brand voice extraction using Exa web search |
| audience-researcher | Buyer persona and watering hole discovery |
| competitive-scanner | Competitor teardown and positioning gap analysis |
| content-reviewer | Quality review for any marketing output |
| seo-analyst | SEO audit for content and pages |
The 3 research agents run in parallel. Results write back to brand/ so every future session starts ahead.
Commands
| Command | Purpose |
|---|---|
mktg init |
Scaffold brand/ plus install skills plus install agents |
mktg status |
Project marketing state snapshot |
mktg doctor |
Health checks: brand files, skills, agents, CLI tools, integrations |
mktg list |
Show all 53 skills with install status and metadata |
mktg update |
Re-install skills from latest package version |
mktg schema |
Introspect all commands, flags, and output shapes |
mktg skill |
Inspect, validate, register, analyze, and chain external skills |
mktg skill add |
Chain an external skill into the mktg ecosystem |
mktg brand |
Export, import, diff, and review brand memory |
mktg run |
Load a skill for agent consumption and log execution |
mktg context |
Brand context compiler: token-budgeted JSON artifact |
mktg plan |
Execution loop: prioritized task queue from project state |
mktg publish |
Distribution pipeline: push content to platforms |
mktg compete |
Competitor change monitor: detect changes, route to skills |
mktg dashboard |
Local dashboard: project health, next moves, skill catalog |
mktg catalog |
Upstream catalog registry: list, inspect, sync, status |
mktg transcribe |
Audio/video to transcript via whisper.cpp (YouTube, TikTok, podcasts, local files) |
mktg studio |
Launch the bundled Studio dashboard (Next.js + Bun API) from the in-repo studio/ subfolder |
mktg verify |
Orchestrated test-suite runner across the mktgmono ecosystem |
mktg ship-check |
Aggregated go/no-go verdict across ecosystem surfaces |
mktg cmo |
Headless /cmo entry point with structured output for agents |
Every command ships --json, --dry-run, and --fields. The live contract is mktg schema --json. /cmo keeps operator indexes in:
For the CMO startup flow, /cmo can run mktg studio --open --intent cmo --session <id>. Preview stays side-effect free with mktg studio --dry-run --json --intent cmo --session <id>, returning the exact dashboard URL it would open.
| Index | Purpose |
|---|---|
skills/cmo/rules/cli-runtime-index.md |
Full current CLI command surface and startup discovery sequence |
skills/cmo/rules/publish-index.md |
Native/Postiz/Typefully/Resend/file publish routing |
skills/cmo/rules/studio-api-index.md |
Studio HTTP API and current tab contract |
Integration Checks
Third-party adapters (Postiz, Typefully, Resend) need API keys. The native publish backend is local-first and needs no external key. mktg checks integrations before routing, not mid-execution:
$ mktg doctor --json | jq '.checks[] | select(.name | startswith("integration"))'
{
"name": "integration-TYPEFULLY_API_KEY",
"status": "warn",
"detail": "TYPEFULLY_API_KEY not set, needed by typefully"
}
/cmo reads this and guides setup before routing to a skill that needs the key. Missing integrations produce warnings, not errors. Every skill works at zero config.
Architecture
src/
├── cli.ts # Entry point, command router
├── types.ts # All shared TypeScript types
├── commands/ # 20 top-level commands (init, doctor, status, list, update, schema, skill, brand, run, transcribe, context, plan, publish, compete, dashboard, catalog, studio, verify, ship-check, cmo)
└── core/ # Shared modules (output, errors, brand, skills, agents, integrations)
skills/ # 50 SKILL.md files installed via ai-agent-skills or directly
├── cmo/ # Orchestrator with rules/ and references/
├── brand-voice/
├── direct-response-copy/
└── ...
agents/ # 5 agent .md files installed to ~/.claude/agents/
├── research/ # brand-researcher, audience-researcher, competitive-scanner
└── review/ # content-reviewer, seo-analyst
skills-manifest.json # Source of truth for skill metadata (includes external_skills section)
agents-manifest.json # Source of truth for agent metadata
Design Principles
Every skill works at zero context. Brand memory enhances; it never gates. The CLI is agent-native by default: JSON output, structured errors, exit codes 0 through 6, --dry-run, and schema introspection. Errors carry a code, a hint, and a message that names the next step.
The system bootstraps itself. mktg init installs everything on any machine, preferring ai-agent-skills as the installer when it's around and falling back to direct install when it isn't. Skills are drop-in: add a SKILL.md and a manifest entry, no CLI changes needed.
Skills don't call other skills. They read and write files. /cmo orchestrates. There are no implicit chains. Foundation building spawns the 3 research agents simultaneously, not sequentially. Missing dependencies produce warnings, not blockers, so an agent always has a path forward.
Development
git clone https://github.com/MoizIbnYousaf/marketing-cli.git
cd marketing-cli
bun install
bun run dev doctor # Run locally
bun test # 2,599 tests, real file I/O, no mocks
bun x tsc --noEmit # Type check
bun run build # Build
Project Structure
src/: CLI source (TypeScript, ~15,500 lines)skills/: 50 SKILL.md files (manifest-backed)agents/: 5 agent definitionstests/: 2,599 tests across 96 files (real file I/O, no mocks)docs/: Reference docs (EXIT_CODES.md,skill-contract.md)
Contributing
Contributions welcome. The fastest ways to help:
- Add a skill: Drop a
SKILL.mdinskills/<name>/and add an entry toskills-manifest.json - Improve existing skills: Better prompts, more examples, edge case handling
- Add tests: Real file I/O in isolated temp dirs, no mocks
- Report issues: github.com/MoizIbnYousaf/marketing-cli/issues
License
MIT. Use freely. Build on it.
Acknowledgments
- Corey Haines' Marketing Skills: the breadth skill collection that inspired many of mktg's 53 skills
- Postiz by @gitroomhq: the upstream catalog for 30+ social provider integrations (LinkedIn, Reddit, Bluesky, Mastodon, Threads, Instagram, TikTok, YouTube, Pinterest, Discord, Slack, etc.). mktg connects via REST API; license stays firewalled.
- last30days-skill by @mvanhorn: live research across Reddit, X, YouTube, Hacker News, GitHub, and the web.
/cmochains it before any market claim, so the playbook stays grounded in what's actually happening this month, not training-data folklore. @steipete/summarizeby @steipete: the text-compression CLI that mktg'ssummarizeskill wraps with rules and budgets.
Reviews (0)
Sign in to leave a review.
Leave a reviewNo results found