weekly-metrics-story-writer — independently scanned and version-tracked by SaferSkills.
SaferSkills independently audited weekly-metrics-story-writer (Agent Skill) and scored it 96/100 (green). The audit ran 55 deterministic rules across Security, Supply Chain, Maintenance, Transparency, and Community; it found 0 high-severity and 1 lower-severity findings. The full rule-by-rule trace and per-finding evidence are below. Free, methodology-open.
Findings & checks · 1 flagged
The text {match} tells the agent to skip the normal "ask the user first" gate. Used adversarially it removes the human-in-the-loop check before destructive or sensitive actions, turning a normally-gated agent into a fire-and-forget executor.
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.
Transform raw dashboard numbers into a polished weekly narrative for stakeholders. Paste your metrics (as text or from a file) plus a line of context, and receive a copy-paste-ready email or Slack post — no writing from scratch, no blank page.
Input:
.md file path in CoworkOutput:
Detect the user's language from their message:
Apply the detected language to all user-facing output: questions, labels, section headers, and the final narrative. Do not mix languages within a single output block.
"Paste your weekly metrics here — any format works (table, list, CSV, or plain numbers). I'll handle the rest."
"No metrics provided. Please paste your numbers to get started."
After receiving metrics, check what context is available. Ask only the questions whose answers are missing:
Combine all missing questions into one message. Do not ask sequentially.
If the user skips context entirely: use both for format, mixed for audience, and omit the Events section.
Extract from the user's input:
Tolerance rules:
Accept any reasonable format: markdown tables, Metric: value pairs, CSV rows, prose ("DAU was 12k last week, now 14k").
For each metric, assign a signal:
Sort metrics by signal importance: negative first (attention needed), then positive (wins), then neutral.
Generate the narrative based on audience and format.
#### Email format (Leadership)
Subject: Weekly Metrics Update — Week of [DATE]
[1–2 sentence executive summary: the main signal of the week in plain language]
**Key Numbers**
[3–5 metrics: name · value · delta · one-line explanation]
**What to Watch**
[1–2 metrics with anomalies, misses, or contradictions worth flagging]
**Context**
[Business events that explain the numbers — only if provided by user]Rules:
#### Slack format (Team)
:bar_chart: *Weekly Metrics — [DATE]*
[1 sentence: the main signal]
*Highlights*
• [metric]: [value] ([delta]) — [one-line explanation]
• [metric]: [value] ([delta]) — [one-line explanation]
*Watch This*
• [metric]: [explanation of anomaly or trend]
[Optional: 1-line call to action or question for the team]Rules:
*bold*, • bullets, :emoji: markersBoth: Generate email first, then Slack, separated by ---.
After the narrative, append a compact signal block for the user's own notes:
---
*Signal summary:*
🟢 [metric] · 🔴 [metric] · 🟡 [metric]Include all metrics not already called out in the main narrative.
| # | Condition | Behavior |
|---|---|---|
| EC1 | Only one metric provided | Generate a short narrative; add note: "Consider adding more metrics for a complete story next time." |
| EC2 | No delta for any metric | Generate without trend analysis; add note: "No prior period data — comparisons skipped." |
| EC3 | Contradictory signals (e.g., MAU up, Revenue down) | Flag the contradiction explicitly in "What to Watch" with a suggested explanation framing |
| EC4 | Audience not specified after one ask | Default to both formats silently |
| EC5 | 10+ metrics provided | Process all; highlight top 5 by signal strength in narrative; include the rest in signal summary only |
| EC6 | User provides screenshot description or image alt-text | Respond: "Please paste the numbers as text — I can't read image content." |
| EC7 | User requests a specific tone (formal / casual) | Apply that tone throughout without asking for confirmation |
Structure: Conversational exchange → one or two formatted blocks (email / Slack) → signal summary.
Copy-paste ready: No [brackets] or placeholder text in the final output. All dates, metric names, and values must be filled in from the user's data.
Do not include:
~30 seconds. Free. No account. Every finding cites a rule and a line of evidence.