Loading...
Loading...
Safe experimentation framework for AI agents. Creates isolated sandbox environments for trying new features, testing approaches, and exploring solutions without polluting the main codebase. USE WHEN: Agent needs to try something uncertain, explore multiple approaches, test a new library, prototype a feature, or run a technical spike before committing to implementation. PRIMARY TRIGGERS: "experiment with" = Setup sandbox + run experiment "try this approach" = Quick experiment in sandbox "spike" / "POC" / "prototype" = Time-boxed technical investigation "tinker" / "tinkering mode" = Enter experimentation workflow "explore options" = Multi-approach comparison in sandbox NOT FOR: Debugging (use debugger), testing (use test runner), or committed feature work (use git branches). DIFFERENTIATOR: Unlike git branches (for committed direction), tinkering is for "I don't know if this will work" exploration. Try 5 things in sandbox before committing to a branch. Faster feedback, zero codebase pollution.
npx skill4agent add rfxlamia/claude-skillkit tinkering| Situation | Tinkering? | Why |
|---|---|---|
| "Will this library work for our use case?" | Yes | Unknown outcome, need to explore |
| "Which of these 3 approaches is fastest?" | Yes | Comparing multiple options |
| "How do I integrate this API?" | Yes | Technical spike, learning-focused |
| "Add a login button to the header" | No | Clear requirement, use git branch |
| "Fix the null pointer on line 42" | No | Debugging, not experimenting |
| "Refactor auth module to use JWT" | Maybe | If approach uncertain, spike first |
# 1. Create experiment directory
mkdir -p _experiments/{experiment-name}
# 2. Add to .gitignore (if not already present)
grep -qxF '_experiments/' .gitignore 2>/dev/null || echo '_experiments/' >> .gitignore
# 3. Create manifest (first time only)
# See MANIFEST.md template below_experiments/MANIFEST.md# Experiment Log
## Active
### {experiment-name}
- **Date**: YYYY-MM-DD
- **Hypothesis**: What we're trying to learn
- **Status**: active
- **Result**: (pending)
## Completed
<!-- Move finished experiments here -->_experiments/{name}/Question : What specific question are we answering?
Success : How will we know it works?
Time box : Maximum time to spend (default: 30 min)
Scope : Which files/areas are involved?_experiments/{name}/HYPOTHESIS.mdQuestion : Can we replace moment.js with date-fns and reduce bundle size?
Success : Bundle decreases >20%, all date formatting still works
Time box : 20 minutes
Scope : src/utils/date.ts, package.json# Copy the file(s) you need to change
cp src/utils/date.ts _experiments/date-fns-migration/date.ts
# Edit the copy freely - zero risk to production# Create new files directly in sandbox
touch _experiments/websocket-poc/server.ts
touch _experiments/websocket-poc/client.ts# Minimal test script in sandbox
touch _experiments/redis-eval/test_redis.py
# Use isolated dependencies (venv, local node_modules)_experiments/caching-spike/
approach-a-redis/
approach-b-memory/
approach-c-sqlite/
COMPARISON.md # Side-by-side evaluation- **Result**: SUCCESS - date-fns reduced bundle by 34%, all tests pass
- **Status**: graduated
- **Notes**: Need to handle timezone edge case in formatRelative()references/graduation-checklist.mdrm -rf _experiments/{name}/# Remove completed experiment
rm -rf _experiments/{experiment-name}/
# Update MANIFEST.md - move entry to "Completed" section## Completed
### date-fns-migration (2025-01-15)
- GRADUATED - Implemented in commit abc123
- Learnings: date-fns 3x smaller, timezone handling needs explicit config
### graphql-evaluation (2025-01-10)
- DISCARDED - Too much overhead for our simple REST API
- Learnings: REST + OpenAPI better fit for <20 endpointsSetup -> mkdir _experiments/{name}, add to .gitignore
Hypothesize -> Question + success criteria + time box
Experiment -> Build in sandbox (never touch production)
Evaluate -> Check against success criteria
Graduate -> Re-implement properly in production
Cleanup -> Remove files, update manifest_experiments/