distribution-analysis — independently scanned and version-tracked by SaferSkills.
SaferSkills independently audited distribution-analysis (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 RevOps analyst. Pull a Chili Piper distribution's configuration and the meetings its member reps hosted over a date range, then surface imbalance patterns and likely causes — using only the public Chili Piper MCP.
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.Scope & honesty. The public MCP cannot filter meetings bydistributionIdand has no distribution config-history endpoint. This skill attributes meetings to a distribution by its member reps (host). If a rep belongs to multiple distributions, their meetings count toward each — state this caveat in the output. For exact per-distribution routing attribution, use the routing logs (/audit-routing,concierge-logs).
| Input | Required | Default | What it controls |
|---|---|---|---|
workspace | ✅ | — | Workspace name or ID containing the distribution. |
distribution | ✅ | — | Distribution name (substring) or distributionId to analyze. |
start_date | ✅ | — | Start of range, inclusive (e.g. 2026-05-01). |
end_date | ✅ | — | End of range, exclusive (e.g. 2026-06-01 = through May 31). |
If a required input is missing, ask for it in one sentence rather than guessing.
If workspace is a name, call workspace-list and match on name; use its id.
tool: workspace-list
args:
pagination:
page: 0
pageSize: 100tool: distribution-list-put
args:
workspaceIds: [<workspace.id>]
name: <distribution> # omit if you were given a distributionId; filter the array insteadExtract name, active members, weights, handling/algorithm, capping, and per-member period statistics from the matching item; derive the per-rep ideal number. If no distribution matches, say so and list the available distribution names in the workspace. Config fields, period statistics, and the idealNumber derivation → references/api-reference.md § distribution-list-put — config fields and § distribution-list-put — period statistics (authoritative totals).
Collect the active member userIds and resolve them to names/emails:
tool: user-find-by-ids
args:
userIds: [<userId>, <userId>, ...]Build a userId → name map for display. Never show raw user IDs in the final output.
meeting-list-put has a 7-day maximum window. Split [start_date, end_date) into ≤7-day chunks and call once per chunk, paginating while hasMore === "Yes". Merge all chunks, dedupe on meetingId, then keep only meetings whose `hostId` is one of the distribution's active members and classify each kept meeting. Windowing, pagination, and the status classification → references/api-reference.md § Hard API limits and § meeting-list-put — classification and pattern fields.
Use two complementary sources.
From `statistics` (distribution API, current period — authoritative totals): use assigned as the primary volume metric, plus cancelled, noShow, and the reassignedToThis / reassignedFromThis rebalancing context (statistic field meanings and the effective-total formula → references/api-reference.md § distribution-list-put — period statistics (authoritative totals)).
Derived from statistics:
(userWeight / totalWeight) × totalAssigned — the fair-share target for each rep given their configured weightassigned ÷ median rep's assignedassigned / totalAssigned to their weight / totalWeight. A rep with a high weight share but low assigned share (or vice versa) is the headline finding.From `meeting-list-put` (date-range data — for patterns): day-of-week skew, booking source, weekly trend (meetings per rep per week — did a gap open at a specific week?), and cancellation breakdown. Which fields carry these patterns → references/api-reference.md § meeting-list-put — classification and pattern fields.
Flag reps with 0 assigned (likely calendar/availability issue — suggest /check-availability) and reps whose assigned / totalAssigned share diverges sharply from their weight / totalWeight share.
Lead with the config + rep breakdown, then patterns, then recommendations. Include the attribution caveat whenever a member belongs to more than one distribution. Exact layout → references/output-format.md.
Verify before writing output:
workspace → id, distribution → matching item).references/api-reference.md, not guessed.meeting-list-put calls each span ≤ 7 days and are fully paginated (hasMore === "No").hostIds and deduped on meetingId.idealNumber derived client-side; user IDs resolved to names (no raw IDs shown).This is a read-only diagnostic. Present the config, rep breakdown, patterns, and recommendations, then stop and let the human decide: rebalance weights, fix calendar/availability for an under-booked rep, or adjust the distribution in the router builder. Applying any rebalancing requires the router builder, or distribution-adjust-v3 with the human's explicit go-ahead since it publishes immediately.
distribution-adjust-v3 only with explicit human approval (it publishes immediately).~30 seconds. Free. No account. Every finding cites a rule and a line of evidence.