--- name: experiment-set-design description: Use when designing experiments to test whether a Claude Code skill is effective, or when planning how to validate a new or improved skill --- # Experiment Set Design ## Core Principle Compliance doesn't prove quality. Quality requires blind comparison against baseline. ## The Baseline Requirement **NON-NEGOTIABLE:** Every experiment needs a baseline -- same prompt, same task, no skill loaded. No baseline = invalid experiment. ## Task Selection Checklist Each task must satisfy ALL of: - [ ] Skill's guidance should produce **different behavior** on this task - [ ] Complex enough that **architecture decisions matter** (not a one-liner) - [ ] **Multiple valid approaches** exist (skill's approach is distinguishable) - [ ] Covers a **different domain or language** than other tasks in the set Aim for 3-5 tasks per phase. Start small, add tasks when overfitting is suspected. ## Three-Phase Progression ``` Phase 1: COMPLIANCE Phase 2: STRESS Phase 3: QUALITY "Does it follow?" "Does it follow under "Does following help?" pressure?" PASS/FAIL per rule PASS/FAIL per rule Blind review (use + competing instructions blind-skill-assessment) + edge cases Winner per dimension | | | v v v All PASS?─── no ──> Fix skill, re-run phase | yes | v Advance to next phase ``` **Phase 1 -- Compliance.** Check each rule. Binary PASS/FAIL. **Phase 2 -- Stress.** Same checks + competing instructions ("just write the whole thing"), time pressure, conflicting edge cases. **Phase 3 -- Quality.** Run with and without skill. Blind-assess using `blind-skill-assessment`. If skill wins on aggregate, advance. If baseline wins consistently, the skill is counterproductive — rethink or abandon it rather than forcing further iterations. **Advancement:** All PASS before advancing. Any FAIL: improve skill, re-run current phase. ## Task Set Diversity Vary to prevent overfitting: - **Domain:** CLI tool, web handler, data pipeline, algorithm - **Complexity:** Single function, multi-module, concurrent - **Language:** At least 2 if the skill is language-agnostic After 2+ improvement cycles on the same task set, add new tasks. ## Revision Tracking For each run, record: skill version (git hash), tasks run, phase, results, what changed since last run. ## Example: HDD Skill Phases | Phase | Tasks | Method | Result | |-------|-------|--------|--------| | 1: Compliance | 5 tasks (Python, Haskell, Go) | Transcript check: holes visible? One-at-a-time? | 4/5 PASS, 1 FAIL | | 1b: Re-run | Same 5 after skill edit | Same checks | 5/5 PASS | | 2: Stress | 5 tasks + competing instructions | Same checks under pressure | 5/5 PASS | | 3: Quality | 5 tasks, A vs B (blinded) | Blind 3-persona review | A won 4/5 → decode: A=skill | ## Red Flags -- STOP - Designing experiments with no baseline comparison - All tasks at the same difficulty or in the same domain - Jumping to Phase 3 without passing Phase 1 - Same task set for 3+ improvement cycles without adding tasks - No record of which skill version produced which results **If you catch yourself doing any of these: STOP. Add baselines. Vary your tasks. Track your versions.**