Install
$ agentstack add skill-indranilbanerjee-contentforge-cf-help ✓ scanned · ✓ verified, works with Claude Code, Cursor, and more.
Security review
✓ PassedNo issues found. Passed automated security review. · v0.1.0 How review works →
- ✓ Prompt-injection patterns
- ✓ Secret / credential exfiltration
- ✓ Dangerous shell & filesystem operations
- ✓ Untrusted network calls
- ✓ Known-malicious package signatures
What it can access
- ✓ Network access No
- ✓ Filesystem access No
- ✓ Shell / process execution No
- ✓ Environment & secrets No
- ✓ Dynamic code execution No
From automated source analysis of v0.1.0. “Used” means the capability is present in the source — more access means more to trust, not that it’s unsafe.
Verified badge
Passed review? Show it. Paste this badge into your README, it links to the public security report.
Reliability & compatibility
Declared compatibility
Compatibility is declared by the source manifest. End-to-end runtime verification is coming, see below.
We're building live execution health for every listing: tool-call success rate, median latency, uptime, and last-checked timestamps, measured, not self-reported. It isn't live yet, so we don't show numbers we can't stand behind.
How agent discovery & health will work →About
/contentforge: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 strings like "Version: 3.8.0" / "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 /contentforge:help shows 3.8.0").
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:
Agents: | Skills: | Commands: | Scripts:
Connectors: HTTP + npx available
( currently active in your .mcp.json)
Cowork-compatible: (HTTP only — npx connectors don't run in Cowork)
Environment:
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
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//profile.json
Method 3: Google Drive Knowledge Vault
-> Create a Drive folder: /
-> 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. Use batch-process from a Google Sheet for parallel runs |
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 | | 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)
Source & license
This open-source skill is cataloged on AgentStack and links to its original source — we do not rehost the code.
- Author: indranilbanerjee
- Source: indranilbanerjee/contentforge
- License: MIT
- Homepage: https://indranil.in
Install and usage instructions live in the source repository linked above.
Reviews
No reviews yet, be the first.
Write a review
Versions
- v0.1.0 Imported from the upstream source.