elastic/security-generate-security-sample-data
> 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.
npx skills add https://github.com/elastic/agent-skills --skill security-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.
For a zero-friction experience that generates everything and opens Kibana:
node skills/security/generate-security-sample-data/scripts/demo-walkthrough.js
- [ ] Step 1: Set environment variables
- [ ] Step 2: Generate sample data
- [ ] Step 3: Explore in Kibana
- [ ] Step 4: Clean up when done
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"
node skills/security/generate-security-sample-data/scripts/sample-data.js \
system endpoint okta aws windows --scenarios --alerts
node skills/security/generate-security-sample-data/scripts/sample-data.js \
system endpoint --count 100
node skills/security/generate-security-sample-data/scripts/sample-data.js --scenarios
node skills/security/generate-security-sample-data/scripts/sample-data.js --alerts
After generating data, direct the user to these pages:
node skills/security/generate-security-sample-data/scripts/sample-data.js --cleanup
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.
Stream events to simulate a live environment:
node skills/security/generate-security-sample-data/scripts/sample-data.js \
--continuous --interval 15
Every 5th batch includes an attack scenario; every 10th batch adds synthetic alerts. Press Ctrl+C to stop.
| 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 |
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) |
> "Set up a demo environment so I can show Attack Discovery to my VP."
node skills/security/generate-security-sample-data/scripts/demo-walkthrough.js
> "Generate only the ransomware attack chain to test our detection rules."
node skills/security/generate-security-sample-data/scripts/sample-data.js \
--scenario ransomwareChain --alerts
> "Keep generating events so the dashboards stay active during the demo."
node skills/security/generate-security-sample-data/scripts/demo-walkthrough.js --continuous
> "Remove all sample data from my project."
node skills/security/generate-security-sample-data/scripts/sample-data.js --cleanup
tags: ["elastic-security-sample-data"] for safe cleanup. The cleanup commandonly deletes documents with this marker.
_source.tags for matching sampledocuments from the last 14 days.
.alerts-security.alerts-default — they do not require detection rules tobe installed or enabled.
Stack Management > Connectors. The "Complete" project tier unlocks the feature, but the connector must be set up
separately.
case-management skill for creating investigation cases from alerts.events and alerts are tagged for cleanup but will appear in dashboards, the Alerts tab, and Attack Discovery alongside
real data.
generate, --cleanup, --continuous) prompt for confirmation. Pass --yes or -y to skipwhen called by an agent.
--cleanup runs deleteByQuery across all sample data indices — verify environment variables point to the intendedcluster before running.
--continuous mode indexes events indefinitely until manually stopped with Ctrl+C.| 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.
Take elastic/security-generate-security-sample-data 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.