$npx -y skills add indranilbanerjee/contentforge --skill cf-cowork-setupOne-shot setup that wires ContentForge for team usage in Anthropic Cowork. Verifies Cowork environment, checks for a Google Drive integration, creates the canonical Drive folder layout, and confirms the team-ready output routing. Use this the first time a Cowork user installs Con
| 1 | # /contentforge:cf-cowork-setup |
| 2 | |
| 3 | The one-time setup that makes ContentForge usable in Cowork by a team. Wires up the Cowork → Drive routing so generated `.docx` files, brand profiles, and run records actually persist somewhere the team can reach. |
| 4 | |
| 5 | ## Why this skill exists |
| 6 | |
| 7 | Cowork is the most user-friendly Anthropic surface for non-CLI users — marketers, content teams, agency staff. The natural team workflow is "everyone uses Cowork; outputs live in our shared Google Drive". But ContentForge's filesystem layer was originally designed for local Claude Code (writes to `~/Documents/ContentForge/` on the host). In Cowork that path is the Linux sandbox — gone at session end, invisible to the team. |
| 8 | |
| 9 | v3.12.9 fixed this with environment-aware routing: when Cowork is detected AND a Drive MCP is configured, the output-manager agent uploads to Drive instead. This skill is the one-shot setup that ensures both conditions are true before you start producing real content. |
| 10 | |
| 11 | ## Behavior |
| 12 | |
| 13 | ### Step 1 — Verify Cowork environment |
| 14 | |
| 15 | ```bash |
| 16 | python scripts/plugin-metadata.py --section environment |
| 17 | ``` |
| 18 | |
| 19 | Parse the JSON. Three branches: |
| 20 | |
| 21 | **`environment == "cowork-sandbox"`** — Proceed to Step 2. |
| 22 | |
| 23 | **`environment == "claude-code-windows"` / `"-mac"` / `"-linux"`** — Tell the user: |
| 24 | |
| 25 | > "You're running in local Claude Code, not Cowork. The Cowork-specific Drive routing isn't needed here — your files will land in `~/Documents/ContentForge/<brand>/` on your host as designed. If you ALSO want Drive backups for team sharing, run `/contentforge:brand-setup` and pick the Google Sheets + Drive backend." |
| 26 | |
| 27 | Don't run the rest of this skill. |
| 28 | |
| 29 | **`environment == "unknown"`** — Show the indicators from the JSON and ask the user where they're running, then proceed assuming Cowork (since unknown-from-Cowork is most likely). |
| 30 | |
| 31 | ### Step 2 — Verify a Drive MCP is connected |
| 32 | |
| 33 | Scan your available tools for any Google Drive MCP. Common signatures: |
| 34 | |
| 35 | - `mcp__<id>__create_file`, `mcp__<id>__read_file_content`, `mcp__<id>__search_files`, `mcp__<id>__list_folder_items` — Anthropic-platform Drive integration (Settings → Integrations → Google Drive in Cowork) |
| 36 | - `mcp__pipedream-google-drive__*` — Pipedream aggregator |
| 37 | - `mcp__composio-google-drive__*` — Composio |
| 38 | - `mcp__zapier-google-drive__*` — Zapier |
| 39 | - Any tool whose name combines "drive" with "create" / "upload" / "search" |
| 40 | |
| 41 | **If a Drive MCP is found:** confirm to the user which one ("Found: Anthropic platform Google Drive integration. I'll use this.") and proceed to Step 3. |
| 42 | |
| 43 | **If NO Drive MCP is found:** stop the wizard with a clear message: |
| 44 | |
| 45 | > "Cowork-mode ContentForge needs a Google Drive integration before it can save files anywhere your team can reach. Easiest setup (60 seconds): |
| 46 | > |
| 47 | > 1. In Cowork, click your profile menu → **Settings** → **Integrations** |
| 48 | > 2. Find **Google Drive** in the list → click **Connect** |
| 49 | > 3. Sign in with the Google account that owns your team's shared Drive |
| 50 | > 4. Come back here and re-run `/contentforge:cf-cowork-setup` |
| 51 | > |
| 52 | > Alternative for teams that prefer Pipedream / Composio / Zapier: add the relevant connector via `/contentforge:cf-add-integration` and re-run." |
| 53 | |
| 54 | ### Step 3 — Verify or create the canonical Drive folder |
| 55 | |
| 56 | Default folder name: `ContentForge` (under "My Drive" or wherever the user prefers). If `--drive-root <name>` was passed, use that instead. |
| 57 | |
| 58 | Use the Drive MCP to: |
| 59 | |
| 60 | 1. Search for a top-level folder named `ContentForge` (or the user's `--drive-root`) |
| 61 | 2. If it exists, confirm the user wants to use it. Show its URL. |
| 62 | 3. If it doesn't exist, create it. Show the URL of the new folder. |
| 63 | |
| 64 | Then create the subfolder skeleton: |
| 65 | |
| 66 | ``` |
| 67 | ContentForge/ |
| 68 | ├── _brands/ <-- brand-profile JSONs persist here per brand |
| 69 | ├── _runs/ <-- per-run checkpoints (resume across sessions) |
| 70 | └── (brand folders created on first content run) |
| 71 | └── <brand name>/ |
| 72 | └── <content type>/ |
| 73 | └── <YYYY-MM>/ |
| 74 | └── <slug>.docx |
| 75 | ``` |
| 76 | |
| 77 | Don't create empty brand subfolders yet — those are auto-created by the output-manager agent during the first content run for that brand. Just `_brands/` and `_runs/` need to exist. |
| 78 | |
| 79 | ### Step 4 — Store the Drive root reference + team namespace (v3.12.10) |
| 80 | |
| 81 | **Multi-team isolation**: ask the user "what's your team's Drive root folder name?" (default: `ContentForge`). Different teams use different folder names → automatic namespace isolation. Examples: |
| 82 | - Solo / small team: `ContentForge` (default) |
| 83 | - Agency named "ACME": `ACME ContentForge` |
| 84 | - Two distinct teams sharing one Drive: each picks thei |