onboarding
Onboard an Elastic Cloud organization: configure the `elastic` CLI's Cloud context and API key, establish a default region, then…
Manage investigation and incident cases across Elastic Security, Observability, and Stack Management — create, search, update, and enrich cases with comments, alerts, events, and observables (IOCs). Use when tracking incidents, correlating alerts to a case, adding investigation
Claude Code
$ npx -y skills add elastic/agent-skills --skill kibana-cases --agent claude-code
Codex
$ npx skills add elastic/agent-skills --skill kibana-cases -a codex -y
Cursor
$ npx skills add elastic/agent-skills --skill kibana-cases -a cursor -y
Gemini CLI
$ npx skills add elastic/agent-skills --skill kibana-cases -a gemini-cli -y
GitHub Copilot
$ npx skills add elastic/agent-skills --skill kibana-cases -a github-copilot -y
OpenCode
$ npx skills add elastic/agent-skills --skill kibana-cases -a opencode -y
Windsurf
$ npx skills add elastic/agent-skills --skill kibana-cases -a windsurf -y
name: kibana-cases description: > Manage investigation and incident cases across Elastic Security, Observability, and Stack Management — create, search, update, and enrich cases with comments, alerts, events, and observables (IOCs). Use when tracking incidents, correlating alerts to a case, adding investigation notes, updating status or severity, or managing triage output. metadata: author: elastic version: 0.2.0 universal: true compatibility: Kibana 8.x or 9.x with matching Elasticsearch — self-managed, Elastic Cloud Hosted, or Elastic Cloud Serverless. Cases are partitioned by solution owner (`securitySolution`, `observability`, or `cases`). Observables (IOCs) require a 9.x Kibana. Requires `elastic` CLI with the `kb cases` command group.
Create, search, update, and enrich Elastic cases across Security, Observability, and Stack Management. You have full read **and write** access — never claim read-only access. Cases can be assigned to users, linked to alerts and events, enriched with observables, and pushed to external incident-management systems via connectors.
<!-- begin-partial: preamble -->
This skill executes Elasticsearch operations through the `elastic` CLI. If the [`elastic` CLI](https://github.com/elastic/cli#configuration) is not installed, tell the user what it is needed for. Do not guess credentials, call the HTTP API directly, or attempt other workarounds.
This skill references operations in HTTP-shorthand form (e.g., `GET /`, `GET /_cat/indices`, `GET /{index}/_mapping`, `GET /{index}/_settings/index.mode`, `POST /_query`). The [Operations](#operations) table at the end of this document maps each shorthand to the equivalent `elastic` CLI command — always use the CLI rather than calling the HTTP API directly.
<!-- end-partial: preamble -->
Cases are partitioned across `securitySolution` (Security), `observability` (Observability), and `cases` (Stack Management). A user works in exactly one. Operating in the wrong solution — or fanning out across all three — is always a bug.
**Before any cases operation, the solution `owner` must be set**, sourced ONLY from the user naming it in plain language ("in Security", "obs cases", "Stack Management", etc.) in the current or an earlier message. Topic-keyword inference does not count. If the owner is unset, your only valid action is to ask, verbatim:
> "Which Elastic app is this in — Security, Observability, or Stack Management?"
Once set: pass it as `owner` on every create and as the `owner` filter on every `_find`; treat it as fixed unless the user explicitly switches. Never:
Examples:
| Solution | Typical triggers | Observables (IOCs) | `critical` severity means | | ------------------ | ------------------------------------------------- | ------------------------------------------------------------------------ | ------------------------- | | `securitySolution` | SIEM detection rules, threat hunts, manual triage | **Primary use case** — proactively track IPs, domains, file hashes, URLs | active attack in progress | | `observability` | APM errors, SLO violations, metric/log anomalies | Rarely relevant — do not proactively suggest | complete service outage | | `cases` | General-purpose, no domain assumptions | Rarely relevant | — |
Domain notes: `status` flows `open` → `in-progress` → `closed`. `assignees` are user profile UIDs, not usernames. `severity` is one of `low`, `medium`, `high`, `critical`.
1. **Establish solution context, then classify the task.** Confirm the `owner` per the rule above. Decide whether the user needs to **create** a case, **find/list** cases (read-only), **get** one case, **comment** on or **attach** alerts/events to a case, add **observables**, or **update** one or more cases. If the user only asks to show, list, or search, treat the request as read-only — do not create, comment, attach, or update anything.
2. **Check for an existing case before creating one.** When triaging, first search so you do not create duplicates. Call `GET kbn:/api/cases/_find` filtered to the owner, or `GET kbn:/api/cases/alerts/{alertId}` to see whether a specific alert is already attached to a case.
to active cases.
Report the exact `total` count and each matching case verbatim. Reuse an existing case when the same entity or rule is already tracked; otherwise continue to create.
3. **For create tasks, build the payload.** Call `POST kbn:/api/cases` with `title`, `description`, `tags`, `severity`, the resolved `owner`, a `connector` (use the `none` connector unless the user asks to wire an external system), and `settings.syncAlerts` (default `true`). Confirm the create with the user before writing, then report the returned case `id` verbatim.
Elastic Agent Skills — built by the people who built Elastic — deliver native platform expertise directly to your AI coding agent.
Onboard an Elastic Cloud organization: configure the `elastic` CLI's Cloud context and API key, establish a default region, then…
Provision and operate Elastic Cloud infrastructure: create, connect to, update, and delete Serverless projects (Elasticsearch,…
Explain Elasticsearch ML anomaly detection scores, model behavior, and result interpretation. Use when the user asks why a score…
Create and manage Elastic ML anomaly detection jobs via the API. Use when setting up jobs on an index or data stream, configuring…
Diagnose a non-green Elasticsearch cluster and surface the single most likely cause with remediation. Use when an operator…
Execute ES|QL (Elasticsearch Query Language) queries, use when the user wants to query Elasticsearch data, analyze logs,…
Diagnose why a program crashed on this machine, from a systemd-coredump core dump. Use when a process has segfaulted, aborted, or…
Set up, connect, validate, and repair Claude Desktop and MCP servers using Desktop Commander — inspecting and fixing mcp.json /…
Audit UniFi firewall policies for conflicts, redundancies, security gaps, and best practices. Use when asked to review firewall…
Add a custom domain to a Temps project and provision an automatic SSL/TLS certificate via Let's Encrypt, driven entirely from the…