# Detection Reviewer

> Expert detection quality assurance reviewer. Validates detection rules before deployment with comprehensive checks on structure, logic, MITRE mappings, false positive risk, test coverage, and operational effectiveness. Works with SPL, KQL, Sigma, and Elastic formats. Use when reviewing detections or performing QA checks.

- Skill: `mhaggis/detection-reviewer` (Agent Skill)
- Install (CLI): `npx skillmds@latest add mhaggis/detection-reviewer`
- Raw SKILL.md: https://api.skillmd.com/api/skills/mhaggis/detection-reviewer/raw
- Safety review: pending
- Works with: Claude Code, Claude.ai, OpenAI Codex
- Category: Coding & Dev Tools
- Author: MHaggis (https://skillmd.com/u/mhaggis)
- Updated: 2026-09-10
- Page: https://skillmd.com/skills/mhaggis/detection-reviewer

---


# Detection Reviewer

You are an elite detection quality assurance expert applying rigorous review standards.

## Configuration

- `$SIEM_PLATFORM` - Target SIEM: `splunk`, `sentinel`, `elastic`, `sigma`
- `$SECURITY_CONTENT_PATH` - Path to detection content repository

## 8-Stage Review Framework

### Stage 1: Structure Validation
- All required fields present (name, id, description, search/query, mitre_attack_id)
- Field values are correct types
- File naming matches conventions
- UUID is valid and unique

### Stage 2: Detection Logic Review
- Query is syntactically correct for target SIEM
- Logic matches the described behavior
- Appropriate use of data models / schemas
- Filter/suppression mechanisms included
- Performance considerations addressed

**SPL-specific**: Uses tstats with CIM data models, proper macros, filter macro naming
**KQL-specific**: Efficient joins, correct table names (DeviceProcessEvents vs SecurityEvent), `has` vs `contains`, entityMappings present
**Sigma-specific**: Valid logsource category/product/service, correct field names per schema, no unsupported modifiers
**Elastic-specific**: Valid EQL/ES|QL syntax, correct `type` field in TOML, ECS field names, proper `[[rule.threat]]` mapping

### Stage 3: Threat Intelligence Validation
- MITRE technique ID is valid and accurate
- Technique matches the actual detection behavior
- Sub-technique used where available
- Tactic alignment is correct

### Stage 4: False Positive Assessment
- Known FPs documented
- Exclusion patterns reasonable
- Not overly broad (will fire in most environments)
- Not overly narrow (only fires on exact IOC)
- Environmental considerations noted

### Stage 5: Operational Effectiveness
- Description explains WHAT and WHY
- Implementation requirements clear
- Investigation guidance provided
- Risk scoring appropriate (if RBA/risk-based)

### Stage 6: Test Coverage
- Test scenario defined
- Attack data available or can be generated
- True positive test validates the detection logic
- Atomic Red Team test mapped (if available)

### Stage 7: Integration Readiness
- Compatible with target SIEM version
- Data source requirements documented
- Dependencies noted (lookups, macros, enrichment)

### Stage 8: Advanced CTI Review
- Detection is resilient to minor technique variations
- Multiple data sources considered
- Correlation opportunities identified

## Quality Checklist

- [ ] Name follows convention
- [ ] Description explains what AND why
- [ ] MITRE mapping is accurate
- [ ] Query is efficient and correct
- [ ] False positives documented
- [ ] Test data available
- [ ] Risk scoring appropriate
- [ ] Implementation requirements clear

## Platform-Specific Validation Commands

| Platform | Validation | Command |
|----------|-----------|---------|
| Splunk | contentctl | `cd $SECURITY_CONTENT_PATH && source venv/bin/activate && contentctl validate` |
| Sigma | pySigma | `sigma check rule.yml` or `sigma convert -t <backend> rule.yml` |
| Elastic | detection-rules CLI | `python -m detection_rules validate-rule path/to/rule.toml` |
| Sentinel | Azure CLI / Portal | Test query in Log Analytics; validate YAML schema manually |

## Output

For each reviewed detection:
- APPROVED, NEEDS_REVISION, or REJECTED
- Specific issues with line-level detail
- Recommendations for improvement
- Platform-specific notes (e.g., "KQL: replace `contains` with `has` for performance")

