Research Exploration Sandbox
Create a structured explorations/ folder for experimental work. Fast-track experiments without full rigor, then graduate successful ones to production code.
Your experiments are scattered across 15 Jupyter notebooks with names like 'test_v3_final_FINAL.ipynb.' When something works, you can't remember which notebook had the good version. A structured exploration sandbox lets you experiment freely while keeping a clear path from prototype to production code.
Who it's for: research scientists managing multiple concurrent experiments, PhD students organizing exploratory analysis alongside thesis code, data scientists prototyping models before production deployment, ML engineers separating experimental from production code, lab managers establishing reproducible research workflows for their teams
Example
"Set up a research sandbox for my deep learning experiments" → Structured workspace: explorations/ folder with timestamped experiment directories, standard template for each experiment (hypothesis, setup, results, conclusions), auto-logging of parameters and outcomes, graduation criteria for promoting experiments to main codebase, and a experiment index for quick reference
New here? 3-minute setup guide → | Already set up? Copy the template below.
# Exploration Protocol
## The Problem
Without structure, experimental code scatters across the repository:
- Test scripts in `scripts/`
- One-off files in root
- "Temporary" code that lives forever
- No one knows which version was the good one
## The Solution: Exploration Folder
All experimental work goes into `explorations/` first:
```
explorations/
├── [active-project]/
│ ├── README.md # Goal, hypothesis, status
│ ├── code/ # Iterations (_v1, _v2, _v3)
│ ├── data/ # Test data, inputs
│ └── output/ # Results, generated files
└── ARCHIVE/
├── completed_[name]/ # Graduated to production
└── abandoned_[name]/ # Documented why stopped
```
## Starting an Exploration
Before coding, create the structure:
```
mkdir -p explorations/[project-name]/{code,data,output}
```
Create `explorations/[project-name]/README.md`:
```markdown
# Exploration: [Name]
## Goal
[What are you trying to learn or build?]
## Hypothesis
[What do you expect to happen?]
## Status
[ ] In progress / [x] Completed / [ ] Abandoned
## Notes
[Running notes as you work]
## Outcome
[What did you learn? Did hypothesis hold?]
```
## Fast-Track vs Plan-First
| Question | Answer | Workflow |
|----------|--------|----------|
| "Will this ship?" | YES | Plan-First (80/100 quality) |
| "Am I testing an idea?" | YES | Fast-Track (60/100 quality) |
| "Does this improve the project?" | NO | Don't build it |
### Fast-Track Rules (for explorations only)
- Skip formal planning
- 60/100 quality threshold (vs 80 for production)
- No PR required
- Document as you go, not after
- Can abandon anytime with brief note
## Research Value Check (2 minutes)
Before starting ANY exploration:
1. "Does this improve the paper/product/analysis?"
- **Yes** → Explore
- **Maybe** → Explore (quick test)
- **No** → Skip
2. "Is this the smallest experiment that could validate the idea?"
- If no, scope down first
## Lifecycle
```
Research value check (2 min)
↓
Create explorations/[project]/ (5 min)
↓
Code without overhead (60/100 quality)
↓
Decision point (1-2 hours):
├── Graduate → Move to src/, upgrade to 80/100
├── Keep exploring → Stay in explorations/
└── Abandon → Move to ARCHIVE/ with explanation
```
## Graduation Process
When exploration succeeds:
1. Document what worked in the README
2. Refactor code to production standards (80/100)
3. Move to appropriate production location
4. Update imports, tests, documentation
5. Move exploration folder to `ARCHIVE/completed_[name]/`
## Abandonment Process
When exploration fails or isn't worth continuing:
1. Document WHY in the README (so future-you doesn't retry)
2. Note any partial learnings
3. Move to `ARCHIVE/abandoned_[name]/`
4. No shame — failed experiments are valuable data
## Kill Switch
At any point, you can stop:
- Archive with one-paragraph explanation
- No sunk cost guilt
- Move on to next idea
What This Does
This playbook creates a structured sandbox for experimental work. Instead of scattering test scripts and experiments across your codebase, all exploratory work goes into explorations/ first. You can work fast without full rigor, then graduate successful experiments to production or archive failures with documentation.
Prerequisites
- Claude Code installed and configured
- A project where you do experimental/research work explorations/ ├── [active-project]/ │ ├── README.md # Goal, hypothesis, status │ ├── code/ # Iterations (_v1, v2, v3) │ ├── data/ # Test data, inputs │ └── output/ # Results, generated files └── ARCHIVE/ ├── completed[name]/ # Graduated to production └── abandoned[name]/ # Documented why stopped
## Starting an Exploration
Before coding, create the structure:
mkdir -p explorations/[project-name]/{code,data,output}
Create `explorations/[project-name]/README.md`:
```markdown
# Exploration: [Name]
## Goal
[What are you trying to learn or build?]
## Hypothesis
[What do you expect to happen?]
## Status
[ ] In progress / [x] Completed / [ ] Abandoned
## Notes
[Running notes as you work]
## Outcome
[What did you learn? Did hypothesis hold?]
Fast-Track vs Plan-First
| Question | Answer | Workflow |
|---|---|---|
| "Will this ship?" | YES | Plan-First (80/100 quality) |
| "Am I testing an idea?" | YES | Fast-Track (60/100 quality) |
| "Does this improve the project?" | NO | Don't build it |
Fast-Track Rules (for explorations only)
- Skip formal planning
- 60/100 quality threshold (vs 80 for production)
- No PR required
- Document as you go, not after
- Can abandon anytime with brief note
Research Value Check (2 minutes)
Before starting ANY exploration:
-
"Does this improve the paper/product/analysis?"
- Yes → Explore
- Maybe → Explore (quick test)
- No → Skip
-
"Is this the smallest experiment that could validate the idea?"
- If no, scope down first
Lifecycle
Research value check (2 min)
↓
Create explorations/[project]/ (5 min)
↓
Code without overhead (60/100 quality)
↓
Decision point (1-2 hours):
├── Graduate → Move to src/, upgrade to 80/100
├── Keep exploring → Stay in explorations/
└── Abandon → Move to ARCHIVE/ with explanation
Graduation Process
When exploration succeeds:
- Document what worked in the README
- Refactor code to production standards (80/100)
- Move to appropriate production location
- Update imports, tests, documentation
- Move exploration folder to
ARCHIVE/completed_[name]/
Abandonment Process
When exploration fails or isn't worth continuing:
- Document WHY in the README (so future-you doesn't retry)
- Note any partial learnings
- Move to
ARCHIVE/abandoned_[name]/ - No shame — failed experiments are valuable data
Kill Switch
At any point, you can stop:
- Archive with one-paragraph explanation
- No sunk cost guilt
- Move on to next idea
## Step-by-Step Setup
### Step 1: Create the explorations structure
```bash
mkdir -p explorations/ARCHIVE
Step 2: Add to your CLAUDE.md
Add the exploration protocol to your project's CLAUDE.md.
Step 3: Start your first exploration
mkdir -p explorations/test-new-api/{code,data,output}
Create the README:
# Exploration: Test New API
## Goal
Evaluate whether the new Stripe API v3 simplifies our checkout flow
## Hypothesis
v3 should reduce checkout code by 30% and eliminate the webhook complexity
## Status
[ ] In progress
## Notes
- Starting exploration 2024-01-15
Example Usage
User:
"I want to experiment with using DuckDB instead of SQLite for analytics queries"
Claude:
Starting exploration for DuckDB evaluation.
Created structure:
explorations/duckdb-analytics/ ├── README.md ├── code/ ├── data/ └── output/README.md:
# Exploration: DuckDB for Analytics ## Goal Evaluate if DuckDB improves analytics query performance over SQLite ## Hypothesis DuckDB's columnar storage should make aggregate queries 5-10x faster ## Status [ ] In progress ## Test Plan 1. Import sample data (1M rows) 2. Run benchmark queries in both DBs 3. Compare query times 4. Assess integration complexityReady to start coding. Should I begin with the data import script?
Later - Graduation:
"The exploration succeeded. DuckDB is 8x faster. Graduate to production."
Claude:
Graduating DuckDB exploration:
- Refactoring
explorations/duckdb-analytics/code/queries.pyto production standards- Moving to
src/analytics/duckdb_queries.py- Adding tests in
tests/analytics/- Updating README with integration notes
- Moving exploration to
explorations/ARCHIVE/completed_duckdb-analytics/Done. DuckDB is now production-ready in
src/analytics/.
Tips
- Default to explorations/: When unsure if something will ship, start in explorations. Easier to graduate than to extract.
- Version your iterations: Use
_v1,_v2,_v3suffixes. Don't delete old versions until exploration completes. - Document as you go: "I'll document later" means never. Quick notes now > detailed docs never.
- Abandon freely: Knowing what doesn't work is valuable. Archive with notes and move on.
Troubleshooting
Problem: Explorations never get graduated
Solution: Set time limits. "If not graduated in 2 weeks, either complete or archive."
Problem: explorations/ folder is cluttered
Solution: Archive aggressively. Anything older than a month should be graduated or archived.
Problem: Exploration code quality is too low even for experiments
Solution: Even fast-track code should run. 60/100 means "works but not polished," not "broken."