{"id":72839,"plugin_id":"plugin_asdk_app_6aa0148ae5b481918ed9dfdcc9944080","kind":"skill","collection_source":"plugin_package","comparison_source":null,"observed_at":"2026-10-31T01:14:07.687Z","digest":"71d480da1c1a00049c23cb379f79a90445378aa0e1c9b5fa1bbf9e4004c5d43d","against":null,"payload":{"description":"Org-wide meeting volume and health snapshot — total booked, completed, no-show, and cancelled by workspace — for weekly or monthly executive reviews of booking capacity and pipeline coverage","included_files":[{"relative_path":"references/api-reference.md","size_in_bytes":4267},{"relative_path":"references/output-format.md","size_in_bytes":1386}],"name":"org-meeting","skill_md_contents":"---\nname: org-meeting\ndescription: Org-wide meeting volume and health snapshot — total booked, completed, no-show, and cancelled by workspace — for weekly or monthly executive reviews of booking capacity and pipeline coverage\nversion: 0.1.4\nreferences:\n  - api-reference\n  - output-format\ninputs:\n  - name: date_range\n    type: string\n    description: \"Period to analyze: 'last-7-days', 'last-30-days', or 'YYYY-MM-DD:YYYY-MM-DD' (max 7-day window per API call — skill paginates automatically)\"\n    required: false\n    default: \"last-7-days\"\n  - name: group_by\n    type: string\n    description: \"Primary dimension: 'workspace' | 'rep' | 'status'\"\n    required: false\n    default: \"workspace\"\noutputs:\n  - name: org_summary\n    description: Total meetings, completion rate, and no-show rate across the org\n  - name: breakdown\n    description: Meeting volume and health metrics by the selected dimension\n  - name: flags\n    description: Workspaces or reps with significantly above-average no-show rates\ntools_required: [chili-piper-mcp]\nhuman_decision_point: \"Review the breakdown and decide: share with VP Sales/CRO, drill into a flagged workspace with /analyze-no-shows, or check individual reps with /user-meetings\"\nwrites_to: \"Nothing — read-only\"\napi_note: \"2026-07-23: DO-5176 (edge PR #996) added assigneeIds, hostIds, guestEmail, meetingTypeIds as optional server-side filters to meeting-list-put — enables pre-filtering by rep or meeting type before grouping client-side.\"\n---\n\n# Org Meeting Snapshot\n\nYou are a RevOps analyst preparing an executive summary of booking health. Your job is to pull all meetings for a period, calculate org-wide and dimension-level metrics, and flag anything that warrants action before the data reaches leadership.\n\n> **Prefer live data over training.** Chili Piper's field names and tool signatures change. Always load `references/api-reference.md` before making MCP calls — it documents exact field names, status values, hard limits, and known gotchas.\n\n## When to use\n\n- Preparing a weekly or monthly executive review of booking capacity and pipeline coverage.\n- You need org-wide meeting volume and health (booked, completed, no-show, cancelled) at a glance.\n- You want a per-workspace or per-rep breakdown to spot where booking health is degrading.\n\n## Inputs\n\n| Input | Required | Default | What it controls |\n|-------|:--------:|---------|------------------|\n| `date_range` | — | `last-7-days` | Period to analyze: `last-7-days`, `last-30-days`, or `YYYY-MM-DD:YYYY-MM-DD`. Max 7-day window per API call — skill paginates automatically. |\n| `group_by` | — | `workspace` | Primary dimension: `workspace`, `rep`, or `status`. |\n\nIf a required input is missing, ask for it in one sentence rather than guessing.\n\n## Process\n\n### Step 1 — Build the date range chunks\n\nParse `date_range` and split into 7-day (or shorter) chunks. For each chunk call `meeting-list-put` with `status: [\"Completed\", \"NoShow\", \"Active\"]`, paginate, then merge and deduplicate on `meetingId`.\n\nAlways include `\"Active\"` in the status filter — past-Active meetings count in the no-show denominator; future-Active are separated client-side as \"Upcoming\". Exact args, the strict 7-day chunking rule, `hasMore === \"Yes\"` pagination, and the historical-analysis status set → `references/api-reference.md` § meeting-list-put — pagination and chunking and § Hard API limits.\n\n### Step 2 — Resolve workspaces (if group_by=workspace)\n\nCall `workspace-list` and build a map of `id → name`, then join each meeting's `workspaceId` to that `id`. Exact args and the `id`-vs-`workspaceId` gotcha → `references/api-reference.md` § workspace-list — resolving workspace names.\n\n### Step 3 — Calculate org-wide metrics\n\nAcross all meetings, classify by `meetingStatus`. Status meanings and rate treatment (including splitting `Active` on start time vs. now) → `references/api-reference.md` § Meeting status values.\n\n- **Org no-show rate:** `NoShow / (Completed + NoShow + past-Active)`\n- **Completion rate:** `(Completed + past-Active) / (Completed + NoShow + past-Active)`\n\nSurface a caveat when past-Active is a significant share of total (exact wording → `references/output-format.md` § Caveat line).\n\n### Step 4 — Calculate dimension breakdown\n\nGroup by the selected dimension and compute per-group metrics. Group key and name source per dimension → `references/api-reference.md` § Grouping fields by dimension.\n\n- **`workspace`:** group by `workspaceId`, resolve to name, calculate per-workspace metrics.\n- **`rep`:** group by `hostId`, calculate per-rep metrics, sort by meeting volume descending. Names are already present as `hostName`/`hostEmail` — no separate lookup.\n- **`status`:** simple count of each status — useful for a quick executive pie-chart narrative.\n\nFor each group with ≥ 10 meetings, calculate no-show rate. Flag any group where rate > (org average + 10pp) or > 35%.\n\n### Step 5 — Output\n\nExact layout → `references/output-format.md` § Template. Suggested follow-up skills → `references/output-format.md` § Suggested follow-up skills.\n\n## Preflight audit\n\nVerify before writing output. Every line must be a clear pass/fail:\n\n- [ ] `date_range` parsed and split into chunks each strictly < 7 days.\n- [ ] Field names and the status filter taken from `references/api-reference.md`, not guessed.\n- [ ] `\"Active\"` included in the status filter; `Active` meetings split on start time vs. now (past-Active in denominator, not numerator).\n- [ ] All chunks paginated to `hasMore === \"No\"`, merged, and deduplicated on `meetingId`.\n- [ ] Workspaces resolved via `workspace-list` (`id → name`) when `group_by=workspace`.\n- [ ] Past-Active caveat surfaced when it is a significant share of total.\n\n## Checkpoint\n\nRead-only skill: present the org summary, breakdown, and flags, then stop for the human:\n\n*\"Should I send this to the summary view, or drill into any of the flagged groups?\"*\n\nLet the human decide: share with VP Sales/CRO, drill into a flagged workspace with `/analyze-no-shows`, or check individual reps with `/user-meetings`.\n\n## Data handling\n\n- **PII present:** rep emails used for grouping; surfaced in `group_by=rep` breakdown\n- **Storage:** ephemeral — nothing persists after the skill completes\n- **Writes:** none — read-only\n"},"changes":[],"summary":"First saved snapshot. No earlier version is available for comparison.","summary_kind":"deterministic","summary_metadata":{}}