Help us improve
Share bugs, ideas, or general feedback.
From monday CRM
Builds a Salesforce-style forecast dashboard natively in monday.com using pipeline data grouped by close month and stage, rendered as monday dashboard widgets.
npx claudepluginhub mondaycom/mcp --plugin monday-crmHow this skill is triggered — by the user, by Claude, or both
Slash command
/monday-crm:forecast-dashboard [optional: board name or ID + period, e.g. 'Deals Q2' or '10046221612'][optional: board name or ID + period, e.g. 'Deals Q2' or '10046221612']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
Builds a native monday dashboard that renders the pipeline as a forecast — committed / best-case / pipeline / closed-won, grouped by stage × close month. Replaces the "export to CSV and pivot it" pattern that sales ops leaders do manually every Monday.
Reads monday.com deals board, ranks deals by activity and stall age, and publishes a timestamped Morning Briefing update inside monday.com.
Generates weighted sales forecasts with best/likely/worst scenarios, commit/upside breakdowns, and gap-to-quota analysis from CRM pipeline CSVs or manual deal inputs.
Generates self-contained interactive HTML dashboards with KPI cards, charts, filters, and tables from queries, CSVs, or samples for reports and monitoring.
Share bugs, ideas, or general feedback.
Builds a native monday dashboard that renders the pipeline as a forecast — committed / best-case / pipeline / closed-won, grouped by stage × close month. Replaces the "export to CSV and pivot it" pattern that sales ops leaders do manually every Monday.
Flow: Trigger → Gather → Synthesize → Publish (α, default) → Share (β, opt-in) → Proactive extension (opt-in, hygiene fix).
create_dashboard with widgets per bucket + URL.all_monday_api + create_notification.change_item_column_values (with batched user confirm) to set a placeholder OR post a prompt update asking the owner to fill it. Missing-amount items are flagged in the dashboard description and a hygiene update is posted on the item, but the amount column itself is never written (forecast integrity rail).get_user_context, list_workspaces, search — board resolution.get_board_info, get_column_type_info — schema + column types (stage/amount/close-date/forecast-category).get_board_items_page — paginated pull.board_insights — aggregate fallback.create_dashboard, create_widget — α publish.create_doc — fallback for non-admins (see Error handling).create_notification, list_users_and_teams — β share.create_column — add a forecast-category column only if required to render the dashboard.change_item_column_values — proactive hygiene fix.all_monday_api — escape hatch for dashboard permissions + doc updates./monday-crm:board-diagnosis before publishing.Goal: Fail fast if monday connector is missing.
Call mcp__monday__get_user_context. On success, continue. On connection error / tool not found, print the standard install prompt and stop.
Goal: Know write-confirmation policy AND lock the forecast window.
AskUserQuestion: "Which period? (a) this quarter, (b) next 90 days, (c) custom." Store period_start, period_end.Goal: Land on one (or user-confirmed multi) board. Same resolution path as morning-briefing Step 2. Use mcp__monday__get_user_context → list_workspaces → search("deal").
Goal: Resolve columns by type — stage (status), amount (numbers with $), close date (date with "close"/"expected"), forecast category (status with commit/best-case/pipeline labels, if present).
get_board_info(boardId).get_column_type_info for any ambiguous column.Forecast Category column (Commit / Best-case / Pipeline / Omit). OK?" Only create via create_column in Proactive mode or after explicit user approval.Goal: Paginated pull over the forecast window.
get_board_items_page with filters = close_date in [period_start, period_end]. Paginate via cursor up to 2K items (same cap as morning-briefing). Same 429 / rate-limit handling.
Goal: Group deals into forecast buckets × close month.
Buckets:
is_done: true (won label).Group by close month within the period. Compute Σ amount per (bucket × month).
TODO: see spec §5.2 — sub-buckets (stage detail within each bucket), user segmentation (owner/region filter), formatter for forecast widget types.
Goal: Produce a native monday dashboard with widgets per bucket, not a markdown brief.
TODO: see spec §5.2 Publish (α). Core call pattern:
create_dashboard(workspaceId, name: "Forecast — <period>", description: "Generated by Claude · <ISO timestamp> · <!-- claude-skill-id: forecast-dashboard -->").create_widget(dashboardId, type: "chart" | "number" | "table", data: <aggregated>).Forecast — <period> dashboard whose description contains <!-- claude-skill-id: forecast-dashboard -->. If found, update widgets via dashboard ID instead of duplicating.Non-admin users can't call create_dashboard. On permission error, ask:
I can't create dashboards on this workspace (your account lacks admin rights). Want me to: (a) publish a doc-version with the same forecast (summary tables), (b) stop so you can ask your admin to install the dashboard, or (c) try a different board?
Route to create_doc on option (a).
Goal: Grant dashboard viewer permission + notify.
TODO: see spec §5.2 Share (β):
list_users_and_teams → resolve sales leader.all_monday_api GraphQL mutation to grant viewer permission on the dashboard.create_notification({ userId, itemId: <dashboard ref>, text: "Forecast dashboard for <period>" }).Goal: Fix hygiene gaps on deals blocking forecast accuracy — WITHOUT editing stage or amount.
Hygiene gap = deal in a non-closed stage that's missing either close date or amount.
Core pattern:
change_item_column_values — set a placeholder (e.g., end-of-current-quarter) OR post a prompt update asking the owner to fill it. Stage edits also OK here when a clear signal exists (e.g., user said "move all of these to qualifying"), inside the batched-confirm plan.Forecast hygiene — <period> review doc (with <!-- claude-skill-id: forecast-dashboard --> in body) rather than 20 individual writes.Goal: Summary line with dashboard URL + counts.
Print: Published Forecast — <period>. <N> deals, <N> widgets, <N> hygiene gaps flagged.
Generated by Claude · <ISO timestamp> footer and the embedded <!-- claude-skill-id: forecast-dashboard --> HTML comment in dashboard descriptions and doc bodies.Same table as morning-briefing with additions:
create_dashboard → ask (a) doc version, (b) stop, (c) different board.create_widget partially fails → keep the dashboard, list failed widgets, let user retry.Generated by Claude · <ISO timestamp> + <!-- claude-skill-id: forecast-dashboard -->.