Install to Claude Code
npx -y skills add https://github.com/k-dense-ai/science-superpowers --skill reporting-and-archiving-findingsDescription
When your analysis is done, this walks you through closing the loop: verify it reproduces from scratch, then choose whether to merge...
SKILL.md
--- name: reporting-and-archiving-findings description: Use when an analysis is complete and verified, and you need to decide how to report it and archive the work for reproducibility --- # Reporting and Archiving Findings ## Overview Complete an investigation by confirming reproducibility, presenting clear options, handling the chosen one, and archiving everything needed to reproduce the result. **Core principle:** Confirm reproducibility -> separate confirmatory from exploratory -> present options -> execute choice -> archive code + data + environment + pre-registration. **Announce at start:** "I'm using the reporting-and-archiving-findings skill to complete this work." ## Step 1: Verify Reproducibility Before reporting anything, confirm the whole analysis reproduces from immutable raw data with the fixed seed in the pinned environment. ```bash # From a clean state: re-run the pipeline end to end # Confirm headline numbers match what you intend to report ``` Use `science-superpowers:verifying-results-before-claiming`. **If it doesn't reproduce, stop** — fix reproducibility (possibly via `science-superpowers:investigating-anomalous-results`) before reporting. Don't report a number you can't regenerate. ## Step 2: Detect Environment ```bash GIT_DIR=$(cd "$(git rev-parse --git-dir)" 2>/dev/null && pwd -P) GIT_COMMON=$(cd "$(git rev-parse --git-common-dir)" 2>/dev/null && pwd -P) BRANCH=$(git branch --show-current) ``` - `GIT_DIR == GIT_COMMON`: normal repo, no worktree cleanup needed - `GIT_DIR != GIT_COMMON`, named branch: worktree, provenance-based cleanup (Step 5) - Detached HEAD: reduced menu (no local merge), no cleanup (externally managed) ## Step 3: Determine Base Branch ```bash git merge-base HEAD main 2>/dev/null || git merge-base HEAD master 2>/dev/null ``` Or ask: "This branch split from main — correct?" ## Step 4: Present Options **Normal repo / named-branch worktree — present exactly these 4 options:** ``` Analysis complete and reproducible. What would you like to do? 1. Merge the analysis back to <base-branch> locally 2. Write up and share (report / preprint / pull request) 3. Keep the branch as-is (I'll handle it later) 4. Discard this work Which option? ``` **Detached HEAD — present these 3 (no local merge):** ``` Analysis complete and reproducible (externally managed workspace). 1. Push as a new branch and open a pull request / share 2. Keep as-is 3. Discard this work Which option? ``` Don't add explanation — keep options concise. ## Step 5: Execute Choice ### Option 1: Merge Locally ```bash MAIN_ROOT=$(git -C "$(git rev-parse --git-common-dir)/.." rev-parse --show-toplevel) cd "$MAIN_ROOT" git checkout <base-branch> && git pull && git merge <feature-branch> # Re-run the pipeline on the merged result; confirm it still reproduces ``` Then cleanup worktree (Step 6), then `git branch -d <feature-branch>`. ### Option 2: Write Up and Share Produce the report (see "Report Content" below). If sharing via PR: ```bash git push -u origin <feature-branch> gh pr create --title "<title>" --body "$(cat <<'EOF' ## Question <the research question> ## What was done <the pre-registered analysis, and any documented deviations> ## Findings <confirmatory results with effect sizes + intervals> ## Exploratory (not confirmatory) <clearly separated leads> ## Reproducibility - Pre-registration: <path/commit> - Environment: <lockfile> - Seed: <value> - Re-run: <command> EOF )" ``` **Do NOT clean up the worktree** — it's needed for iteration on feedback. ### Option 3: Keep As-Is Report: "Keeping branch <name>. Worktree preserved at <path>." No cleanup. ### Option 4: Discard Confirm first: ``` This will permanently delete: - Branch <name> - All commits: <list> - Worktree at <path> Type 'discard' to confirm. ``` Wait for the exact word. Then cleanup worktree (Step 6) and `git branch -D <feature-branch>`. ## Step 6: Cleanup Workspace **Only for Options 1 and 4.** Options 2 and 3 preserve the worktree. ```bash WORKTREE_PATH=$(git rev-parse --show-toplevel) ``` - `GIT_DIR == GIT_COMMON`: normal repo, nothing to clean up. - Worktree under `.worktrees/`, `worktrees/`, or `~/.config/superpowers/worktrees/`: we own it. ```bash MAIN_ROOT=$(git -C "$(git rev-parse --git-common-dir)/.." rev-parse --show-toplevel) cd "$MAIN_ROOT" git worktree remove "$WORKTREE_PATH" git worktree prune ``` - Otherwise: the harness owns it. Don't remove it. ## Report Content Every report MUST: - **Separate confirmatory from exploratory.** Confirmatory results are those that match the frozen pre-registration, run as registered. Everything else goes under an "Exploratory" heading and is described as a lead, not a conclusion. - **Report effect sizes and intervals**, not just p-values. Describe null results as inconclusive vs. evidence of absence honestly. - **Document every deviation** from the pre-registration and note that the affected analysis is exploratory. - **State limitations and threats to validity** carried from the design. - **Avoid over-claiming** — no causal language from observational data; no generalizing past the sample. ## Archive for Reproducibility Whatever the option, ensure the archive contains everything needed to regenerate the result: - The code (committed) - The environment lockfile and runtime version - The fixed seed - The frozen pre-registration (commit reference) - Data provenance + checksums for raw inputs (and the data itself, or instructions to obtain it, per any data-sharing constraints) - The exact command(s) to re-run ## Red Flags **Never:** - Report a number you haven't just reproduced - Blur confirmatory and exploratory results - Report a p-value without an effect size and interval - Use causal language for an observational finding - Hide a deviation from the pre-registration - Remove a worktree before confirming a merge succeeded - Clean up a worktree you didn't create **Always:** - Verify reproducibility before offering options - Present exactly 4 options (3 for detached HEAD) - Get typed confirmation for discard - Archive code + env + seed + pre-registration together
