$npx -y skills add indranilbanerjee/digital-marketing-pro --skill cowork-setupOne-shot setup that wires Digital Marketing Pro for team usage in Anthropic Cowork. Verifies the Cowork sandbox, checks for a Google Drive integration, creates the canonical Drive folder layout, and confirms team-ready brand-state routing. Use this the first time a Cowork user in
| 1 | # /digital-marketing-pro:cowork-setup |
| 2 | |
| 3 | The one-time setup that makes Digital Marketing Pro persistent in Cowork by a team. Wires up the Cowork → Drive routing so brand profiles, campaign plans, audit reports, and run records survive past the end of the current Cowork session. |
| 4 | |
| 5 | ## Why this skill exists |
| 6 | |
| 7 | Cowork is the friendliest Anthropic surface for marketers — agency teams, in-house marketers, growth ops — who don't live in a terminal. The natural team workflow is "everyone uses Cowork; brand state and outputs live in our shared Drive". But DMP's filesystem layer was designed for local Claude Code (writes to `~/.claude-marketing/` on the host machine). In Cowork that path is the per-session Linux sandbox — vanishes at session end, invisible to the team. |
| 8 | |
| 9 | **`${CLAUDE_PLUGIN_DATA}` does not help here either.** Anthropic's plugin docs describe it as the persistent per-plugin storage path. In Cowork it resolves to a session-scoped VM mount that disappears the same way (open: [claude-code#51398](https://github.com/anthropics/claude-code/issues/51398)). Every OAuth-backed MCP plugin hits the same wall. |
| 10 | |
| 11 | v3.12.0 fixed this with environment-aware routing: when Cowork is detected AND a Drive MCP is configured, brand profiles and reports round-trip through Drive instead of the ephemeral sandbox. This skill is the one-shot setup that ensures both conditions are true before you start producing real work. |
| 12 | |
| 13 | ## Behavior |
| 14 | |
| 15 | ### Step 1 — Verify Cowork environment |
| 16 | |
| 17 | ```bash |
| 18 | python "${CLAUDE_PLUGIN_ROOT}/scripts/plugin-metadata.py" --section environment |
| 19 | ``` |
| 20 | |
| 21 | Parse the JSON. Three branches: |
| 22 | |
| 23 | **`environment == "cowork-sandbox"`** — Proceed to Step 2. |
| 24 | |
| 25 | **`environment == "claude-code-windows"` / `"-mac"` / `"-linux"`** — Tell the user: |
| 26 | |
| 27 | > "You're running in local Claude Code, not Cowork. The Cowork-specific Drive routing isn't needed here — brand state at `~/.claude-marketing/` persists on your host as designed. If you ALSO want Drive backups for team sharing, you can run this skill anyway and it'll mirror state to Drive as a backup. Want to proceed?" |
| 28 | |
| 29 | Only proceed if the user confirms. |
| 30 | |
| 31 | **`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 the most likely case). |
| 32 | |
| 33 | ### Step 2 — Verify a Drive MCP is connected |
| 34 | |
| 35 | Scan your available tools for any Google Drive MCP. Common signatures: |
| 36 | |
| 37 | - `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) |
| 38 | - `mcp__pipedream-google-drive__*` — Pipedream aggregator |
| 39 | - `mcp__composio-google-drive__*` — Composio |
| 40 | - `mcp__zapier-google-drive__*` — Zapier |
| 41 | - Any tool whose name combines "drive" with "create" / "upload" / "search" |
| 42 | |
| 43 | **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. |
| 44 | |
| 45 | **If NO Drive MCP is found:** stop the wizard with a clear message: |
| 46 | |
| 47 | > "Cowork-mode DMP needs a Google Drive integration before it can persist brand state for your team. Easiest setup (60 seconds): |
| 48 | > |
| 49 | > 1. In Cowork, click your profile menu → **Settings** → **Integrations** |
| 50 | > 2. Find **Google Drive** in the list → click **Connect** |
| 51 | > 3. Sign in with the Google account that owns your team's shared Drive |
| 52 | > 4. Come back here and re-run `/digital-marketing-pro:cowork-setup` |
| 53 | > |
| 54 | > Alternative: a Notion MCP also works as a persistence target — DMP will treat each brand as a Notion page. If you'd prefer that route, add Notion to your Cowork Integrations panel and re-run this skill." |
| 55 | |
| 56 | ### Step 3 — Verify or create the canonical Drive folder |
| 57 | |
| 58 | Default folder name: `DigitalMarketingPro` (under "My Drive" or wherever the user prefers). If `--drive-root <name>` was passed, use that instead. |
| 59 | |
| 60 | Use the Drive MCP to: |
| 61 | |
| 62 | 1. Search for a top-level folder named `DigitalMarketingPro` (or the user's `--drive-root`) |
| 63 | 2. If it exists, confirm the user wants to use it. Show its URL. |
| 64 | 3. If it doesn't exist, create it. Show the URL of the new folder. |
| 65 | |
| 66 | Then create the subfolder skeleton: |
| 67 | |
| 68 | ``` |
| 69 | DigitalMarketingPro/ |
| 70 | ├── _brands/ <- brand profile JSONs persist here per brand |
| 71 | ├── _runs/ <- per-run checkpoints (resume across sessions) |
| 72 | ├── _plans/ <- yearly + quarterly + campaign plans |
| 73 | └── (brand folders created on first content/audit/campaign run) |
| 74 | └── <brand name>/ |
| 75 | ├── strategy/ |
| 76 | ├── s |