security-generate-security-sample-data
Skill33 starsChanged 2 months agoApache-2.0View on GitHub
Generate sample security events, attack scenarios, and synthetic alerts for Elastic Security. Use when demoing, populating dashboards, testing detection rules, or setting up a POC.
- Reads credentials
2 other projects use a version of this.
Adopted by
Most recently taken up by
- elastic/claude-pluginword for word, first seen Sep 29, 2026
- elastic/agent-skillsword for word, first seen Sep 4, 2026
Other versions2 projects use a version of this.
Word for word · 2
- elastic/agent-skills★ 603100% same
- elastic/claude-plugin★ 4100% same
Edited · 0
None found.
Wrote their own version · 0
None found.
How matches are found. Word for word: the exact same text. Edited: shares passages with this file (“99% same” means 99% of its five-word phrases also appear here; 10% or more counts). Their own version: similar meaning, or, weakest, the same name. We can’t tell which project had it first. Projects are counted among the 200 most-starred candidates, and mentions are links to the repository we found, up to 50 per site, so both counts are a floor.
In this repository30 other files it gives its agents.
- cloud-onboardingSkill
- cloud-provisioningSkill
- elasticsearch-anomaly-detection-explainerSkill
- elasticsearch-anomaly-detectionSkill
- elasticsearch-cluster-healthSkill
- elasticsearch-esqlSkill
- elasticsearch-index-designSkill
- elasticsearch-ingestSkill
- elasticsearch-onboardingSkill
- elasticsearch-query-optimizationSkill
- elasticsearch-reindexSkill
- elasticsearch-search-relevanceSkill
- kibana-agent-builderSkill
- kibana-alerting-rulesSkill
- kibana-anomaly-detectionSkill
- kibana-casesSkill
- kibana-context-engineSkill
- kibana-dashboardsSkill
- kibana-workflowsSkill
- observability-csp-investigationSkill
- observability-k8s-investigationSkill
- observability-llm-obsSkill
- observability-onboardingSkill
- observability-service-reliabilitySkill
- observability-sre-triageSkill
- security-alert-analysisSkill
- security-alert-triageSkill
- security-case-managementSkill
- security-detection-rule-managementSkill
- security-ml-integrationsSkill
The file
We split this skill into the rules it gives an agent
7 rules. About 0 are common, 3 are distinctive, and 4 are very specific to this project.
≈0
Common · estimate
Many files like this have a rule of this kind.
≈3
Distinctive · estimate
This author's own choices. Worth a look.
4
Very specific
Tied to their project's names, files or tools. Probably skip.
- Common
- Distinctive
- Very specific
- Distinctive: line 77
After generating data, direct the user to these pages:
- Distinctive: line 98
All events use RFC 5737 / RFC 2606 safe addresses.
- Distinctive: line 110
Every 5th batch includes an attack scenario.
- Very specific: line 176
All generated documents are tagged with tags: ["elastic-security-sample-data"] for safe cleanup.
- Very specific: line 178
If marker fields are not indexed in a data stream, cleanup falls back to scanning _source.tags for matching sample documents from the last …
- Very specific: line 185
Use the case-management skill for creating investigation cases from alerts.
- Very specific: line 192
All write operations (generate, --cleanup, --continuous) prompt for confirmation.
≈ “Common” is an estimate: at least 1 in 5 of the 350,495 skill files we read have a rule of the same kind, not the same words. “Very specific” is our guess from the words: it names a file, a command, a setting or the project itself.
Files
Generate Security Sample Data
Generate ECS-compliant security events, multi-step attack scenarios, and synthetic alert documents that populate Elastic Security dashboards, the Alerts tab, and Attack Discovery.
Quick start
For a zero-friction experience that generates everything and opens Kibana:
node skills/security/generate-security-sample-data/scripts/demo-walkthrough.jsWorkflow
- [ ] Step 1: Set environment variables
- [ ] Step 2: Generate sample data
- [ ] Step 3: Explore in Kibana
- [ ] Step 4: Clean up when doneStep 1: Set environment variables
export ELASTICSEARCH_URL="https://your-project.es.region.aws.elastic.cloud"
export ELASTICSEARCH_USERNAME="admin"
export ELASTICSEARCH_PASSWORD="your-password"
export KIBANA_URL="https://your-project.kb.region.aws.elastic.cloud"Step 2: Generate sample data
Generate everything at once
node skills/security/generate-security-sample-data/scripts/sample-data.js \
system endpoint okta aws windows --scenarios --alertsGenerate only events
node skills/security/generate-security-sample-data/scripts/sample-data.js \
system endpoint --count 100Generate only attack scenarios
node skills/security/generate-security-sample-data/scripts/sample-data.js --scenariosGenerate only synthetic alerts
node skills/security/generate-security-sample-data/scripts/sample-data.js --alertsStep 3: Explore in Kibana
After generating data, direct the user to these pages:
- Security > Alerts — synthetic alerts with MITRE ATT&CK mappings
- Security > Attack Discovery — requires an LLM connector to analyze alerts
- Security > Hosts — host activity from sample events
- Security > Overview — summary of all security data
- Discover — raw events across all data streams
Step 4: Clean up when done
node skills/security/generate-security-sample-data/scripts/sample-data.js --cleanupWhat gets generated
Sample data spans 5 packages (system, endpoint, windows, aws, okta) and 4 focused attack scenarios covering the most
common demo themes: Windows credential theft, AWS cloud privilege escalation, Okta identity takeover, and a full
ransomware kill chain. Synthetic alert documents are indexed into .alerts-security.alerts-default with MITRE ATT&CK
mappings, severity levels, and risk scores.
All events use RFC 5737 / RFC 2606 safe addresses. For full tables of packages, scenarios, and alerts see references/sample-data-reference.md.
Continuous mode
Stream events to simulate a live environment:
node skills/security/generate-security-sample-data/scripts/sample-data.js \
--continuous --interval 15Every 5th batch includes an attack scenario; every 10th batch adds synthetic alerts. Press Ctrl+C to stop.
Tool reference
sample-data.js
| Flag | Description |
--count, -n | Events per package (default: 50) |
--scenarios | Run all attack simulation scenarios |
--scenario NAME | Run a specific scenario |
--alerts | Generate synthetic alert documents |
--cleanup | Remove all sample data and alerts |
--continuous | Stream live events (Ctrl+C to stop) |
--interval N | Seconds between continuous batches (default: 30) |
--json, -j | Output results as JSON |
--yes, -y | Skip confirmation prompts |
demo-walkthrough.js
Zero-friction runner that generates everything and opens Kibana.
| Flag | Description |
--cleanup | Remove all sample data, alerts, case |
--continuous | Generate then stream live events |
--count N | Events per package (default: 50) |
--interval N | Seconds between batches (default: 30) |
Examples
Quick demo for a stakeholder
"Set up a demo environment so I can show Attack Discovery to my VP."
node skills/security/generate-security-sample-data/scripts/demo-walkthrough.jsTargeted scenario testing
"Generate only the ransomware attack chain to test our detection rules."
node skills/security/generate-security-sample-data/scripts/sample-data.js \
--scenario ransomwareChain --alertsSimulating a live SOC
"Keep generating events so the dashboards stay active during the demo."
node skills/security/generate-security-sample-data/scripts/demo-walkthrough.js --continuousCleaning up after a demo
"Remove all sample data from my project."
node skills/security/generate-security-sample-data/scripts/sample-data.js --cleanupGuidelines
- All generated documents are tagged with
tags: ["elastic-security-sample-data"]for safe cleanup. The cleanup command only deletes documents with this marker. - If marker fields are not indexed in a data stream, cleanup falls back to scanning
_source.tagsfor matching sample documents from the last 14 days. - Synthetic alerts are indexed directly into
.alerts-security.alerts-default— they do not require detection rules to be installed or enabled. - Attack Discovery requires an LLM connector (OpenAI, Anthropic, Google Gemini, or similar) configured in Kibana under Stack Management > Connectors. The "Complete" project tier unlocks the feature, but the connector must be set up separately.
- Use the
case-managementskill for creating investigation cases from alerts.
Production use
- Do not run against production clusters unless you intend to inject synthetic data alongside real alerts. Sample events and alerts are tagged for cleanup but will appear in dashboards, the Alerts tab, and Attack Discovery alongside real data.
- All write operations (
generate,--cleanup,--continuous) prompt for confirmation. Pass--yesor-yto skip when called by an agent. --cleanuprunsdeleteByQueryacross all sample data indices — verify environment variables point to the intended cluster before running.--continuousmode indexes events indefinitely until manually stopped with Ctrl+C.
Environment variables
| Variable | Required | Description |
ELASTICSEARCH_URL | Yes | Elasticsearch URL |
ELASTICSEARCH_API_KEY | Yes* | Elasticsearch API key |
ELASTICSEARCH_USERNAME | Yes* | Elasticsearch username (alternative) |
ELASTICSEARCH_PASSWORD | Yes* | Elasticsearch password (alternative) |
KIBANA_URL | No | Kibana URL (for case creation and links) |
KIBANA_USERNAME | No | Kibana username (if using Kibana features) |
KIBANA_PASSWORD | No | Kibana password (if using Kibana features) |
*Either API key or username/password is required for Elasticsearch.
Does it work?
Reviews from people and from AI agents that ran it: what they used it for, and whether it worked.
No reviews yet
People and AI agents can review whether this works in practice. Say what you used it for, and whether it worked.
- It worked
- Partly
- It didn't
Using an agent? It can post a review for you after it has run the file: the MCP tool registry_write, action report. How to connect one.
Your trail
Files you open will collect here, so you can find them again.
Open two or more, and you can remix the rules you like from each into one list. Kept in this browser only.
Now do this for your own.
Bring your CLAUDE.md, AGENTS.md or skills. agentleFS shows which of your rules are common, which are yours and which only fit one project, and keeps one version your agents read everywhere.

