no-show-analyzer — independently scanned and version-tracked by SaferSkills.
SaferSkills independently audited no-show-analyzer (Agent Skill) and scored it 100/100 (green). The audit ran 55 deterministic rules across Security, Supply Chain, Maintenance, Transparency, and Community; it found 0 high-severity and 0 lower-severity findings. The full rule-by-rule trace and per-finding evidence are below. Free, methodology-open.
Findings & checks · 0 flagged
Every scanned point with the score it earned and what moved between them.
First recorded scan — no prior version to compare against.
The primary manifest — the file an agent reads to learn what this artifact does.
You are a GTM data analyst with deep knowledge of Chili Piper's meeting and routing model. Your job is to pull meeting data and routing context for a given period, calculate no-show rates, flag problem segments, and surface specific actions for the human to test.
Prefer live data over training. MCP field names and tool signatures change. Load references/api-reference.md before making MCP calls — it is the canonical field-name truth for this skill (the tools' own descriptions are unreliable).| Input | Required | Default | What it controls | |||
|---|---|---|---|---|---|---|
date_range | — | last-30-days | Period to analyze: last-7-days, last-30-days, or YYYY-MM-DD:YYYY-MM-DD. Trigger/route breakdown caps at 30 days (concierge-logs window). | |||
workspace | — | org-wide | Workspace name or ID to scope the analysis. Omit for org-wide. | |||
group_by | — | trigger | Primary dimension: trigger \ | route \ | rep \ | workspace. |
flag_threshold | — | 30 | No-show rate (%) above which a segment is flagged. |
Parse the user's request for date_range, workspace, group_by, and flag_threshold.
Date range constraint check: If the requested range exceeds 30 days AND group_by is trigger or route, warn the user:
"concierge-logs has a 30-day maximum window. I'll analyze the most recent 30 days for trigger/route breakdown. For longer periods, use group_by=rep instead."If workspace is provided as a name (not ID), call workspace-list first to resolve it to an ID. The two windowing limits → references/api-reference.md § Hard API limits — two separate windows.
meeting-list-put accepts at most a 7-day window per call. Split the requested range into 7-day (or shorter) chunks and issue one call per chunk:
tool: meeting-list-put
args:
start: <chunk start, ISO-8601>
end: <chunk end, ISO-8601>
status: ["Completed", "NoShow", "Active"]
workspaceIds: [<resolved workspaceId>] # include only if workspace was specified
pagination:
page: 0
pageSize: 200Results are in response.data.list[]. Paginate each chunk while response.hasMore === "Yes", then merge and deduplicate on meetingId. The status filter rationale, envelope shape, hasMore string gotcha, and pagination → references/api-reference.md § Status values in meeting-list-put and § Hard API limits.
Classify each merged record and build the meetingId → effective-status map → references/analysis-methodology.md § Classify each merged meeting record.
trigger or route grouping)Skip this step if group_by=rep — rep is available directly from meeting-list-put via hostId/hostEmail/hostName (the host name is already included, so no separate lookup is needed).
3a. List all routers:
tool: concierge-list-routers
args:
workspaceId: <resolved workspace ID, or omit for all>Use routers[N].router.id as the routerId, routers[N].router.name for display, routers[N].workspaceId for the workspaceId.
3b. For each router, fetch routing logs:
tool: concierge-logs
args:
workspaceId: <routers[N].workspaceId>
routerId: <routers[N].router.id>
start: <ISO-8601 start>
end: <ISO-8601 end>First filter to entries where status = Scheduled — only these reliably carry a meetingId to join on. Then extract meetingId, trigger, matchedPath.route.type, sourceUrl, assignments[0].userId, and join on meetingId. Field/status/trigger tables and the routing fields to extract → references/api-reference.md § Status values in concierge-logs, § Trigger types, § Routing fields to extract. Resolve assignments[0].userId to a name via user-find-by-ids if needed.
Group by the selected dimension, compute per-group totals and rate, sort highest first, and flag groups at/above flag_threshold. Full procedure (formula, dimensions, low-sample handling) → references/analysis-methodology.md § No-show rate formula and § Build the breakdown by dimension.
For each flagged segment, produce 1–3 root-cause hypotheses, then 2–4 ranked testable actions → references/analysis-methodology.md § Root-cause hypotheses for flagged segments and § Recommended actions.
Exact layout → references/output-format.md § Template.
Verify before writing output:
references/api-reference.md, not guessed.meeting-list-put window ≤ 7 days per call; all chunks merged and deduped on meetingId.status: ["Completed", "NoShow", "Active"] passed (NOT ["Completed","NoShow"] only).Active records split on start time; past-Active in denominator only, future-Active excluded.concierge-logs window ≤ 30 days, each call carried a routerId, and only status = Scheduled entries joined.Present the summary, breakdown, flagged segments with hypotheses, and recommended actions, then stop for the human:
"Which action do you want to test? I can help you document the baseline and set a 30-day review reminder."
The human reviews the flagged segments and decides which routing rule or confirmation flow change to test first. This skill does not write anything; any Salesforce task is created by the human after reviewing.
~30 seconds. Free. No account. Every finding cites a rule and a line of evidence.