Repository navigation
Conversation
Adds a skill that enriches Aurora and RDS incident investigations with business impact: dependent services, cost of downtime, compliance and SLA exposure, and recent-change correlation. Evidence-based; reports gaps instead of inventing values.
Checklist complete ✅All required items are checked. This PR is ready for maintainer review. |
|
Reviewed this repo and I have no technical concerns What it does well 1/ Fills a real gap. DevOps Agent's native tools (CloudWatch, Performance Insights, RDS/Aurora logs) surface the technical root cause but this skill adds a Business Impact section covering dependent services, cost of downtime, compliance/SLA exposure, and recent-change correlation in addition to technical findings. One thing to fix before merge: Non-blocking followup needed: Design, documentation, and testing evidence are consistent. |
…ional form and SLA result Addresses SME review on aws#205: - Add a Required behavior section near the top of SKILL.md: always return the Business Impact section with all four lines, even when the resource isn't found. - When the incident can't be confirmed, return the section marked provisional with a Status line saying what would confirm it. - Add both checks to the pre-output self-check list. Also report the SLA result (breached, or minutes remaining) on the Estimated cost line and apply SLAPenaltyUsd when breached. Evals: add bizctx-suspected-no-alarm, extend bizctx-cost-from-operator-input, and replace v1 results with the latest run of each test type.
|
Thanks @darch-aws for the review. I've pushed the fix you asked for in c17b2d3:
All PR checks pass. When you have a moment, could you add your approval or confirm here that the fix looks right? Thank you! |
|
Reviewed and approved. |
There was a problem hiding this comment.
What needs to change
-
config:GetResourceConfigHistoryisn't inAIDevOpsAgentAccessPolicy.- In v15, the only AWS Config actions are
config:Describe*,config:List*,config:GetAggregateResourceConfig,config:GetStoredQueryandconfig:SelectAggregateResourceConfig. The other three actions the skill uses are covered (rds:List*,tag:GetResources,cloudtrail:LookupEvents). README.md:34-38says no extra policy is typically required. The functional run had the action only becauseevals/additional-permissions.jsongranted it. On the managed policy alone, the Config half of "Recent changes" gets AccessDenied.- Fix: add an
EnableAuroraIncidentBusinessContextparameter that grantsconfig:GetResourceConfigHistorytocloudformation/devops-agent-skill-policies/devops-agent-skill-policies.yaml. FollowEnableAwsBackupCoverageReview, which addsconfig:SelectResourceConfigthe same way, and add the parameter to that folder's README and toSkillPolicySummary. Then correctREADME.md:34-38, and tell the agent in SKILL.md to fall back to CloudTrail on AccessDenied and say Config history wasn't readable.
- In v15, the only AWS Config actions are
-
The skill lets the agent decide whether a compliance reporting clock has started.
SKILL.md:113asks "does this incident trigger a mandatory reporting clock".SKILL.md:130and:187apply a framework whenever the resource carries its tag. These clocks start when someone determines that a breach occurred, not because a tag exists. The trigger condition appears only inreferences/evidence-sources.md:24.- In the investigation run, the agent wrote "A write outage alone isn't a data breach, so no breach-notification deadline starts from it". That isn't safe to assert. Under GDPR, a loss of availability can itself be a personal data breach (EDPB Guidelines 9/2022). A leadership summary is where that sentence gets acted on.
SKILL.md:125lists SOC 2 Type II under "mandatory reporting window". SOC 2 is an attestation framework and sets no reporting window.- Fix:
- Have the line name the tagged framework and its window "if assessed as a breach, for the compliance owner to decide". The agent should never say a clock has or hasn't started.
- Move the trigger-condition column into SKILL.md, and drop SOC 2 from the table.
- Add an eval with a
Compliance-tagged cluster in an availability incident. It should assert that no deadline is stated as running or ruled out.
-
There is no working evidence for the investigation path.
INCIDENT_RCAis the skill's first agent type, andbizctx-recent-change-correlationis its only investigation eval. With the skill, the investigation summary had no business impact content at all, so assertions 3 and 4 failed. That happened even though SKILL.md says to put the section in the summary itself. The without-skill run produced no summary ("No SummaryItem found"), so there's no comparison.- The prompt tells the agent to "assume connections spiked" on a cluster that was idle. The agent correctly reported that the symptoms weren't in telemetry, so expected output failed for that reason as well.
- The functional run has one iteration.
- Fix: re-run the investigation case against a real induced fault, such as the origin demo's connection storm, with a parameter-group change shortly before it. Run 3 iterations, as CONTRIBUTING's "evaluate multiple iterations" asks. Then show that the summary carries the Business Impact section.
Nits (non-blocking)
- Your own
No raw 12-digit account IDs are exposedassertion failed with the skill inbizctx-no-evidence-taggedand passed without it. SKILL.md has no masking rule. Add one ("mask account IDs in any ARN you quote"). SKILL.md:73andreferences/evidence-sources.md:12suggestSHOW PROCESSLIST. It needs a SQL session the agent doesn't have, and it's MySQL-only. Use Performance InsightsDescribeDimensionKeysgrouped bydb.host,db.userordb.applicationinstead;pi:Describe*covers it.SKILL.md:70,README.md:35andreferences/evidence-sources.md:10writeresourcegroupstaggingapi:GetResources. The IAM action istag:GetResources, asadditional-permissions.jsonalready has it.- The
README.mdOrigin link returns 404, because the demo is still an open PR (aws-samples/sample-aws-genai-ops-demos#95). Link the PR, or hold the line until it merges. - Consider dropping the synthetic example block in
references/evidence-sources.md:44-60. It's published to agent spaces and is the only source of a plausible fake dollar figure.
Thanks
@maayushii, the chat runs show the core rule working. They invented no services, dollar figures or frameworks. The cost math was exact ($12,000, with 5 minutes of SLA left). The provisional form passed all 6 of its assertions, and the run without the skill missed the expected output. The eval journals are cleanly redacted.
What I verified:
validate_skills,validate_skill_evalsandscan_aws_identifierson a trial merge with currentmain: 0 errors, PASS, 0 findings.- The skill's four IAM actions against
AIDevOpsAgentAccessPolicyv15. - A sweep of all 31 files for account IDs, ARNs, key and role IDs, session tokens, emails, IPs and internal hostnames found nothing. ARNs are redacted and resources are
example-*. - Every functional result, plus the Business Impact lines from each journal.
I didn't run the skill in an account. Requesting changes for 1–3.
…dent-business-context
…ntext - IAM: add EnableAuroraIncidentBusinessContext to devops-agent-skill-policies (config:GetResourceConfigHistory, not in AIDevOpsAgentAccessPolicy); correct README; fall back to CloudTrail on AccessDenied. - Compliance: never state that a reporting clock has started or doesn't apply; name tagged frameworks with a conditional window for the compliance owner. Drop SOC 2. Add bizctx-compliance-availability eval. - Investigation: re-run against a real connection storm preceded by a cluster parameter group change, 3 iterations; report the business-impact lines as summary findings or gaps. - Nits: mask account IDs, Performance Insights DescribeDimensionKeys instead of SHOW PROCESSLIST, tag:GetResources, link origin demo PR, remove the synthetic example block. - Evals: latest version of each test type only.
|
Thanks @ams-thakkar for the detailed review. I've pushed fixes for all three items and the nits. 1.
2. Compliance reporting clock
3. Investigation evidence
Nits
How I tested I ran everything myself in a personal test account (us-west-2) with the skill evaluation tool from DevOpsAgentSDKCLI: For the investigation case, I set up a real fault on the demo's Aurora MySQL cluster before the run:
Where to check the evidence in this PR (all under
The journals are redacted: resource names are Final results: structure 100% (12/12), best-practices 100% in 3/3 iterations. Functional, 3 iterations: the skill loaded in all 15 with-skill runs and stayed out of the unrelated question. Every with-skill test passed all its assertions (84/84) and met its expected output in 3/3. Note, no action needed: |
Description
Adds
aurora-incident-business-context, a skill that adds a Business Impact section to Amazon Aurora and Amazon RDS incident investigations: dependent services, cost of downtime, compliance and SLA exposure, and recent-change correlation. DevOps Agent's built-in tools find the technical cause but can't say who is affected or what the outage costs. This skill tells the agent where to look (resource tags, AWS Config history, CloudTrail, operator-supplied inputs) and to state plainly when evidence is missing instead of inventing owners, dollar figures, or compliance deadlines.Type of change
Required before review
/skills, MCP servers in/mcp, custom agents in/custom-agents; skills and MCP servers are never mixed in one directory.Owner: @maayushii
Testing
structurechecks pass.best-practicesrun across multiple iterations, with consistent results.functionalrun with and without the change, so the difference in the agent's behavior is visible.evals/evals.jsonincludes positive cases (should trigger) and at least one negative case (should not trigger on unrelated input).Results: structure 12/12 (100%). Best-practices 3/3 iterations at 100%, 100% consistency. Functional: the skill triggered on all three positive cases and did not trigger on the unrelated load-balancer question. With the skill, the agent returned a Business Impact section with explicit gap statements; on the investigation case it cross-checked the cluster's
DependentServicesandRevenuePerMinutetags against network evidence and labeled them unverified. Without the skill, two of the three positive cases ended in a clarifying question with no impact assessment.Also tested manually in a DevOps Agent space against a live Aurora MySQL cluster tagged with sample business-context tags.
Local checks:
validate_skills.py(0 errors),validate_skill_evals.py(PASS),scan_aws_identifiers.py(0 findings).Skills — complete if this PR adds or changes a skill
SKILL.mdfrontmatter is valid:namematches the directory,descriptionpresent and within length limits, body at most 500 lines.descriptionis written from the agent's point of view — scenarios, services, error types, symptoms.metadata.aws-devops-agent-skills.agent-types(INCIDENT_RCA,INCIDENT_TRIAGE,INCIDENT_MITIGATION, …), not leftGENERICwithout reason.references/orassets/and loads on demand.Security and safety
License confirmation