Kpi dashboard weekly
Skill megandmartin/agent-skills-repo/skills/business-ops/kpi-dashboard-weekly
75 production-grade agent skills for Hermes Agent + Paperclip — research, write, organize, earn, and run an AI workforce. Every skill passes a QA gate with hard safety rails. Built by Gen AI Hub.
npx -y skills add megandmartin/agent-skills-repo --skill kpi-dashboard-weeklyAssembled from the repository path, not quoted from the project. Check it against their README if it does not work.
2 things to look at
- 13 days oldThe repository was created 13 days ago. New is not bad, but a brand new repository carrying a familiar-sounding name is the shape a typosquat arrives in, and there has been no time for anyone else to find a problem with it.
- 0 stars0 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
Compiles a Monday-morning KPI snapshot from a local metrics.csv — week-over-week deltas, traffic-light status against targets, and one concrete action per red metric. Use when the user says "KPI snapshot", "how are the numbers", "weekly metrics", "dashboard update", or on the scheduled Monday run. Don't use for revenue-only deep dives — use weekly-revenue-report — or for personal reflection — use weekly-review.
The file declares its own license as MIT. That is the author’s claim about this one file, and it is not the same thing as the license GitHub reports for the repository, which is listed with the other numbers below.
SKILL.md
5.8 KB, ~1.3k tokens by cl100k_base, as published. Nobody here has run it
KPI Dashboard Weekly
Every Monday at 08:00, reads the business's metrics.csv and answers three questions in one screen: what moved week-over-week, what's red against target, and what one action fixes each red. The standard: numbers computed by python3 from the actual file — never estimated — and every red metric leaves with exactly one owner-ready action, not a paragraph of concern.
When to Use
- The scheduled Monday blueprint fires ("Compile my weekly KPI snapshot").
- User asks "how are the numbers", "KPI check", "are we on track".
- Adding a new metric or target to the tracked set.
- Not for: Stripe/revenue forensic detail — use
weekly-revenue-report. Not for reconciling payments — usepayment-reconciliation. Not for personal weekly reflection — useweekly-review.
Quick Reference
| Action | Command / Call |
|---|---|
| Find the file | ls the business folder for metrics.csv |
| Inspect columns | head -3 metrics.csv |
| Expected header | date,metric,value,target (one row per metric per week) |
| Compute deltas | python3 stdlib script (Procedure step 3) — csv module, no pandas |
| Status rule | 🟢 ≥100% of target · 🟡 85–99% · 🔴 <85% (or missing data) |
| Archive snapshot | append output to kpi-history.md |
Procedure
-
Precheck — confirm
metrics.csvexists andhead -3shows thedate,metric,value,targetheader. If the file is missing or the header differs, report exactly what was found, propose the expected schema, and stop — never invent numbers to fill a dashboard. -
Freshness check — the latest
datein the file should be within the last 8 days. If the newest rows are stale, the snapshot still runs but opens with "⚠️ Data last updated {date} — this snapshot reflects that week." -
Compute — run with python3 stdlib (adjust path):
python3 - <<'EOF' import csv, collections rows = list(csv.DictReader(open('metrics.csv'))) by_metric = collections.defaultdict(list) for r in rows: by_metric[r['metric']].append(r) for m, rs in sorted(by_metric.items()): rs.sort(key=lambda r: r['date']) cur, prev = rs[-1], (rs[-2] if len(rs) > 1 else None) v, t = float(cur['value']), float(cur['target'] or 0) delta = (v - float(prev['value'])) / float(prev['value']) * 100 if prev and float(prev['value']) else None pct = v / t * 100 if t else None status = 'GREEN' if pct and pct >= 100 else 'YELLOW' if pct and pct >= 85 else 'RED' print(f"{m}: {v:g} (target {t:g}, {pct:.0f}% -> {status})" + (f" WoW {delta:+.1f}%" if delta is not None else " WoW n/a")) EOFSuccess: one line per metric with value, %-to-target, status, and WoW delta. A
ValueErrormeans a non-numeric cell — find it withgrep -nand report the bad row instead of skipping it silently. -
One action per red — for each 🔴, write exactly one specific, this-week action tied to the lever that moves that metric (e.g., "Leads red at 60% → run the
cold-outreach-sequencerbatch Tuesday"). No red leaves the report actionless; no red gets three actions. -
Deliver + archive — format per the template (greens get one line total — attention goes to reds), append the snapshot to
kpi-history.md, and lead with the single most important sentence of the week.
Output Template
# KPI Snapshot — Week of {Mon date}
**Headline:** {one sentence — the thing that matters most this week}
| Metric | This wk | WoW | Target | Status |
|---|---|---|---|---|
| {metric} | {value} | {+/-x%} | {target} ({pct}%) | 🔴/🟡/🟢 |
## 🔴 Reds → this week's actions
- **{Metric}** ({pct}% of target): {one action, one owner, one deadline}
## 🟡 Watch
- {metric}: {one line}
🟢 On track: {comma-separated list}.
Data through {latest date in csv}.
Pitfalls
- Missing week treated as zero — a metric with no row this week shows as a catastrophic drop. Recovery: distinguish "no data" from 0; missing rows get status 🔴 with the action "log the number", and WoW shows "n/a", not −100%.
- Numbers hallucinated when the CSV is malformed — the dashboard must always come from the script's stdout. Recovery: if python3 errored, the report says so and shows the offending row; a partially computed dashboard is labeled partial.
- Delta computed against the wrong week — unsorted dates (or mixed formats like
7/14vs2026-07-14) scramble prev/current. Recovery: the script sorts by date string — enforce ISOYYYY-MM-DDin the file; if mixed formats appear, normalize them first and tell the user. - Report balloons into analysis soup — Monday morning gets 90 seconds. Recovery: greens are one line, the headline is one sentence, and each red gets exactly one action; cut everything else.
Verification
- Every number in the table appears verbatim in the python3 output — nothing typed from memory
- Status colors match the 100/85 rule for every metric
- Each 🔴 has exactly one action with an owner and a deadline
- Data-freshness line present; stale data flagged at the top
- Snapshot appended to
kpi-history.md
Gives 0 of the 12 instructions most analytics metrics skills give in ~1.3k tokens
Counted across 368 of the 369 authors here whose files we hold, read 2026-08-06
- read product marketing context before asking questionsin 18 of 368, across 12 files
- use lowercase with underscores for event namesin 16 of 368, across 6 files
- track events for decisions not vanity metricsin 15 of 368, across 5 files
- use object-action format for event namesin 15 of 368, across 8 files
- produce a tracking plan documentin 14 of 368, across 4 files
- Call RUBE_SEARCH_TOOLS first to get current schemasin 13 of 368, across 2 files
- establish consistent event naming conventions before implementingin 10 of 368, across 4 files
- Verify dimension and metric compatibility before reportingin 9 of 368, across 2 files
- Encrypt data at rest and in transitin 9 of 368, across 3 files
- use snake_case for event namesin 9 of 368, across 5 files
- monitor technical health during the testin 9 of 368, across 5 files
- use consistent property namesin 8 of 368, across 4 files
Said here and by no other author read
- assign traffic-light status against target percentages
- assign one owner-ready action per red metric
- lead the report with the most important sentence
- append the snapshot to the history file
- report the exact bad row on a value error
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.