test-driven-development
OBobra/superpowers298k2,631 new stars in the last 7 days
Use whenever you run statistical analysis for the social sciences (regression, hypothesis tests, econometrics) or read Stata (.dta) / SPSS (.sav) data in this workspace. Enforces an execute-don't-interpret boundary (surface estimates, don't volunteer causal claims), checks the analysis against a preregistration plan for HARKing, verifies reproducible seeds, and reproduces .dta/.sav estimates via R. Flags integrity risks; never certifies the analysis is sound.
Social science's decisive risk is not a crashing script — it is a confident, provocative misreading of a correct number, silent p-hacking, and results that don't replicate. Your job here is to run analyses and surface raw output, and to withhold interpretation the design doesn't support.
Pepinsky's rule: use the agent for tasks that follow rules; do not use it for tasks that generate answers, arguments, or interpretations.
np.random.seed(...), random_state=..., or R
set.seed(...).Read proprietary formats with real libraries — never transcribe numbers from
memory. .dta and .sav round-trip through R (base foreign / haven) or
pandas; use a fixed seed so estimates reproduce exactly:
df <- foreign::read.dta("data.dta") # or haven::read_dta / haven::read_sav
set.seed(1)
m <- lm(y ~ x, data = df)
summary(m) # report coef + Std. Error verbatim
import pandas as pd
df = pd.read_stata("data.dta") # or pd.read_spss("data.sav")
Report the coefficient and its standard error; if you compute the same model two ways (pandas vs R), confirm they match to the printed precision.
The deterministic gate ships beside this SKILL.md. Run it on the workspace (or named files) before you report results:
python "$XDG_CONFIG_HOME/opencode/skills/stats-integrity/stats_integrity_check.py" [files...]
It prints one ```review fenced JSON block covering three risks:
preregistration.md / analysis_plan.* / prereg.* in
the workspace) never named — a HARKing path.Copy the ```review block as the last thing in your message — the app
renders it as dismissible reviewer cards. Never tell the user the analysis is
"correct", "sound", or that a relationship is causal from observational data —
the gate checks specific risks only.
Add a check_<name>(...) function in stats_integrity_check.py and call it from
run(); each finding carries its own tag, so the app needs no change.
OBobra/superpowers298k2,631 new stars in the last 7 days
MAmattpocock/skills288k10,178 new stars in the last 7 days
AFaffaan-m/ECC278k4,046 new stars in the last 7 days
Audit accessibility on Web, iOS, and Android to meet WCAG 2.2, with keyboard navigation and screen-reader support.
AFaffaan-m/ECC278k4,046 new stars in the last 7 days
AFaffaan-m/ECC278k4,046 new stars in the last 7 days
FIfirecrawl/firecrawl191k2,010 new stars in the last 7 days