OpenSearch SIEM detection: SIGMA, query DSL, MITRE ATT&CK mapping, anomaly/correlation rules, alert validation, SOC escalation.
npx skills add https://github.com/notque/vexjoy-agent --skill opensearch-detection-engineer
Methodology for authoring and validating SIEM detections on OpenSearch Security Analytics: SIGMA rules, query DSL translation, MITRE ATT&CK mapping, anomaly detection, correlation, and SOC incident escalation. Vendor-neutral framework with OpenSearch-specific API patterns.
| Trigger | Action |
|---------|--------|
| Author a new SIGMA rule or DSL detector | Load detection-engineering.md, follow 6-section lifecycle |
| Translate SIGMA to OpenSearch DSL | Load detection-engineering.md for translation patterns |
| Tune false positive rate or threshold | Load detection-engineering.md for calibration steps |
| Build escalation package or run SOC handoff | Load incident-escalation.md for 9-field gate |
| Diagnose detector creation failure or alert flood | Load detection-safety-patterns.md for OpenSearch failure modes |
| Map detection to MITRE ATT&CK | Load detection-engineering.md for tactic/technique catalog |
T1110.003), tactic name (e.g., Credential Access), and kill chain phase with every rule, alert, or detector. Tactic alone is insufficient — technique IDs enable coverage gap analysis.GET {index}/_mapping and confirm every field referenced in the rule exists in the target index mapping before submitting the detector. Absent fields cause silent failure or misleading errors.PUT _mapping, POST _aliases, POST /_plugins/_security_analytics/... — not abstract advice.incident-escalation.md.incident-escalation.md.Before creating or modifying a detector, check for these. If found, STOP and resolve before continuing.
| Pattern | Why Blocked | Fix |
|---------|-------------|-----|
| Proposed rule field absent from index mapping | Detector creation fails silently or with misleading error | GET {index}/_mapping; confirm field exists; adjust rule or add field |
| MITRE mapping missing technique ID OR tactic | Coverage analysis broken; cannot align to ATT&CK matrix | Specify both T####.### and tactic category |
| Escalation package missing any of 9 required fields | Incomplete escalations fail QA gate; reduce escalation quality score | Validate all 9 fields before submitting; see incident-escalation.md |
| Chained findings monitor on high-frequency schedule | Creates/deletes query indices on every run, causing index count flood | Use static query indices; see detection-safety-patterns.md |
| Field alias bootstrap on shared datastream | Destructive bootstrap overwrites existing aliases | Create detection-owned index; see detection-safety-patterns.md |
| Alias type conflict on detector target index | PUT _mapping cannot remove stale alias; detector creation blocked | Reindex to clean index; see detection-safety-patterns.md |
After authoring a detection rule, STOP and confirm: "Have I verified every field name exists in the target index mapping via GET {index}/_mapping? Assumption is the failure mode."
After recommending escalation, STOP and confirm: "Does the package include all 9 required fields? Missing fields fail the QA gate."
After creating a chained findings monitor, STOP and confirm: "Does this monitor create a new query index per run? Index flood is a confirmed production failure mode."
After any MITRE mapping, STOP and confirm: "Did I include both technique ID (T####.###) and tactic category?"
| Rationalization Attempt | Why It's Wrong | Required Action |
|------------------------|----------------|-----------------|
| "The field probably exists in the index" | Absent fields cause silent detector failures | Run GET {index}/_mapping before proposing any rule |
| "Chained findings monitors are fine on default settings" | Index flood is a confirmed production failure mode | Check monitor type and schedule; flag and remediate |
| "The escalation looks complete enough" | Incomplete packages reduce escalation quality score | Validate all 9 fields explicitly |
| "MITRE tactic is enough without technique ID" | Technique IDs enable precise coverage gap analysis | Include both (e.g., T1110.003 + Credential Access) |
| "Auto-mapping is fine for a detection index" | Alias bootstrap is destructive on shared indices | Use detection-owned index with explicit mapping |
| "SLAs are guidelines" | Response times are KPI-tracked organizational commitments | Reference exact tier times; treat as binding |
STOP and ask the user when:
| Situation | Why Stop | Ask This |
|-----------|----------|----------|
| Index mapping unknown before detector creation | Cannot validate field existence | "Can you run GET {index}/_mapping and share the output?" |
| Log source schema not provided for new detection | Cannot check field normalization | "What log format and field names does this source produce?" |
| Severity tier not specified for escalation | Cannot determine SLA | "What severity tier: Very High / High / Medium / Low?" |
| Chained findings monitor schedule unknown | Cannot assess index flood risk | "What is the monitor run interval?" |
| Signal | Reference | What it adds |
|--------|-----------|--------------|
| SIGMA authoring, DSL translation, MITRE mapping, detector creation, field normalization, FP suppression | references/detection-engineering.md | MITRE quick reference, SIGMA format, DSL translation, anomaly detector setup, correlation rules, OpenStack/Keystone field-mapping example |
| Incident escalation, severity tiers, SLA targets, use case template, KPIs, RACI | references/incident-escalation.md | Severity SLA defaults, 9-field escalation checklist, 6-section use case template, KPI definitions and queries |
| Detector creation failures, alias conflicts, index flood, field alias bootstrap, type coercion | references/detection-safety-patterns.md | Chained findings index flood fix, field alias bootstrap remediation, alias-vs-text conflict diagnosis, error-fix mapping table |
Gate: MITRE technique ID + tactic recorded; log source schema available.
GET {index}/_mapping for each field referenced in the proposed ruleterms aggregationsGate: Every field in the rule exists in the target mapping. Cardinality is bounded.
detection-engineering.mdGate: SIGMA + DSL both produced; FP suppressions documented.
detection-safety-patterns.md for full safety checklistGate: No hard-gate patterns triggered.
Gate: All 6 sections populated; runbook linked.
Gate: FP rate measured against target; tuning logged.
incident-escalation.mdGate: 9-field package complete; SLA window identified; recipient confirmed.
opensearch-elasticsearch-engineerWhen asked to perform unavailable actions, explain the limitation and suggest the appropriate agent.
Integration with protocols.io API for managing scientific protocols. This skill should be used when working with protocols.io to search, create, update, or publish protocols; manage protocol steps and materials; handle discussions and comments; organize workspaces; upload and manage files; or integrate protocols.io functionality into workflows. Applicable for protocol discovery, collaborative protocol development, experiment tracking, lab protocol management, and scientific documentation.
Analyzes job descriptions and generates tailored resumes that highlight relevant experience, skills, and achievements to maximize interview chances
Generate Excalidraw diagrams from natural language descriptions. Use when asked to "create a diagram", "make a flowchart", "visualize a process", "draw a system architecture", "create a mind map", or "generate an Excalidraw file". Supports flowcharts, relationship diagrams, mind maps, and system architecture diagrams. Outputs .excalidraw JSON files that can be opened directly in Excalidraw.
Build and distribute Expo development clients locally or via TestFlight
Use when you have a written implementation plan to execute in a separate session with review checkpoints
Data structure for annotated matrices in single-cell analysis. Use when working with .h5ad files or integrating with the scverse ecosystem. This is the data format skill—for analysis workflows use scanpy; for probabilistic models use scvi-tools; for population-scale queries use cellxgene-census.
Benchling R&D platform integration. Access registry (DNA, proteins), inventory, ELN entries, workflows via API, build Benchling Apps, query Data Warehouse, for lab data management automation.
Comprehensive molecular biology toolkit. Use for sequence manipulation, file parsing (FASTA/GenBank/PDB), phylogenetics, and programmatic NCBI/PubMed access (Bio.Entrez). Best for batch processing, custom bioinformatics pipelines, BLAST automation. For quick lookups use gget; for multi-service integration use bioservices.
Take notque/opensearch-detection-engineer from the repository into ~/.claude/skills for personal
use, or into .claude/skills inside a project.
The agent identifies a skill by the name field in its header. Two skills with the
same name cannot sit side by side — one of them will be ignored.