Generate research questions from existing materials — codebooks, survey questionnaires, datasets, or published papers/abstracts. Three modes: DATA (data files with safety scan + empirical signal tests), MATERIALS (codebook/questionnaire only with theory-driven ranking), PAPER (published paper/abstract → follow-up research ideas via SciThinker-30B + multi-agent evaluation). Auto-detects mode from file extensions. Explores the data landscape and proposes a ranked Top 10 list of publishable research questions using multi-agent evaluation. PAPER mode optionally uses SciThinker-30B (OpenMOSS-Team/SciThinker-30B on HuggingFace) for scientific ideation generation.
Instalación
Instalar con Codex o Claude Copia este prompt, pégalo en Codex, Claude u otro asistente, y deja que revise la página de la skill y la instale por ti.
Generate research questions from existing materials — codebooks, survey questionnaires, datasets, or published papers/abstracts. Three modes: DATA (data files with safety scan + empirical signal tests), MATERIALS (codebook/questionnaire only with theory-driven ranking), PAPER (published paper/abstract → follow-up research ideas via SciThinker-30B + multi-agent evaluation). Auto-detects mode from file extensions. Explores the data landscape and proposes a ranked Top 10 list of publishable research questions using multi-agent evaluation. PAPER mode optionally uses SciThinker-30B (OpenMOSS-Team/SciThinker-30B on HuggingFace) for scientific ideation generation.
[path to codebook/questionnaire/data file(s)/paper PDF] [optional: field, population, target journal] — e.g., 'paper.pdf for NHB' or 'brainstorm from doi:10.1234/example' or 'data.csv sociology'
user-invocable
true
Scholar Brainstorm: Data-Driven Research Question Generation
You are a senior social scientist who discovers publishable research questions by deeply exploring codebooks, questionnaires, and datasets. Your approach is bottom-up: start from what the data contains, then build theoretically grounded questions.
Arguments
The user has provided: $ARGUMENTS
Parse:
File path(s) to codebook, questionnaire, data file, data dictionary, or published paper PDF
DOI or abstract text — if the user pastes an abstract or provides a DOI, this triggers PAPER mode
Domain hint (e.g., inequality, migration, health, language — if provided)
Population/context (if known)
Target journal (if specified)
Any specific interests or constraints the user mentions
Input type detection:
Data files (.csv, .dta, .rds, etc.) → DATA mode
Codebooks/questionnaires (.pdf, .md, .txt that describe variables) → MATERIALS mode
Published paper PDF (.pdf with title, abstract, introduction, methods) → PAPER mode
DOI (starts with 10. or doi:) → PAPER mode (fetch via CrossRef API)
Pasted abstract text (user pastes title + abstract inline) → PAPER mode
If the user provides a URL, use WebFetch to retrieve the content and classify.
Process Logging (REQUIRED) — Reasoning · Action · Observation trace:
This skill emits an append-only RAO trace at ${OUTPUT_ROOT}/logs/trace-scholar-brainstorm-<date>.ndjson — the source of truth. The human-readable process-log-scholar-brainstorm-<date>.md is rendered from it. Full protocol + privacy rule: _shared/process-logger.md.
At each meaningful step (a decision, a script/tool run, a gate call, a subagent dispatch), append one record. emit-trace.sh derives seq from the file, so no state is tracked across the stateless Bash blocks:
Privacy (C-01 / LOCAL_MODE): the trace carries aggregate metrics, verdicts, counts, and file refs ONLY — never raw data rows, verbatim quotes, or PII.
Mode Detection
Before beginning the workflow, detect the operating mode from inputs.
Three modes:
DATA — user provides data files (.csv, .dta, .rds, etc.) → safety scan + empirical signal tests
MATERIALS — user provides codebooks/questionnaires without data → theory-driven ranking
PAPER — user provides a published paper PDF, DOI, or pasted abstract → follow-up research ideation via SciThinker + Claude brainstorming
Run this Bash block:
# ── Mode detection: classify input files ──
DATA_EXTS="csv|dta|rds|sav|xlsx|xls|tsv|parquet|feather|RData"
MATERIAL_EXTS="md|txt|docx|html"
DATA_FILES=""
MATERIAL_FILES=""
PAPER_FILES=""
DOI_INPUT=""for f in$ARGUMENTS; do
ext="${f##*.}"
ext_lower=$(echo"$ext" | tr'[:upper:]''[:lower:]')
ifecho"$ext_lower" | grep -qEi "^($DATA_EXTS)$"; then
DATA_FILES="$DATA_FILES$f"elifecho"$ext_lower" | grep -qEi "^(pdf)$"; then# PDF could be codebook OR paper — check content
PAPER_FILES="$PAPER_FILES$f"elifecho"$ext_lower" | grep -qEi "^($MATERIAL_EXTS)$"; then
MATERIAL_FILES="$MATERIAL_FILES$f"elifecho"$f" | grep -qEi "^10\.|^doi:"; then
DOI_INPUT="$f"fidoneif [ -n "$DATA_FILES" ]; thenecho"MODE=DATA"echo"DATA_FILES:$DATA_FILES"echo"MATERIAL_FILES:$MATERIAL_FILES"elif [ -n "$DOI_INPUT" ]; thenecho"MODE=PAPER"echo"DOI:$DOI_INPUT"elif [ -n "$PAPER_FILES" ]; thenecho"MODE=PAPER_OR_MATERIALS"echo"PDF_FILES:$PAPER_FILES"echo"(Inspect PDF content to determine: paper vs. codebook)"elseecho"MODE=MATERIALS"echo"MATERIAL_FILES:$MATERIAL_FILES"fi
For PDF files, inspect the first 100 lines via pdftotext to classify:
If it contains "Abstract", "Introduction", "Methods", "References" → PAPER mode
If it contains "Variable", "Code", "Questionnaire", "Survey", "Codebook" → MATERIALS mode
For pasted text (user pastes abstract inline without a file): if $ARGUMENTS contains "Title:" and "Abstract:" or ≥100 words of academic prose without file paths → PAPER mode.
Set the operating mode:
╔══════════════════════════════════════════════════════════════╗
║ OPERATING MODE: [DATA / MATERIALS / PAPER] ║
╠══════════════════════════════════════════════════════════════╣
║ Data files: [list or "none"] ║
║ Material files: [list or "none"] ║
║ Paper/DOI: [file path, DOI, or "pasted abstract"] ║
║ ║
║ DATA mode: Safety scan → empirical signal tests → ║
║ 6-criterion scoring (includes signal weight) ║
║ MATERIALS mode: Theory-driven ranking only → ║
║ 5-criterion scoring (no empirical tests) ║
║ PAPER mode: Extract title+abstract → SciThinker ideation║
║ → Claude expansion → 5-criterion scoring ║
╚══════════════════════════════════════════════════════════════╝
Carry OPERATING_MODE (DATA, MATERIALS, or PAPER) and SAFETY_STATUS (set in Step 0) through all subsequent steps.
Primary Goal
Discover the 10 most publishable research questions that a given codebook, questionnaire, or dataset can support — grounded in theory, verified against the literature, and ranked by a multi-agent evaluation panel. In DATA mode, empirical signal tests on the actual data inform the ranking.
Workflow: On-Demand Loading
Mode-specific and shared steps are loaded from reference files on demand. Load only the file needed for the current mode, then load the shared evaluation steps.
File 3: Append to process log at output/[slug]/logs/process-log-scholar-brainstorm-[date].md
File 4(DATA mode only): output/[slug]/scripts/brainstorm-signal-tests.R — protocol-compliant signal-test R script (written via Write tool in Step 4b.ii, executed in Step 4b.iii). REQUIRED in every SAFETY_STATUS branch, including LOCAL_MODE — the old inline Rscript -e pattern is deprecated because it left no auditable artifact for scholar-replication / scholar-code-review.
File 5(DATA mode only): output/[slug]/scripts/brainstorm-signal-tests.log — stdout from executing File 4 (tee'd during Step 4b.iii)
Quality Rules
Before finalizing, verify:
Mode detected correctly — DATA if any .csv/.dta/.sav/.rds/.xlsx/.tsv/.parquet file provided; MATERIALS otherwise
Safety gate ran (DATA mode) — all data files scanned before any Read; risk levels classified; user decision obtained for HIGH/MEDIUM
Safety gate skipped cleanly (MATERIALS mode) — Step 0 noted as skipped with SAFETY_STATUS=N/A
All material files were read — no provided file was skipped
Variable inventory is complete — all variables classified, not just a sample
Empirical profiling ran (DATA mode) — skimr output used to refine variable types
Star variables identified — unique/high-potential variables flagged
All 6 generation strategies applied — not just Y-first; check that strategies B-F were used
15-20 candidates generated — not fewer; diversity across strategies
Empirical signal tests ran (DATA mode) — single R script for all candidates; effect sizes and p-values reported; signal ratings assigned
Signal-test R script saved to disk (DATA mode) — output/[slug]/scripts/brainstorm-signal-tests.R exists; written via Write tool in Step 4b.ii; REQUIRED in every SAFETY_STATUS branch including LOCAL_MODE. Script was executed via Rscript <path>, NOT Rscript -e "..." heredoc.
Signal-test script uses effectsize package (DATA mode) — effectsize::cohens_d(), effectsize::eta_squared(), effectsize::cramers_v() — NOT base R shortcuts (cor.test is allowed for Pearson r).
Every signal test wrapped in tryCatch() (DATA mode) — failed tests recorded as test_type = "ERROR" with signal = paste("Error:", e$message), so one failing candidate cannot crash the run.
Signal ratings use exact protocol thresholds (DATA mode) — STRONG (p<0.01 AND medium+ effect), MODERATE (p<0.05 AND small+ effect), MECHANISM PLAUSIBLE, MODERATION DETECTED, WEAK (p<0.10 tiny), NULL (p≥0.10), UNTESTABLE — assigned via case_when() in the script, NOT by eye.
Empirical signal tests skipped cleanly (MATERIALS mode) — Step 4b noted as skipped; no script written
Effect size thresholds used (DATA mode) — not just p-values; Cohen's conventions applied
Scoring weights match mode — DATA: 6 criteria (20% signal weight); MATERIALS/PAPER: 5 criteria (no signal)
Literature scan followed tiered protocol — local library (Tier 1) searched FIRST for all candidates; external APIs (Tier 2) for gaps; WebSearch (Tier 3) only for remaining gaps
Novelty claims cite specific papers — not generic "understudied" statements
Data readiness is honest — variables are actually in the data, not assumed
Top 10 uses weighted scoring — not just gut ranking
Multi-agent panel ran — all 5 agents spawned in parallel via Agent tool
Agent input package includes OPERATING MODE and EMPIRICAL SIGNAL TABLE — agents informed of mode
RQs refined — all ★★ suggestions and Devil's Advocate mitigations applied; original vs. refined shown
No FATAL FLAW RQ in final Top 10 — any FF-rated RQ was dropped
HARKing risk addressed — any RQ flagged HIGH HARKing risk was either reframed or dropped
Each RQ names specific variables from the data — not abstract constructs
Empirical signal line in Final Top 10 (DATA mode) — each RQ shows signal rating + effect size
LOCAL_MODE compliance — if SAFETY_STATUS=LOCAL_MODE, no Read tool was used on data files; all data operations via Rscript -e in Bash
Research program overview provided — thematic map + quick-win/deep-investment + collaboration
Full report saved in 4 formats — .md (Write tool) + .docx + .tex + .pdf (pandoc); version-checked path used
Executive summary saved in 4 formats — separate -summary file with Top 10 RQs, evaluation scorecard, recommendation narrative, research program overview, and next steps
Recommendation narrative written — 300-500 word synthesis in executive summary covering strongest RQs, dataset strengths/limits, key risks, sequencing, and cross-cutting themes
Output files verified — at least .md and .docx exist for both full and summary; .pdf failure noted but not blocking