Measurement Validity Experimental Design Lens
Philosophical Mode: Psychometric
Primary Question: "Do measurements justify the interpretation?"
Focus: Metric-Construct Alignment, Proxy Validity, Reliability, Sensitivity, Consequential Validity
Arguments
/autoskillit:exp-lens-measurement-validity [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
- Metrics may not measure what they claim to; proxy metrics used instead of true objectives
- Evaluation scores treated as "truth" without validation
- Metric choice is contested or under-specified
- User invokes
/autoskillit:exp-lens-measurement-validity or /autoskillit:make-experiment-diag measurement
Critical Constraints
NEVER:
- Modify any source code or experimental artifacts
- 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}}/exp-lens-measurement-validity/
- Run subagents in the background (
run_in_background: true is prohibited)
ALWAYS:
Treat every reported metric as a claim requiring a validity argument
Enumerate known failure modes: gaming, saturation, proxy collapse, and aggregation artifacts
Assess reliability (stability under reruns) and sensitivity (ability to distinguish meaningful differences) for each metric
Identify where metric-construct alignment is weak or unsupported by evidence
BEFORE creating any optional 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}}/exp-lens-measurement-validity/exp_diag_measurement_validity_{YYYY-MM-DD_HHMMSS}.md
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}}/exp-lens-measurement-validity/exp_diag_measurement_validity_{...}.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-5; skip the CWD
exploration for these fields if the context file supplies them.
Step 1: Launch Parallel Exploration Subagents
Spawn Explore subagents to investigate:
Metric Definitions
- Find all metrics computed and reported
- Look for: metric, score, accuracy, f1, precision, recall, bleu, rouge, loss, error_rate, latency
Intended Interpretations
- Find what conclusions are drawn from each metric
- Look for: better, worse, improves, indicates, measures, reflects, captures, proxy
Metric Computation Details
- Find exactly how each metric is computed (aggregation, weighting, edge cases)
- Look for: average, macro, micro, weighted, threshold, cutoff, aggregate
Alternative Metrics Considered
- Find whether alternative metrics were evaluated and why they were rejected
- Look for: also measured, alternative, we chose, instead of, limitation
Construct-Metric Gap
- Find where the metric diverges from the construct it claims to measure
- Look for: limitation, caveat, imperfect, proxy, approximate, does not capture
Step 2: Build Validity Arguments
For each reported metric, construct a validity argument:
- What construct does this metric claim to measure?
- What evidence supports this claim?
- What are the known failure modes (gaming, saturation, proxy collapse)?
- Is the metric reliable (stable under reruns)?
- Is it sensitive (can it distinguish meaningful differences)?
Step 3: Analyze Metric-Construct Alignment
CRITICAL — for every metric-to-claim link:
- Is there a logical argument connecting the number to the concept?
- Could a system score high on this metric while being poor on the intended construct?
- What would gaming look like?
- Does the aggregation method (macro vs micro, mean vs median) preserve the intended construct?
- Are there known saturation regimes where the metric stops being informative?
Step 4: Optional Metric-Construct Mapping Diagram
This lens does NOT produce a primary mermaid diagram. The output is a structured validity argument. An optional simplified metric mapping diagram may be included if it clarifies the metric-construct relationship.
If including the optional diagram:
Direction: LR (constructs on left, metrics on right)
Minimal diagram: Construct nodes on the left, Metric nodes on the right, with edge labels indicating strength of alignment
Node Styling:
cli class: Constructs and intended properties being claimed
output class: Measured metrics (what is actually computed)
gap class: Weak or missing alignments, proxy collapses
handler class: Proxy relationships and intermediate mappings
Connection Types:
- Solid arrows for strong, well-evidenced alignment
- Dashed arrows for proxy or contested alignment
- Edge labels naming the type of relationship or its weakness
Step 5: Write Output
Write the output to: {{AUTOSKILLIT_TEMP}}/exp-lens-measurement-validity/exp_diag_measurement_validity_{YYYY-MM-DD_HHMMSS}.md (relative to the current working directory)
Output Template
# Measurement Validity Analysis: {Experiment Name}
**Lens:** Measurement Validity (Psychometric)
**Question:** Do measurements justify the interpretation?
**Date:** {YYYY-MM-DD}
**Scope:** {What was analyzed}
## Metric Inventory
| Metric | Construct Claimed | Computation | Reliability | Sensitivity |
|--------|-------------------|-------------|-------------|-------------|
| {metric name} | {what it claims to measure} | {aggregation/formula} | {stable / unstable / unknown} | {high / low / saturated} |
## Validity Arguments
### {Metric Name}
**Construct claimed:** {The property this metric is presented as measuring}
**Evidence for alignment:**
- {Supporting argument or citation}
**Evidence against alignment / known failure modes:**
- {Failure mode 1: e.g., gameable by surface pattern matching}
- {Failure mode 2: e.g., proxy collapses when distribution shifts}
**Reliability assessment:** {Stable under reruns? Sensitive to seed?}
**Sensitivity assessment:** {Can it distinguish meaningful differences in the relevant range?}
**Verdict:** {Strong / Partial / Weak / Unsupported}
---
## Proxy Collapse Risks
| Metric | Proxy For | Collapse Condition | Consequence |
|--------|-----------|--------------------|-------------|
| {metric} | {true construct} | {when proxy diverges from construct} | {what is falsely concluded} |
## Gaming Vulnerabilities
| Metric | Gaming Strategy | Detection Method |
|--------|----------------|-----------------|
| {metric} | {how to maximize score without improving construct} | {how to detect gaming} |
## Optional: Metric-Construct Mapping Diagram
{Include only if it clarifies alignment; omit if argument tables are sufficient}
```mermaid
%%{init: {'flowchart': {'nodeSpacing': 50, 'rankSpacing': 60, 'curve': 'basis'}}}%%
flowchart LR
%% 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 phase fill:#6a1b9a,stroke:#ba68c8,stroke-width:2px,color:#fff;
classDef newComponent fill:#2e7d32,stroke:#81c784,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 gap fill:#ff6f00,stroke:#ffa726,stroke-width:2px,color:#000;
classDef integration fill:#c62828,stroke:#ef9a9a,stroke-width:2px,color:#fff;
subgraph Constructs ["Intended Constructs"]
C1["Construct A<br/>━━━━━━━━━━<br/>The property claimed"]
C2["Construct B<br/>━━━━━━━━━━<br/>Another property"]
end
subgraph Metrics ["Measured Metrics"]
M1["Metric X<br/>━━━━━━━━━━<br/>Computation method"]
M2["Metric Y<br/>━━━━━━━━━━<br/>Computation method"]
end
subgraph Gaps ["Weak / Missing Alignments"]
G1["Proxy Collapse Risk<br/>━━━━━━━━━━<br/>Condition for divergence"]
end
%% ALIGNMENTS %%
C1 -->|"strong alignment"| M1
C2 -->|"proxy (weak)"| M2
M2 -.->|"diverges under"| G1
%% CLASS ASSIGNMENTS %%
class C1,C2 cli;
class M1,M2 output;
class G1 gap;
Color Legend:
| Color |
Category |
Description |
| Dark Blue |
Construct |
Intended properties being claimed |
| Dark Teal |
Metric |
What is actually computed and reported |
| Yellow |
Gap |
Weak alignment, proxy collapse, or missing evidence |
| Orange |
Proxy |
Intermediate proxy relationships |
Summary Verdict
| Metric |
Verdict |
Primary Concern |
| {metric} |
{Strong / Partial / Weak / Unsupported} |
{One-line summary of the key validity concern} |
---
## Pre-Diagram Checklist
Before creating any optional 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
---
## Related Skills
- `/autoskillit:make-experiment-diag` - Parent skill for lens selection
- `/autoskillit:mermaid` - MUST BE LOADED before creating any optional diagram
- `/autoskillit:exp-lens-estimand-clarity` - For auditing the upstream claim the metric is meant to support
- `/autoskillit:exp-lens-benchmark-representativeness` - For auditing whether the evaluation set generalizes
1---2name: exp-lens-measurement-validity3description: Analyze measurement validity for experimental design — auditing metric-construct alignment, proxy validity, reliability, sensitivity, and consequential validity. Argumentative lens answering "Do measurements justify the interpretation?"4---56# Measurement Validity Experimental Design Lens78**Philosophical Mode:** Psychometric9**Primary Question:** "Do measurements justify the interpretation?"10**Focus:** Metric-Construct Alignment, Proxy Validity, Reliability, Sensitivity, Consequential Validity1112## Arguments1314`/autoskillit:exp-lens-measurement-validity [context_path] [experiment_plan_path]`1516- **context_path** (optional positional arg 1) — Absolute path to a lens context file17 containing IV/DV tables, H0/H1 hypotheses, controlled variables, and success criteria.18 If provided, read this file before beginning analysis to obtain structured context.19 If omitted, discover context by exploring the CWD.20- **experiment_plan_path** (optional positional arg 2) — Absolute path to the full21 experiment plan. If provided, read for complete experimental methodology and design.22 If omitted, locate the experiment plan by exploring the CWD.2324## When to Use2526- Metrics may not measure what they claim to; proxy metrics used instead of true objectives27- Evaluation scores treated as "truth" without validation28- Metric choice is contested or under-specified29- User invokes `/autoskillit:exp-lens-measurement-validity` or `/autoskillit:make-experiment-diag measurement`3031## Critical Constraints3233**NEVER:**34- Modify any source code or experimental artifacts35- Do not litter the codebase with useless comments, TODO markers, or explanatory annotations — the skill output and diagram speak for themselves36- Create files outside `{{AUTOSKILLIT_TEMP}}/exp-lens-measurement-validity/`37- Run subagents in the background (`run_in_background: true` is prohibited)3839**ALWAYS:**40- Treat every reported metric as a claim requiring a validity argument41- Enumerate known failure modes: gaming, saturation, proxy collapse, and aggregation artifacts42- Assess reliability (stability under reruns) and sensitivity (ability to distinguish meaningful differences) for each metric43- Identify where metric-construct alignment is weak or unsupported by evidence44- BEFORE creating any optional diagram, LOAD the `/autoskillit:mermaid` skill using the Skill tool - this is MANDATORY45- 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.46- Write output to `{{AUTOSKILLIT_TEMP}}/exp-lens-measurement-validity/exp_diag_measurement_validity_{YYYY-MM-DD_HHMMSS}.md`47- After writing the file, emit the structured output token as **literal plain text** with no48 markdown formatting on the token name (the adjudicator performs a regex match):4950 ```51 diagram_path = /absolute/path/to/{{AUTOSKILLIT_TEMP}}/exp-lens-measurement-validity/exp_diag_measurement_validity_{...}.md52 ```5354---5556## Analysis Workflow5758### Step 0: Parse optional arguments5960If positional arg 1 (context_path) is provided and the file exists, read it to obtain61IV/DV tables, H0/H1 hypotheses, controlled variables, and success criteria. If positional62arg 2 (experiment_plan_path) is provided and exists, read the experiment plan for full63methodology. Use this structured context as the foundation for Steps 1-5; skip the CWD64exploration for these fields if the context file supplies them.6566### Step 1: Launch Parallel Exploration Subagents6768Spawn Explore subagents to investigate:6970**Metric Definitions**71- Find all metrics computed and reported72- Look for: metric, score, accuracy, f1, precision, recall, bleu, rouge, loss, error_rate, latency7374**Intended Interpretations**75- Find what conclusions are drawn from each metric76- Look for: better, worse, improves, indicates, measures, reflects, captures, proxy7778**Metric Computation Details**79- Find exactly how each metric is computed (aggregation, weighting, edge cases)80- Look for: average, macro, micro, weighted, threshold, cutoff, aggregate8182**Alternative Metrics Considered**83- Find whether alternative metrics were evaluated and why they were rejected84- Look for: also measured, alternative, we chose, instead of, limitation8586**Construct-Metric Gap**87- Find where the metric diverges from the construct it claims to measure88- Look for: limitation, caveat, imperfect, proxy, approximate, does not capture8990### Step 2: Build Validity Arguments9192For each reported metric, construct a validity argument:931. What construct does this metric claim to measure?942. What evidence supports this claim?953. What are the known failure modes (gaming, saturation, proxy collapse)?964. Is the metric reliable (stable under reruns)?975. Is it sensitive (can it distinguish meaningful differences)?9899### Step 3: Analyze Metric-Construct Alignment100101**CRITICAL — for every metric-to-claim link:**102- Is there a logical argument connecting the number to the concept?103- Could a system score high on this metric while being poor on the intended construct?104- What would gaming look like?105- Does the aggregation method (macro vs micro, mean vs median) preserve the intended construct?106- Are there known saturation regimes where the metric stops being informative?107108### Step 4: Optional Metric-Construct Mapping Diagram109110This lens does NOT produce a primary mermaid diagram. The output is a structured validity argument. An optional simplified metric mapping diagram may be included if it clarifies the metric-construct relationship.111112If including the optional diagram:113114**Direction:** `LR` (constructs on left, metrics on right)115116**Minimal diagram:** Construct nodes on the left, Metric nodes on the right, with edge labels indicating strength of alignment117118**Node Styling:**119- `cli` class: Constructs and intended properties being claimed120- `output` class: Measured metrics (what is actually computed)121- `gap` class: Weak or missing alignments, proxy collapses122- `handler` class: Proxy relationships and intermediate mappings123124**Connection Types:**125- Solid arrows for strong, well-evidenced alignment126- Dashed arrows for proxy or contested alignment127- Edge labels naming the type of relationship or its weakness128129### Step 5: Write Output130131Write the output to: `{{AUTOSKILLIT_TEMP}}/exp-lens-measurement-validity/exp_diag_measurement_validity_{YYYY-MM-DD_HHMMSS}.md` (relative to the current working directory)132133---134135## Output Template136137```markdown138# Measurement Validity Analysis: {Experiment Name}139140**Lens:** Measurement Validity (Psychometric)141**Question:** Do measurements justify the interpretation?142**Date:** {YYYY-MM-DD}143**Scope:** {What was analyzed}144145## Metric Inventory146147| Metric | Construct Claimed | Computation | Reliability | Sensitivity |148|--------|-------------------|-------------|-------------|-------------|149| {metric name} | {what it claims to measure} | {aggregation/formula} | {stable / unstable / unknown} | {high / low / saturated} |150151## Validity Arguments152153### {Metric Name}154155**Construct claimed:** {The property this metric is presented as measuring}156157**Evidence for alignment:**158- {Supporting argument or citation}159160**Evidence against alignment / known failure modes:**161- {Failure mode 1: e.g., gameable by surface pattern matching}162- {Failure mode 2: e.g., proxy collapses when distribution shifts}163164**Reliability assessment:** {Stable under reruns? Sensitive to seed?}165166**Sensitivity assessment:** {Can it distinguish meaningful differences in the relevant range?}167168**Verdict:** {Strong / Partial / Weak / Unsupported}169170---171172## Proxy Collapse Risks173174| Metric | Proxy For | Collapse Condition | Consequence |175|--------|-----------|--------------------|-------------|176| {metric} | {true construct} | {when proxy diverges from construct} | {what is falsely concluded} |177178## Gaming Vulnerabilities179180| Metric | Gaming Strategy | Detection Method |181|--------|----------------|-----------------|182| {metric} | {how to maximize score without improving construct} | {how to detect gaming} |183184## Optional: Metric-Construct Mapping Diagram185186{Include only if it clarifies alignment; omit if argument tables are sufficient}187188```mermaid189%%{init: {'flowchart': {'nodeSpacing': 50, 'rankSpacing': 60, 'curve': 'basis'}}}%%190flowchart LR191 %% CLASS DEFINITIONS %%192 classDef cli fill:#1a237e,stroke:#7986cb,stroke-width:2px,color:#fff;193 classDef stateNode fill:#004d40,stroke:#4db6ac,stroke-width:2px,color:#fff;194 classDef handler fill:#e65100,stroke:#ffb74d,stroke-width:2px,color:#fff;195 classDef phase fill:#6a1b9a,stroke:#ba68c8,stroke-width:2px,color:#fff;196 classDef newComponent fill:#2e7d32,stroke:#81c784,stroke-width:2px,color:#fff;197 classDef output fill:#00695c,stroke:#4db6ac,stroke-width:2px,color:#fff;198 classDef detector fill:#b71c1c,stroke:#ef5350,stroke-width:2px,color:#fff;199 classDef gap fill:#ff6f00,stroke:#ffa726,stroke-width:2px,color:#000;200 classDef integration fill:#c62828,stroke:#ef9a9a,stroke-width:2px,color:#fff;201202 subgraph Constructs ["Intended Constructs"]203 C1["Construct A<br/>━━━━━━━━━━<br/>The property claimed"]204 C2["Construct B<br/>━━━━━━━━━━<br/>Another property"]205 end206207 subgraph Metrics ["Measured Metrics"]208 M1["Metric X<br/>━━━━━━━━━━<br/>Computation method"]209 M2["Metric Y<br/>━━━━━━━━━━<br/>Computation method"]210 end211212 subgraph Gaps ["Weak / Missing Alignments"]213 G1["Proxy Collapse Risk<br/>━━━━━━━━━━<br/>Condition for divergence"]214 end215216 %% ALIGNMENTS %%217 C1 -->|"strong alignment"| M1218 C2 -->|"proxy (weak)"| M2219 M2 -.->|"diverges under"| G1220221 %% CLASS ASSIGNMENTS %%222 class C1,C2 cli;223 class M1,M2 output;224 class G1 gap;225```226227**Color Legend:**228| Color | Category | Description |229|-------|----------|-------------|230| Dark Blue | Construct | Intended properties being claimed |231| Dark Teal | Metric | What is actually computed and reported |232| Yellow | Gap | Weak alignment, proxy collapse, or missing evidence |233| Orange | Proxy | Intermediate proxy relationships |234235## Summary Verdict236237| Metric | Verdict | Primary Concern |238|--------|---------|----------------|239| {metric} | {Strong / Partial / Weak / Unsupported} | {One-line summary of the key validity concern} |240```241242---243244## Pre-Diagram Checklist245246Before creating any optional diagram, verify:247248- [ ] LOADED `/autoskillit:mermaid` skill using the Skill tool249- [ ] Using ONLY classDef styles from the mermaid skill (no invented colors)250- [ ] Diagram will include a color legend table251252---253254## Related Skills255256- `/autoskillit:make-experiment-diag` - Parent skill for lens selection257- `/autoskillit:mermaid` - MUST BE LOADED before creating any optional diagram258- `/autoskillit:exp-lens-estimand-clarity` - For auditing the upstream claim the metric is meant to support259- `/autoskillit:exp-lens-benchmark-representativeness` - For auditing whether the evaluation set generalizes