Cf help
Open-source enterprise content production plugin — 21 skills, 13 agents, 11 quality gates, 29-pattern AI humanizer, fact-checker, real .docx output with C2PA signing (EU AI Act Article 50 ready). Installs on Claude Code, Cowork, Codex, Cursor, Copilot CLI, Antigravity. By Indranil Banerjee (indranil.in).
npx -y skills add indranilbanerjee/contentforge --skill cf-helpAssembled from the repository path, not quoted from the project. Check it against their README if it does not work.
One thing to look at
- 17 stars17 stars. Stars are a popularity signal and not a quality one, but at this level it is likely that nobody has read this closely except its author, and you would be relying on your own review.
What its author says it does
Copied from the file, not written here
Show the ContentForge user guide, available skills, pipeline overview, examples, and troubleshooting
SKILL.md
9.0 KB, as published. Nobody here has run it
/contentforge:cf-help
Show the ContentForge user guide with live plugin state (version, asset counts, connector counts, runtime environment) pulled from disk — not hardcoded — plus pipeline overview, available skills, usage examples, and troubleshooting.
CRITICAL: never hardcode version, asset counts, or connector counts
Versions and counts in this plugin used to be baked into this skill body as literal version strings and count strings ("Agents: 13 · Skills: 19 · Connectors: 9 HTTP + 19 npx"). Those drifted out of sync with the actual install every release (reported by users in v3.12.7 testing: "I'm on 3.12.7, but the help output shows an old version").
Always read live values from scripts/plugin-metadata.py. Never quote a
version number, skill count, agent count, or connector count from memory or
from this skill body.
Behavior
Step 1 — Fetch live plugin metadata
Run first, every time this skill is invoked (any argument or none):
python scripts/plugin-metadata.py --section all-with-environment
This returns JSON with version, assets (agent/skill/command/script counts),
connectors (HTTP + npx counts), skills list, commands list,
pipeline_phases list (read from agent file names), and environment
(detects Cowork sandbox vs local Claude Code, with a warning if filesystem
writes won't reach the user's host).
Substitute the values from this JSON into every place the help output references a count, a version, or a slash-command list. Do not invent or quote numbers from elsewhere.
Step 2 — Default rendering (no args)
Render a clean help overview using the live data. Suggested format:
=== CONTENTFORGE ===
Version: <version from JSON>
Agents: <agents> | Skills: <skills_total> | Commands: <commands> | Scripts: <scripts>
Connectors: <available_http> HTTP + <available_npx> npx available
(<active_count> currently active in your .mcp.json)
Cowork-compatible: <cowork_compatible_count> (HTTP only — npx connectors don't run in Cowork)
Environment: <environment from JSON>
<if environment.cowork_warning is non-null, show it as a WARNING block>
Getting Started:
1. /contentforge:brand-setup -- Configure brand voice, terminology, guardrails
2. /contentforge:cf-integrations -- See which connectors are active
3. /contentforge:create-content -- Run the full content pipeline
4. /contentforge:cf-help --examples -- Worked example workflows
Step 3 — Cowork warning (when applicable)
If environment.cowork_warning is non-null, surface it prominently after
the orientation block:
⚠ COWORK SANDBOX DETECTED
<cowork_warning text from JSON>
What this means in practice:
- File writes to ~/Documents/ContentForge/ and ~/.claude-marketing/
land inside the sandbox, NOT on your Windows / macOS host
- Files persist only for this Cowork session
- The full /contentforge:create-content pipeline can run, but the
dual-copy save and per-phase checkpointing target the sandbox FS
- For full host-filesystem behavior, run ContentForge in local
Claude Code (CLI or VS Code / JetBrains IDE extension) instead
Step 4 — Argument routing
| Argument | What to render |
|---|---|
| (none) | Steps 2 + 3 + Quick command list |
--pipeline | Steps 2 + 3 + full phase-by-phase overview (use pipeline_phases from JSON) |
--skills | Steps 2 + 3 + list every skill from JSON skills array with slash command + description |
--commands | Steps 2 + 3 + list every command from JSON commands array with slash command + description |
--connectors | Steps 2 + 3 + redirect: "For active/available connector status, run /contentforge:cf-integrations" |
--examples | Steps 2 + 3 + the worked-example workflows (see below) |
--troubleshoot | Steps 2 + 3 + troubleshooting matrix (see below) |
--brand | Steps 2 + 3 + brand setup methods (see below) |
When rendering the skills/commands list, iterate over the JSON arrays —
do not paste a hand-maintained list. Each row should show the
slash_command field as the user-facing label and the description field
as the explanation.
Pipeline phase rendering (--pipeline)
The pipeline phases come from agent file names (01-researcher.md →
"Phase 01: Researcher"). Iterate pipeline_phases from the JSON and render
phase + role + description. Add this preamble:
=== CONTENTFORGE PIPELINE (10 phases) ===
Step 0.5: Title Curation runs BEFORE Phase 1 (SERP recon + 4-5 SEO title options;
user selects before draft starts).
Quality gates: composite score >=7.0 to pass | max 2 loops per phase |
3-layer verification (Fact Checker -> Scientific Validator -> Reviewer).
Then list every phase from the JSON. Do not invent timing estimates — they vary by topic complexity and model speed. If the agent description in the JSON includes a timing hint, surface it; otherwise omit.
Brand setup rendering (--brand)
Show the three brand-setup methods (interactive / JSON template / Drive Knowledge Vault), referencing the actual current commands. v3.12.7 added Drive MCP autodetection at the start of brand-setup — call this out as the recommended path for Cowork and Anthropic-platform users.
=== BRAND PROFILE SETUP (3 methods) ===
Method 1: Interactive (recommended)
/contentforge:brand-setup "Brand Name"
-> Walks you through voice, terminology, industry, guardrails
-> v3.12.7+ first probes .mcp.json for Drive MCPs (Anthropic platform
integration, Pipedream / Composio / Zapier / Make Drive aggregator)
and short-circuits the legacy service-account flow if one is found
Method 2: Manual JSON
-> Copy config/brand-registry-template.json
-> Fill in your brand details
-> Save to ~/.claude-marketing/<brand-slug>/Brand-Guidelines/<BrandName>-brand-profile.json
Method 3: Google Drive Knowledge Vault
-> Create a Drive folder: <Brand Name>/
-> Subfolders: Brand-Guidelines/, Guardrails/, Reference-Content/
-> Run /contentforge:brand-setup -- it will offer to verify or
scaffold the structure
Troubleshooting (--troubleshoot)
Surface this matrix. Use the live skill/command names from the JSON; the table below references the user-visible behaviors.
| Issue | What to try |
|---|---|
| "Brand profile not found" | Run /contentforge:brand-setup to create the brand profile first |
| Files don't appear in ~/Documents/ContentForge/ | Check Cowork sandbox warning above. In local Claude Code: /contentforge:output-folder shows the resolved path; verify CONTENTFORGE_PUBLISH_DIR env var if you've customized it |
| Headers in .docx aren't semantic Heading 1/2/3 | Verified fixed in v3.12.4 -- if you see this, you're on an older version; run /plugin update contentforge@neels-plugins |
| Pipeline interrupted, lost work | Use /contentforge:resume to pick up from the last completed phase (v3.12.3+) |
| Google Drive connector ignored at brand-setup | Fixed in v3.12.7. Run python scripts/detect-drive-mcp.py to verify the autodetect can see your MCP |
| Quality score below 5.0 | Content flagged for human review -- check topic complexity, source availability, and brand profile completeness |
| Pipeline taking too long | Normal: 20-30 min for articles. batch-process queues many pieces unattended (sequential, checkpointed) — it survives interruption, it does not run them concurrently |
Documentation references
| Guide | What it covers |
|---|---|
docs/USER-GUIDE.md | Comprehensive end-to-end guide |
CHANGELOG.md | Full version history (the canonical record of what's in your install) |
CONNECTORS.md | Connector categories and setup paths |
.mcp.json.connectors-reference | The opt-in connector catalog -- copy entries into .mcp.json to enable them (shipped .mcp.json is empty by design) |
docs/MODEL-CURATOR.md | Model registry, aliases, and refresh workflow |
config/brand-registry-template.json | Brand profile JSON template |
Output formatting rules
- Render in clean, scannable tables and code blocks
- Always quote
versionand counts from the JSON, never from this file - Match each user invocation argument to its section above; the help body contains only instructions, not pre-rendered output
- If
scripts/plugin-metadata.pyfails to run (e.g. Python not available), fall back to: "Live metadata script could not run. Plugin version is in .claude-plugin/plugin.json; skill list is in skills/; command list is in commands/." Do not invent numbers in the fallback either.
What this skill explicitly avoids
- Quoting version numbers from this file body
- Quoting count strings ("13 agents", "19 skills") from this file body
- Listing slash commands manually -- always derived from the JSON
- Personalized advice for any specific user (this skill is for everyone)
- Stale references to deprecated skill names (always use the names from JSON)