From analytics-skills
Use this skill after the headline query has run and reconciled, before drawing any conclusion. Run an explicit checklist of plausible confounders — selection effects, calendar effects, concurrent campaigns, ETL changes, holidays, weather, competing interventions, regulatory changes, market shifts. The confound list seeded in analytical-planning gets walked through one by one; new confounds that emerge during analysis get added. Required for medium and high-stakes analyses. Trigger on any move from "got the number" to "the number means X" — that move is what this skill gates.
How this skill is triggered — by the user, by Claude, or both
Slash command
/analytics-skills:confound-auditThe summary Claude sees in its skill listing — used to decide when to auto-load this skill
A number is not a finding. A finding is a number plus a defensible argument that the number means what you think it means. Confound audit is the work between the two.
A number is not a finding. A finding is a number plus a defensible argument that the number means what you think it means. Confound audit is the work between the two.
For each confound in your analytical-planning confound list (and any new ones surfaced):
Confounds to consider by default — extend this list domain-by-domain as you learn:
When a confound is identified, named, and tested in any analysis, log it to the methodology DB. The library accumulates a domain-specific confound vocabulary over time, and is queried at the start of future audits as a seed list. This is one of the framework's compounding assets — the longer the practice runs, the sharper the seed list gets.
Log this skill's activation:
python3 .analytics/db.py log-skill \
--skill confound-audit \
--question-slug <slug> \
--completed
For each confound considered, log to the confound library:
python3 .analytics/db.py log-confound \
--domain "<your domain — e.g., 'product-analytics', 'marketing-attribution', 'finance'>" \
--name "<short name, e.g., 'concurrent-experiment'>" \
--description "<one-paragraph description>" \
--detection "<how to test for it>" \
--mitigation "<how to handle it when present>"
If a confound is repeated across analyses, the CLI increments times_observed and updates last_observed. The same library row gets reinforced over time — that's the learning loop.
"All confounds were ruled out cleanly." Possible, but rare. Walk through the list one more time and ask whether you ruled them out by evidence or by assertion. Audits where every confound dies on contact tend to be audits that didn't really happen.
"The confound is plausible but I can't test it." That's allowed — but the writeup names the unaddressable confound as a caveat on the conclusion. Don't let "can't test" become "didn't test."
"This is a small ad-hoc analysis." Ad-hoc analyses get a lighter audit (top three confounds, briefly), but they don't get zero. The confound list is what makes "directional" honest rather than just unverified.
After audit completes and confounds are logged, hand off to multiverse-analysis/SKILL.md.
Provides behavioral guidelines to reduce common LLM coding mistakes, focusing on simplicity, surgical changes, assumption surfacing, and verifiable success criteria.
Searches, retrieves, and installs Agent Skills from prompts.chat registry using MCP tools like search_skills and get_skill. Activates for finding skills, browsing catalogs, or extending Claude.
npx claudepluginhub samwedll/analytics-skills --plugin analytics-skills