# Cf Help

> Show the ContentForge user guide with live plugin state — version, agent/skill/command counts, connector availability, and runtime environment read from scripts/plugin-metadata.py, never hardcoded — plus pipeline overview, per-skill listings, worked examples, brand-setup methods, and a troubleshooting matrix. Triggers on "/contentforge:cf-help", "how do I use ContentForge", "list the ContentForge skills", "explain the content pipeline", "ContentForge isn't working". Flags route to sections (--pipeline, --skills, --examples, --troubleshoot, --brand), and a Cowork sandbox warning is surfaced automatically when detected. Documentation only — it renders guidance from live metadata and runs no production pipeline.

- Skill: `indranilbanerjee/cf-help` (Agent Skill)
- Install (CLI): `npx skillmds@latest add indranilbanerjee/cf-help`
- Raw SKILL.md: https://api.skillmd.com/api/skills/indranilbanerjee/cf-help/raw
- Safety review: pending
- Works with: Claude Code, Claude.ai, OpenAI Codex
- Category: DevOps & Infra
- Author: indranilbanerjee (https://skillmd.com/u/indranilbanerjee)
- Updated: 2026-09-17
- Page: https://skillmd.com/skills/indranilbanerjee/cf-help

---


# /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):

```bash
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 `version` and 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.py` fails 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 (agent, skill or command counts) 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)

