Interpret the contents of an Omni Gateway diagnostic dump ZIP file to identify the live state of API instances, service bindings, policy configuration, and known anomalies. Use when the user has a gateway dump file and wants to understand what was deployed at the time of capture, find orphaned or missing resources, compare live state against the conf.d configuration, or diagnose a gateway failure using a support-submitted dump.
71
89%
Does it follow best practices?
Run evals on this skill
Adds up to 20 points to the overall score
Low
Low-risk findings worth noting
The dump is a ZIP archive containing a dump/ directory with flat JSON files.
Each JSON file holds an array of Kubernetes-style resources with apiVersion, kind, metadata, spec, and status fields.
dump-<timestamp>.zip
└── dump/
├── api-instances.json # Live ApiInstance resources
├── policy-bindings.json # Live PolicyBinding resources
├── services.json # Live Service resources
├── configurations.json # Gateway Configuration (includes registration)
├── extensions.json # Policy extension definitions (may be large — skip unless needed)
└── control-node-storage.json # Gateway agent ID: {"store": "<agentId>"}Note: dumps from newer gateway versions may include additional files. Index all files found.
metadata.name — resource identitymetadata.namespace — resource scope (default, gateway, or environment UUID)metadata.labels["flex.mulesoft.com/deployment-desired-status"] — on ApiInstances: STARTED or STOPPEDspec — the live deployed configurationstatus.conditions — [{type: "Ready", status: "True|False"}] indicates operational stateAn ApiInstance has:
{
"apiVersion": "gateway.mulesoft.com/v1beta1",
"kind": "ApiInstance",
"metadata": {
"name": "apii-4808971-flex-test-api",
"namespace": "676c8822-4ae3-44c2-afd8-df46ae69f202",
"labels": {
"flex.mulesoft.com/apiinstance-id": "4808971",
"flex.mulesoft.com/apiinstance-name": "flex-test-api",
"flex.mulesoft.com/deployment-desired-status": "STARTED"
}
},
"spec": {
"address": "http://0.0.0.0:8081/",
"policies": [...]
},
"status": {
"conditions": [{"type": "Ready", "status": "True"}]
}
}A PolicyBinding has:
{
"apiVersion": "gateway.mulesoft.com/v1alpha1",
"kind": "PolicyBinding",
"metadata": {"name": "internal-pe-env-api-context", "namespace": "default"},
"spec": {
"targetRef": {"kind": "Selector", "selector": {"kind": "ApiInstance"}},
"policyRef": {"name": "api-context"}
},
"status": {"conditions": [{"type": "Ready", "status": "True"}]}
}A Configuration entry (for registration):
{
"apiVersion": "gateway.mulesoft.com/v1alpha1",
"kind": "Configuration",
"metadata": {"name": "registration"},
"spec": {
"platformConnection": {
"agentId": "3710bdd7-...",
"anypoint": "https://anypoint.mulesoft.com",
"assetName": "flex1"
}
}
}Extract the dump and list all files:
unzip dump.zip -d dump-analysis/
ls -la dump-analysis/dump/For each JSON file, count the resources and record in a table:
| File | Resource Count | Notes |
|---|---|---|
| api-instances.json | ||
| policy-bindings.json | ||
| services.json | ||
| configurations.json | ||
| extensions.json | Skip unless investigating a specific policy | |
| control-node-storage.json | — | Agent ID only |
If additional files are present, note them in a "Other files" section.
Also record gateway metadata from:
control-node-storage.json → store valueconfigurations.json → resource with metadata.name: registration → spec.platformConnection.anypoint, spec.platformConnection.assetNamedump-<timestamp>.zip)Read all resources from api-instances.json, policy-bindings.json, services.json, and configurations.json. For each, produce a comprehensive table:
| Kind | Name | Namespace | Ready Status | Desired Status | Notes |
|---|
Populate columns:
status.conditions[type="Ready"].status. If absent, mark as Unknown.metadata.labels["flex.mulesoft.com/deployment-desired-status"]. For other resources, leave blank.Sort by resource kind, then by namespace, then by name for readability.
For each PolicyBinding in the inventory:
Check the spec.targetRef field:
kind: ApiInstance with name: Verify that name exactly matches an ApiInstance in api-instances.json. If no match, flag as orphaned (the policy references a non-existent API instance and will silently not apply).kind: Selector with selector.kind: ApiInstance: The policy is global and applies to all ApiInstances. This is valid; note it in the table but do not flag as an error.kind is something else or targetRef is malformed: Flag as malformed.For each orphaned or malformed PolicyBinding, record:
For each Service in services.json:
System services (namespace x-flex-internal or label managed-by: flex-static) are internal gateway resources. Do not flag as potentially unused.
User-defined services (namespace gateway, default, or an environment UUID):
spec.services or in any PolicyBinding.Record any potentially unused Services:
Scan all resources for health and consistency issues:
Critical issues (block API execution):
status.conditions[type="Ready"].status: False — extract the condition message if present.spec.address or with an invalid address format.spec.targetRef or spec.policyRef.policyRef.name (the referenced policy definition does not exist in extensions.json or is not available).Warning issues (may indicate configuration drift):
metadata.labels["flex.mulesoft.com/deployment-desired-status"]: STOPPED but status.conditions[type="Ready"].status: True (desired != actual).metadata.namespace or metadata.labels.If the user also provides their conf.d/ directory or local configuration files:
Index local files: Parse all YAML or JSON files in conf.d/ and extract resource names, kinds, and namespaces.
In dump but not in conf.d: Resource exists in the live gateway dump but not in the user's local configuration. Possible causes:
In conf.d but not in dump: Resource is configured locally but not present in the live dump. Possible causes:
Record mismatches:
Structure your findings as follows:
# Gateway Dump Analysis Report
**Dump file:** [filename]
**Captured:** [timestamp or datetime]
**Gateway agent ID:** [agentId from control-node-storage.json]
## Gateway Registration
- **Platform URL:** [from configurations.json spec.platformConnection.anypoint]
- **Asset name:** [from configurations.json spec.platformConnection.assetName]
## Resource Inventory
[Table from Step 2]
## Anomalies
### Critical Issues (Ready: False or Malformed)
[List each resource with its Ready status and condition message, or "None found"]
Example:
- **ApiInstance `apii-123-api`** (namespace `env-456`): Ready=False, condition: "Pod failed to start: OOMKilled"
- **PolicyBinding `rate-limit-binding`**: malformed targetRef, references non-existent ApiInstance `apii-999-api`
### Orphaned PolicyBindings
[List each PolicyBinding that references a non-existent ApiInstance, or "None found"]
Example:
- **PolicyBinding `deprecated-policy`** targets ApiInstance `apii-old-deployment` which does not exist in the dump
### Potentially Unused Services
[List each Service not referenced by any ApiInstance or PolicyBinding, or "None found"]
Example:
- **Service `backend-cache`** (namespace `gateway`): not referenced by any ApiInstance
### Configuration Drift (conf.d vs. dump)
[If conf.d was provided, show mismatches. Otherwise, note "No local configuration provided for comparison."]
Example:
- **In dump only:** `configurations.json` entries not in local conf.d (possible control-plane managed resources)
- **In conf.d only:** `api-instances.yaml` entries not in dump (possible file not deployed)
## Escalation Recommendation
- **No anomalies:** Gateway state appears healthy at the time of dump capture. No immediate action required.
- **Warnings present:** Configuration drift or unused resources detected. Recommend reviewing the "Potentially Unused Services" and "Configuration Drift" sections. Reconcile local conf.d with dump state.
- **Critical issues present:** Ready=False resources or orphaned bindings indicate active problems. Immediate escalation recommended. Provide this dump and the gateway logs (see `omni-gateway-logs` skill) to support.conf.d/ configuration against this dump to identify drift or missing deployments.extensions.json if investigating a specific policy definition or if policy bindings reference undefined policies. The file is often large and can be skipped for routine analysis.mulesoft/mulesoft-dx
b8cef7d
If you maintain this skill, you can claim it as your own. Once claimed, you can manage eval scenarios, bundle related skills, attach documentation or rules, and ensure cross-agent compatibility.