Replicative Reproducibility Visualization Lens
Philosophical Mode: Replicative
Primary Question: "Can the figures be reproduced from the data and code?"
Focus: Data availability (public / restricted / embargoed), preprocessing parameter
disclosure (bin widths, smoothing windows, normalization), plotting library and
version pinning, random seed documentation, per-figure code reference (script or
notebook cell)
Arguments
/autoskillit:vis-lens-reproducibility [context_path] [experiment_plan_path]
- context_path (optional positional arg 1) — Absolute path to a lens context file
containing IV/DV tables, H0/H1 hypotheses, controlled variables, and success criteria.
If provided, read this file before beginning analysis to obtain structured context.
If omitted, discover context by exploring the CWD.
- experiment_plan_path (optional positional arg 2) — Absolute path to the full
experiment plan. If provided, read for complete experimental methodology and design.
If omitted, locate the experiment plan by exploring the CWD.
When to Use
- Auditing figure reproducibility before public release
- Checking whether preprocessing parameters are fully disclosed
- Verifying that random seeds are documented for stochastic plots
- Linking each figure to the script or notebook cell that generates it
- User invokes
/autoskillit:vis-lens-reproducibility
Critical Constraints
NEVER:
- Modify any source code files
- Do not litter the codebase with useless comments, TODO markers, or explanatory annotations — the skill output and diagram speak for themselves
- Create files outside
{{AUTOSKILLIT_TEMP}}/vis-lens-reproducibility/
- Treat "code available on request" as equivalent to public availability
- Omit random seed documentation for any figure derived from stochastic processes
ALWAYS:
Check data availability status for every figure (public/restricted/embargoed)
Document bin widths for histograms, smoothing windows for time-series, normalization parameters for heatmaps
Pin plotting library name and version (matplotlib 3.8.2, seaborn 0.13.0, etc.)
Record the random seed(s) used for any stochastic component (sampling, bootstrapping, noise injection)
Provide a per-figure code reference: script path or notebook cell identifier
BEFORE creating any diagram, LOAD the /autoskillit:mermaid skill using the Skill tool — this is MANDATORY
If the Skill tool cannot be used (disable-model-invocation) or refuses this invocation, do NOT proceed with diagram creation. Abort this step and omit the diagram from output.
Write output to {{AUTOSKILLIT_TEMP}}/vis-lens-reproducibility/vis_spec_reproducibility_{YYYY-MM-DD_HHMMSS}.md (relative to the current working directory)
After writing the file, emit the structured output token as literal plain text with no
markdown formatting on the token name (the adjudicator performs a regex match):
diagram_path = /absolute/path/to/{{AUTOSKILLIT_TEMP}}/vis-lens-reproducibility/vis_spec_reproducibility_{...}.md
Analysis Workflow
Step 0: Parse optional arguments
If positional arg 1 (context_path) is provided and the file exists, read it to obtain
IV/DV tables, H0/H1 hypotheses, controlled variables, and success criteria. If positional
arg 2 (experiment_plan_path) is provided and exists, read the experiment plan for full
methodology. Use this structured context as the foundation for Steps 1–4; skip the CWD
exploration for these fields if the context file supplies them.
Step 1: Data Availability Inventory
For each figure:
- Identify the data source (file path, dataset name, external URL)
- Classify availability: PUBLIC (DOI / URL), RESTRICTED (license required), EMBARGOED (not yet released)
- FLAG FAIL if data is restricted/embargoed with no access plan stated
Step 2: Preprocessing Parameter Audit
For each figure, identify all preprocessing steps that affect visual output:
- Histograms: bin width or bin count; normalization (density vs count vs probability)
- Time-series / learning curves: smoothing window type (rolling mean, EMA) and window size
- Heatmaps: normalization method (min-max, z-score, none); colormap clipping range
- Scatter/line with aggregation: aggregation function (mean, median) and grouping
- FLAG WARNING for any preprocessing parameter not documented
Step 3: Library and Version Audit
Scan the codebase for plotting imports:
- Record:
import matplotlib, import seaborn, import plotly, etc.
- Check
pyproject.toml or requirements.txt for pinned versions
- FLAG WARNING if plotting library version is not pinned
Step 4: Random Seed Audit
For each figure involving a stochastic component:
- Identify source of randomness: bootstrapping, subsampling, t-SNE/UMAP, noise injection
- Verify
random_state, seed, np.random.seed, or equivalent is documented per figure
- FLAG FAIL if any stochastic figure has no documented seed
Step 5: Per-Figure Code Reference
For each figure:
- Identify the script or notebook cell that generates it
- Record: file path + function or cell ID
- FLAG WARNING if a figure has no traceable code reference
Step 6: Emit yaml:figure-spec Blocks
For each figure, emit one yaml:figure-spec fenced block with data_source and
annotations fields capturing reproducibility metadata. Then LOAD /autoskillit:mermaid
and create a diagram showing: data availability → preprocessing → library version →
seed documentation → code reference → verdict.
Output Template
# Replicative Reproducibility Spec: {System / Experiment Name}
**Lens:** Replicative Reproducibility (Replicative)
**Question:** Can the figures be reproduced from the data and code?
**Date:** {YYYY-MM-DD}
**Scope:** {What was analyzed}
## Reproducibility Audit Summary
| Figure | Data Available | Preprocessing Documented | Library Pinned | Seed Documented | Code Reference | Status |
|--------|---------------|--------------------------|----------------|-----------------|----------------|--------|
| fig-01 | PUBLIC | PASS | PASS | N/A | scripts/plot_main.py | OK |
| fig-02 | RESTRICTED | WARNING | FAIL | PASS | notebooks/ablation.ipynb#cell-7 | FAIL |
## Figure Specs
```yaml
# yaml:figure-spec — canonical schema (spec_version: "1.0")
figure_id: "fig-01-main-result"
figure_title: "Model A achieves state-of-the-art on all benchmarks"
spec_version: "1.0"
chart_type: "bar"
chart_type_fallback: "table"
perceptual_justification: "Bars communicate exact values; error bars show CI95 over 5 seeds."
data_source: "results/main.csv (DOI: 10.xxxx/xxxxx)"
data_mapping:
x: "benchmark"
y: "score"
color: "model"
size: ""
facet: ""
layout:
width_inches: 6.0
height_inches: 4.0
dpi: 300
stat_overlay:
type: "error_bar"
measure: "CI95"
n_seeds: 5
annotations: ["data: public (DOI); preprocessing: none; library: matplotlib==3.8.2; seeds: 0,1,2,3,4; code: scripts/plot_main.py:plot_main_result()"]
anti_patterns: []
palette: "okabe-ito"
format: "pdf"
target_dpi: 300
library: "matplotlib==3.8.2"
report_section: "Section 4 Results"
priority: "P0"
placement_tier: "main"
conflicts: []
metadata:
created_by: "vis-lens-reproducibility"
reviewed_by: ""
last_updated: "{YYYY-MM-DD}"
Reproducibility Diagram
%%{init: {'flowchart': {'nodeSpacing': 50, 'rankSpacing': 60, 'curve': 'basis'}}}%%
flowchart TB
%% CLASS DEFINITIONS %%
classDef cli fill:#1a237e,stroke:#7986cb,stroke-width:2px,color:#fff;
classDef stateNode fill:#004d40,stroke:#4db6ac,stroke-width:2px,color:#fff;
classDef handler fill:#e65100,stroke:#ffb74d,stroke-width:2px,color:#fff;
classDef output fill:#00695c,stroke:#4db6ac,stroke-width:2px,color:#fff;
classDef detector fill:#b71c1c,stroke:#ef5350,stroke-width:2px,color:#fff;
classDef phase fill:#6a1b9a,stroke:#ba68c8,stroke-width:2px,color:#fff;
subgraph Data ["DATA AVAILABILITY"]
D1["source: {path / DOI}<br/>━━━━━━━━━━<br/>public / restricted / embargoed"]
end
subgraph Preproc ["PREPROCESSING"]
P1["bin width / window: {N}<br/>normalization: {method}<br/>━━━━━━━━━━<br/>documented: PASS / FAIL"]
end
subgraph Library ["LIBRARY VERSION"]
L1["matplotlib=={version}<br/>━━━━━━━━━━<br/>pinned: PASS / WARNING"]
end
subgraph Seeds ["RANDOM SEEDS"]
S1["seeds: {list}<br/>━━━━━━━━━━<br/>documented: PASS / FAIL / N/A"]
end
subgraph CodeRef ["CODE REFERENCE"]
C1["script: {path}:{function}<br/>━━━━━━━━━━<br/>traceable: PASS / WARNING"]
end
subgraph Verdict ["VERDICT"]
V1["{OK / WARNING / FAIL}<br/>━━━━━━━━━━<br/>{reason}"]
end
D1 --> P1
P1 --> L1
L1 --> S1
S1 --> C1
C1 --> V1
class D1 stateNode;
class P1 handler;
class L1 cli;
class S1 output;
class C1 phase;
class V1 detector;
Color Legend:
| Color |
Category |
Description |
| Dark Teal |
Data |
Data availability status |
| Orange |
Preprocessing |
Parameter documentation check |
| Dark Blue |
Library |
Plotting library version pin |
| Teal |
Seeds |
Random seed documentation |
| Purple |
Code Ref |
Per-figure code traceability |
| Red |
Verdict |
OK / WARNING / FAIL assessment |
---
## Pre-Diagram Checklist
Before creating the diagram, verify:
- [ ] LOADED `/autoskillit:mermaid` skill using the Skill tool
- [ ] Using ONLY classDef styles from the mermaid skill (no invented colors)
- [ ] Diagram will include a color legend table
- [ ] Every restricted/embargoed dataset is flagged as FAIL or WARNING
- [ ] Every histogram bin width and time-series smoothing window is audited
- [ ] Every stochastic figure has its seeds documented or flagged
1---2name: vis-lens-reproducibility3description: Create Replicative Reproducibility visualization planning spec showing data availability, preprocessing parameter disclosure (bin widths, smoothing windows), plotting library/version, random seeds, and code reference per figure. Replicative lens answering "Can the figures be reproduced from the data and code?"4---56# Replicative Reproducibility Visualization Lens78**Philosophical Mode:** Replicative9**Primary Question:** "Can the figures be reproduced from the data and code?"10**Focus:** Data availability (public / restricted / embargoed), preprocessing parameter11 disclosure (bin widths, smoothing windows, normalization), plotting library and12 version pinning, random seed documentation, per-figure code reference (script or13 notebook cell)1415## Arguments1617`/autoskillit:vis-lens-reproducibility [context_path] [experiment_plan_path]`1819- **context_path** (optional positional arg 1) — Absolute path to a lens context file20 containing IV/DV tables, H0/H1 hypotheses, controlled variables, and success criteria.21 If provided, read this file before beginning analysis to obtain structured context.22 If omitted, discover context by exploring the CWD.23- **experiment_plan_path** (optional positional arg 2) — Absolute path to the full24 experiment plan. If provided, read for complete experimental methodology and design.25 If omitted, locate the experiment plan by exploring the CWD.2627## When to Use2829- Auditing figure reproducibility before public release30- Checking whether preprocessing parameters are fully disclosed31- Verifying that random seeds are documented for stochastic plots32- Linking each figure to the script or notebook cell that generates it33- User invokes `/autoskillit:vis-lens-reproducibility`3435## Critical Constraints3637**NEVER:**38- Modify any source code files39- Do not litter the codebase with useless comments, TODO markers, or explanatory annotations — the skill output and diagram speak for themselves40- Create files outside `{{AUTOSKILLIT_TEMP}}/vis-lens-reproducibility/`41- Treat "code available on request" as equivalent to public availability42- Omit random seed documentation for any figure derived from stochastic processes4344**ALWAYS:**45- Check data availability status for every figure (public/restricted/embargoed)46- Document bin widths for histograms, smoothing windows for time-series, normalization parameters for heatmaps47- Pin plotting library name and version (matplotlib 3.8.2, seaborn 0.13.0, etc.)48- Record the random seed(s) used for any stochastic component (sampling, bootstrapping, noise injection)49- Provide a per-figure code reference: script path or notebook cell identifier50- BEFORE creating any diagram, LOAD the `/autoskillit:mermaid` skill using the Skill tool — this is MANDATORY51- If the Skill tool cannot be used (disable-model-invocation) or refuses this invocation, do NOT proceed with diagram creation. Abort this step and omit the diagram from output.52- Write output to `{{AUTOSKILLIT_TEMP}}/vis-lens-reproducibility/vis_spec_reproducibility_{YYYY-MM-DD_HHMMSS}.md` (relative to the current working directory)53- After writing the file, emit the structured output token as **literal plain text** with no54 markdown formatting on the token name (the adjudicator performs a regex match):5556 ```57 diagram_path = /absolute/path/to/{{AUTOSKILLIT_TEMP}}/vis-lens-reproducibility/vis_spec_reproducibility_{...}.md58 ```5960---6162## Analysis Workflow6364### Step 0: Parse optional arguments6566If positional arg 1 (context_path) is provided and the file exists, read it to obtain67IV/DV tables, H0/H1 hypotheses, controlled variables, and success criteria. If positional68arg 2 (experiment_plan_path) is provided and exists, read the experiment plan for full69methodology. Use this structured context as the foundation for Steps 1–4; skip the CWD70exploration for these fields if the context file supplies them.7172### Step 1: Data Availability Inventory7374For each figure:75- Identify the data source (file path, dataset name, external URL)76- Classify availability: PUBLIC (DOI / URL), RESTRICTED (license required), EMBARGOED (not yet released)77- FLAG FAIL if data is restricted/embargoed with no access plan stated7879### Step 2: Preprocessing Parameter Audit8081For each figure, identify all preprocessing steps that affect visual output:82- **Histograms**: bin width or bin count; normalization (density vs count vs probability)83- **Time-series / learning curves**: smoothing window type (rolling mean, EMA) and window size84- **Heatmaps**: normalization method (min-max, z-score, none); colormap clipping range85- **Scatter/line with aggregation**: aggregation function (mean, median) and grouping86- FLAG WARNING for any preprocessing parameter not documented8788### Step 3: Library and Version Audit8990Scan the codebase for plotting imports:91- Record: `import matplotlib`, `import seaborn`, `import plotly`, etc.92- Check `pyproject.toml` or `requirements.txt` for pinned versions93- FLAG WARNING if plotting library version is not pinned9495### Step 4: Random Seed Audit9697For each figure involving a stochastic component:98- Identify source of randomness: bootstrapping, subsampling, t-SNE/UMAP, noise injection99- Verify `random_state`, `seed`, `np.random.seed`, or equivalent is documented per figure100- FLAG FAIL if any stochastic figure has no documented seed101102### Step 5: Per-Figure Code Reference103104For each figure:105- Identify the script or notebook cell that generates it106- Record: file path + function or cell ID107- FLAG WARNING if a figure has no traceable code reference108109### Step 6: Emit yaml:figure-spec Blocks110111For each figure, emit one `yaml:figure-spec` fenced block with `data_source` and112`annotations` fields capturing reproducibility metadata. Then LOAD `/autoskillit:mermaid`113and create a diagram showing: data availability → preprocessing → library version →114seed documentation → code reference → verdict.115116---117118## Output Template119120```markdown121# Replicative Reproducibility Spec: {System / Experiment Name}122123**Lens:** Replicative Reproducibility (Replicative)124**Question:** Can the figures be reproduced from the data and code?125**Date:** {YYYY-MM-DD}126**Scope:** {What was analyzed}127128## Reproducibility Audit Summary129130| Figure | Data Available | Preprocessing Documented | Library Pinned | Seed Documented | Code Reference | Status |131|--------|---------------|--------------------------|----------------|-----------------|----------------|--------|132| fig-01 | PUBLIC | PASS | PASS | N/A | scripts/plot_main.py | OK |133| fig-02 | RESTRICTED | WARNING | FAIL | PASS | notebooks/ablation.ipynb#cell-7 | FAIL |134135## Figure Specs136137```yaml138# yaml:figure-spec — canonical schema (spec_version: "1.0")139figure_id: "fig-01-main-result"140figure_title: "Model A achieves state-of-the-art on all benchmarks"141spec_version: "1.0"142chart_type: "bar"143chart_type_fallback: "table"144perceptual_justification: "Bars communicate exact values; error bars show CI95 over 5 seeds."145data_source: "results/main.csv (DOI: 10.xxxx/xxxxx)"146data_mapping:147 x: "benchmark"148 y: "score"149 color: "model"150 size: ""151 facet: ""152layout:153 width_inches: 6.0154 height_inches: 4.0155 dpi: 300156stat_overlay:157 type: "error_bar"158 measure: "CI95"159 n_seeds: 5160annotations: ["data: public (DOI); preprocessing: none; library: matplotlib==3.8.2; seeds: 0,1,2,3,4; code: scripts/plot_main.py:plot_main_result()"]161anti_patterns: []162palette: "okabe-ito"163format: "pdf"164target_dpi: 300165library: "matplotlib==3.8.2"166report_section: "Section 4 Results"167priority: "P0"168placement_tier: "main"169conflicts: []170metadata:171 created_by: "vis-lens-reproducibility"172 reviewed_by: ""173 last_updated: "{YYYY-MM-DD}"174```175176## Reproducibility Diagram177178```mermaid179%%{init: {'flowchart': {'nodeSpacing': 50, 'rankSpacing': 60, 'curve': 'basis'}}}%%180flowchart TB181 %% CLASS DEFINITIONS %%182 classDef cli fill:#1a237e,stroke:#7986cb,stroke-width:2px,color:#fff;183 classDef stateNode fill:#004d40,stroke:#4db6ac,stroke-width:2px,color:#fff;184 classDef handler fill:#e65100,stroke:#ffb74d,stroke-width:2px,color:#fff;185 classDef output fill:#00695c,stroke:#4db6ac,stroke-width:2px,color:#fff;186 classDef detector fill:#b71c1c,stroke:#ef5350,stroke-width:2px,color:#fff;187 classDef phase fill:#6a1b9a,stroke:#ba68c8,stroke-width:2px,color:#fff;188189 subgraph Data ["DATA AVAILABILITY"]190 D1["source: {path / DOI}<br/>━━━━━━━━━━<br/>public / restricted / embargoed"]191 end192193 subgraph Preproc ["PREPROCESSING"]194 P1["bin width / window: {N}<br/>normalization: {method}<br/>━━━━━━━━━━<br/>documented: PASS / FAIL"]195 end196197 subgraph Library ["LIBRARY VERSION"]198 L1["matplotlib=={version}<br/>━━━━━━━━━━<br/>pinned: PASS / WARNING"]199 end200201 subgraph Seeds ["RANDOM SEEDS"]202 S1["seeds: {list}<br/>━━━━━━━━━━<br/>documented: PASS / FAIL / N/A"]203 end204205 subgraph CodeRef ["CODE REFERENCE"]206 C1["script: {path}:{function}<br/>━━━━━━━━━━<br/>traceable: PASS / WARNING"]207 end208209 subgraph Verdict ["VERDICT"]210 V1["{OK / WARNING / FAIL}<br/>━━━━━━━━━━<br/>{reason}"]211 end212213 D1 --> P1214 P1 --> L1215 L1 --> S1216 S1 --> C1217 C1 --> V1218219 class D1 stateNode;220 class P1 handler;221 class L1 cli;222 class S1 output;223 class C1 phase;224 class V1 detector;225```226227**Color Legend:**228| Color | Category | Description |229|-------|----------|-------------|230| Dark Teal | Data | Data availability status |231| Orange | Preprocessing | Parameter documentation check |232| Dark Blue | Library | Plotting library version pin |233| Teal | Seeds | Random seed documentation |234| Purple | Code Ref | Per-figure code traceability |235| Red | Verdict | OK / WARNING / FAIL assessment |236```237238---239240## Pre-Diagram Checklist241242Before creating the diagram, verify:243244- [ ] LOADED `/autoskillit:mermaid` skill using the Skill tool245- [ ] Using ONLY classDef styles from the mermaid skill (no invented colors)246- [ ] Diagram will include a color legend table247- [ ] Every restricted/embargoed dataset is flagged as FAIL or WARNING248- [ ] Every histogram bin width and time-series smoothing window is audited249- [ ] Every stochastic figure has its seeds documented or flagged