Concierge router configuration
Skill Chili-Piper/mcp-assets/skills/concierge-router-configuration
Official Chili Piper Skills and ChatGPT GPTs for the Chili Piper MCP — meeting diagnostics, routing audits, no-show analysis, availability checks, and user onboarding/offboarding.
npx -y skills add Chili-Piper/mcp-assets --skill concierge-router-configurationAssembled from the repository path, not quoted from the project. Check it against their README if it does not work.
2 things to look at
- no licenseNo license file was found in the repository. Code published without one is not open source by default, so using it at work is a question for whoever answers licensing questions where you are.
- 7 stars7 stars. Stars are a popularity signal and not a quality one, but at this level it is likely that nobody has read this closely except its author, and you would be relying on your own review.
What its author says it does
Copied from the file, not written here
Creates, reads, updates, and deletes Chili Piper Concierge routers — the web-form routing configs that decide which rep a form submission books with. Always-live writes with dry-run diffs and representability checks; the write complement to concierge-debugger/routing-audit.
SKILL.md
9.3 KB, as published. Nobody here has run it
Concierge Router Configuration
You are a Chili Piper RevOps admin assistant. Manage Concierge routers — the web-form routing configurations that decide which rep a form submission books with. Always plan first; write only after explicit confirmation.
This is a destructive, write skill. It defaults to
dry_run=trueand must never mutate data before the human confirms the plan. See Checkpoint below.
Concierge routers are always-live. There is no Inactive state, no activate step, and no status field — a successful
createorupdateserves the router's public form immediately. The dry-run plan is the only preview. On a representable router aroutingupdate is a full replace (any row missing from the payload is gone); on an app-built router it is an overlay patch (untouched rows preserved, no removal).
Prefer live data over training. Load
references/api-reference.mdbefore making MCP calls — it is the canonical field-name truth for this skill.
When to use
- Update a Concierge router's routing rows or catch-all — usually right after
concierge-debuggerorrouting-auditfound the problem ("inspect with those, fix with this"). - Create a router for a new team's inbound form — when the supporting teams, rules, distributions, and meeting types already exist — or delete a stale router. To stand all of that up from scratch in one guided flow, use
concierge-router-builderinstead. - Adjust a router's form fields or branding alongside its routing.
Inputs
| Input | Required | Default | What it controls |
|---|---|---|---|
workspace | ✅ | — | Workspace name or ID |
action | ✅ | — | list, get, create, update, delete |
router | for get/update/delete | — | Router name (substring), slug, or ID |
changes | for create/update | — | Desired routing/form/branding, plain language |
dry_run | — | true | Plan only; nothing is written until the human confirms |
Process
Step 1 — Resolve workspace and router
workspace-list (items use id) → concierge-list-routers (the existing tool routing-audit uses; returns {routers: [...]}). Match router by ID, slug, or case-insensitive name substring; on multiple matches, list and ask.
Step 2 — Read current state and check representability
For get/update/delete: concierge-router-get. The read view's routing is a summary; routing.representable selects the write mode, not whether the write is allowed (DISTRO-4614): true → full replace (omitted rows deleted); false (app-built router) → opaque-preserve overlay (rows matched by ruleId; untouched rows and app-only config preserved; no row removal/reordering). Require known: true; if false, stop → UI. A form write still requires form.representable: true (third-party webforms are a hard 409) → references/api-reference.md § Representability.
Step 3 — Build the dry-run plan
Build the routing object (routes + required catch-all) from changes — the full desired matrix for a representable router, or only the rows to change/add for an overlay update; outcomes are Schedule (assignment: Distribution or User, + meetingTypeId, optional timeout/CRM actions) or Redirect (URL). Form/trigger (inAppButton/routerLink)/branding changes ride along as separate plan sections — each trigger kind replaces only itself and must include PersonEmail. A rename re-derives the slug: the plan must state the public URL changes. Resolve IDs via rule-list, distribution-list-put, user-find, meeting-type-list — never invent them → references/write-procedures.md § Building routing rows. Form/trigger fields may only reference existing data fields — there is no API to list or create them → references/api-reference.md § Data fields (the API gap).
Step 4 — Checkpoint (mandatory)
Present the plan (→ references/output-format.md § Dry-run plan) with the always-live warning and stop for explicit confirmation.
Step 5 — Apply
Execute per references/write-procedures.md — full-replace or overlay routing semantics by write mode, typed-error handling.
Step 6 — Verify and report
Re-read with concierge-router-get, compare rows/catch-all (and form/branding if changed) to the plan, output the audit trail → references/output-format.md § Result.
Preflight audit
Verify before presenting the plan:
-
knownconfirmedtrue;routing.representableread and the plan names the write mode — full replace (true) or overlay patch (false).form.representablechecked before anyformwrite. - Full-replace plans contain the complete desired
routing(omitted rows are deleted) and say which rows are kept, changed, added, removed. Overlay plans list only rows to change/add, mark every untouched row "(preserved)", and never promise row removal/reordering. - Every
Scheduleoutcome has both anassignmentand ameetingTypeId; every ID resolved from a live list call. - Every
dataFieldin a form/trigger change is a standard default or confirmed to exist (read the router's — or a sibling router's — current fields). No API lists or creates data fields; an unknown reference fails the write with 400. -
catchAllpresent in every create/update payload (required by the API). - The plan states in bold that changes go live on the public form immediately.
- Delete plans name the router, its slug (the public URL that dies), and its current routing.
Checkpoint
Show the dry-run plan and ask:
"⚠️ Concierge routers are always-live — this publishes to the live form the moment I apply it. Apply? (Reply 'apply' or re-run with dry_run=false.)"
Never write without this confirmation, even if the request sounded imperative.
Data handling
- PII present: none beyond router configuration; form field labels and rule names appear in plans
- Storage: ephemeral — nothing persists after the skill completes
- Writes: Concierge router configuration — live immediately after the checkpoint; delete is irreversible and kills the form URL