claude-plugin
CLAUDE.md4 starsChanged 46 days agoApache-2.0View on GitHub
Elastic's official Claude Code plugin (elastic/claude-plugin). It bundles skills, hooks, and agents for the Elastic stack (Elasticsearch, Kibana, Observability, Security, Cloud) into a single .claude-plugin/plugin.json manifest consumed by claude --plugin-dir. Do not edit files under skills/. Skills are authored in elastic/agent-skills-sandbox, promoted to elastic/agent-skills, and synced here automatically. Any local edits will be overwritten on the next sync. Hooks and agents (future) are authored directly in this repo. Use Assisted-by: trailers (not Co-Authored-By:) for AI-assisted commits, following the Linux kernel…
- Installs packages
In this repository31 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-generate-security-sample-dataSkill
- security-ml-integrationsSkill
The file
We split this CLAUDE.md into the rules it gives an agent
2 rules. About 0 are common, 0 are distinctive, and 2 are very specific to this project.
≈0
Common · estimate
Many files like this have a rule of this kind.
≈0
Distinctive · estimate
This author's own choices. Worth a look.
2
Very specific
Tied to their project's names, files or tools. Probably skip.
- Common
- Distinctive
- Very specific
- Very specific: line 44
Use Assisted-by: trailers (not Co-Authored-By:) for AI-assisted commits, following the Linux kernel convention adopted at Elastic:
- Very specific: line 68
Do not manually bump plugin.json version — the workflow owns that.
≈ “Common” is an estimate: at least 1 in 5 of the 26,980 CLAUDE.md 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
CLAUDE.md
This file provides guidance to Claude Code (claude.ai/code) when working with code in this repository.
What this repo is
Elastic's official Claude Code plugin (elastic/claude-plugin). It bundles skills, hooks, and agents for the Elastic stack (Elasticsearch, Kibana, Observability, Security, Cloud) into a single .claude-plugin/plugin.json manifest consumed by claude --plugin-dir.
Key constraint
Do not edit files under skills/. Skills are authored in elastic/agent-skills-sandbox, promoted to elastic/agent-skills, and synced here automatically. Any local edits will be overwritten on the next sync. Hooks and agents (future) are authored directly in this repo.
Repository layout
.claude-plugin/plugin.json— plugin manifest. Theskillsarray is auto-generated; all other fields are hand-maintained.skills/<domain>/<skill-name>/SKILL.md— skill definitions, organized by domain (cloud, elasticsearch, kibana, observability, security). Some skills also havereferences/,scripts/, andassets/subdirectories.scripts/generate-skills-list.sh— regenerates theskillsarray inplugin.jsonby scanning forSKILL.mdfiles. Requiresjq.CHANGELOG.md— keep-a-changelog format with an[Unreleased]section. CI auto-generates entries on PRs, so manual edits are rarely needed.
Commands
# Install dependencies
npm install
# Validate the plugin (same check CI runs)
claude plugin validate --strict .
# Run tests
npm test
# Run linter
npm run lint
# Regenerate the skills list in plugin.json after adding/removing skills
bash scripts/generate-skills-list.sh
# Test locally
claude --plugin-dir /path/to/claude-pluginCommit attribution
Use Assisted-by: trailers (not Co-Authored-By:) for AI-assisted commits, following the Linux kernel convention adopted at Elastic:
Assisted-by: Claude Code <noreply@anthropic.com>CI / GitHub Actions
Seven workflows:
- CI (
ci.yml) — validates the plugin (claude plugin validate --strict .), runs lint (eslint), and runs tests (jest) on push/PR tomainandstable, and daily cron. - Generate skills list (
generate-skills-list.yml) — auto-commits an updatedplugin.jsonwhenskills/or the script changes. - Changelog (
changelog.yml) — auto-commits a changelog entry from the PR title. Add theskip-changeloglabel to bypass. - Auto-approve Renovate (
auto-approve-renovate-prs.yml) — auto-approves Renovate dependency PRs with therenovate-auto-approvelabel. - Release (
release.yml) — manualworkflow_dispatch. Takes an explicit semver version string, validates it (semver format, single logical bump, tag doesn't exist), bumpsplugin.json, stamps the changelog, and opens a PR targetingstablewithskip-changelog. - Tag Release (
release-tag.yml) — fires on push tostablewhenplugin.jsonchanges. Creates the git tag ({name}--v{version}) and GitHub Release after the release PR merges. - Backport Release (
release-backport.yml) — fires on push tostablewhenplugin.jsonorCHANGELOG.mdchanges. Opens a PR to syncmainwithstableso both branches share the same history after a release.
Branching and releases
Development happens on main. The stable branch is what Claude's plugin system serves to customers — it only advances via release PRs.
Releases are triggered manually via the Release workflow (Actions → Release → Run workflow). Provide the target version (e.g. 0.1.0). The workflow validates the version, bumps plugin.json, stamps the changelog, and opens a PR targeting stable. Merging that PR promotes all accumulated main changes to customers. The Tag Release workflow then automatically creates the tag and GitHub Release from stable. Finally, the Backport Release workflow opens a PR to sync main with stable so both branches converge after the release.
Do not manually bump plugin.json version — the workflow owns that. Do not push directly to stable — it should only advance via release PRs. Tag format: elastic--v{version}.
Skill anatomy
Each skill is a directory under skills/<domain>/ containing at minimum a SKILL.md with YAML frontmatter (name, description, metadata, optionally compatibility). Skills may also include:
references/*.md— domain knowledge the skill loads on demandscripts/*.js— executable helpers (Node.js 22+, some require env vars for cluster access)assets/*.json— template payloads (e.g., Kibana dashboard JSON)
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.

