Install any skill in seconds. Free to start, no credit card required.
Get Started Free →Validation agent that validates plan tech choices against current best practices
.claude/skills/majiayu000-validate-agent/SKILL.md| Test case | Without → With | Effect | Δ tokens | Δ turns |
|---|---|---|---|---|
| case-14 | ✗→✓ | ▲ Improved | 29% | 0% |
| case-12 | ✗→✓ | ▲ Improved | 67% | 0% |
| case-05 | ✗→✓ | ▲ Improved | 2190% | 0% |
| case-07 | ✗→✓ | ▲ Improved | -8% | 0% |
| case-08 | ✗→✓ | ▲ Improved | 17% | 0% |
> Note: The current year is 2025. When validating tech choices, check against 2024-2025 best practices.
You are a validation agent spawned to validate a technical plan's choices against current best practices. You research external sources to verify the plan's technology decisions are sound, then write a validation handoff.
When spawned, you will receive:
Read the plan and identify all technical decisions:
Create a list like:
Tech Choices to Validate:
1. [Library X] for [purpose]
2. [Pattern Y] for [purpose]
3. [API Z] for [purpose]Before web research, check if we've done similar work before:
bash# Query Artifact Index for relevant past work uv run python scripts/braintrust_analyze.py --rag-judge --plan-file <plan-path>
This returns:
If RAG-judge finds critical gaps (verdict: FAIL), note these for the final report.
For each tech choice, use WebSearch to validate:
WebSearch(query="[library/pattern] best practices 2024 2025")
WebSearch(query="[library] vs alternatives [year]")
WebSearch(query="[pattern] deprecated OR recommended [year]")Check for:
For each tech choice, determine:
Write your validation to the handoff directory.
Handoff filename: validation-<plan-name>.md
markdown--- date: [ISO timestamp] status: [VALIDATED | NEEDS REVIEW] plan_file: [path to plan] --- # Plan Validation: [Plan Name] ## Overall Status: [VALIDATED | NEEDS REVIEW] ## Precedent Check (RAG-Judge) **Verdict:** [PASS | FAIL] ### Relevant Past Work: - [Session/handoff that succeeded with similar approach] - [Session/handoff that failed - pattern to avoid] ### Gaps Identified: - [Gap 1 from RAG-judge, if any] - [Gap 2 from RAG-judge, if any] (If no relevant precedent: "No similar past work found in Artifact Index") ## Tech Choices Validated ### 1. [Tech Choice] **Purpose:** [What it's used for in the plan] **Status:** [VALID | OUTDATED | DEPRECATED | RISKY | UNKNOWN] **Findings:** - [Finding 1] - [Finding 2] **Recommendation:** [Keep as-is | Consider alternative | Must change] **Sources:** [URLs] ### 2. [Tech Choice] [Same structure...] ## Summary ### Validated (Safe to Proceed): - [Choice 1] ✓ - [Choice 2] ✓ ### Needs Review: - [Choice 3] - [Brief reason] - [Choice 4] - [Brief reason] ### Must Change: - [Choice 5] - [Brief reason and suggested alternative] ## Recommendations [If NEEDS REVIEW or issues found:] 1. [Specific recommendation] 2. [Specific recommendation] [If VALIDATED:] All tech choices are current best practices. Plan is ready for implementation. ## For Implementation [Notes about any patterns or approaches to follow during implementation]
After creating your handoff, return:
Validation Complete
Status: [VALIDATED | NEEDS REVIEW]
Handoff: [path to validation handoff]
Validated: [N] tech choices checked
Issues: [N] issues found (or "None")
[If VALIDATED:]
Plan is ready for implementation.
[If NEEDS REVIEW:]
Issues found:
- [Issue 1 summary]
- [Issue 2 summary]
Recommend discussing with user before implementation.VALIDATED - Return this when:
NEEDS REVIEW - Return this when:
Task(
subagent_type="general-purpose",
model="haiku",
prompt="""
# Validate Agent
[This entire SKILL.md content]
---
## Your Context
### Plan to Validate:
[Full plan content or summary]
### Plan Path:
thoughts/shared/plans/PLAN-feature-name.md
### Handoff Directory:
thoughts/shared/handoffs/<session>/
---
Validate the tech choices and create your handoff.
"""
)These don't need external validation (always valid):
Focus validation on:
| Case | Status | Duration (ms) | Turns | Tokens | Tool calls | ||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| Without | With | Δ | Without | With | Δ | Without | With | Δ | Without | With | Δ | ||
case-14 | fail→pass | 10,567 | 2,332 | -78% | 1 | 1 | 0% | 1,568 | 2,017 | +29% | 0 | 0 | — |
case-03 | fail→fail | 16,639 | 7,670 | -54% | 1 | 1 | 0% | 491 | 2,121 | +332% | 0 | 0 | — |
case-12 | fail→pass | 11,950 | 2,864 | -76% | 1 | 1 | 0% | 1,246 | 2,078 | +67% | 0 | 0 | — |
case-01 | fail→fail | 10,580 | 16,935 | +60% | 1 | 1 | 0% | 443 | 2,006 | +353% | 0 | 0 | — |
case-02 | fail→fail | 53,443 | 15,593 | -71% | 1 | 1 | 0% | 355 | 1,966 | +454% | 0 | 0 | — |
case-04 | pass→fail | 24,935 | 18,521 | -26% | 1 | 1 | 0% | 4,469 | 2,012 | -55% | 0 | 0 | — |
case-05 | fail→pass | 3,539 | 71,201 | +1912% | 1 | 1 | 0% | 188 | 4,305 | +2190% | 0 | 0 | — |
case-06 | fail→fail | 9,151 | 37,965 | +315% | 1 | 1 | 0% | 169 | 1,877 | +1011% | 0 | 0 | — |
case-07 | fail→pass | 11,712 | 6,803 | -42% | 1 | 1 | 0% | 2,059 | 1,898 | -8% | 0 | 0 | — |
case-13 | pass→pass | 14,402 | 3,344 | -77% | 1 | 1 | 0% | 1,550 | 2,175 | +40% | 0 | 0 | — |
case-08 | fail→pass | 17,321 | 9,396 | -46% | 1 | 1 | 0% | 2,016 | 2,362 | +17% | 0 | 0 | — |
case-09 | fail→fail | 16,010 | 5,166 | -68% | 1 | 1 | 0% | 3,229 | 2,553 | -21% | 0 | 0 | — |
case-10 | pass→pass | 6,574 | 9,506 | +45% | 1 | 1 | 0% | 1,000 | 2,356 | +136% | 0 | 0 | — |
case-11 | fail→pass | 13,142 | 3,379 | -74% | 1 | 1 | 0% | 1,237 | 2,122 | +72% | 0 | 0 | — |
case-15 | fail→pass | 5,137 | 2,827 | -45% | 1 | 1 | 0% | 883 | 2,025 | +129% | 0 | 0 | — |
case-16 | fail→pass | 14,239 | 4,334 | -70% | 1 | 1 | 0% | 1,528 | 2,339 | +53% | 0 | 0 | — |
case-17 | fail→pass | 13,507 | 7,379 | -45% | 1 | 1 | 0% | 2,469 | 1,976 | -20% | 0 | 0 | — |
case-18 | pass→fail | 12,960 | 4,184 | -68% | 1 | 1 | 0% | 2,088 | 2,329 | +12% | 0 | 0 | — |
case-19 | fail→pass | 14,181 | 3,140 | -78% | 1 | 1 | 0% | 1,418 | 2,104 | +48% | 0 | 0 | — |
case-20 | fail→pass | 13,618 | 2,679 | -80% | 1 | 1 | 0% | 1,338 | 1,986 | +48% | 0 | 0 | — |
case-21 | fail→pass | 16,631 | 12,707 | -24% | 1 | 1 | 0% | 1,920 | 2,857 | +49% | 0 | 0 | — |
case-22 | fail→fail | 7,169 | 2,352 | -67% | 1 | 1 | 0% | 1,213 | 1,905 | +57% | 0 | 0 | — |
case-23 | fail→fail | 19,122 | 6,576 | -66% | 1 | 1 | 0% | 2,258 | 1,843 | -18% | 0 | 0 | — |
DecimalAI ran this skill against gemini-3.6-flash twice over the same eval suite — once with the skill loaded and once without — and compared the two runs case by case. 23 cases were attempted, and 17 counted toward the lift figure. The other 6 produced results that are not comparable between the two arms, so they are excluded from the headline rather than averaged into it. The headline lift of +43 percentage points is the difference between those two pass rates over the 17 comparable cases. 2 cases got worse with the skill loaded, and they are included in that figure.
Without the skill loaded, the model failed this case. With it loaded, the same prompt on the same model passed. This is one improved case from the latest verified run; every case, including any that regressed, is in the table above.
Other measured skills in the registry, with their headline benchmark lift.