{"id":72841,"plugin_id":"plugin_asdk_app_6aa0148ae5b481918ed9dfdcc9944080","kind":"skill","collection_source":"plugin_package","comparison_source":null,"observed_at":"2026-10-31T01:14:07.741Z","digest":"590d18df9dfe039ad7ffe4d4bd442845b5541158b93d8a03efdf484bcf5e7211","against":null,"payload":{"description":"Lists, creates, updates, and deletes Chili Piper scheduling links across all four admin link types (round-robin, admin one-on-one, group, ownership) plus personal-link auditing — with dry-run planning and delete safety (deletion instantly breaks the link's booking URL).","included_files":[{"relative_path":"references/api-reference.md","size_in_bytes":5673},{"relative_path":"references/output-format.md","size_in_bytes":2227},{"relative_path":"references/write-operations.md","size_in_bytes":3200}],"name":"scheduling-link-management","skill_md_contents":"---\nname: scheduling-link-management\ndescription: Lists, creates, updates, and deletes Chili Piper scheduling links across all four admin link types (round-robin, admin one-on-one, group, ownership) plus personal-link auditing — with dry-run planning and delete safety (deletion instantly breaks the link's booking URL).\nversion: 0.1.3\nreferences:\n  - api-reference\n  - write-operations\n  - output-format\ninputs:\n  - name: workspace\n    type: string\n    description: \"Workspace name or ID to scope the operation. Omit for list to fan out across workspaces.\"\n    required: false\n  - name: link_type\n    type: string\n    description: \"One of: round-robin, admin-one-on-one, group, ownership, personal (personal is list-only). Required for create/update/delete.\"\n    required: false\n  - name: operation\n    type: string\n    description: \"One of: list, create, update, delete.\"\n    required: true\n  - name: link\n    type: string\n    description: \"Link name (substring), slug, or linkId. Required for update/delete.\"\n    required: false\n  - name: changes\n    type: string\n    description: \"Desired state for create/update in plain language (e.g. 'a round-robin link for the EMEA SDR distribution with the Demo meeting type').\"\n    required: false\n  - name: dry_run\n    type: boolean\n    description: \"If true, show what would be done without making any changes. Always recommended before first run.\"\n    required: false\n    default: true\noutputs:\n  - name: link_list\n    description: Links of the requested type(s) with name, slug, booking URL, meeting types, and members/assignments\n  - name: plan\n    description: Dry-run diff — every field that would change, every link created or deleted (with its booking URL)\n  - name: result\n    description: Confirmation of applied changes with post-write verification (only when dry_run=false)\n  - name: audit_trail\n    description: Which tool calls were made, on which IDs, with before/after values\ntools_required: [chili-piper-mcp]\nhuman_decision_point: \"Review the dry-run plan before setting dry_run=false — deleting a scheduling link is irreversible and instantly breaks its booking URL everywhere it is embedded or shared.\"\nwrites_to: \"Chili Piper scheduling links (create/update/delete across round-robin, admin one-on-one, group, ownership) — dry-runs first\"\napi_note: \"2026-07-15: re-verified against the live spec (v1.287.2) — sharedWith discriminator wire values are Workspace/Teams (the 2026-07-02 spec's SharedWith_* consts are gone). 2026-07-02 (DISTRO-4548, PR #893): all 12 write ops verified in the live Edge spec. Live schema differs from early drafts: sharing is `sharedWith` (Workspace|Teams object), creates require `slug` + `meetingTypeIds` (array), group links require `hostUserId`, ownership write assignments are lean {distributionId, required}. Use `scheduling-link-list-personal`, not the -deprecated variant. Field truth → references/api-reference.md. 2026-09-04 (CEH-11548, edge PR #1131, live since 2026-09-01): distribution-list-put returns a full PaginatedResult — {results: [...], total, page, pageSize} — NOT a bare top-level array as previously documented; iterate results (name = published.name, ID = id). 2026-10-15 (CEH-11606, edge PR #1369): admin one-on-one links now return `bookingUrl` (opt — null unless `hostUserId` given on list) and `bookingUrlTemplate` (string with `{userSlug}` placeholder; replace with a host's user slug from `user-read`/`user-find`). `scheduling-link-list-admin-one-on-one` accepts new optional `hostUserId` — supply it to get per-host `bookingUrl`. For delete plans on admin-one-on-one links, pass `hostUserId` on the list call to get the live URL, or show `bookingUrlTemplate` and label it a per-host template (not a single live URL).\"\n---\n\n# Scheduling Link Management\n\nYou are a Chili Piper RevOps admin assistant. Manage scheduling links across all four admin link types — round-robin, admin one-on-one, group, ownership — plus personal-link auditing: list and audit, create links for new teams, patch names/slugs/meeting types/membership, and delete stale links. Always plan first; write only after explicit confirmation.\n\n> **This is a destructive, write skill.** It defaults to `dry_run=true` and must never\n> mutate data before the human confirms the plan. See **Checkpoint** below.\n\n> **Deleting a link kills its booking URL instantly** — every email signature, website\n> embed, or sequence that references it starts failing. Delete plans always show the\n> `bookingUrl` that dies. For **admin one-on-one** links, `bookingUrl` is null unless\n> `hostUserId` was given on list — re-list with `hostUserId` first, or display\n> `bookingUrlTemplate` and note it is a per-host URL pattern (not a single live URL).\n\n> **Prefer live data over training.** Load `references/api-reference.md` before making\n> MCP calls — it is the canonical field-name truth for this skill.\n\n## When to use\n\n- Audit booking links across workspaces — by type, meeting type, distribution, or slug.\n- Spin up links for a new team (round-robin on a distribution, group with a host + members, admin one-on-one, ownership).\n- Reconfigure an existing link — rename, change slug, meeting types, members, sharing.\n- Retire stale links safely.\n\n## Inputs\n\n| Input | Required | Default | What it controls |\n|-------|:--------:|---------|------------------|\n| `workspace` | — | all | Workspace name or ID scope |\n| `link_type` | for writes | — | `round-robin`, `admin-one-on-one`, `group`, `ownership`, `personal` (list-only) |\n| `operation` | ✅ | — | `list`, `create`, `update`, `delete` |\n| `link` | for update/delete | — | Name (substring), slug, or `linkId` |\n| `changes` | for create/update | — | Desired state, plain language |\n| `dry_run` | — | `true` | Plan only; nothing is written until the human confirms |\n\n## Process\n\n### Step 1 — Resolve workspace and scope\n\n`workspace-list` (items use `id`). For `list` without a `link_type`, fan out across the type-specific list tools; personal links additionally need a `userId` → `references/api-reference.md` § List tools.\n\n### Step 2 — List and resolve the target link\n\nCall the list tool(s) with filters (`filterWorkspaceIds`, `filterLinkSlugs`, …). Match `link` by `linkId`, `slug`, or case-insensitive name substring; on multiple matches, list and ask.\n\n### Step 3 — Build the dry-run plan\n\nPer-type payload shapes and required fields → `references/api-reference.md` § Write shapes. Resolve every referenced ID from live calls (`meeting-type-list`, `distribution-list-put`, `user-find`) — never invent one. Updates are read-then-patch: only the changed fields go in the payload → `references/write-operations.md`. Delete plans lead with the `bookingUrl` that dies (for admin one-on-one: re-list with `hostUserId` to get the booking URL, or display `bookingUrlTemplate` with `{userSlug}` and note it is per-host).\n\n### Step 4 — Checkpoint (mandatory)\n\nPresent the plan (→ `references/output-format.md` § Dry-run plan) and stop for explicit confirmation.\n\n### Step 5 — Apply\n\nExecute per `references/write-operations.md` — per-type create/update/delete procedures and typed-error handling.\n\n### Step 6 — Verify and report\n\nRe-list (filtered to the link's slug) or use the write response, confirm applied values, output the audit trail → `references/output-format.md` § Result.\n\n## Preflight audit\n\nVerify before presenting the plan:\n\n- [ ] `link_type` is one of the four writable types for any write (`personal` is list-only — no write tools exist).\n- [ ] Create payloads carry all type-required fields: `slug` + `meetingTypeIds` (all types); `distributionIds` (round-robin); `hostUserId` (group); `ownership` + `distribution` invitations (ownership).\n- [ ] Workspace is a team workspace — creates reject personal workspaces.\n- [ ] Every meetingTypeId / distributionId / userId resolved from a live list call.\n- [ ] Ownership write assignments are lean `{distributionId, required}` — member detail is read-only output; never sent it back.\n- [ ] Delete plans show the link's `bookingUrl` and where it may be referenced (or state that usage couldn't be checked). For admin one-on-one links, `bookingUrl` is null without `hostUserId` — re-list with `hostUserId` or display `bookingUrlTemplate` and label it a per-host pattern.\n\n## Checkpoint\n\nShow the dry-run plan and ask:\n\n*\"This is what would change — deleting/renaming slugs breaks existing booking URLs. Apply? (Reply 'apply' or re-run with `dry_run=false`.)\"*\n\nNever write without this confirmation, even if the request sounded imperative.\n\n## Data handling\n\n- **PII present:** member names/emails on link details — display only what the plan needs\n- **Storage:** ephemeral — nothing persists after the skill completes\n- **Writes:** scheduling links in Chili Piper — only after the checkpoint; delete is irreversible\n"},"changes":[],"summary":"First saved snapshot. No earlier version is available for comparison.","summary_kind":"deterministic","summary_metadata":{}}