.claude/skills/detection-yaml-engineer/SKILL.md
Expert at creating and validating detection rule files for multiple SIEM platforms. Supports Splunk security_content YAML, Sigma rules, Elastic detection TOML, and KQL analytics. Ensures compliance with repository conventions and optimal query performance. Use when creating or modifying detection rules.
npx skillsauth add mhaggis/security-detections-mcp detection-yaml-engineerInstall this skill globally with one command. Works with Claude Code, Cursor, and Windsurf.
3 of 9 scanners reported clean
Some scanners were skipped, did not run, or reported a non-clean status. Review each row below.
You are an expert at creating high-quality detection rule files for security content repositories.
$SECURITY_CONTENT_PATH - Path to detection content repo$SIEM_PLATFORM - Target: splunk, sigma, elastic, sentinel$VALIDATION_TOOL - Validation command (e.g., contentctl validate, sigma check)name: Platform_Technique_Description
id: <UUID>
version: 1
date: 'YYYY-MM-DD'
author: Detection Author
status: production
type: TTP
description: Clear description of what and why.
data_source:
- Sysmon EventID 1
search: |
| tstats `security_content_summariesonly` count min(_time) as firstTime max(_time) as lastTime
from datamodel=Endpoint.Processes
where Processes.process_name="suspicious.exe"
by Processes.dest Processes.user Processes.process_name
| `drop_dm_object_name(Processes)`
| `security_content_ctime(firstTime)`
| `security_content_ctime(lastTime)`
| `detection_name_filter`
how_to_implement: Data requirements.
known_false_positives: Expected benign triggers.
references:
- https://attack.mitre.org/techniques/TXXXX/
rba:
message: $process_name$ executed on $dest$ by $user$
risk_objects:
- field: dest
type: system
score: 50
- field: user
type: user
score: 50
tags:
analytic_story:
- Story Name
asset_type: Endpoint
mitre_attack_id:
- T1234.001
product:
- Splunk Enterprise
- Splunk Enterprise Security
- Splunk Cloud
security_domain: endpoint
tests:
- name: True Positive Test
attack_data:
- data: https://media.githubusercontent.com/media/splunk/attack_data/master/datasets/...
sourcetype: XmlWinEventLog:Microsoft-Windows-Sysmon/Operational
source: XmlWinEventLog:Microsoft-Windows-Sysmon/Operational
title: Suspicious Process Execution
id: <UUID>
status: stable
level: high
description: Detects suspicious process execution.
author: Detection Author
date: YYYY/MM/DD
references:
- https://attack.mitre.org/techniques/TXXXX/
tags:
- attack.execution
- attack.t1059.001
logsource:
category: process_creation
product: windows
detection:
selection:
Image|endswith: '\suspicious.exe'
condition: selection
falsepositives:
- Legitimate administrative use
KQL rules for Sentinel can be defined as YAML for programmatic deployment via Sentinel Solutions or the Analytics Rules API:
id: <UUID>
name: Suspicious Process Execution
description: Detects suspicious process execution patterns.
severity: High
requiredDataConnectors:
- connectorId: MicrosoftThreatProtection
dataTypes:
- DeviceProcessEvents
queryFrequency: 1h
queryPeriod: 1h
triggerOperator: gt
triggerThreshold: 0
tactics:
- Execution
relevantTechniques:
- T1059.001
query: |
DeviceProcessEvents
| where FileName == "suspicious.exe"
| where ProcessCommandLine has_any ("encoded", "hidden", "-nop")
| project TimeGenerated, DeviceName, AccountName, FileName, ProcessCommandLine
entityMappings:
- entityType: Host
fieldMappings:
- identifier: HostName
columnName: DeviceName
- entityType: Account
fieldMappings:
- identifier: Name
columnName: AccountName
Or as inline KQL with comment headers for simpler workflows:
// Title: Suspicious Process Execution
// MITRE: T1059.001
DeviceProcessEvents
| where FileName == "suspicious.exe"
| where ProcessCommandLine has_any ("encoded", "hidden", "-nop")
| project TimeGenerated, DeviceName, AccountName, FileName, ProcessCommandLine
Elastic detection rules use TOML format in the detection-rules repository:
[metadata]
creation_date = "YYYY/MM/DD"
integration = ["endpoint"]
maturity = "production"
updated_date = "YYYY/MM/DD"
[rule]
author = ["Detection Author"]
description = "Detects suspicious process execution."
name = "Suspicious Process Execution"
risk_score = 73
rule_id = "<UUID>"
severity = "high"
tags = ["Domain: Endpoint", "OS: Windows", "Use Case: Threat Detection", "Tactic: Execution"]
type = "eql"
query = '''
process where host.os.type == "windows"
and process.name : "suspicious.exe"
and process.args : ("*encoded*", "*hidden*", "*-nop*")
'''
[[rule.threat]]
framework = "MITRE ATT&CK"
[[rule.threat.technique]]
id = "T1059"
name = "Command and Scripting Interpreter"
reference = "https://attack.mitre.org/techniques/T1059/"
[[rule.threat.technique.subtechnique]]
id = "T1059.001"
name = "PowerShell"
reference = "https://attack.mitre.org/techniques/T1059/001/"
[rule.threat.tactic]
id = "TA0002"
name = "Execution"
reference = "https://attack.mitre.org/tactics/TA0002/"
snake_case of the detection namePlatform_Technique_Descriptiondetection_name_filterAlways validate before committing:
contentctl validate (in security_content venv)sigma check rule.yml or sigma convert -t <backend> rule.ymlpython -m detection_rules validate-rule path/to/rule.toml (in detection-rules repo)az sentinel alert-rule create for deployment validationsnake_case(name)_filter)process_creation, network_connection, etc.)type for query language (use eql for EQL, query for KQL/Lucene, threshold for count-based)[[rule.threat]] MITRE mapping blockDeviceProcessEvents for MDE vs SecurityEvent for legacy agents)entityMappings for incident creationtesting
Expert at analyzing unstructured threat intelligence reports (CISA alerts, vendor blogs, research papers) and extracting actionable detection logic, TTPs, behavioral indicators, and MITRE ATT&CK mappings. Focuses on behaviors over IOCs. Use when provided with threat reports, security advisories, or campaign documentation.
testing
Analyze software supply chain attacks across package registries (npm, PyPI, RubyGems), CI/CD pipelines (GitHub Actions, GitLab CI), and container ecosystems. Includes detection engineering patterns for Splunk, Sentinel, Elastic, and Sigma.
testing
Optimize detection queries for performance across Splunk (SPL), Microsoft Sentinel (KQL), and Elastic Security (EQL/ES|QL). Covers search pipeline internals, common anti-patterns, and optimization techniques for detection rules on each platform.
tools
Analyze pull requests for detection coverage gaps and recommend additional detections, story alignments, and test coverage to extend PRs before merge.