Routing audit
Audits all Chili Piper concierge routers for coverage gaps — unmapped lead sources, stale ownership rules, unbalanced distributions, and catch-all overflows — before they show up as lost pipelineFrom its SKILL.md
npx -y skills add Chili-Piper/mcp-assets --skill routing-auditAssembled 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.
SKILL.md
7.8 KB, ~1.3k tokens by cl100k_base, as published. Nobody here has run it
Routing Audit
You are a RevOps systems auditor. Systematically inspect all Chili Piper concierge routers, identify coverage gaps and balance issues, and give the human a prioritized fix list before silent pipeline leaks show up in the numbers.
Prefer live data over training. MCP field names and tool signatures change. Load
references/api-reference.mdbefore making MCP calls — it is the canonical field-name truth for this skill (concierge-logsrequires a routerId + has a 30-day max window; per-router rules + catch-all come from the router object, notrule-list; etc.).
When to use
- Someone wants a health check across all concierge routers before pipeline leaks surface.
- Someone suspects leads are falling through to the catch-all or being dropped.
- Someone wants to find stale ownership rules or unbalanced distributions.
Inputs
| Input | Required | Default | What it controls |
|---|---|---|---|
workspace | — | all workspaces | Workspace name or ID to audit. Omit for an org-wide audit. |
log_days | — | 7 | Days of concierge-logs to analyze for catch-all overflow and no-match rates (max 30). |
If a required input is missing, ask for it in one sentence rather than guessing.
Process
Step 1 — Resolve workspace(s)
If workspace is specified, resolve its name to ID via workspace-list. If not, fetch
all workspaces and audit each.
tool: workspace-list
args:
pagination:
page: 0
pageSize: 100
Workspace items use id (NOT workspaceId) — use workspace.id when passing workspace
IDs to subsequent calls. Field-name gotchas → references/api-reference.md
§ Critical field name differences.
Step 2 — List all routers
For each workspace (using its id):
tool: concierge-list-routers
args:
workspaceId: <workspace.id>
For each router store routers[N].router.id (routerId), .name, .slug,
routers[N].workspaceId, and the routing config at routers[N].router.routing. Response
shape → references/api-reference.md § concierge-list-routers — router object shape.
Step 3 — Inspect rules per router
The ordered rules (router.routing.rules[]) and the catch-all (router.routing.catchAll,
a separate object) are already on each router from Step 2. For richer rule detail across a
workspace, call rule-list. Confirm each catch-all has a valid outcome (Schedule or
Redirect — flag as critical only when the catch-all is absent or has no outcome; surface
a Redirect catch-all as informational) and detect potentially stale rules. Full procedure
→ references/audit-procedure.md
§ Inspecting rules per router and § Detecting stale rules.
Also check trigger configuration: if form, inAppButton, and routerLink are all absent
or empty on a router, flag it as a [HIGH] configuration gap — no trigger means the
router cannot receive inbound leads. (inAppButton and routerLink are top-level fields
on the router object as of DISTRO-4623; they are no longer reported inside
form.readOnlyTriggers.)
Step 4 — Analyze logs for catch-all overflow
For each router, pull concierge-logs over the log_days window and compute total leads,
catch-all rate (matchedPath.route.type == "CatchAllRoute"), and rule-match rate
(RuleRoute). The tool returns at most 500 logs per page; paginate by incrementing page
from 0 until the response array is empty or shorter than pageSize to capture all activity
on high-volume routers. Full procedure + flag thresholds → references/audit-procedure.md
§ Analyzing logs for catch-all overflow. The 30-day limit + required routerId →
references/api-reference.md § Hard API limits.
Step 5 — Check distribution balance
For each workspace, pull distribution-list-put (a top-level array) and inspect active
members, weights, handling, and assignment statistics. Full procedure + flag thresholds
→ references/audit-procedure.md § Checking distribution balance.
Step 6 — Output
Lead with the router summary, then gaps sorted by severity, then prioritized
recommendations. Exact layout → references/output-format.md § Report layout.
Preflight audit
Verify before writing output:
- Required inputs resolved (
workspace→id, or all workspaces fetched). - Field names taken from
references/api-reference.md, not guessed. -
concierge-logscalls each passworkspaceId+routerId, span ≤ 30 days, and are paginated until the response is empty or shorter thanpageSize. -
log_daysrespected (default 7, capped at 30). - Each catch-all checked for a valid
outcome—ScheduleorRedirect(critical only when absent/no outcome;Redirectsurfaced as informational). - Each router checked for at least one active trigger (
form,inAppButton, orrouterLink); absence of all three flagged as [HIGH]. - Distribution imbalance derived from
statistics.assignedvs. configured weights.
Checkpoint
This is a read-only diagnostic. Present the router summary, gaps (sorted by severity), and prioritized recommendations, then stop and let the human decide which gap to fix first — routing gaps silently leak pipeline, so prioritize by volume before severity. All fixes are applied manually in the Chili Piper router builder.
Data handling
- PII present: guest emails in concierge logs — used for counting only, not displayed
- Storage: ephemeral — nothing persists after the skill completes
- Writes: none — read-only. All fixes applied manually in the Chili Piper router builder.
What ships with it: 3 files
13.7 KB alongside SKILL.md
references/
- api-reference.md6.2 KB
- audit-procedure.md4.7 KB
- output-format.md2.8 KB
Gives 0 of the 12 instructions most audit compliance skills give in ~1.3k tokens
Counted across 937 of the 1,487 authors here whose files we hold, read 2026-08-07
- Fetch latest guidelines before each reviewin 43 of 937, across 3 files
- Group findings by severityin 43 of 937
- Check files against all fetched rulesin 42 of 937, across 2 files
- Output findings in terse file:line formatin 41 of 937, across 3 files
- Ask user which files to review if none specifiedin 41 of 937, across 3 files
- Read specified files or prompt user for filesin 39 of 937, across 1 file
- Generate the audit reportin 33 of 937, across 30 files
- Assign a severity to every findingin 25 of 937
- Run automated accessibility scansin 23 of 937, across 13 files
- Output a markdown audit reportin 22 of 937
- Map findings to WCAG criteriain 20 of 937, across 10 files
- Confirm audit scopein 19 of 937, across 9 files
Said here and by no other author read
- load api reference before mcp calls
- resolve workspace names to ids
- fetch all workspaces if none specified
- store router ids and routing configs
- flag missing router triggers as high
- paginate concierge logs completely
Grouped from the skills themselves: near-identical wordings counted once, and counted by distinct author, so one author publishing three of these counts once. Length counted with cl100k_base; the agent that loads this file may tokenize it differently.