You MUST use this before any data analysis or investigation - before exploring a dataset, loading or profiling data, running a model, computing a statistic, or testing an idea, and before any outcome data is touched
npx skills add https://github.com/K-Dense-AI/science-superpowers --skill framing-research-questions
Help turn a fuzzy research interest into a precise, falsifiable question with explicit hypotheses, the data required, and what would count as an answer — through natural collaborative dialogue.
Start by understanding the context (the data on hand, the domain, what your human partner already knows), then ask questions one at a time to sharpen the interest. Once you understand what is being investigated, present the framing and get approval.
<HARD-GATE>
Do NOT load the dataset, compute any statistic, fit any model, plot any outcome, or invoke any execution skill until you have presented a research framing and your human partner has approved it. This applies to EVERY investigation regardless of perceived simplicity.
Why this gate is strict for science specifically: Looking at outcomes before the question and predictions are fixed contaminates a confirmatory analysis. Once you have seen the data, you cannot un-see it, and every later choice (which test, which subgroup, which cutoff) becomes suspect. Framing first is what keeps a result confirmatory rather than a story told after the fact.
</HARD-GATE>
Every investigation goes through this process. A single t-test, a quick correlation, a "just look at the trend" — all of them. "Simple" questions are where unexamined assumptions and undeclared researcher degrees of freedom do the most damage. The framing can be short (a few sentences for a truly simple question), but you MUST present it and get approval.
You MUST create a task for each of these items and complete them in order:
docs/science-superpowers/questions/YYYY-MM-DD-<topic>.md and commitdigraph framing {
"Explore context" [shape=box];
"Ask clarifying questions" [shape=box];
"Propose 2-3 framings" [shape=box];
"Present framing sections" [shape=box];
"Partner approves framing?" [shape=diamond];
"Write question doc" [shape=box];
"Self-review (fix inline)" [shape=box];
"Partner reviews doc?" [shape=diamond];
"Invoke surveying-prior-work" [shape=doublecircle];
"Explore context" -> "Ask clarifying questions";
"Ask clarifying questions" -> "Propose 2-3 framings";
"Propose 2-3 framings" -> "Present framing sections";
"Present framing sections" -> "Partner approves framing?";
"Partner approves framing?" -> "Present framing sections" [label="no, revise"];
"Partner approves framing?" -> "Write question doc" [label="yes"];
"Write question doc" -> "Self-review (fix inline)";
"Self-review (fix inline)" -> "Partner reviews doc?";
"Partner reviews doc?" -> "Write question doc" [label="changes requested"];
"Partner reviews doc?" -> "Invoke surveying-prior-work" [label="approved"];
}
The terminal state is invoking surveying-prior-work (then designing-the-analysis). Do NOT jump to loading data or fitting models. The ONLY skills you invoke after framing are surveying-prior-work and designing-the-analysis.
Understanding the interest:
A good research question is:
Exploring framings:
Presenting the framing:
Documentation — write the approved framing to docs/science-superpowers/questions/YYYY-MM-DD-<topic>.md:
# <Question title>
**Research question:** <one precise, falsifiable sentence>
**Background / motivation:** <why this matters, what decision it informs>
**Hypotheses:**
- H0 (null): <...>
- H1 (alternative, directional if justified): <...>
**Population & unit of analysis:** <who/what, the sample, the unit>
**Key variables (operationalized):**
- Outcome: <construct> → <measure / column / computation>
- Predictor(s) / exposure: <...> → <...>
- Covariates / potential confounders: <...>
**What counts as an answer:** <the confirmatory criterion, stated qualitatively here; exact decision rules come later in pre-registration>
**Scope & exclusions:** <what is explicitly out of scope>
**Open questions for prior-work survey:** <methods to check, known confounds to look up>
Commit the document to git.
Self-Review — look at the document with fresh eyes:
Fix issues inline. No need to re-review — just fix and move on.
Partner Review Gate — after the self-review passes:
> "Framing written and committed to <path>. Please review it and let me know if you want changes before we survey prior work and design the analysis."
Wait for the response. If they request changes, make them and re-run the self-review. Only proceed once they approve.
Transition:
Automated LLM-driven hypothesis generation and testing on tabular datasets. Use when you want to systematically explore hypotheses about patterns in empirical data (e.g., deception detection, content analysis). Combines literature insights with data-driven hypothesis testing. For manual hypothesis formulation use hypothesis-generation; for creative ideation use scientific-brainstorming.
Statistical analysis toolkit. Hypothesis tests (t-test, ANOVA, chi-square), regression, correlation, Bayesian stats, power analysis, assumption checks, APA reporting, for academic research.
Automated hypothesis generation and testing using large language models. Use this skill when generating scientific hypotheses from datasets, combining literature insights with empirical data, testing hypotheses against observational data, or conducting systematic hypothesis exploration for research discovery in domains like deception detection, AI content detection, mental health analysis, or other empirical research tasks.
Advanced swarm orchestration patterns for research, development, testing, and complex distributed workflows
UX research and design toolkit for Senior UX Designer/Researcher including data-driven persona generation, journey mapping, usability testing frameworks, and research synthesis. Use for user research, persona creation, journey mapping, and design validation.
Run a pre-mortem risk analysis on a PRD or launch plan. Categorizes risks as Tigers (real problems), Paper Tigers (overblown concerns), and Elephants (unspoken worries), then classifies as launch-blocking, fast-follow, or track. Use when preparing for launch, stress-testing a product plan, or identifying what could go wrong.
> Jurisdiction-aware wage/hour and employment Q&A — classification, overtime, meal/rest breaks, leave, final pay — answered for the specific state/country with the controlling rule researched and cited rather than stated from memory. Use when the user asks any employment law question, or says "what's the rule in [state]", "is this exempt", "do we have to pay overtime for", or "can we classify this as".
> Deep-dive audit using the full testsmells.org 19-smell academic catalog for tests in any language. Every finding maps to a named, citable smell from the research literature (Assertion Roulette, Duplicate Assert, Mystery Guest, Eager Test, Sensitive Equality, Conditional Test Logic, Sleepy Test, Magic Number Test, etc.) with research-backed severity. (RSpec/Minitest), Rust, Swift, Kotlin (JUnit/Kotest), PowerShell (Pester), C++ (GoogleTest/Catch2). INVOKE ONLY when explicitly asked for the testsmells.org 19-smell academic catalog or citable smell names from the literature. writing new tests (use code-testing-agent, or writing-mstest-tests for MSTest); running tests (use run-tests); framework migration.
Take k-dense-ai/framing-research-questions from the repository into ~/.claude/skills for personal
use, or into .claude/skills inside a project.
The agent identifies a skill by the name field in its header. Two skills with the
same name cannot sit side by side — one of them will be ignored.