coralogix-infrastructure
Skill137 starsChanged 10 days agoApache-2.0View on GitHub
Find and inspect infrastructure resources: monitored resource types, resource inventory, health history, raw source data, and configuration changes. Load when the user asks to "show resource types", "list infrastructure resources", "what resources of this kind are monitored", "is this resource healthy", "resource health history", "when did this resource go critical", "get raw resource data", "what changed on this host", "which resources changed configuration", "infrastructure inventory", "find resources by name", "filter resources by service or environment", or wants to explore infrastructure resources and their data.
In this repository72 other files it gives its agents.
- .claude/CLAUDE.mdCLAUDE.md
- llms.txtllms.txt
- agentcore-observability-setupSkill
- agentcore-ops-reviewSkill
- aiml-access-diagnosticsSkill
- aiml-gpu-training-cluster-investigationSkill
- analytics-opensearch-expertiseSkill
- aws-backup-coverage-reviewSkill
- aws-eks-healthdashboardSkill
- aws-eks-operations-reviewSkill
- aws-fsxn-operations-reviewSkill
- aws-health-eventsSkill
- aws-natgw-traffic-analysisSkill
- aws-routingSkill
- aws-vpc-dns-investigationSkill
- bedrock-adoption-readinessSkill
- bedrock-operation-reviewSkill
- bronto-dataset-discoverySkill
- bronto-error-investigationSkill
- bronto-log-searchSkill
- cloudtrail-cost-optimizationSkill
- config-cost-optimizationSkill
- coralogix-ai-centerSkill
- coralogix-alertsSkill
- coralogix-case-analyticsSkill
- coralogix-case-managementSkill
- coralogix-casesSkill
- coralogix-dashboardsSkill
- coralogix-dataprimeSkill
- coralogix-datasetsSkill
- coralogix-data-usageSkill
- coralogix-docsSkill
- coralogix-logsSkill
- coralogix-metrics-querySkill
- coralogix-ollySkill
- coralogix-rumSkill
- coralogix-service-catalogSkill
- coralogix-single-caseSkill
- coralogix-spansSkill
- coralogix-viewsSkill
- crm-production-investigation-guidelinesSkill
- database-migration-service-expertiseSkill
- database-rds-devopsSkill
- devops-agent-cost-insightsSkill
- ecs-operation-reviewSkill
- eks-upgrade-readinessSkill
- enrich-with-aws-security-agentSkill
- eos-cost-analysisSkill
- firehose-operation-reviewSkill
- grafana-cloud-investigationSkill
- guardduty-cost-optimizationSkill
- honeycomb-create-boardSkill
- honeycomb-metrics-queriesSkill
- honeycomb-observability-fundamentalsSkill
- honeycomb-production-investigationSkill
- honeycomb-query-patternsSkill
- honeycomb-slos-and-triggersSkill
- honeycomb-verify-recent-traceSkill
- investigation-cost-guardrailSkill
- live-streaming-event-readiness-reviewSkill
- The first 60 shown.
The file
We split this skill into the rules it gives an agent
3 rules. About 0 are common, 2 are distinctive, and 1 is very specific to this project.
≈0
Common · estimate
Many files like this have a rule of this kind.
≈2
Distinctive · estimate
This author's own choices. Worth a look.
1
Very specific
Tied to their project's names, files or tools. Probably skip.
- Common
- Distinctive
- Very specific
- Distinctive: line 25
All three are read-only. This skill covers the order to call them in and the rules that span them.
- Very specific: line 149
Every valid requested resource gets a row.
- Distinctive: line 167
Do not treat them as interchangeable.
≈ “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
Infrastructure Resources Skill
Find infrastructure resources and inspect them: what exists, whether it is healthy, what its source document holds, and what changed in its configuration.
Tools
| Tool | Use it to |
describe_infrastructure | Find the resource types, then the attributes one can filter on |
list_infrastructure_resources | Find resources and their resource_id |
get_infrastructure_resource_details | Inspect named resources, one aspect per call |
All three are read-only. This skill covers the order to call them in and the rules that span them.
Workflow
Four steps, because each one gives the next the input it needs.
# 1. What is monitored? Types are per account, so never guess.
describe_infrastructure(aspect="types")
# 2. What can I filter that type on, and with which values?
describe_infrastructure(aspect="attributes", category="Hosts", resource_type="EC2_Instances")
# 3. Which resources match? This is where resource_id comes from.
list_infrastructure_resources(
category="Hosts",
resource_type="EC2_Instances",
resource_filter={"match": {"field": "Health", "values": ["Critical"]}},
)
# 4. What is going on with them?
get_infrastructure_resource_details(
resource_ids=["1001234:host_id=i-abc123"],
aspect="health_history",
)describe_infrastructure answers one aspect per call:
typeslists every category and type in the account. It takes nocategoryorresource_type.attributesneeds acategory, aresource_type, or both. Scope it to the type you are about to list: accepted values can differ by type, and a type-level call returns that type's values.
Pass categories and types exactly as types lists them.
Skip step 1 when the category and type are already known from earlier in the conversation. Skip
step 2 only when attributes already returned the attribute and its values for this type.
Filtering
A resource_filter is a tree. Every node is one of two shapes:
{"match": {"field": "<attribute>", "values": ["<value>", ...]}}
{"bool": {"op": "AND" | "OR", "operands": [<node>, ...]}}A match names one attribute. A bool holds more nodes, so the tree nests.
So OS=linux AND (Health=Critical OR Region=eu-west-1) is:
{"bool": {"op": "AND", "operands": [
{"match": {"field": "OS", "values": ["linux"]}},
{"bool": {"op": "OR", "operands": [
{"match": {"field": "Health", "values": ["Critical"]}},
{"match": {"field": "Region", "values": ["eu-west-1"]}}
]}}
]}}- Values inside one
matchare alternatives (OR)."field": "Region", "values": ["eu-west-1", "us-east-1"]matches a resource in either region. - To require two wildcard patterns on one attribute, use one
matchper pattern under anAND. A name containing bothcheckoutandprodisName=*checkout*ANDName=*prod*. Never do this with exact values:Region=eu-west-1ANDRegion=us-east-1matches nothing. CategoryandTypeare not attributes. They have their own arguments, and amatchon them is rejected.- A
*works only wheredescribe_infrastructurereportswildcard: true. - An exact value is case-sensitive, a wildcard one is not.
OS=linuxmatches andOS=Linuxdoes not, butName=*checkout*andName=*Checkout*are the same query. For free text, take the spelling from a row'scolumnsor use a wildcard. - An attribute from a category-only
attributescall may not apply to the type you then pick. Each attribute carriestypes. One that does not apply returns 0 rows, which reads the same as no matches. - 0 rows is an answer. A valid attribute that is simply unpopulated matches nothing. Do not retry or reword. A wrong attribute name or an out-of-set value is rejected outright, and the error says what is accepted.
Paging
total_count on the first call answers "how many". Do not page to count, and do not page to find
one resource. Filter for it instead.
Page only when the user needs the rows themselves, such as an inventory or "list all...". Then:
limitis 1 to 100 rows and defaults to 100.- The next window starts at
start_row + returned_count, with the samelimit, filter, category and type. - Stop when
start_row + returned_count >= total_count.
If the first call's total_count is more than 500, do not page through it. Narrow the filter,
or answer with the count and the first window and say which filter would narrow it.
The window cannot reach past row 10,000. total_count still reports the true size.
Aspects
One aspect per call. Each one takes different arguments and answers differently:
aspect | Ids per call | Time arguments | Which ids come back |
health_history | 100 | None | Every valid id |
raw_data | 5 | timestamp optional: newest version at or before it | Every id, until 30K chars |
config_summary | 100 | from_time required, to_time optional (default now) | Only resources that changed |
config_diff | 100 | from_time required, to_time optional (default now) | Every valid id, changed or not |
Passing an argument an aspect does not take is rejected.
health_historygives one sample per day, oldest first. Statuses areHealthy,CriticalandUnmonitored.raw_datagives the source document. Ask for a few resources at a time. Most documents are 2K to 10K chars of free-form payload. One past 10K chars comes back cut to a string, withtruncated: true. The whole answer stops near 30K chars: the ids left out are reported throughomitted_because: "result_size_limit", so ask for those again. Narrow withlist_infrastructure_resourcesandhealth_historyfirst, then come here for the handful you actually need to read. A wide sweep belongs on those two, not here.config_summarysays which resources changed, and how often. A resource that did not change is absent, so a short answer means the rest were unchanged. Use it to pick who to look at.config_diffsays what changed, field by field. Run it after the summary, on the resources the summary named.
Reading config_diff
Every valid requested resource gets a row. Read its outcome before its changes:
outcome | Meaning |
changed | Both versions exist and differ |
unchanged | Nothing differs, or there were no events in the window |
created | The resource first appeared inside the window, so there is nothing to compare against |
priorStateUnavailable | It changed, but the previous version is more than 14 days older than from_time. Move from_time earlier to reach it |
comparisonUnavailable | Versions exist on both sides but one will not decode |
Inside changes, a null on one side means the field was added or removed. It is a value, not a
missing one.
Key Principles
- Pass
resource_idverbatim. Ids embed:,|and=. URL encoding is handled for you. - Infra health is its own concept.
Healthy,CriticalandUnmonitoredare computed by the infrastructure domain and are not Service Catalog health. Correlate them with telemetry signals. Do not treat them as interchangeable.
Related Skills
To look up the same resource using another skill, search for its display name or its Service
value. Do not use the resource_id: it exists only in the infrastructure tools, so logs and
metrics will not match it.
- Load the
coralogix-metrics-queryskill to match health against CPU and memory for the resource.
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.

