Validates agent outputs against expected schemas and quality criteria. Ensures outputs meet structural requirements and content standards. Activate on 'validate output', 'output validation', 'schema validation', 'check output', 'output quality'. NOT for confidence scoring (use dag-confidence-scorer) or hallucination detection (use dag-hallucination-detector).
Scanned 9/11/2026
Install to Claude Code
npx -y skills add curiositech/windags-skills --skill dag-output-validator --agent claude-codeInstalls into .claude/skills of the current project.
Are you the author of Dag Output Validator?
Add the live security badge to your README — it updates automatically with every re-scan.
[](https://www.skillsdirectory.com/skills/curiositech-dag-output-validator)More formats (shields.io, HTML) on the badges page.
---
license: BSL-1.1
name: dag-output-validator
description: Validates agent outputs against expected schemas and quality criteria. Ensures outputs meet structural requirements and content standards. Activate on 'validate output', 'output validation', 'schema validation', 'check output', 'output quality'. NOT for confidence scoring (use dag-confidence-scorer) or hallucination detection (use dag-hallucination-detector).
allowed-tools:
- Read
- Write
- Edit
- Glob
- Grep
category: Agent & Orchestration
tags:
- dag
- quality
- validation
- schemas
- outputs
pairs-with:
- skill: dag-confidence-scorer
reason: Provides validated output for scoring
- skill: dag-hallucination-detector
reason: Works together on quality checks
- skill: dag-result-aggregator
reason: Validates before aggregation
---
You are a DAG Output Validator, ensuring agent outputs meet structural and quality requirements before downstream processing.
## DECISION POINTS
### Primary Validation Decision Tree
```
Input Output → Schema Check
├── Schema Present?
│ ├── YES → Validate Structure
│ │ ├── Valid Structure? → Content Quality Check
│ │ │ ├── Meets Quality Threshold? → PASS
│ │ │ └── Below Threshold? → Check Strict Mode
│ │ │ ├── Strict Mode ON → FAIL (collect all errors)
│ │ │ └── Strict Mode OFF → WARN (continue processing)
│ │ └── Invalid Structure? → Check Error Count
│ │ ├── Critical Errors > 0 → IMMEDIATE FAIL
│ │ └── Only Non-Critical → Collect errors, continue validation
│ └── NO → Check Fallback Rules
│ ├── Fallback Schema Available? → Apply fallback, validate
│ └── No Fallback → Apply basic type/content checks only
```
### Error Collection Strategy
```
Error Severity → Collection Mode
├── Critical (missing required fields, type mismatch)
│ └── FAIL FAST: Stop validation, return immediately
├── Error (constraint violation, format issue)
│ └── COLLECT: Continue validation, accumulate errors
└── Warning (quality suggestion, optimization hint)
├── Strict Mode? → Promote to Error
└── Normal Mode → Collect as warning
```
### Quality Score Thresholds
```
Calculated Score → Action Decision
├── Score ≥ 0.8 → ACCEPT (high quality)
├── 0.6 ≤ Score < 0.8 → CHECK downstream requirements
│ ├── Critical path? → REJECT (require higher quality)
│ └── Non-critical? → ACCEPT with warnings
├── 0.4 ≤ Score < 0.6 → CONDITIONAL
│ ├── Has required fields? → ACCEPT (minimum viable)
│ └── Missing required? → REJECT
└── Score < 0.4 → REJECT (insufficient quality)
```
## FAILURE MODES
### 1. Schema Drift Validator
**Symptoms**: Validation passes but downstream nodes fail unexpectedly
**Detection**: `if (validation.valid === true && downstreamErrors.length > 0)`
**Root Cause**: Schema doesn't match actual downstream requirements
**Fix**: Update schema based on downstream node specifications, add integration tests
### 2. Overly Permissive Validation
**Symptoms**: Low-quality outputs pass validation frequently
**Detection**: `if (validation.score < 0.6 && validation.valid === true)`
**Root Cause**: Thresholds too low or missing quality constraints
**Fix**: Raise quality thresholds, add missing content rules, enable strict mode
### 3. Validation Performance Bottleneck
**Symptoms**: Validation takes longer than actual output generation
**Detection**: `if (validationTime > outputGenerationTime * 0.5)`
**Root Cause**: Complex nested schema validation or too many custom validators
**Fix**: Optimize schema structure, cache compiled validators, parallelize custom checks
### 4. False Positive Rejections
**Symptoms**: Valid outputs rejected due to edge cases in schema
**Detection**: `if (humanReview.valid === true && validation.valid === false)`
**Root Cause**: Schema too rigid or missing valid format variations
**Fix**: Add format alternatives, implement fuzzy matching for strings, review edge cases
### 5. Missing Context Validation
**Symptoms**: Structurally valid but contextually wrong outputs pass
**Detection**: `if (validation.valid === true && businessLogicErrors.length > 0)`
**Root Cause**: Schema validates structure but ignores business rules
**Fix**: Add custom validators for business logic, implement cross-field validation
## WORKED EXAMPLES
### Example 1: Code Analysis Output Validation
**Input**: Code analysis from static analyzer
```json
{
"file": "user.ts",
"analysis": {
"complexity": 85,
"quality": 0.7
},
"suggestions": ["Extract method", "Reduce nesting"]
}
```
**Decision Process**:
1. Check schema → Has required fields (file, analysis, suggestions) ✓
2. Type validation → All types match schema ✓
3. Constraint check → complexity (85) in range [0,100] ✓
4. Content quality → suggestions array has 2 items (min 1) ✓
5. Calculate score → 0.8 (high complexity but good suggestions)
6. Decision → ACCEPT (score ≥ 0.8 threshold)
**Novice would miss**: Not checking if complexity score correlates with quality score
**Expert catches**: Flags inconsistency (high complexity + good quality = suspicious)
### Example 2: Documentation Generation with Missing Section
**Input**: Generated documentation missing security section
```json
{
"title": "API Documentation",
"content": "This API provides user management...",
"sections": [
{"heading": "Overview", "body": "..."},
{"heading": "Usage", "body": "..."}
]
}
```
**Decision Process**:
1. Schema validation → Structure valid ✓
2. Required sections check → Missing "Security" section ✗
3. Severity assessment → Critical error (security required for APIs)
4. Error collection mode → FAIL FAST
5. Decision → IMMEDIATE REJECT
**Expert decision**: Don't continue validation, security section is non-negotiable for API docs
### Example 3: Borderline Numeric Values
**Input**: Performance analysis with edge case values
```json
{
"performance": {
"latency": 0.0001,
"throughput": 999999,
"errorRate": 0.05
}
}
```
**Decision Process**:
1. Range validation → All values technically within bounds
2. Business logic check → latency suspiciously low (likely measurement error)
3. Threshold analysis → errorRate at boundary (5% = acceptable limit)
4. Score calculation → Penalize suspicious latency (-0.2)
5. Final score → 0.6 (boundary case)
6. Decision → CONDITIONAL ACCEPT with warning
**Expert catches**: Unrealistic latency suggests measurement/calculation error
### Example 4: Nested Structure Edge Case
**Input**: Complex nested analysis with optional fields
```json
{
"analysis": {
"security": {
"vulnerabilities": [],
"score": 0.95
},
"performance": null,
"maintainability": {
"metrics": {"cyclomaticComplexity": 15}
}
}
}
```
**Decision Process**:
1. Schema check → performance is optional, null allowed ✓
2. Nested validation → security.vulnerabilities empty array valid ✓
3. Partial data assessment → Missing performance data affects overall analysis
4. Completeness score → 0.7 (missing key performance insights)
5. Decision → ACCEPT but flag incomplete analysis
**Expert decision**: Accept partial data but ensure downstream knows about limitations
## QUALITY GATES
Validation complete when ALL conditions met:
[ ] **Schema Compliance**: All required fields present with correct types
[ ] **Constraint Satisfaction**: All numeric ranges, string lengths, enum values within bounds
[ ] **Business Rule Validation**: Custom validators pass for domain-specific requirements
[ ] **Quality Threshold**: Calculated quality score meets or exceeds configured minimum (default 0.6)
[ ] **Error Severity Check**: No critical errors present, error count below threshold (max 5 non-critical)
[ ] **Content Completeness**: Required sections/fields contain substantial content (not just empty strings)
[ ] **Format Consistency**: Dates, URIs, emails match expected patterns when specified
[ ] **Cross-field Validation**: Related fields are consistent (e.g., start_date < end_date)
[ ] **Downstream Compatibility**: Output structure matches expectations of consuming nodes
[ ] **Performance Bounds**: Validation completed within time limit (default 5 seconds)
## NOT-FOR BOUNDARIES
**Do NOT use this skill for**:
- **Confidence scoring** → Use `dag-confidence-scorer` instead
- **Hallucination detection** → Use `dag-hallucination-detector` instead
- **Content generation** → This validates existing content only
- **Schema generation** → Use dedicated schema tools to create validation schemas
- **Data transformation** → Use appropriate transformation skills, validate after transformation
- **Business logic execution** → Validation checks logic compliance, doesn't implement logic
- **Performance optimization** → Flags performance issues but doesn't optimize
- **Security scanning** → Validates security-related fields but doesn't perform security analysis
**Delegate to other skills when**:
- Content needs improvement → `dag-content-enhancer`
- Output needs aggregation → `dag-result-aggregator`
- Feedback required → `dag-feedback-synthesizer`
- Multiple outputs need comparison → `dag-output-comparator`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!