Help us improve
Share bugs, ideas, or general feedback.
From monday CRM
Creates Monday.com CRM workspaces from plain-language business descriptions. Guides users through board structure proposal, confirmation, and automated creation with groups, columns, and optional seed data.
npx claudepluginhub mondaycom/mcp --plugin monday-crmHow this skill is triggered — by the user, by Claude, or both
Slash command
/monday-crm:workspace-builder [optional: business description, e.g. 'window coverings, B2C, ~50 leads/month'][optional: business description, e.g. 'window coverings, B2C, ~50 leads/month']This skill is limited to the following tools:
The summary Claude sees in its skill listing — used to decide when to auto-load this skill
Sets up a CRM workspace conversationally — turning "I don't know how to start" into a working board on day 1. Replaces the manual template-pick → column-rename → column-add → group-rename loop that gates 442 median days between CRM install and first MCP execution. **This is the single highest-leverage retention skill in the catalog.**
Reads monday.com deals board, ranks deals by activity and stall age, and publishes a timestamped Morning Briefing update inside monday.com.
Automates Monday.com boards, items, columns, groups, subitems, and updates via Rube MCP (Composio). Useful for programmatic project management workflows.
Defines, runs, and manages multi-step GTM workflows with human-in-the-loop execution. Use for automating outbound processes like research, qualification, and outreach.
Share bugs, ideas, or general feedback.
Sets up a CRM workspace conversationally — turning "I don't know how to start" into a working board on day 1. Replaces the manual template-pick → column-rename → column-add → group-rename loop that gates 442 median days between CRM install and first MCP execution. This is the single highest-leverage retention skill in the catalog.
Flow: Trigger → Discover → Propose → Confirm → Build (α) → Seed (β, opt-in) → Handoff.
CRM Setup — <Mon DD> doc summarizes what was created and what's next, with Generated by Claude · <ISO timestamp> + <!-- claude-skill-id: workspace-builder --> in the body.Source = Claude on a status column (auto-create the column with user confirm if missing) — no [Example] prefix on names.create_automation_rule, not yet shipped). The setup doc includes a deep-link to the in-product Automation Recipes UI for that step.get_user_context — resolve user + existing workspaces.list_workspaces / workspace_info — find a target workspace.search — confirm we aren't duplicating an existing CRM board.create_workspace — only if the user explicitly wants a new workspace.create_board — the core write.create_group — pipeline stages as groups (or as status labels — see Step 4).create_column — typed columns per the proposed schema.create_item — β seed items.create_doc — publish the setup summary doc.all_monday_api — escape hatch for column settings (status labels, number units) not exposed by wrapped tools./monday-crm:morning-briefing to start the daily-ops loop./monday-crm:board-diagnosis for a fill-rate audit.Goal: Fail fast if the monday MCP connection is missing.
mcp__monday__get_user_context.user.id, user.name, default workspace.PAUSE: do not write any
create_*call before Step 5, and never before Step 0 passes.
create_* call before executing.If undeclared, assume Default.
Hard safety rail regardless of mode: no deletes (boards, columns, items), no amount-column writes, no cross-workspace moves, no overwriting an existing same-named board, no modifying columns on boards the user didn't ask us to touch, no board creates outside the user-confirmed workspace.
Goal: Get enough signal to propose a board shape without forcing the user into a taxonomy. The whole skill exists to bypass the "where do I start" paralysis — surfacing internal labels like "B2B sales" or "Outbound" defeats that.
AskUserQuestion-style prompt:
"Tell me about your business — industry, what you sell, who you sell to, roughly how many deals/leads you track. One or two sentences."Hard cap: 2 questions. Anything beyond that defeats the skill.
Goal: Translate the free-text description into a concrete board proposal. Internal mapping uses an archetype taxonomy as scaffolding — the user never sees the archetype label.
| Signals in description | Internal archetype | Default board shape |
|---|---|---|
| Long sales cycle, account/stakeholder language ("contracts", "buyers", "procurement"), deal sizes >$1K | B2B sales | Single Deals board, pipeline as groups, rich columns |
| High volume / short cycle / consumer-facing ("orders", "customers", "products", e-commerce, retail) | B2C transactional | Orders + Customers (two boards), pipeline as status column |
| Project / hourly / engagement language ("clients", "retainers", "billable", "projects") | Services | Engagements + Clients, pipeline as groups, effort/hours columns |
| Outbound / lead-gen / top-of-funnel ("SDR", "cold outreach", "leads", "ICP") | Outbound | Leads + Deals (two-board funnel), status on Leads, groups on Deals |
| Mixed / unclear / industry-specific (recruiting, real estate, law firm, etc.) | Custom | Compose from primitives (see below) — don't force a fit |
When the description doesn't fit cleanly, compose the board structure from primitives rather than forcing an archetype:
Candidates for recruiting, Listings for real estate, Matters for a law firm) — name reflects the user's own language.Candidates + Roles, Listings + Buyers).Present a complete, named board structure as a markdown table. Use the user's own terminology wherever possible (if they said "matters", call the board "Matters" not "Cases"). Skip any internal archetype label.
For each proposed board:
Stage (status), Owner (people), Value (numbers, $), Last touch (date)).Then ask: "Build this as-is, change anything before building, or describe your business differently?"
Hard rule: no writes until the user confirms.
Goal: Land in the right workspace without cluttering Main.
get_user_context, list workspaces the user can write to.AskUserQuestion with workspace names + option "create a new one".create_workspace({ name: "<user input or default 'CRM'>", kind: "open" }) after confirming.create_board, search for existing boards in this workspace whose names match the proposed names (case-insensitive). If found:
<name>. (a) Skip this board, (b) Create alongside as <name> 2, (c) Cancel and pick a different workspace?"Goal: Execute the confirmed structure with idempotency, in a deterministic order.
For each proposed board:
create_board({ boardName: "<name>", workspaceId, boardKind: "public" | "private" }) — default public unless user said otherwise. Cache returned boardId.all_monday_api (change_simple_column_value doesn't apply to groups; use the group mutation), then create_group for the rest, ORall_monday_api mutation delete_group and create_group cleanly. (Default mode confirms before delete.)create_column({ boardId, columnType: <type>, title: <title>, defaults: <settings> }). For status columns, pass labels via defaults; for numbers columns, pass unit.symbol.create_*, mirror to chat: "Created column Owner (people) on Deals.". Default mode confirms before each call; Silent runs through; Proactive (a) runs through, (b) confirms each, (c) skips seed step.Before the first create_board call, print a single batched confirm:
"I'll create board(s) with columns total in workspace <workspace>. Proceed? (yes / no / show plan again)."
Per-call confirmation only kicks in for delete operations (group deletes) — never for creates inside a confirmed plan. Spamming the user with N confirms defeats the skill.
Goal: Show the shape with data — empty boards are intimidating.
Only runs if mode = Proactive (option a) OR user explicitly opted in at Step 5 confirm.
For each created board, create_item for 5 example items distributed across the proposed groups/stages, with realistic but obviously-fake values:
Acme Corp — Q3 expansion, Beta Industries — pilot deal (clearly fictional but no prefix pollution).Source = Claude on a status column. The board was just created in Step 5 with this column included by default — Step 6 just sets the value. If for any reason the column wasn't created, prompt once: "Add a Source column so we can flag the example items? (yes / skip — keeps the items unflagged)".Cap at 5 items per board, hard. The Source = Claude flag supports a clean cleanup loop later — user filters by source, deletes the examples manually once they have real data.
Goal: Leave a navigable summary so the user knows what was created and where to go next.
create_doc in the user's workspace, title CRM Setup — <Mon DD>, <YYYY>. Body:
# CRM Setup — <Mon DD>
<!-- claude-skill-id: workspace-builder -->
## What was created
### Board: <Name>
- Workspace: <workspace>
- URL: <board url>
- Groups: <list>
- Columns: <list with types>
(Repeat per board.)
## Example items
<count> example items added per board, flagged `Source = Claude` on a status column. Filter by that source value to find and remove the examples once you've added real data.
## What's next
1. **Add your real deals.** Replace the examples or add fresh items.
2. **Try the morning briefing.** Once you have 5+ deals with stages set, run `/monday-crm:morning-briefing`.
3. **Set up automations.** Open the Automation Center on each board to wire status changes, due-date reminders, and lead routing — these aren't part of this skill yet (coming in v0.2).
4. **Audit hygiene later.** After 30 days, run `/monday-crm:board-diagnosis` for a fill-rate audit.
---
Generated by Claude · <ISO timestamp> · re-run `/monday-crm:workspace-builder` only if you want to scaffold an additional CRM (won't touch this one).
Idempotency: before creating, search same-day docs by title + the <!-- claude-skill-id: workspace-builder --> comment. If found, append-only update (never overwrite earlier content; this protects against repeat runs blowing away an earlier session's record).
If at least one board was created and the user is in Default/Proactive mode, print:
"Want to try the morning briefing now? Once you add a few real deals it'll prioritize your day. Run /monday-crm:morning-briefing whenever you're ready."
Silent mode skips this prompt.
Created <N> board(s), <M> columns, <K> seed items. Doc: <url>.<!-- claude-skill-id: workspace-builder --> comment + Generated by Claude footer in body for findability + idempotency.Source = Claude on every seed item via a status column. No [Example] prefix.| Failure | Behavior |
|---|---|
| Connector not installed | Step 0 stops; print install link. |
| No writable workspace | Step 4 stops; print: "You don't have write access to any workspace. Ask a workspace admin, then re-run." |
| Board name collision | Step 4 idempotency prompt; never overwrite. |
create_board fails (perms) | Stop and surface error verbatim — don't continue creating columns into a non-existent board. |
create_column fails on a column | Skip that column, log to chat, continue with the rest, list skipped in Step 9 summary. |
create_group fails | Skip; the board still works with default groups; flag in summary. |
| 429 rate limit | Backoff 3x (1s, 2s, 4s); on third fail, halt and print: "monday is rate-limiting; retry in 60s." |
| User halts mid-build | Keep writes up to halt point; Step 7 setup doc reflects partial state. |
| Setup doc create fails | Print the doc body in chat with banner "Couldn't publish the setup doc — copy the summary below." |
Source = Claude on a status column (or the user explicitly skipped the source-column step).<!-- claude-skill-id: workspace-builder --> + Generated by Claude footer) or printed to chat on failure.