cowork-setup
One-shot setup that wires Digital Marketing Pro for team use in Anthropic Cowork — verifies the sandbox via plugin-metadata.py, checks a Google Drive MCP is connected, creates the canonical Drive folder skeleton (_brands/, _runs/, _plans/), and writes the routing config via drive-sync-state.py so br…
Install / Use
npx skills add indranilbanerjee/digital-marketing-pro --skill cowork-setupInstalls into whichever agent you are using.
SKILL.md
Installable skill definition
Quality Score
Category
MarketingSupported Platforms
Our assessment of cowork-setup
cowork-setup scores 91/100 on our quality scale, 198th of 610 Marketing skills we index (top 33%).
Its SKILL.md is 11 KB long, well organised into 12 sections with 6 code examples: a thorough specification that gives an agent plenty to work with.
It has 832 GitHub stars, a meaningful sign that others use it.
Maintenance, license and trust
- The repository was last updated 26 days ago, so cowork-setup is actively maintained.
- It is released under the MIT license, a permissive license that allows use, modification and commercial use with attribution.
- Its trust signals score 100/100, with no cautions. These come from repository metadata, not a code audit — read the skill file before letting an agent act on it.
cowork-setup compared with similar skills
All 4 of these similar skills score higher than cowork-setup; compare them before choosing.
| Skill | Score | Stars | Updated | Format |
|---|---|---|---|---|
| cowork-setup (this skill)by indranilbanerjee | 91 | 832 | 26d ago | SKILL.md |
| Agent-Reachby Panniantong | 100 | 90.1k | 18d ago | CLAUDE.md |
| headroomby headroomlabs-ai | 100 | 74.4k | today | CLAUDE.md |
| CowAgentby zhayujie | 100 | 47.2k | today | CLAUDE.md |
| Scraplingby D4Vinci | 100 | 85.6k | today | MCP Server |
Frequently asked questions
- How do I install cowork-setup?
- Run
npx skills add indranilbanerjee/digital-marketing-pro --skill cowork-setup. The install tabs above show the steps for each supported agent. - Which AI agents does cowork-setup work with?
- It is written for Universal, as a SKILL.md file. Other agents that read the same format can often use it too.
- Is cowork-setup safe to use?
- It is MIT-licensed and scores 100/100 on trust signals. Skills are instructions an agent will follow, so read the file before installing it and do not approve commands you do not understand.
- Is cowork-setup still maintained?
- The repository was last updated 26 days ago, so cowork-setup is actively maintained.
Skill content
View source on GitHubname: cowork-setup description: "One-shot setup that wires Digital Marketing Pro for team use in Anthropic Cowork — verifies the sandbox via plugin-metadata.py, checks a Google Drive MCP is connected, creates the canonical Drive folder skeleton (_brands/, _runs/, _plans/), and writes the routing config via drive-sync-state.py so brand profiles, plans, and run checkpoints persist across sessions. Triggers on "/digital-marketing-pro:cowork-setup", "set up DMP for my team in Cowork", "brand profiles aren't persisting between sessions", "route outputs to our shared Drive", "first-time Cowork install". Run once per team; in local Claude Code it only offers optional Drive mirroring. Pairs with /digital-marketing-pro:brand-setup next and /digital-marketing-pro:doctor to verify routing." argument-hint: "[--brand <name>] [--drive-root <folder-name>]" effort: low
/digital-marketing-pro:cowork-setup
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.
Run it the first time a team installs DMP in Cowork, when brand profiles stop persisting across Cowork sessions, or when switching to a different team's Drive root folder. Examples: /digital-marketing-pro:cowork-setup, ... --brand acme, ... --drive-root "ACME DigitalMarketingPro".
Why this skill exists
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.
${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). Every OAuth-backed MCP plugin hits the same wall.
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.
Behavior
Step 1 — Verify Cowork environment
python "${CLAUDE_PLUGIN_ROOT}/scripts/plugin-metadata.py" --section environment
Parse the JSON. Three branches:
environment == "cowork-sandbox" — Proceed to Step 2.
environment == "claude-code-windows" / "-mac" / "-linux" — Tell the user:
"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?"
Only proceed if the user confirms.
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).
Step 2 — Verify a Drive MCP is connected
Scan your available tools for any Google Drive MCP. Common signatures:
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)mcp__pipedream-google-drive__*— Pipedream aggregatormcp__composio-google-drive__*— Composiomcp__zapier-google-drive__*— Zapier- Any tool whose name combines "drive" with "create" / "upload" / "search"
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.
If NO Drive MCP is found: stop the wizard with a clear message:
"Cowork-mode DMP needs a Google Drive integration before it can persist brand state for your team. Easiest setup (60 seconds):
- In Cowork, click your profile menu → Settings → Integrations
- Find Google Drive in the list → click Connect
- Sign in with the Google account that owns your team's shared Drive
- Come back here and re-run
/digital-marketing-pro:cowork-setupAlternative: 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."
Step 3 — Verify or create the canonical Drive folder
Default folder name: DigitalMarketingPro (under "My Drive" or wherever the user prefers). If --drive-root <name> was passed, use that instead.
Use the Drive MCP to:
- Search for a top-level folder named
DigitalMarketingPro(or the user's--drive-root) - If it exists, confirm the user wants to use it. Show its URL.
- If it doesn't exist, create it. Show the URL of the new folder.
Then create the subfolder skeleton:
DigitalMarketingPro/
├── _brands/ <- brand profile JSONs persist here per brand
├── _runs/ <- per-run checkpoints (resume across sessions)
├── _plans/ <- yearly + quarterly + campaign plans
└── (brand folders created on first content/audit/campaign run)
└── <brand name>/
├── strategy/
├── seo/
├── campaigns/
├── audits/
└── reports/
Don't create empty brand subfolders yet — those auto-create during the first run for that brand. Just _brands/, _runs/, and _plans/ need to exist.
Step 4 — Store the Drive root reference + team namespace
Multi-team isolation: ask the user "what's your team's Drive root folder name?" (default: DigitalMarketingPro). Different teams use different folder names → automatic namespace isolation. Examples:
- Solo / small team:
DigitalMarketingPro(default) - Agency named "ACME":
ACME DigitalMarketingPro - Two distinct teams sharing one Drive: each picks their own name
Then write the config via the canonical script (NOT a hand-written JSON file — use the script so the format stays in sync with the rest of the toolchain):
python "${CLAUDE_PLUGIN_ROOT}/scripts/drive-sync-state.py" --action write-config --data '{
"environment": "cowork-sandbox",
"drive_root_folder_name": "<team folder name chosen>",
"drive_root_folder_id": "<id from Step 3>",
"drive_root_folder_url": "<webViewLink from Step 3>",
"drive_mcp_tool_prefix": "<prefix detected in Step 2, e.g. mcp__abc123__>"
}'
The script writes to ~/.claude-marketing/_cowork-config.json and adds a configured_at timestamp automatically.
Future Cowork sessions: every DMP operation (brand-setup, status, seo-audit, campaign-plan, etc.) reads this config first. If it exists AND the Drive folder still exists, all I/O routes to that root. If a different team picked a different folder name, their config lives at the same path but points elsewhere — no collision.
To verify it was written correctly:
python "${CLAUDE_PLUGIN_ROOT}/scripts/drive-sync-state.py" --action read-config
Step 5 — Set the user's expectations
Show a clean summary:
Digital Marketing Pro is now wired for Cowork team usage:
Environment: Cowork sandbox (Linux)
Drive integration: <name>
Output root in Drive: My Drive/<folder name> (link)
Config saved at: ~/.claude-marketing/_cowork-config.json
What this means in practice:
- /digital-marketing-pro:brand-setup -> profile lands in
Drive/<folder>/_brands/<brand-slug>/profile.json (persists across sessions)
- /digital-marketing-pro:campaign-plan -> plan lands in
Drive/<folder>/<brand>/campaigns/<YYYY-MM>/<slug>/PLAN.md
- /digital-marketing-pro:seo-audit -> audit + intermediates land in
Drive/<folder>/<brand>/audits/<date>/
- /digital-marketing-pro:status -> reads brand state from Drive first,
falls back to local sandbox if Drive call fails
- /digital-marketing-pro:resume -> picks up an interrupted run by
pulling its checkpoint files from Drive/<folder>/_runs/
Your team accesses everything via Google Drive directly. No
Cowork-specific paths to remember.
Next step:
/digital-marketing-pro:brand-setup "Your Brand Name"
Step 6 — Optional: kick off a brand setup
If --brand <name> was passed, automatically launch /digital-marketing-pro:brand-setup "<name>" after the summary. This makes the very first run "one command, fully set up."
How the Cowork-aware skills use this config
When the routing is configured, brand-setup writes locally to ~/.claude-marketing/brands/{brand-slug}/profile.json AND records a pending Drive upload via drive-sync-state.py --action add-pending-upload. The agent then reads the pending list and uses its Drive MCP to push the file to <root>/_brands/{brand}/profile.json. On a future Cowork session, the agent reverses this: it reads _cowork-config.json, sees the team's Drive root, downloads <root>/_brands/{brand}/profile.json to the local sandbox, and marks it profile-mark-downloaded so the local hash matches the Drive copy.
Concretely: after every state-mutating DMP operation, the agent runs:
python "${CLAUDE_PLUGIN_ROOT}/scripts/drive-sync-state.py" --action profile-needs-upload --brand <brand>
If needs_upload: true, the agent uses its Drive MCP to upload the file and then runs --action profile-mark-uploaded with the Drive file ID returned by the MCP.
What this skill does NOT do
- It does not change DMP's behavior in local Claude Code (where host filesystem is fine).
- It does not migrate existing local-mode brands to Drive. To do that after the fact: re-run
/digital-marketing-pro:brand-setup "<brand>"in Cowork after this skill finishes — the brand-setup skill will upload the local profile to Drive. - It does not create a service-account JSON. Cowork-mode uses the MCP path exclusively (no Google Cloud setup needed).
- It does not check whether your Drive has enough space. Brand profiles + plans are tiny (<100KB typical), so this is rarely a concern, but flag it if you hit a quota error during a real run.
- It does not replace the local fallback — if a Drive call fails for any reason, DMP still writes locally and re-queues the upload.
See also
/digital-marketing-pro:status— confirm Cowork+Drive is detected after setup/digital-marketing-pro:brand-setup— actual brand setup (now Drive-default in Cowork)/digital-marketing-pro:doctor— per-action readiness check (now reports Cowork+Drive routing too)scripts/plugin-metadata.py --section environment— the underlying probe- README "Cowork team usage" section — canonical doc for which surface to use
Related Skills
Agent-Reach
90.1kGive your AI agent eyes to see the entire internet. Read & search Twitter, Reddit, YouTube, GitHub, Bilibili, XiaoHongShu — one CLI, zero API fees.
headroom
74.4kCompress tool outputs, logs, files, and RAG chunks before they reach the LLM. 20% fewer tokens for coding agents, 60-95% fewer tokens for JSON, same answers. Library, proxy, MCP server.
CowAgent
47.2kOpen-source personal AI assistant & Agent Harness. Plans tasks, runs tools and skills, self-evolves with memory and knowledge. Multi-agent, multi-model, multi-channel. Lightweight, extensible, one-line install.
Scrapling
85.6k🕷️ An adaptive Web Scraping framework that handles everything from a single request to a full-scale crawl! Don't be shy, join here: https://discord.gg/EMgGbDceNQ and follow here for daily tips and tricks: https://x.com/Scrapling_dev
Languages
Trust signals
From repository metadata: license, adoption, age and documentation. Not a code audit — see the Safety scan above for what the skill file itself contains.
