Getting it into your agent
One page per mod, every tool's command on it. A separate URL per tool would split the same page into five that compete with each other.
npx skills add aaronartistzhang-afk/DailyWork --skill metric-change-attributiongit clone --depth 1 https://github.com/aaronartistzhang-afk/DailyWorkWrote this? Show the measurements
A badge with what this costs and how it scanned, read live from this page, so it follows the numbers instead of freezing them. Markdown for a README, HTML for a documentation site or a project page.
[](https://agentmods.dev/skills/aaronartistzhang-afk/dailywork/metric-change-attribution)<a href="https://agentmods.dev/skills/aaronartistzhang-afk/dailywork/metric-change-attribution"><img src="https://agentmods.dev/badge/skills/aaronartistzhang-afk/dailywork/metric-change-attribution/github.svg" alt="Measured on agentmods" height="20"></a>Or the 80×15 button, for a site that already has a row of RSS and ATOM ones. Only the verdict fits; the numbers stay here.
<a href="https://agentmods.dev/skills/aaronartistzhang-afk/dailywork/metric-change-attribution"><img src="https://agentmods.dev/badge/skills/aaronartistzhang-afk/dailywork/metric-change-attribution.svg" alt="Reviewed on agentmods" width="80" height="20"></a>What it costs to keep this loaded
Counted locally with the o200k_base tokenizer, which is exact for GPT models; Claude uses its own tokenizer and its counts differ. Treat this as one consistent yardstick across the catalogue rather than a bill. Prices are per million input tokens.
| Model | Per session | Once invoked |
|---|---|---|
| Fable 5.1 | $0.00136 | $0.01372 |
| Opus 5.5 | $0.00054 | $0.00549 |
| Sonnet 5.5 | $0.00027 | $0.00274 |
| Haiku 4.5 | $0.00014 | $0.00137 |
Grade A, and why
metric-change-attribution scanned grade A with 0 findings against 26 rules in 11 categories — prompt injection, anti-refusal, data exfiltration, privilege escalation, supply chain, agent snooping, system-prompt leakage, SSRF and excessive agency — measured 1mo ago.
A static scan of the body, not an audit. Every finding is printed with the line that produced it so you can judge whether it matters here. A mod is markdown that instructs an agent; that is exactly why what it instructs is worth reading.
Nothing flagged
None of the 26 patterns this scan looks for appear in this file: no shell pipes, no recursive deletes, no credential paths, no hidden text, no instruction-override or anti-refusal phrasing, no agent-config snooping. That is not a guarantee, it is the absence of the things that are checkable.
How it starts
The opening of the file, as written. The whole thing — 100 lines — stays where its author put it; the contents beside it link to each section on GitHub.
Period-over-Period Metric-Change Attribution
A metric moved between two periods. This skill attributes why: it ranks the dimension members that drove the change (解释度/ep), optionally splits a ratio into multiplicative factors (structure × quality), drills the top contributor level by level to the root, and classifies old/new turnover at the leaf — while guarding against the dual-source denominator trap.
Metric-agnostic and config-driven: the same engine works for ratio metrics (numerator/denominator) and additive totals (a single measure). You declare the metric, dimensions, and sources in a small YAML config; you do not edit code.
When to use
- Two comparable periods of the same metric, sliceable by ≥1 categorical dimension.
- You want "which segment/factor/item is responsible", ranked and drilled.
- NOT for: forecasting, single-series anomaly-point detection, or causal inference beyond decomposition of an observed change.
The 6-step method
- Declare a config — period (prev/curr), metric (ratio or additive), the
dimension hierarchy, sources + column maps. Copy
templates/analysis.config.yaml. - Validate + dual-source check — long-format sanity; confirm the deduplicated source is the denominator truth and any leaf "pool" source is direction-only.
- Score the top dimension — ratio: ep / 解释度 (sums to 100%); additive: Δ-share.
- (ratio, optional) factor split — log-decompose the rate into structure × quality.
- Rank, noise-filter, drill Top-1 — skip near-zero-magnitude noise; recurse into the top contributor to the next level.
- Leaf turnover — at the leaf, classify each member expired / shrinking / stable / ramping / new; a pool-backed leaf attributes by the driver's Δ-share.
Quickstart
# run the worked example (bundled synthetic reach-rate sample):
python scripts/run_analysis.py --config examples/reach-rate.config.yaml
# your own analysis:
cp templates/analysis.config.yaml my.yaml # fill it in
python scripts/run_analysis.py --config my.yaml --json out.json
# verify the engine (synthetic invariants + frozen golden regression):
python scripts/selftest.py
Or import the stateless engine directly: from scripts import attribution as A
(see signatures in scripts/attribution.py).
What ships with it
17 files beside SKILL.md in the same directory: the scripts, references and assets a skill reads on demand. Not counted in the per-session cost; read them before you install if any of them is executable.
- examples/data/dedup_reach.csv 657 B
- examples/data/pool_reach.csv 657 B
- examples/reach-rate.config.yaml 2.7 KB
- README.md 5.4 KB
- references/config-reference.md 2.6 KB
- references/data-format-guide.md 3.0 KB
- references/methodology-math.md 4.5 KB
- references/pitfalls.md 3.0 KB
- references/worked-example-reach-rate.md 3.3 KB
- scripts/attribution.py 21 KB runs code
- scripts/run_analysis.py 4.4 KB runs code
- scripts/selftest.py 12 KB runs code
- templates/analysis.config.yaml 2.9 KB
- tests/fixtures/golden_reach/golden_channel_expl.csv 268 B
- tests/fixtures/golden_reach/golden_dashboard.csv 109 B
- tests/fixtures/synthetic/dedup_mini.csv 271 B
- tests/fixtures/synthetic/pool_mini.csv 235 B
What this file has done since we first saw it
Hashed on every crawl. A supply-chain change to an agent config is a question of when, not whether, so the history is kept rather than the latest state alone.
- 1mo ago First seen · 100 lines · 136 tokens per session scan A 86936eeef01f
metric-change-attribution is a skill published in the GitHub repository aaronartistzhang-afk/DailyWork (1 stars, last pushed 1mo ago), licensed MIT. It adds 136 tokens to every session and 1,372 once invoked, about $0.0005 per session on Opus 5.5. A static security scan graded it A with 0 findings. No closer match exists in the catalogue, so it is treated as the original; first seen 2026-08-31.
Other skills, from other repositories
uig
Build a User Input Grid (UIG) for an AI product or feature, evaluate existing eval datasets against it, and propose new inputs to fill coverage gaps. Use this skill whenever someone asks to design an eval framework, audit a test set, build a "user input grid", "synthetic query matrix" or "SQM", improve dataset…
eval-llm-judge
Write LLM-as-judge evaluator prompts for AI products. Use this skill whenever you need to evaluate semantic properties of AI outputs that cannot be checked programmatically — output quality, tone, factual accuracy, edge case handling, reference alignment. Also use when auditing existing judge prompts for bias…
eval-code
Write deterministic, code-based evaluator functions for an AI product. Use this skill whenever you need to write evaluators that check structural properties of AI outputs (format, count, presence, schema compliance) without calling another LLM. Also use when auditing existing code-based evaluators for brittleness…
llm-align
Analyze alignment between LLM judge scores and human labels in an eval dataset. Use this skill whenever someone wants to evaluate how well an LLM judge agrees with human reviewers, calculate TPR/TNR, investigate disagreements, or improve a scorer prompt. Trigger on phrases like: "calculate TPR/TNR", "judge alignment"…
ticket-to-eval
Strip PII from a customer support ticket or eval trace and convert it into eval dataset rows. Produces two outputs: a regression dataset row (close to the original input, tagged with failuremode) and a generalized dataset row (abstracted for broader coverage). Works with local CSV files or any eval platform. Use this…
trace-codes
Turn free-form notes from reading agent traces into trace codes: named, yes/no failure or quality patterns with definitions, examples and counts. Use this skill whenever someone has annotated traces or review notes and asks to "cluster my notes", "create trace codes", "find the failure modes", "do error analysis on…