AWS Troubleshooting
One skill for all AWS services. Reasoning framework is here; service-specific
facts come from MCP at runtime.
When to use
Any AWS issue where the console alone is insufficient — status checks, logs,
connectivity, performance, permissions, deployments, state transitions.
Investigation workflow
Step 0 — ASK FIRST (before any diagnosis)
MUST:
- Check if critical context is missing before querying or diagnosing:
- Network issues → need VPC topology, subnet type, NAT/endpoint config
- Container/task failures → need exit code, error message, logs
- Connection timeouts → need source, destination, protocol, port
- Performance issues → need instance type, workload pattern, timeline
- If missing, ASK the user. A wrong diagnosis from assumptions wastes more
time than a clarifying question.
Step 1 — Identify and collect
Determine the affected service and resource, then collect initial evidence.
MUST:
- Identify the service, resource ID, and region
- Run the service's
describe-* / get-* APIs to capture current state
- Check for status checks, health checks, or equivalent (service-dependent)
- Check CloudWatch metrics for anomalies in the relevant namespace
- Read
references/stable-guardrails.md to avoid known misdiagnosis traps
SHOULD:
- Check CloudTrail for recent API calls that may have caused the issue
- Check AWS Health Dashboard for service-level events
- Collect logs (CloudWatch Logs, system logs, console output) if available
Step 2 — Query real-time documentation
MUST:
- Use
aws-knowledge MCP search_documentation to find current troubleshooting
guidance for the specific symptom. See references/mcp-query-patterns.md
- If the search returns an SOP (
sop_name field), retrieve it with
retrieve_agent_sop for step-by-step instructions
- For ANY specific number (IOPS, limits, quotas, timeouts, cooldowns):
query MCP — NEVER rely on memorized values
SHOULD:
- Cross-reference re:Post Knowledge Center articles for the error message
- Check if the service has SSM Automation runbooks (
AWSSupport-Troubleshoot*)
that can automate diagnosis
MAY:
- Use
aws-knowledge recommend tool on a relevant doc page to discover
related troubleshooting content
Step 3 — Diagnose
MUST:
- Read
references/hallucination-patterns.yaml before concluding
- State the root cause with specific evidence (API response, metric value, log excerpt)
- Classify severity: CRITICAL (service down) / HIGH (degraded) / MEDIUM (suboptimal)
SHOULD:
- Check blast radius — is only one resource affected, or is it AZ/region-wide?
- Distinguish between AWS-side issues (status checks, service events) and
customer-side issues (config, permissions, application)
Step 4 — Remediate and report
MUST:
- Propose immediate mitigation with specific CLI commands
- Propose long-term prevention (alarms, auto-recovery, architecture changes)
- Output structured YAML report (see Output Format below)
SHOULD:
- Verify the fix worked (re-check status/metrics after remediation)
Output format
service: "<aws-service>"
resource: "<resource-id>"
region: "<region>"
root_cause: "<category> — <detail>"
evidence:
- type: <api_response|metric|log|event>
content: "<specific finding>"
severity: CRITICAL | HIGH | MEDIUM
blast_radius: "<single resource | AZ | region | account>"
mitigation:
immediate: "<action with CLI command>"
long_term: "<prevention strategy>"
sources:
- "<MCP doc URL or SSM runbook name used>"
Anti-hallucination rules
- NEVER state service-specific numbers (IOPS, limits, quotas, defaults) from
memory. Always query MCP first.
- Always cite evidence: API response, metric, log excerpt, or MCP doc URL.
- Read
references/hallucination-patterns.yaml — these are patterns where
LLMs consistently get AWS behavior wrong.
- Read
references/stable-guardrails.md — these are architectural facts that
are safe to assert without querying.
- Spend no more than 2 minutes on any single hypothesis. Pivot if inconclusive.
- If MCP returns no relevant results, say so explicitly. Do not fabricate guidance.
References
| File |
Purpose |
references/stable-guardrails.md |
Architectural facts that don't change — safe to assert |
references/hallucination-patterns.yaml |
Cross-service LLM mistake patterns |
references/mcp-query-patterns.md |
How to query aws-knowledge MCP effectively |
references/investigation-framework.md |
Detailed Phase 1/2/3 methodology for complex cases |
1---2name: aws-troubleshooting3description: Universal AWS troubleshooting framework. Activate when: any AWS resource is unhealthy, unreachable, or degraded; status checks fail; deployments fail; connectivity issues; performance degradation; unexpected errors or state transitions; the user says something is wrong with an AWS service. Works across ALL AWS services — EC2, ECS, EKS, RDS, Lambda, S3, VPC, IAM, etc. Does NOT embed service-specific facts; queries aws-knowledge MCP for real-time documentation and SOPs.4---56# AWS Troubleshooting78One skill for all AWS services. Reasoning framework is here; service-specific9facts come from MCP at runtime.1011## When to use1213Any AWS issue where the console alone is insufficient — status checks, logs,14connectivity, performance, permissions, deployments, state transitions.1516## Investigation workflow1718### Step 0 — ASK FIRST (before any diagnosis)1920MUST:21- Check if critical context is missing before querying or diagnosing:22 - Network issues → need VPC topology, subnet type, NAT/endpoint config23 - Container/task failures → need exit code, error message, logs24 - Connection timeouts → need source, destination, protocol, port25 - Performance issues → need instance type, workload pattern, timeline26- If missing, ASK the user. A wrong diagnosis from assumptions wastes more27 time than a clarifying question.2829### Step 1 — Identify and collect3031Determine the affected service and resource, then collect initial evidence.3233MUST:34- Identify the service, resource ID, and region35- Run the service's `describe-*` / `get-*` APIs to capture current state36- Check for status checks, health checks, or equivalent (service-dependent)37- Check CloudWatch metrics for anomalies in the relevant namespace38- Read `references/stable-guardrails.md` to avoid known misdiagnosis traps3940SHOULD:41- Check CloudTrail for recent API calls that may have caused the issue42- Check AWS Health Dashboard for service-level events43- Collect logs (CloudWatch Logs, system logs, console output) if available4445### Step 2 — Query real-time documentation4647MUST:48- Use `aws-knowledge` MCP `search_documentation` to find current troubleshooting49 guidance for the specific symptom. See `references/mcp-query-patterns.md`50- If the search returns an SOP (`sop_name` field), retrieve it with51 `retrieve_agent_sop` for step-by-step instructions52- For ANY specific number (IOPS, limits, quotas, timeouts, cooldowns):53 query MCP — NEVER rely on memorized values5455SHOULD:56- Cross-reference re:Post Knowledge Center articles for the error message57- Check if the service has SSM Automation runbooks (`AWSSupport-Troubleshoot*`)58 that can automate diagnosis5960MAY:61- Use `aws-knowledge` `recommend` tool on a relevant doc page to discover62 related troubleshooting content6364### Step 3 — Diagnose6566MUST:67- Read `references/hallucination-patterns.yaml` before concluding68- State the root cause with specific evidence (API response, metric value, log excerpt)69- Classify severity: CRITICAL (service down) / HIGH (degraded) / MEDIUM (suboptimal)7071SHOULD:72- Check blast radius — is only one resource affected, or is it AZ/region-wide?73- Distinguish between AWS-side issues (status checks, service events) and74 customer-side issues (config, permissions, application)7576### Step 4 — Remediate and report7778MUST:79- Propose immediate mitigation with specific CLI commands80- Propose long-term prevention (alarms, auto-recovery, architecture changes)81- Output structured YAML report (see Output Format below)8283SHOULD:84- Verify the fix worked (re-check status/metrics after remediation)8586## Output format8788```yaml89service: "<aws-service>"90resource: "<resource-id>"91region: "<region>"92root_cause: "<category> — <detail>"93evidence:94 - type: <api_response|metric|log|event>95 content: "<specific finding>"96severity: CRITICAL | HIGH | MEDIUM97blast_radius: "<single resource | AZ | region | account>"98mitigation:99 immediate: "<action with CLI command>"100 long_term: "<prevention strategy>"101sources:102 - "<MCP doc URL or SSM runbook name used>"103```104105## Anti-hallucination rules1061071. NEVER state service-specific numbers (IOPS, limits, quotas, defaults) from108 memory. Always query MCP first.1092. Always cite evidence: API response, metric, log excerpt, or MCP doc URL.1103. Read `references/hallucination-patterns.yaml` — these are patterns where111 LLMs consistently get AWS behavior wrong.1124. Read `references/stable-guardrails.md` — these are architectural facts that113 are safe to assert without querying.1145. Spend no more than 2 minutes on any single hypothesis. Pivot if inconclusive.1156. If MCP returns no relevant results, say so explicitly. Do not fabricate guidance.116117## References118119| File | Purpose |120|------|---------|121| `references/stable-guardrails.md` | Architectural facts that don't change — safe to assert |122| `references/hallucination-patterns.yaml` | Cross-service LLM mistake patterns |123| `references/mcp-query-patterns.md` | How to query aws-knowledge MCP effectively |124| `references/investigation-framework.md` | Detailed Phase 1/2/3 methodology for complex cases |