Security Advisory Compatibility Enforcer
Use this skill to translate a GitHub repository security advisory into the
smallest safe update to .github/aw/compat.json.
Required inputs
Record the repository, GHSA identifier, requested enforcement policy, and any
patched version supplied by the user. Treat a user-supplied version as a target
to verify, not as evidence for advisory details.
Evidence retrieval
- Attempt authenticated retrieval first:
gh api repos/OWNER/REPO/security-advisories/GHSA-ID.
- If authentication is unavailable or access fails, try the public global
advisory endpoint:
gh api advisories/GHSA-ID (or its equivalent REST URL).
- Record the endpoint and outcome of each attempt. If both sources are
inaccessible, state that explicitly. Never infer or invent the affected
package, vulnerable range, severity, CVE, publication state, or patched
version.
- Verify the proposed patched version independently. Prefer a published
repository release or tag, then package-registry metadata when applicable.
Cite the exact URL or command result. Do not update compatibility policy if
the target cannot be verified, unless the user explicitly directs use of a
supplied target despite inaccessible advisory metadata; document that
limitation without converting it into fabricated advisory evidence.
Choose the correct policy field
minimumVersion is a hard floor: activation fails for every compiler version
below it. Change it only when the requested remediation is a universal
minimum-version enforcement.
blockedVersions rejects listed versions exactly. Change it only when
evidence or explicit instructions identify exact versions to deny and a
continuous minimum floor would be inaccurate.
minRecommendedVersion only warns below the value. Change it only for an
explicitly requested recommendation, never as a substitute for enforcement.
- Agent rows under
agent-compat-v1 select compatible agent versions; they are
unrelated to compiler security enforcement unless separate evidence requires
an agent compatibility change.
Write remediation guidance
Provide concise, actionable remediation in .github/aw/compat.md and the final
report. Follow established security-advisory terminology:
- Identify the affected product or component, GHSA identifier, CVE identifier
when assigned, affected versions, and first fixed or unaffected version.
Use exact bounded ranges and do not broaden the advisory's claims.
- State the permanent remediation in imperative language. Give exact,
copyable upgrade and regeneration commands verified against official
documentation. For compiler advisories, explain whether existing generated
workflows must be recompiled and redeployed; blocking a vulnerable version
prevents execution but does not repair generated artifacts.
- Separate remediation from mitigations and workarounds. Include a temporary
measure only when the advisory documents it. If the retrieved advisory does
not identify one, say so without claiming that no workaround exists.
- Include a verification step that checks the installed version and any
regenerated artifacts. Do not treat a successful install alone as proof that
deployed workflows were remediated.
- Link the advisory, fixed release, and authoritative upgrade documentation.
Mention severity, CVSS, known exploitation, CISA KEV status, deadlines, or
urgency only when verified from authoritative evidence.
Do not invent commands, CVE identifiers, affected configurations, mitigations,
or timelines. If remediation details cannot be verified, identify the missing
evidence and leave the instructions explicitly incomplete.
Safe edit procedure
- Parse the current JSON and record all four policy areas above.
- Compare semantic versions numerically. A minimum is monotonic: never lower a
non-empty
minimumVersion or minRecommendedVersion. Stop and report a
requested downgrade rather than applying it.
- Make the narrowest evidence-backed edit. Preserve
blockedVersions,
minRecommendedVersion, every agent-compat-v1 row, key ordering, and
formatting unless the selected policy specifically requires changing them.
- When changing
blockedVersions, update .github/aw/compat.md in the same
change. Account for every blocked version, state why each version or
contiguous range is blocked, link to the corresponding advisory, and provide
the remediation and verification steps defined above.
- Review the final diff and reject unrelated changes.
Required validation
Before reporting completion:
- Run the repository's
Validate compat.json structure and version formats
task from .github/workflows/cgo.yml.
- Validate
.github/aw/compat.json against
.github/aw/compat.schema.json with a JSON Schema Draft 7 validator. JSON
parsing or ad hoc field checks are not substitutes for schema validation.
- Confirm
.github/aw/compat.md accounts for every blockedVersions entry
and that each documented range links to its advisory.
- Exercise the runtime policy semantics with versions immediately below, at,
and above the changed boundary; confirm only the intended hard-fail, warning,
or exact-block behavior changed.
- Confirm semantic-version monotonicity and byte-for-byte preservation of
unrelated policy fields and agent rows.
Do not claim validation that was not run. If repository constraints prohibit a
required check, report it as outstanding.
Report
Cite advisory retrieval attempts and patched-version verification. State which
field changed, old and new values, why that policy is correct, which fields were
preserved, and the compatibility task, schema, documentation, and runtime
validation results. Include the remediation, any advisory-supported temporary
mitigation, and verification steps. Clearly separate verified facts,
user-provided inputs, and unavailable advisory details.
1---2name: security-advisory-compat-enforcer3description: Review a GitHub security advisory and safely update .github/aw/compat.json with evidence-backed version enforcement.4---5
6# Security Advisory Compatibility Enforcer
7
8Use this skill to translate a GitHub repository security advisory into the
9smallest safe update to `.github/aw/compat.json`.
10
11## Required inputs
12
13Record the repository, GHSA identifier, requested enforcement policy, and any
14patched version supplied by the user. Treat a user-supplied version as a target
15to verify, not as evidence for advisory details.
16
17## Evidence retrieval
18
191. Attempt authenticated retrieval first:
20 `gh api repos/OWNER/REPO/security-advisories/GHSA-ID`.
212. If authentication is unavailable or access fails, try the public global
22 advisory endpoint: `gh api advisories/GHSA-ID` (or its equivalent REST URL).
233. Record the endpoint and outcome of each attempt. If both sources are
24 inaccessible, state that explicitly. Never infer or invent the affected
25 package, vulnerable range, severity, CVE, publication state, or patched
26 version.
274. Verify the proposed patched version independently. Prefer a published
28 repository release or tag, then package-registry metadata when applicable.
29 Cite the exact URL or command result. Do not update compatibility policy if
30 the target cannot be verified, unless the user explicitly directs use of a
31 supplied target despite inaccessible advisory metadata; document that
32 limitation without converting it into fabricated advisory evidence.
33
34## Choose the correct policy field
35
36- `minimumVersion` is a hard floor: activation fails for every compiler version
37 below it. Change it only when the requested remediation is a universal
38 minimum-version enforcement.
39- `blockedVersions` rejects listed versions exactly. Change it only when
40 evidence or explicit instructions identify exact versions to deny and a
41 continuous minimum floor would be inaccurate.
42- `minRecommendedVersion` only warns below the value. Change it only for an
43 explicitly requested recommendation, never as a substitute for enforcement.
44- Agent rows under `agent-compat-v1` select compatible agent versions; they are
45 unrelated to compiler security enforcement unless separate evidence requires
46 an agent compatibility change.
47
48## Write remediation guidance
49
50Provide concise, actionable remediation in `.github/aw/compat.md` and the final
51report. Follow established security-advisory terminology:
52
531. Identify the affected product or component, GHSA identifier, CVE identifier
54 when assigned, affected versions, and first fixed or unaffected version.
55 Use exact bounded ranges and do not broaden the advisory's claims.
562. State the permanent remediation in imperative language. Give exact,
57 copyable upgrade and regeneration commands verified against official
58 documentation. For compiler advisories, explain whether existing generated
59 workflows must be recompiled and redeployed; blocking a vulnerable version
60 prevents execution but does not repair generated artifacts.
613. Separate remediation from mitigations and workarounds. Include a temporary
62 measure only when the advisory documents it. If the retrieved advisory does
63 not identify one, say so without claiming that no workaround exists.
644. Include a verification step that checks the installed version and any
65 regenerated artifacts. Do not treat a successful install alone as proof that
66 deployed workflows were remediated.
675. Link the advisory, fixed release, and authoritative upgrade documentation.
68 Mention severity, CVSS, known exploitation, CISA KEV status, deadlines, or
69 urgency only when verified from authoritative evidence.
70
71Do not invent commands, CVE identifiers, affected configurations, mitigations,
72or timelines. If remediation details cannot be verified, identify the missing
73evidence and leave the instructions explicitly incomplete.
74
75## Safe edit procedure
76
771. Parse the current JSON and record all four policy areas above.
782. Compare semantic versions numerically. A minimum is monotonic: never lower a
79 non-empty `minimumVersion` or `minRecommendedVersion`. Stop and report a
80 requested downgrade rather than applying it.
813. Make the narrowest evidence-backed edit. Preserve `blockedVersions`,
82 `minRecommendedVersion`, every `agent-compat-v1` row, key ordering, and
83 formatting unless the selected policy specifically requires changing them.
844. When changing `blockedVersions`, update `.github/aw/compat.md` in the same
85 change. Account for every blocked version, state why each version or
86 contiguous range is blocked, link to the corresponding advisory, and provide
87 the remediation and verification steps defined above.
885. Review the final diff and reject unrelated changes.
89
90## Required validation
91
92Before reporting completion:
93
941. Run the repository's `Validate compat.json structure and version formats`
95 task from `.github/workflows/cgo.yml`.
962. Validate `.github/aw/compat.json` against
97 `.github/aw/compat.schema.json` with a JSON Schema Draft 7 validator. JSON
98 parsing or ad hoc field checks are not substitutes for schema validation.
993. Confirm `.github/aw/compat.md` accounts for every `blockedVersions` entry
100 and that each documented range links to its advisory.
1014. Exercise the runtime policy semantics with versions immediately below, at,
102 and above the changed boundary; confirm only the intended hard-fail, warning,
103 or exact-block behavior changed.
1045. Confirm semantic-version monotonicity and byte-for-byte preservation of
105 unrelated policy fields and agent rows.
106
107Do not claim validation that was not run. If repository constraints prohibit a
108required check, report it as outstanding.
109
110## Report
111
112Cite advisory retrieval attempts and patched-version verification. State which
113field changed, old and new values, why that policy is correct, which fields were
114preserved, and the compatibility task, schema, documentation, and runtime
115validation results. Include the remediation, any advisory-supported temporary
116mitigation, and verification steps. Clearly separate verified facts,
117user-provided inputs, and unavailable advisory details.