security-alert-triage
USE FOR: investigating GitHub security alerts — code scanning, Dependabot, secret scanning and advisories — and deciding what to fix now, schedule, dismiss, or escalate. NOT FOR: summarising overall repository health, or reviewing feedback on a pull request.
- License 许可
- MIT
- 最近更新
- 2026-11-14
- Stars
- ★ 3.4w
- Forks
- 5.3k
01 前言 Front Matter
- name
- security-alert-triage
- description
- USE FOR: investigating GitHub security alerts — code scanning, Dependabot, secret scanning and advisories — and deciding what to fix now, schedule, dismiss, or escalate. NOT FOR: summarising overall repository health, or reviewing feedback on a pull request.
02 资源文件 1
- 参考文档references/alert-sources.md3.1 KB
03 SKILL.md 正文
Triaging security alerts
Turn four separate alert streams into one ordered list of decisions, each backed by evidence a maintainer can check.
This server reads alerts; it does not resolve them. No tool here dismisses an alert, merges a fix, or revokes a credential. The output is a recommendation with evidence.
Sequence
- Inventory every source that answers.
list_code_scanning_alerts,list_dependabot_alertsandlist_secret_scanning_alertswithstate: open. Enumeratelist_repository_security_advisoriesseparately: omitstatefor all advisories, or usetriage,draft,publishedorclosed. Record which sources answered and which did not — the difference matters, see the failure cases. When the question spans an organisation rather than one repository,list_org_repository_security_advisorieswithorggives the same advisory picture across every repository in it, and is the right starting point before fanning out. - Handle secret scanning first, ahead of any ordering by severity. A live credential is the only alert type where delay keeps causing harm.
- Order the rest by exploitability, not by count.
severitynarrows the field; whether the code is reachable decides it. - Read the individual alert for anything you intend to recommend on:
get_code_scanning_alert,get_dependabot_alertorget_secret_scanning_alertwith the alert number. List responses are deliberately thin. - Ground it in the code. For a code scanning alert, read the flagged location
with
get_file_contents. For a dependency alert,search_codefor the vulnerable symbol to find out whether the project reaches the affected path at all. - Look up the advisory behind a dependency alert with
list_global_security_advisoriesorget_global_security_advisoryby GHSA or CVE id. The advisory carries the patched versions and the real-world conditions. - Recommend, using the decision points below, naming the evidence each recommendation rests on.
references/alert-sources.md maps each source to its tools, its identifying fields,
and what resolution means there.
Secret scanning comes first
An open secret scanning alert on a real credential means something is exposed right now. The order is always: revoke, then rotate, then remove from history, then close the alert. Revocation happens outside this server, so escalate to a person immediately and name the credential type and where it appeared. Never recommend dismissing a secret alert as a false positive without someone who can check the credential confirming it — a wrongly dismissed live key stays live.
Decision points
- Fix now — reachable, exploitable, and a fix exists. For a dependency that means
first_patched_versionis populated. Name the version to move to. - Schedule — real, but not reachable in this project, or the fix needs a major upgrade. Give the reasoning and the trigger that would promote it.
- Recommend dismissal — genuinely not applicable: test-only code, a pattern the rule misreads, an unused path. State the rule, why it does not apply, and which dismissal reason fits. A person makes the call.
- Escalate — live credentials, anything already exploited, or anything you cannot assess with the data available. Escalating is a valid outcome, not a failure.
Severity is an input, not the answer. A critical alert in code that never runs outranks nothing; a moderate one on a public entry point may outrank everything.
Fields that matter
stateon alerts —openmeans outstanding. Advisory states are separate:triage,draft,published,closed; publication does not mean a fix is shipped.rule.idandrule.security_severity_levelon a code scanning alert — the id lets you compare like with like across repositories.most_recent_instance.location— the file and line to actually read.dependency.packagewithsecurity_vulnerability.first_patched_version— the two fields a dependency recommendation is built from.secret_type— identifies what kind of credential leaked, which decides how it is revoked and who owns the revocation.resolutionon a closed secret alert —revokedis the only value that means the credential is dead.
Confirm before anything is acted on
Every action this workflow leads to happens elsewhere: dismissing, upgrading, revoking. Present the ordered recommendations with their evidence and get explicit agreement before anyone acts. Never describe an alert as resolved on the strength of a recommendation.
Empty and failure cases
- An empty list and a disabled feature look alike. An empty result means no open alerts. An error mentioning permissions, or a feature not being enabled, means the source was not checked. Report those separately, and never fold an unchecked source into a clean result.
- A source is unavailable — name it as not assessed and continue with the rest.
- No open alerts anywhere — say which sources were checked and that all were clean. The list of sources is the useful part of that answer.
- An advisory lookup fails — recommend on the alert data alone and say the advisory could not be read.
04 同仓库更多 Skills
workflow-failure-triage
USE FOR: diagnosing a failing GitHub Actions workflow run — a build gone red, which jobs failed, what their logs say, where the failing step is, and whether a rerun is justified. NOT FOR: judging long-term reliability trends across a repository, or deciding whether a change is ready to ship.
repository-health-review
USE FOR: judging how well a repository is maintained overall — release cadence, branch and proposal age, issue inflow, build reliability, how many people can maintain it, and outstanding alert counts. NOT FOR: acting on any individual issue, alert or proposed change, or cutting a specific release.
repository-discovery
USE FOR: finding a library, tool or organisation you cannot yet name, judging whether a candidate project is worth depending on, and keeping a starred shortlist useful. NOT FOR: searching inside a repository you have already chosen, or setting one up.
repository-content-changes
USE FOR: changing what a repository holds or whether it exists at all — opening a working branch, committing files remotely, deleting what should go, and creating, forking or removing the repository itself. NOT FOR: proposing those changes for review, or reading code you do not intend to touch.
release-preparation
USE FOR: cutting a release of a repository — picking the version, assembling the changelog since the last tag, confirming the branch is releasable, and drafting release notes. NOT FOR: assessing overall repository health, triaging security alerts, or working an issue backlog.
pull-request-review-feedback
USE FOR: working through review feedback left on a pull request — reading each unresolved thread, deciding what to change, replying to the reviewer, and resolving threads. NOT FOR: producing a review of a pull request, merging one, or clearing a notification inbox.