--- name: blind-skill-assessment description: Use when comparing two versions of agent output to determine which is better, or when evaluating whether a skill produces higher quality results than baseline --- # Blind Skill Assessment ## Core Principle No baseline, no experiment. Every assessment compares two versions under blinded conditions with structured scoring. ## Process ``` 1. BLIND — Randomly assign labels A/B. Record mapping privately. Strip origin hints (filenames, "baseline"/"skill" comments). 2. RUBRIC — State scoring dimensions before reading the code. 3. JUDGE — Three personas score both versions (1-5 per dimension). 4. DECODE — Reveal A/B mapping only after ALL scoring is complete. 5. AGGREGATE — Tally dimension wins, compute per-persona averages. ``` ## Default Personas | Persona | Focus | Dimensions | |---------|-------|------------| | **Bug Hunter** | Correctness | Bugs, edge cases, error handling, race conditions | | **Architect** | Design | Modularity, separation of concerns, extensibility | | **Pragmatist** | Clarity | Readability, naming, documentation, maintainability | Each persona scores 1-5 per dimension for both A and B, then picks a per-dimension winner. Append confidence: `[h]` `[m]` `[l]`. ### Scoring Anchors - **1** Broken **2** Significant issues **3** Adequate **4** Good, minor issues **5** Excellent ## Anti-Bias Rules - Judges never see origin labels ("baseline", "skill-version", "v1", "v2"). - Randomize which version is A. Do not always assign the first-listed input as A. - Score each dimension independently — no holistic verdicts. - Sanitize identifying information (file paths, naming conventions that leak origin). ## Custom Personas Add a domain-specific persona when the defaults don't cover the task's concerns. Each needs: **name** (role title), **focus area** (one sentence), **scoring anchors** (what 1 and 5 mean). ## Aggregation 1. **Per-experiment:** Dimension wins across all personas. More wins takes the experiment. 2. **Cross-experiment:** Tally experiment wins as "X/N won by [version]." 3. **Per-persona:** Average scores to identify where improvement is strongest/weakest. ## Example Task: Compare two implementations of `merge3()`. ``` ## Label Assignment (private) Coin flip: tails → Version A = skill-version, Version B = baseline ## Bug Hunter — Correctness A B Edge cases: 4[h] 3[h] — A handles empty-file edge case, B does not Error path: 3[m] 3[m] — both miss error on binary input Winner: A ## Architect — Design A B Modularity: 4[h] 3[h] — A separates hunk extraction cleanly API surface: 3[m] 4[m] — B's top-level API has better early-exit Winner: tie ## Pragmatist — Clarity A B Readability: 3[h] 4[h] — B's variable names are clearer Documentation: 4[m] 3[m] — A has better docstring coverage Winner: tie ## Decode A = skill-version, B = baseline ## Result Dimension wins: A=3, B=2, ties=1 → A wins this experiment. ``` ## Red Flags — STOP - Evaluating without randomizing labels - Reading origin labels before scoring is complete - Giving only a holistic verdict with no per-dimension scores - Skipping the upfront rubric ("I'll just see what stands out") - Using a single perspective instead of multiple personas **If you catch yourself doing any of these: STOP. Randomize. Score per-dimension. Then proceed.**