A Claude Code plugin that provides a comprehensive suite of content creation skills for marketing projects — including blog articles, social posts, press releases, and more.
Breaking change (v1.0.0): skill names dropped the
cc-content-prefix (e.g.cc-content-blog-article→blog-article). Plugin skills are already namespaced by Claude Code ascc-content:<skill-name>, so the prefix was redundant. Three names also changed wording to stay specific and avoid collisions:cc-content-email→marketing-email,cc-content-text→long-tail-copy,cc-content-promote→register-context,cc-content-onboarding→content-onboarding,cc-content-performance-review→content-performance-review,cc-content-new-skill→new-content-skill. Update any saved/cc-content-...invocations to the new names.
The content-production skills work for any industry, audience, and output language. They automatically use the context files set up during onboarding, and prompt you for any required information that the context does not already cover.
| Skill | What it does |
|---|---|
/cc-content:content-onboarding |
Interviews you about your brand, voice, and audience, then populates context/ with structured context files that all other skills can read |
/cc-content:register-context |
Registers a single file as context in CLAUDE.md mid-session, without re-running full onboarding |
/cc-content:research-prompt |
Generates a vendor-neutral deep-research prompt for a topic, ready to paste into Claude, ChatGPT, Gemini, Perplexity, or similar |
/cc-content:linkedin-post |
Drafts LinkedIn posts that match your brand voice, format guidelines, and audience — with a built-in feedback step |
/cc-content:blog-article |
Drafts blog articles calibrated to your audience type (B2B / B2C), content goal, funnel stage, and reader expertise |
/cc-content:landing-page |
Drafts landing pages — from short single-CTA gated-content/webinar registration pages to longer direct-sales pages — calibrated to funnel stage, audience type, and EU/German consent requirements |
/cc-content:press-release |
Drafts press releases for direct-to-journalist pickup, SEO/backlink value via wire placement, or owned newsroom records |
/cc-content:facebook-post |
Drafts Facebook posts optimized for Pages and Groups, with awareness of platform reach mechanics and audience-warmth-matched length guidance |
/cc-content:marketing-email |
Drafts marketing and sales emails — campaign email, newsletters, nurture sequences, and cold/warm sales outreach — with subject line and preview text |
/cc-content:instagram-post |
Drafts Instagram posts and captions (feed, carousel, Reels) calibrated to your audience type, format choice, content goal, and funnel stage |
/cc-content:content-ideation |
Generates several distinct strategic angles (thesis / goal / perspective) from an article, briefing, or topic — the idea step before writing |
/cc-content:atomize |
Repurposes one core message across multiple formats in a single run, keeping claims and proof points identical while adapting structure, tone, and CTA per platform |
/cc-content:long-tail-copy |
Drafts a finished text for any format without a dedicated skill (e.g., whitepaper, newsletter …), routing you to a dedicated skill (like press release or landing-page) when one fits better |
/cc-content:samples-curation |
Saves gold-standard content examples with annotations to the samples file registered in the ## Context files table (default context/samples.md) so skills can use them as reference material |
/cc-content:humanize |
Removes AI "tells" from an existing draft and rewrites it to read as human-written, calibrated to your brand voice |
/cc-content:content-performance-review |
Analyzes how published pieces performed from data you paste in, and generates iteration variants for the next piece |
/cc-content:session-wrap |
Reviews session deliverables, logs feedback and corrections, detects recurring patterns, and commits your work |
/cc-content:new-content-skill |
Turns research notes into a complete content-production skill for a new output format. Use it to build project-local custom skills, or add --plugin to create a pre-built skill for the plugin. |
/cc-content:x-post |
Drafts X (Twitter) posts optimized for engagement, conversation, and goal-driven CTAs — with support for single posts and threads |
/cc-content:gated-long-form-content |
Drafts gated long-form lead-generation assets — whitepapers, guides, ebooks — calibrated to audience type, content goal, funnel stage, and reader expertise, with an explicit gating recommendation |
Input — a rough note:
we shipped dark mode. finally. took forever. users have been asking for years
Output — /cc-content:linkedin-post:
Dark mode is here.
Users have been asking for this for years — and honestly, it took us longer than we'd like to admit. But it's live today, and it was worth the wait.
If you've been holding off because of this one thing, give it another look.
The skill draws on the brand voice, tone, and audience set up during onboarding — this is an illustrative example, not a fixed template.
Open Claude Code in any project and run:
/plugin marketplace add clever-cc-plugins/marketplace
/plugin install cc-content@clever-cc-plugins
This makes all skills immediately available.
Auto-update is disabled by default for third-party marketplaces. To enable it:
- Run
/pluginin Claude Code - Go to the Marketplaces tab
- Toggle auto-update for
clever-cc-plugins/marketplace
Once enabled, skills update automatically on startup when new versions are available.
Step 1 — Run onboarding
Open your marketing project in Claude Code and run the onboarding skill:
/cc-content:content-onboarding
This populates context/ with your brand voice, company profile, and buyer personas. The other skills read this context automatically.
Step 2 — Create content
Run any output skill:
/cc-content:linkedin-post
For a format without its own skill (press release, newsletter, whitepaper …), use the general writer — or start from ideas first:
/cc-content:content-ideation
/cc-content:long-tail-copy
Step 3 — Curate good examples
When a piece of content lands well, save it as a reference sample:
/cc-content:samples-curation
Step 4 — Wrap your session
At the end of each working session, commit your work and log any corrections:
/cc-content:session-wrap
The plugin ships with support for multiple content formats (blog articles, social posts, press releases, and more). If you need a content format that isn't covered yet, you can build a project-local skill using new-content-skill — no plugin contribution required.
Extending vs. customizing. new-content-skill is for formats the plugin doesn't support yet. If the plugin already has a skill for your format (e.g. blog-article) and you just need brand- or company-specific rules applied to it (structure, length, mandatory sections), don't fork the skill — register those rules as context (register-context or content-onboarding) instead. The default skill loads and applies them automatically, and you keep benefiting from future improvements to the plugin's best-practice defaults.
Workflow:
- Run
/cc-content:new-content-skill <format-name>without any research files. The skill will guide you to a research brief template that tells you what to gather about your target format. - Fill in the brief, then re-run
/cc-content:new-content-skill <format-name>with your research files attached. The skill interviews you about coverage gaps, synthesizes aformat-guidelines.md, and generates aSKILL.mdskeleton. - Open the generated
SKILL.mdand fill in the[TODO: ...]placeholders to tailor the skill to your exact needs. - The finished skill lives in
.claude/skills/<format-name>/and is ready to invoke from there.
If the new format turns out to be broadly useful and you'd like to contribute it back, re-run the skill with --plugin to produce a version structured for the plugin repository.
Skills follow a three-level context model:
| Level | Location | What goes here |
|---|---|---|
| Company scope | context/ (registered in CLAUDE.md) |
Brand voice, buyer personas, company profile — applies to all work for this company |
| Format scope | Inside the plugin | Structure rules, length limits, tone calibrations for one output type |
| Campaign scope | Project subfolders (e.g. campaigns/q3/) |
Campaign briefings, key messages, one-off constraints |
Company-scope context is registered in a ## Context files table in CLAUDE.md — not loaded via @-import. The distinction matters and applies to any plugin in this family that uses the same pattern.
@-imports (e.g. @DESIGN.md, @AGENTS.md) are parsed by Claude Code and pull the referenced file's full content into the context window unconditionally — every message, every session. Reserve them for the handful of files that are genuinely relevant to every task.
The ## Context files table is plain Markdown, not an @-import. Only the table itself (labels, paths, one-line summaries) loads every message via CLAUDE.md — cheap. The underlying files load conditionally: a skill reads the table, matches the current task against each row's Summary, and reads only the file(s) that are actually relevant. A brand-voice file won't be loaded for a task that only needs buyer-persona data, even though both are registered in the same table.
Use @-imports for material every task needs. Use the context table for anything that's only sometimes relevant — for company-scope context, that's almost everything.
## Context files
<!-- cc-config: context-toc-registered -->
Skills read all registered files and load what's relevant for each task.
| Label | File | Summary |
| ----------- | ------------------------ | --------------------------------------------------------------------------- |
| Brand voice | `context/brand-voice.md` | Formal German, em-dash preferred, no exclamation marks — all corporate copy |- Label — free-form, whatever you'd recognize at a glance. No fixed taxonomy.
- File — see path convention below.
- Summary — one sentence, 10–25 words, specific enough to act as a relevance signal. Skills match against this, not the label.
- Too vague: "Writing style guidelines for the company"
- Good: "Formal German, em-dash preferred, no exclamation marks — all corporate copy"
- Good: "Casual and inclusive tone — job ads and employer branding only"
<!-- cc-config: context-toc-registered -->— include this marker comment if the project also usescc-config'sscripts/sync-config-table.sh(v4+). It tells that script these files are already registered here with real summaries, so it won't re-list them in## Key Config Filesunder a generic placeholder. Harmless to include even without that script.
/cc-content:content-onboarding builds this table through a guided interview; /cc-content:register-context adds a single row mid-session. Both apply the same quality bar — hand-edits to the table should meet it too.
Write File paths relative to the CLAUDE.md file that contains the table — not relative to the repository root. This mirrors how Claude Code resolves @-import paths, so both mechanisms follow the same mental model, and it keeps a CLAUDE.md plus its registered context files self-contained if that subtree is moved or copied elsewhere.
If a project has more than one CLAUDE.md (e.g. a nested one for a specific campaign or sub-brand), each table is scoped to its own file — a nested CLAUDE.md's File column is relative to that nested folder, not the project root.
MIT — Copyright (c) 2026 Michael van Laar
Part of the clever-cc-plugins family · marketplace · cc-config · cc-concept · cc-handoff · cc-chime