Validate EXECUTION_PLAN.md for verification metadata, manual reasons, and testability. Use when preparing Phase 1 or after editing EXECUTION_PLAN.md.
Scanned 9/20/2026
Install to Claude Code
npx -y skills add benjaminshoemaker/ai_coding_project_base --skill criteria-audit --agent claude-codeInstalls into .claude/skills of the current project.
Are you the author of Criteria Audit?
Add the live security badge to your README — it updates automatically with every re-scan.
[](https://www.skillsdirectory.com/skills/benjaminshoemaker-criteria-audit)More formats (shields.io, HTML) on the badges page.
---
name: criteria-audit
description: Validate EXECUTION_PLAN.md for verification metadata, manual reasons, and testability. Use when preparing Phase 1 or after editing EXECUTION_PLAN.md.
---
# Criteria Audit Skill
Audit EXECUTION_PLAN.md to ensure acceptance criteria are automation-ready and
use the verification metadata format.
## Arguments
- `$1` (optional) = directory containing `EXECUTION_PLAN.md`
- If provided, read `$1/EXECUTION_PLAN.md`
- If empty, read `EXECUTION_PLAN.md` from the current working directory
## Workflow Overview
Copy this checklist and track progress:
```
Criteria Audit Progress:
- [ ] Step 1: Read EXECUTION_PLAN.md
- [ ] Step 2: Parse phases, tasks, and acceptance criteria
- [ ] Step 3: Validate verification metadata
- [ ] Step 4: Report issues and summarize
```
## Step 1: Parse Acceptance Criteria
Resolve the plan path: if `$1` is provided, use `$1/EXECUTION_PLAN.md`; otherwise use `EXECUTION_PLAN.md` in the current working directory.
For each task, collect:
- Criterion text
- Type tag (e.g., `(TEST)`)
- `Verify:` line
- If manual: `Reason:` line
Also collect Pre-Phase Setup items and their `Verify:` lines.
## Step 2: Validation Rules
### Acceptance Criteria Rules
- Every criterion must include a type tag: `(TEST)`, `(CODE)`, `(LINT)`,
`(TYPE)`, `(BUILD)`, `(SECURITY)`, `(BROWSER:DOM)`, `(MANUAL)`, `(MANUAL:DEFER)` etc.
- Every criterion must include a `Verify:` line unless it is `MANUAL` or `MANUAL:DEFER`.
- `MANUAL` and `MANUAL:DEFER` criteria must include a `Reason:` line.
- Flag ambiguous criteria (vague, subjective, or missing measurable details).
### Pre-Phase Setup Rules
- Each setup item must include a `Verify:` command.
- If missing, mark as human-required.
## Step 3: Check MANUAL Criteria for False Tags
Read `~/.claude/skills/auto-verify/PATTERNS.md` for the full pattern matching table
and MANUAL decision tree. If PATTERNS.md is not found, skip the false-MANUAL check and note the limitation in the report output (e.g., "PATTERNS.md not found — false-MANUAL detection skipped").
For each criterion tagged `(MANUAL)`, check if it contains keywords from the
Pattern Matching Table that indicate it CAN be automated (priorities 1-10).
If it matches any automatable pattern, it is a **false MANUAL tag**.
Only criteria matching the "Truly Manual Patterns" section (subjective UX/brand/tone
judgment) should remain as MANUAL.
## Step 3b: Check MANUAL Blocking Classification
For each `(MANUAL)` criterion (not `MANUAL:DEFER`):
- Check if it references subjective patterns WITH no downstream dependency
- If the criterion is purely cosmetic/tonal AND the next phase doesn't reference it:
→ Suggest retagging as `(MANUAL:DEFER)`
→ Reason: "No downstream dependency detected"
For each `(MANUAL:DEFER)` criterion:
- Verify it genuinely has no downstream dependency
- If a later task or phase references this criterion's output:
→ Flag as "Should be `MANUAL` (blocking) — downstream dependency exists"
## Step 4: Report
Provide a structured report:
```
CRITERIA AUDIT
==============
Tasks Checked: {N}
Criteria Checked: {N}
Issues Found: {N}
Missing Type Tags:
- Task 1.2.A: "{criterion}"
Missing Verify Lines:
- Task 1.3.B: "{criterion}"
Manual Missing Reason:
- Task 2.1.A: "{criterion}"
Pre-Phase Setup Missing Verify:
- Phase 1: "{setup item}"
False MANUAL Tags (should be automated):
- Task 1.2.A: (MANUAL) "{criterion}"
→ Suggest: (CODE) — Verify: `curl -sf {url} -o /dev/null`
→ Reason: Contains "endpoint"/"returns" — automatable via curl
- Task 2.1.B: (MANUAL) "{criterion}"
→ Suggest: (BROWSER:DOM) — Verify: route=`/page`, selector=`.class`
→ Reason: Contains "visible"/"displays" — automatable via browser
MANUAL Summary:
Total MANUAL criteria: {N}
Likely false tags: {N} (should be retagged to automated)
Truly manual: {N} (subjective judgment)
DEFER Classification:
Total MANUAL: {N} blocking, {M} deferrable
Suggested retags: {list of MANUAL → MANUAL:DEFER or vice versa}
Status: PASS | WARN | FAIL
```
**FAIL** if any false MANUAL tags are found. **WARN** if MANUAL criteria exceed 10%
of total criteria. **PASS** otherwise.
## Error Handling
| Situation | Action |
|-----------|--------|
| EXECUTION_PLAN.md not found at the resolved path | Report "EXECUTION_PLAN.md not found" with the path checked and stop |
| PATTERNS.md not found (`~/.claude/skills/auto-verify/PATTERNS.md`) | Skip false-MANUAL detection, note limitation in report output |
| Plan file is empty or has no parseable phases/tasks | Report "No phases or tasks found" and mark audit as NOT APPLICABLE |
| A criterion has multiple conflicting type tags | Flag as ambiguous, list all tags found, and recommend the user pick one |
| Plan file exceeds 2000 lines | Process in chunks, warn user that partial analysis may miss cross-phase dependencies |
## Resolution Guidance
- If missing metadata is obvious, propose the exact type and `Verify:` line.
- For false MANUAL tags, propose the specific replacement type and verify command.
- If ambiguous, recommend asking the human to clarify.
- Do not edit EXECUTION_PLAN.md automatically unless explicitly requested.
Is this your skill, or is something wrong with this listing? Request removal or report an issue. Author removals are honored within 72 hours.
No comments yet. Be the first to comment!