Skip to main content
Glama
WRG-11

wrg-sigma-rules

WRG Sigma Rules — Claude Code Plugin

tests release last commit sigma rules license python 3.12+

Status

Production — actively maintained rule corpus. Not yet listed in the community plugin marketplace; install directly from this repo (see Installation).

Listing is submitted through clau.de/plugin-directory-submission, which feeds Anthropic's review pipeline. anthropics/claude-plugins-community is a read-only mirror of the approved list and closes pull requests opened against it automatically, so a PR there is not the route.

Production-grade sigma detection rule writing, validation, and conversion for SOC analysts, threat-intel teams, and detection engineers using Claude Code.

Related MCP server: Wazuh SIEM Agent System

TL;DR

  • 3 MCP tools: draft_rule (NL → sigma YAML) + validate_rule (pySigma + best-practice linter) + convert_rule (sigma → Splunk/Elastic/OpenSearch/Wazuh/Kibana query)

  • 3 Claude Code skills: sigma-rule-writer + sigma-rule-reviewer + threat-coverage-gap-analyzer

  • 294 published sigma rule corpus: 14 ATT&CK tactic categories (templates + observed campaign rules). Every rule carries a sigma status: — none of them stable; see rule status for the breakdown and what it means before you deploy one

  • Multi-backend conversion: Splunk SPL, Elastic/Kibana Lucene, OpenSearch Lucene + PPL, Wazuh verified (pySigma 1.x + 3 backend packages). Re-measured against the full 294-rule corpus on 2026-08-12 (80 rules at the first measurement, 101 at the previous restatement; the count is marked now, so it re-measures instead of being carried forward): Splunk and OpenSearch-PPL convert every rule; the Lucene-family targets (Elastic, Kibana, Wazuh, OpenSearch) fail on the 52 correlation rules, because that backend cannot express them — convert_rule reports this as a capability gap and names the targets that can

  • Logsource-aware output: config={"pipeline": "sysmon"} maps Sigma's abstract logsource to the product's real event selection — without it a process_creation rule converts to a query that matches events of every type

  • WRG ecosystem anchor: 6+ months threat-intel discipline + 100+ actor TTP corpus + observed_* rules (Mini Shai-Hulud npm worm, Nx campaign 4-vector cluster, SOCKS5 silent-fix, ClawHavoc Claude Skills, Lazarus, LockBit, LAPSUS, AI-fingerprint)

  • Live demo: see DEMO.md for end-to-end tool invocation on Mini Shai-Hulud rule (pySigma 1.x + Splunk + Elastic real output)

Why this plugin exists

The sigma-rule niche in the Anthropic Claude Code plugin marketplace is empty: re-counted against anthropics/claude-plugins-community on 2026-08-06, 0 of 2298 community plugins mention sigma. The count is reproducible: fetch .claude-plugin/marketplace.json and grep each entry's name, description and homepage — the only fields the manifest carries. By that same method 290 entries mention at least one of security, vulnerability, exploit, pentest, CVE, threat, malware, OWASP, secrets, appsec, infosec, detection or SIEM. So the niche being empty is not the same as the area being empty, and the claim here is specific: nobody is doing sigma rule authoring, validation and multi-backend conversion, not "nobody is doing security".

(For scale, the same count on 2026-05-23 found 200+ plugins and one security plugin. The marketplace grew more than tenfold in under three months; the sigma count stayed at zero.)

WRG (WinstonRedGuard) has accumulated 6+ months of threat-intel infrastructure: 294 canonical sigma rules + actor catalog + pySigma integration + Pattern-driven detection-engineering discipline. This plugin packages that capability for the broader Anthropic ecosystem.

What's included

MCP tools (3)

  • mcp__plugin_wrg-sigma-rules_wrg-sigma-rules__draft_rule — NL description → sigma YAML scaffold

  • mcp__plugin_wrg-sigma-rules_wrg-sigma-rules__validate_rule — YAML schema + pySigma compat + best-practice linter

  • mcp__plugin_wrg-sigma-rules_wrg-sigma-rules__convert_rule — sigma → Splunk/Elastic/OpenSearch/Wazuh/Kibana query

Claude Code skills (3)

  • sigma-rule-writer — guided rule writing workflow

  • sigma-rule-reviewer — paste rule for quality review + improvement suggestions

  • threat-coverage-gap-analyzer — MITRE ATT&CK coverage analysis vs your existing corpus

Sigma rule corpus (294 rules across 14 ATT&CK tactic categories)

Tactic

Coverage

credential_access

templates + observed (LAPSUS T1110 correlation, Kali365 OAuth device-code phishing T1528, Mimikatz LSASS)

command_and_control

template T1071 + observed Mini Shai-Hulud npm supply-chain C2 T1071 (Nx campaign cluster)

defense_evasion

templates + observed (AlphV T1027 obfuscation)

execution

templates + observed (AlphV T1059.001)

persistence

template T1053.005 (scheduled task created by a scripting host) + observed (Photo ZIP campaign, Node.js HKCU Run-key persistence T1547.001)

exfiltration

templates + observed SOCKS5 hostname null-byte egress T1041 (Claude Code v2.0.24-v2.1.89 silent-fix; +backslash extension variant)

impact

templates + observed (Lazarus + LockBit BTC + Nullsec Nigeria T1491 defacement)

initial_access

templates + observed Nx campaign 4-vector (s1ngularity npm token exfil, nx-console VS Code extension compromise, ClawHavoc Claude Skills T1195.002) + LAPSUS T1078 + OWASP lab-validated (SQLi auth-bypass, XSS reflected, path traversal)

lateral_movement

templates (RDP EventID 4624 + SMB admin shares + WinRM remote execution T1021.006)

privilege_escalation

templates (AWS IAM wildcard-admin policy creation T1098.003 + UAC bypass via auto-elevating binary T1548.002)

resource_development

templates (newly registered domain + lookalike domain + social media signup)

collection

templates (archive utility staging + SharePoint access + local email collection T1114.001) + observed Diffusers sharded-checkpoint weight_map path traversal T1005 (CVE-2026-65920)

discovery

templates (T1082 system information discovery + T1083 file and directory discovery, both keyed on recon command bursts)

code_review

9 AI-fingerprint observed rules (AI prose, AI provenance, ANSI-color class, decoy block, docstring density, hallucinated CVSS, hallucinated import, prompt artifacts, unicode watermark)

See resources/examples/INDEX.json for full enumeration.

Some rules have a companion write-up under docs/detection-notes/ explaining the detection logic in prose — why the signal is specific, what the false-positive trap looks like, and what the coverage gaps are — for cases where the rule's description: field alone would not carry that.

Rule status

Sigma's status: field says how far a rule has been proven, and this corpus uses it literally rather than aspirationally:

status:

Count

What it means here

test

80

Derived from a real, cited incident — the observed_* campaign rules

experimental

214

Canonical detection shapes; many describe themselves as synthetic exemplars in their own description:

stable

0

Deliberately unused

stable in the sigma specification means a rule is running in production and well tested. Nothing here has earned that: the template layer is pattern material to adapt, not detections that have been validated against a real environment's telemetry. Marking them stable would make the corpus look more finished than it is, which is the same failure as writing "Unknown" in falsepositives:.

Treat any rule here as a starting point to bind to your own logsource and tune — the falsepositives: block on each one names the benign activity to expect first.

Resources

  • wrg-sigma://patterns/canonical-5 — canonical detection-pattern definitions

  • wrg-sigma://patterns/canonical-5/{pattern_id} — individual pattern by ID (0105)

  • wrg-sigma://coverage/mitre-attack-matrix — corpus ATT&CK coverage state (technique-by-tactic rollup, observed/template split, rules contributing no coverage), computed from the corpus at read time

Installation

Direct from this repo

git clone https://github.com/WRG-11/wrg-sigma-rules.git
cd wrg-sigma-rules
pip install -r requirements.txt
claude plugin validate .

requirements.txt is not optional for the MCP tools. validate_rule needs pySigma, convert_rule needs the backend packages, and the two pipeline packages are what make the logsource mapping above work — install them and the suite is green, skip them and the pipeline paths import fine while converting a process_creation rule to a query that matches every event type.

claude plugin validate . reads .claude-plugin/plugin.json and exits 0 on success. The repo ships that plugin manifest plus .mcp.json, which wires server.py through ${CLAUDE_PLUGIN_ROOT}; point your Claude Code plugin configuration at this checkout per the plugin docs.

Quick example

Validate + convert a corpus rule end-to-end, from the repo root (commands from DEMO.md, captured against pySigma 1.x + the Splunk and Elasticsearch backends):

pip install pysigma pysigma-backend-splunk pysigma-backend-elasticsearch

(Those three are all this example needs. pip install -r requirements.txt from Installation is the superset — add it if you also want OpenSearch or the config={"pipeline": ...} logsource mapping.)

import sys, json
sys.path.insert(0, '.')
from tools.validate_rule.validate_rule import validate_rule_body
from tools.convert_rule.convert_rule import convert_rule_body

rule = open('resources/examples/command_and_control/observed_mini_shai_hulud_npm_supply_chain_c2_t1071.yml', encoding='utf-8').read()

print(json.dumps(validate_rule_body(rule), indent=2))
print(json.dumps(convert_rule_body(rule, target='splunk'), indent=2))
print(json.dumps(convert_rule_body(rule, target='elasticsearch'), indent=2))

Full captured outputs (validate JSON + Splunk SPL + Elasticsearch Lucene) are in DEMO.md.

Quality discipline

  • 4-Layer self-audit per WRG audit methodology (trust-but-verify self-audit)

  • 20 Python test modules covering rule validation + tool integration smoke

  • pySigma 1.x compat + multi-backend conversion verified (pysigma-backend-splunk + pysigma-backend-elasticsearch + pysigma-backend-opensearch)

  • LLM-safe output discipline: ASCII-only output + error-path structure preserve

  • claude plugin validate PASS — not yet wired into CI (see tests.yml); run it yourself with claude plugin validate . before relying on a dated claim here

  • Live demo evidence: DEMO.md — 3 real tool invocations on Mini Shai-Hulud rule

Tested environments

  • Windows 11 + Claude Code (manual)

  • WSL2 Ubuntu 24.04 (manual)

  • Ubuntu, Windows, and macOS GitHub Actions runners — see the tests workflow, which runs the full suite on all three on every push

Contributing

Sigma rule contributions welcome. Submit YAML to resources/examples/<tactic>/ with:

  • ATT&CK TTP mapping in tags: field (e.g., attack.t1071)

  • observed_* prefix for incident-specific rules

  • template_* prefix for canonical pattern templates

  • pySigma validation passing via mcp__plugin_wrg-sigma-rules_wrg-sigma-rules__validate_rule

Read CONTRIBUTING.md first if the rule claims to detect something observed in the wild. It sets out the sourcing bar — attribution, platform, and manifestation all matched against the cited source — and the three upstream rejections that produced it.

Questions about why a rule is shaped the way it is, or whether a technique is worth a rule at all, belong in Discussions rather than an issue — issues are for concrete bugs and rule submissions (see the issue templates).

References

License

MIT — see LICENSE file. Covers the tooling (server.py, tools/, scripts/) and the rule corpus (resources/) under one license, a deliberate choice: some Sigma corpora split rule content under a separate Detection Rule License to preserve attribution on redistribution, but that trades off against frictionless reuse by SOC teams adapting a rule into their own tooling. MIT was chosen for the latter.

Runtime dependencies bring in LGPL-2.1/3.0 (pySigma and its backend/pipeline packages, from SigmaHQ) and a handful of MIT/BSD/Apache packages. Using an LGPL library — importing it, not modifying it — does not require this repo's own code to be LGPL; see the dependency-licenses CI job for the full, re-derivable list rather than trusting this paragraph to stay current on its own.


Part of the WRG-11 ecosystem

Full index → github.com/WRG-11

Available Tools

3 tools
convert_ruleA

Convert a sigma YAML rule into a SIEM-native query string.

Use when the caller has a validated sigma rule and needs the equivalent query for Splunk SPL, Elasticsearch / Kibana Lucene, or Wazuh. Returns the primary converted query plus conversion lossiness warnings (e.g. unsupported modifiers). Missing pySigma or missing backend packages return actionable error envelopes with the exact pip install command.

ParametersJSON Schema
NameRequiredDescriptionDefault
yaml_contentYes
targetNosplunk
configNo

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations provided, so the description carries the full burden. It discloses successful output (converted query + warnings) and failure modes (missing pySigma or backend packages yield actionable pip install commands). Does not discuss auth or rate limits, but these are irrelevant for a conversion tool.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is front-loaded with the main action and uses a clear structure: purpose, usage, details. It is concise with three sentences, no redundant information.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the tool has 3 parameters, no annotations, and an output schema (not shown), the description covers purpose, usage, primary output, and error handling. It lacks parameter explanations but is adequate for a simple conversion tool when combined with the schema.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters2/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0%. The description only implicitly associates yaml_content with the sigma rule and target with backend names, but does not explain the config parameter or enumerate target options. It adds limited semantic value beyond the raw schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states it converts a sigma YAML rule to a SIEM-native query string, specifying three target backends. It distinguishes from sibling tools 'draft_rule' and 'validate_rule' by focusing on conversion rather than drafting or validation.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Explicitly says 'Use when the caller has a validated sigma rule' and lists target SIEMs. Does not explicitly exclude alternatives, but the context is clear. Mentions return of conversion warnings and error envelopes for missing dependencies.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

draft_ruleA

Draft a sigma detection YAML rule from a natural-language threat description.

Use when the caller needs a starting-point sigma rule and only has a plain-English threat summary plus optional MITRE TTP hints. Returns a structured envelope with the YAML body, a pySigma round-trip validation result, the inferred MITRE technique IDs, and draft notes covering redactions + open issues. Tool is deterministic and local -- no network, no LLM call.

ParametersJSON Schema
NameRequiredDescriptionDefault
descriptionYes
rule_typeNoprocess_creation
referencesNo
target_platformNowindows
severityNomedium
mitre_ttpsNo
titleNo
authorNoWRG sigma-rule-writer

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A3.9/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Discloses key behavioral traits: deterministic, local, no network or LLM call, and describes the return envelope contents. No annotations are provided, so the description carries the transparency burden well.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is concise and front-loaded with the core purpose. It efficiently communicates usage context and behavior without unnecessary words, though could be slightly more structured.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the 8 parameters (1 required) and no schema descriptions, the description adequately covers the main input and optional MITRE hints but lacks detail on other parameters. The output schema is mentioned, which adds completeness.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters2/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0%, yet the description only explains the 'description' and 'mitre_ttps' parameters. Other parameters like rule_type, references, target_platform, severity, title, and author are left unspecified, requiring inference from defaults.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool drafts a sigma detection YAML rule from natural language, distinguishing it from sibling tools convert_rule and validate_rule.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Explicitly states when to use: when a starting-point sigma rule is needed from a plain-English threat summary. Does not mention when not to use or discuss alternatives explicitly, but the context is clear.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

validate_ruleA

Validate a sigma YAML rule for schema correctness, pySigma compatibility, and best-practices linting.

    Use when the caller has a sigma rule (drafted, pasted, or
    read from disk) and needs to know whether it is parseable, spec
    compliant, and free of common quality smells (empty references,
    missing falsepositives, missing MITRE tag, vague condition).
    ``target_backend`` is informational at this layer; the linter is
    backend-agnostic. ``strict=True`` promotes warnings into the
    error list.
    
ParametersJSON Schema
NameRequiredDescriptionDefault
yaml_contentYes
target_backendNodefault
strictNo

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.4/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations provided, so description carries full burden. It describes specific checks (empty references, missing falsepositives, missing MITRE tag, vague condition). It also notes strict mode behavior and that target_backend is informational. No side effects mentioned but no destructive hints either.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Concise at ~80 words, front-loaded with purpose. Every sentence adds value. No repetition or fluff.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given output schema exists (not shown), return values need not be explained. Description covers validation specifics, sibling differentiation, and parameter roles. Could briefly mention that it returns a list of issues, but output schema likely covers that.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0%, so description compensates. It explains yaml_content is the rule to validate, target_backend is informational, and strict promotes warnings to errors. Adds meaningful context beyond bare parameter names.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool validates sigma YAML rules for schema correctness, pySigma compatibility, and best-practices linting. It distinguishes from siblings (convert_rule, draft_rule) by focusing on validation.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Explicit use cases are given (rule drafted, pasted, or read from disk). It mentions when to use it: to check parseability, spec compliance, and quality. Does not explicitly state when not to use it but provides clear context.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

Tool Schema Changelog

Recent tool additions, removals, and schema changes observed during successful MCP inspections. Dates show when Glama detected each change.

  1. 3 tool updatesv1.0.0
    • First observedconvert_rule
    • First observeddraft_rule
    • First observedvalidate_rule

TDQS

A4.3/5.0
Disambiguation5/5

Each tool has a clear, non-overlapping purpose: drafting, validating, and converting Sigma rules. There is no ambiguity between them.

Naming Consistency5/5

All tool names follow the consistent verb_noun pattern (convert_rule, draft_rule, validate_rule), making them predictable and easy to understand.

Tool Count5/5

Three tools perfectly cover the core lifecycle of Sigma rules (create, validate, convert) without being too few or excessive.

Completeness5/5

The tool set provides a complete workflow for handling Sigma rules: drafting from description, validating for correctness, and converting to SIEM queries. No obvious gaps exist.

Maintenance

ActivityActive
ResponsivenessNo issues

Related MCP Connectors

Related MCP Servers

  • F
    license
    Not graded
    quality
    D
    maintenance
    A Claude-powered MCP tool suite for interacting with a Wazuh SIEM manager, enabling triage, health monitoring, threat hunting, rule management, and active response execution.
    -
  • F
    license
    Not graded
    quality
    C
    maintenance
    Enables natural-language security operations by connecting Wazuh SIEM to Claude Desktop via MCP, allowing querying of alerts, agents, vulnerabilities, and generating security reports with Slack integration.
    1
    -
  • A
    license
    A
    quality
    A
    maintenance
    RSigma is a Rust detection-engineering toolkit for the Sigma standard. Its MCP server (rsigma mcp serve) exposes the toolchain to AI agents over stdio or Streamable HTTP, with tools to author, lint, validate, and convert Sigma rules, evaluate and explain detections against log events, and inspect correlation state.
    14
    136
    MIT

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/WRG-11/wrg-sigma-rules'

If you have feedback or need assistance with the MCP directory API, please join our Discord server