analytics-opensearch-expertise
Amazon OpenSearch Service domain health assessment.
Skill by genealpeOfficial
Install
Works with Claude Code, Claude apps, Codex, Cursor, Gemini CLI, GitHub Copilot, VS Code, OpenCode, Goose, Windsurf. Read the repository before you give any tool access to your data.
npx agentmarket install skill/aws-analytics-opensearch-expertise
Asks which of your tools to add it to (Claude Code, Codex, Cursor, VS Code, Windsurf, Gemini CLI, Claude Desktop) and shows the change first. See https://agentmart.dev/cli.
Get the weekly diff
The weekly diff: one email a week with new agent tools, notable updates and grade changes, plus security alerts for tools you follow. Double opt-in, one-click unsubscribe.
About
Use cases: documents, backend, cloud, data
Reviews
Write a reviewNo reviews yet. Installed it? Reviews come from verified installers only. How reviews work
Permissions
What this skill can do and what it asks for, from its SKILL.md. Checked Oct 25, 2026.
- Tools
- No tools found
- Secrets
- None asked for
- Install scripts
- None found
Network hosts it talks to 1
codeload.github.com· found in install command
Files it touches
~/.claude/skills/analytics-opensearch-expertise
What's inside
- Skill name
analytics-opensearch-expertise- Description
- Amazon OpenSearch Service domain health assessment. Performs read-only, API-driven checks against a customer's OpenSearch domain(s) covering cluster health, node/shard configuration, performance metrics, security posture, and cost optimization signals. Activate this skill for requests about OpenSearch or Elasticsearch domain health, cluster review, domain assessment, performance, security posture, or cost optimization. Given a domain ARN (or name + region), it produces a structured findings report with prioritized recommendations. All checks use read-only AWS control-plane APIs (es:Describe*, es:GetCompatibleVersions, es:DescribeReservedInstances, cloudwatch:GetMetricData) — no data-plane access required.
- License
- Apache-2.0
- Metadata
- author: genealpe · version: 2.6.2 · aws-devops-agent-skills.agent-types: CHAT
- Instructions
- 394 lines in SKILL.md · view on GitHub
Files (10)
- .skilleval.yaml
- CHANGELOG.md
- README.md
- SKILL.md
- benchmark.json · evals/
- eval_queries.json · evals/
- evals.json · evals/
- report.json · evals/
- trigger_report.json · evals/
- remediation-reference.md · references/
SKILL.md (first lines)
# OpenSearch Domain Health Assessment
## Overview
This skill performs a comprehensive, read-only health assessment of Amazon OpenSearch Service domains using AWS APIs available through the customer's local AWS profile. It produces a structured report with findings and actionable recommendations.
> **Scope:** CLI-agent compatible. No external packages, no IDE workspace, no human review gates.
## Trigger Keywords
`opensearch`, `opensearch health`, `domain health`, `cluster review`, `opensearch review`, `opensearch assessment`, `opensearch check`, `open search`, `opensearch performance`, `opensearch security`, `opensearch cost`
## Prerequisites
- AWS CLI profile configured with read-only access to the target account
- IAM permissions required:
- `es:DescribeDomain`
- `es:DescribeDomainHealth`
- `es:GetCompatibleVersions`
- `es:DescribeReservedInstances`
- `es:ListDomainNames`
- `cloudwatch:GetMetricData`
## Execution Flow
### Input
**Required:** Domain ARN (e.g., `arn:aws:es:us-west-2:123456789012:domain/my-domain`)
Parse the ARN to extract:
- **Region:** field 4 (e.g., `us-west-2`)
- **Account ID:** field 5 (e.g., `123456789012`)
- **Domain name:** after `domain/` in field 6
**Fallback / Target Resolution (apply these rules exactly — never silently substitute a target):**
1. **Exact match:** the ARN (or name + region) resolves via `DescribeDomain` → proceed with the assessment.
2. **No domain specified:** run `ListDomainNames` in the user's likely region(s) (cross-region scan if needed) and **present the discovered domains as options for the user to choose**. Do not pick one yourself unless exactly one domain exists in the entire account — state that you did so.
3. **Specified but NOT found:** search for candidates (`ListDomainNames` in the ARN's region, then other regions). Then **STOP and confirm — do NOT assess**:
- Report clearly: "Domain {given} not found in {region}."
- List the closest candidate(s) with their regions (e.g., name differs by a suffix, or same name in another region).
- Ask the user to confirm which domain to assess. **Never run the assessment against a domain the user did not name without their explicit confirmation** — in accounts with similarly-named sibling domains (e.g., `prod-es-content` / `prod-es-users`), a silently substituted target produces a confident report about the wrong domain, which is worse than an error.
4. If the user provides only a domain name with no region, ask for the region (or apply rule 3's candidate search).
### Steps
```
1. Parse domain ARN → region, account, domain name
2. Resolve the target (Target Resolution rules above) — confirm with the user if not an exact match
3. Describe domain configuration (DescribeDomain)
4. Describe domain health (DescribeDomainHealth)
5. Pull CloudWatch metrics (last 24h)
6. Check upgrade eligibility (GetCompatibleVersions; ListVersions fallback)
7. Check reserved instance coverage (DescribeReservedInstances)
8. Analyze findings against thresholds
9. Load the Remediation Reference — read_skill_resource(skill_id='analytics-opensearch-expertise',
path='references/remediation-reference.md') — MANDATORY before writing recommendations
10. Generate report with recommendations
```
## API Compatibility (DevOps Agent tooling)
The DevOps Agent AWS tool exposes the LEGACY Elasticsearch-compatible client. Call legacy
operation names FIRST; fall back to the modern names only if the legacy call fails:
| Purpose | Try first (legacy) | Modern equivalent |
|---|---|---|
| Domain config | `describe_elasticsearch_domain` | `describe_domain` |
| Version catalog | `list_elasticsearch_versions` | `list_versions` |
| Upgrade targets | `get_compatible_elasticsearch_versions` | `get_compatible_versions` |
| Reserved instances | `describe_reserved_elasticsearch_instances` | `describe_reserved_instances` |
- IAM note: the execution role's managed policy grants `es:Describe*` and `es:List*` —
Describe/List operations succeed under either naming; `Get*` actions (BOTH GetCompatible
variants) are typically denied. This is exactly why the 1.4 ListVersions fallback exists.
- `DescribeDomainHealth` has NO legacy equivalent. If it fails, do NOT skip checks 2.2/2.3 —
use CloudWatch instead: `Shards.active` (Maximum) = active shards, `Shards.unassigned`
(Maximum) = unassigned, TotalShards ≈ active + unassigned; `ClusterStatus.green/yellow/red`
for 1.1/3.7. Never report the checks as SKIPPED when this fallback is available.
- All CloudWatch metrics in this skill: namespace `AWS/ES`, dimensions `DomainName` and
`ClientId` (the account ID).
## Checks & Decision Logic
### Category 1: Cluster Health & Configuration
#### 1.1 Cluster Status
- **API:** `DescribeDomainHealth`
- **Field:** `ClusterHealth` (green | yellow | red)
- **Logic:**
- GREEN → ✅ All primary and replica shards assigned
- YELLOW → ⚠️ All primaries assigned, some replicas unassigned
- RED → 🔴 Some primary shards unassigned — data loss risk
#### 1.2 Node Count & AZ Balance
- **API:** `DescribeDomain` → `ClusterConfig`
- **Fields:** `InstanceCount`, `ZoneAwarenessEnabled`, `AvailabilityZoneCount`
- **Logic:**
- If `ZoneAwarenessEnabled == true`:
- `InstanceCount % AvailabilityZoneCount != 0` → ⚠️ "Data node count ({count}) is not a multiple of AZ count ({az_count}). This causes uneven shard distribution across AZs, reducing fault tolerance."
- Recommendation: "Adjust data node count to a multiple of {az_count} (e.g., {nearest_multiple})."
- If `ZoneAwarenessEnabled == false` and `InstanceCount > 1`:
- ⚠️ "Multi-AZ is not enabled despite having {count} data nodes. Single-AZ deployment risks full cluster unavailability during AZ failure."
#### 1.3 Dedicated Master Configuration
- **API:** `DescribeDomain` → `ClusterConfig`
- **Fields:** `DedicatedMasterEnabled`, `DedicatedMasterType`, `DedicatedMasterCount`
- **Logic:**
- `DedicatedMasterEnabled == false` AND `InstanceCount >= 3` → ⚠️ "No dedicated master nodes. Clusters with 3+ data nodes should use dedicated masters for stability."
- `DedicatedMasterCount == 2` → ⚠️ "Even number of master nodes ({count}) risks split-brain. Use 3 dedicated master nodes."
- `DedicatedMasterCount < 3` → ⚠️ "Fewer than 3 master nodes reduces fault tolerance."
#### 1.4 Engine Version & Upgrade Eligibility
- **API:** `GetCompatibleVersions` with `DomainName`
- **Fallback (use when `GetCompatibleVersions` returns AccessDeniedException — do NOT skip):**
call `ListVersions` and derive upgrade candidates using these two rules:
1. Direct upgrade candidates = versions in `ListVersions` with the SAME major version as the
domain and a LATER minor version (e.g., a 2.11 domain → every later 2.x in the region).
2. Next-major path = via the LATEST available minor of the current major (compute it from
`ListVersions`; never hard-code a specific version number).From aws/tools-for-devops-agent, Apache-2.0.
More from aws/tools-for-devops-agent
- 0.784score
cloudtrail-cost-optimization
holmallaOfficial
Identify and quantify AWS CloudTrail cost optimization opportunities.
SkillAFreshness: A★ 116Claude Code +9 - 0.784score
config-cost-optimization
holmallaOfficial
Identify and quantify AWS Config cost optimization opportunities.
SkillAFreshness: A★ 116Claude Code +9 - 0.784score
agentcore-observability-setup
vggargavOfficial
Validates and bootstraps Amazon Bedrock AgentCore observability so customers can trace agent reasoning, detect silent failures, and measure performance before…
SkillAFreshness: A★ 116Claude Code +9 - 0.784score
aiml-access-diagnostics
tamrishOfficial
Use this skill when diagnosing IAM and access failures for Bedrock and SageMaker.
SkillAFreshness: A★ 116Claude Code +9 - 0.784score
aiml-gpu-training-cluster-investigation
nzureshOfficial
Use this skill for GPU training or inference clusters on SageMaker HyperPod (Slurm or EKS), ParallelCluster, or self-managed EC2/EKS GPU instances.
SkillAFreshness: A★ 116Claude Code +9 - 0.784score
aws-backup-coverage-review
vediyappan-kkOfficial
AWS Backup coverage and data protection posture review.
SkillAFreshness: A★ 116Claude Code +9 - 0.784score
aws-eks-operations-review
shyamkulkarniOfficial
Use this skill when someone wants an Amazon EKS cluster graded against best practices.
SkillAFreshness: A★ 116Claude Code +9 - 0.784score
aws-health-events
udid-awsOfficial
ALWAYS use this skill in the beginning of any incident investigation, root cause analysis, or operational troubleshooting.
SkillAFreshness: A★ 116Claude Code +9 - 0.784score
aws-routing
midakinOfficial
Analyze and troubleshoot AWS routing and BGP path selection - how AWS chooses a network path, why traffic takes an unexpected route, and how to steer it.
SkillAFreshness: A★ 116Claude Code +9 - 0.784score
agentcore-ops-review
pamvasOfficial
Comprehensive operational review procedures for Amazon Bedrock AgentCore resources aligned with the AWS Well-Architected Framework.
SkillAFreshness: A★ 116Claude Code +9 - 0.784score
bedrock-operation-review
smnixonOfficial
Comprehensive Amazon Bedrock review aligned with the AWS Well-Architected Framework and Bedrock best practices.
SkillAFreshness: A★ 116Claude Code +9 - 0.784score
database-migration-service-expertise
tabhimanOfficial
AWS Database Migration Service (DMS) operational review and troubleshooting skill.
SkillAFreshness: A★ 116Claude Code +9
Signals
- Stars
- 116
- Forks
- 85
- Open issues
- 8
- Last commit (this folder)
- Oct 22, 2026 (6 days ago)
- Last release
- Sep 25, 2026 (1 month ago)
From GitHub (fetched Oct 24, 2026).
Details
- Version
- 2.6.2
- License
- Apache-2.0
- Repository
- github.com/aws/tools-for-devops-agent
- First seen
- Oct 24, 2026
- Last checked
- Oct 24, 2026
- Source
- GitHubgithub-graphql
Cite this page
analytics-opensearch-expertise skill. Agent Mart. https://agentmart.dev/skills/aws-analytics-opensearch-expertise (last updated 2026-10-24)