Skip to content

Commit 29eec50

Browse files
cliffhallclaude
andcommitted
docs: state the private fork's exact lowercase name
GitHub names an advisory's temporary private fork servers-ghsa-xxxx-yyyy-zzzz, all lowercase; `servers-<ghsa-id>` invited substituting the uppercase GHSA id. Give the exact form and point at `.private_fork.full_name`. Refs #4870 Signed-off-by: cliffhall <[email protected]> Co-Authored-By: Claude Opus 5.5 (1M context) <[email protected]>
1 parent 6033582 commit 29eec50

2 files changed

Lines changed: 5 additions & 4 deletions

File tree

‎.claude/skills/security-advisory/SKILL.md‎

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -217,7 +217,8 @@ reporter is manual, and the thread cannot be read back with `gh`.
217217
### 4. The private fork
218218

219219
An accepted advisory is fixed in a **private fork** GitHub creates for it: a
220-
private repository named `servers-<ghsa-id>` in the org.
220+
private repository named `servers-ghsa-xxxx-yyyy-zzzz` (the id in lowercase) in
221+
the org; read the exact name from `.private_fork.full_name`.
221222

222223
⚠️ **Read `private_fork` FIRST. The POST is not a probe; it CREATES one.**
223224
Calling it to "check whether a fork exists" makes one, which then needs
@@ -324,7 +325,7 @@ issues and two cards.
324325
| States | `triage` → `draft` (accepted) → `published`; or `closed` |
325326
| Accepted? | `submission.accepted` on the advisory object, alongside `state` |
326327
| Listing | `GET repos/{owner}/{repo}/security-advisories`, 30 per page, so always `--paginate` |
327-
| Private fork | `POST …/security-advisories/{ghsa_id}/forks` → `202`, a private repo `servers-<ghsa-id>` in the org |
328+
| Private fork | `POST …/security-advisories/{ghsa_id}/forks` → `202`, a private repo `servers-ghsa-xxxx-yyyy-zzzz` (lowercase) in the org; exact name in `.private_fork.full_name` |
328329
| Fork idempotency | Read `.private_fork` first; the POST creates, it does not probe |
329330
| Fork deletion | Needs the `delete_repo` OAuth scope, which a default `gh` token lacks |
330331
| Comments | **No API at all**, REST or GraphQL; UI-only |

‎AGENTS.md‎

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -170,8 +170,8 @@ holds for a maintainer's own one-line fix as much as for a feature.
170170
change that replaces them with issue-filing sweeps lands and removes this
171171
exception.
172172
- **Exception: a security advisory's fix, in its private fork.** A PR in the
173-
advisory's temporary private fork (`servers-<ghsa-id>`) links no public
174-
issue, carries no labels, and is tracked by the advisory's `[GHSA-…]` draft
173+
advisory's temporary private fork (`servers-ghsa-xxxx-yyyy-zzzz`) links no
174+
public issue, carries no labels, and is tracked by the advisory's `[GHSA-…]` draft
175175
card rather than an issue's card, because each of those would disclose the
176176
vulnerability before a fix ships. For the same reason the work-start rules
177177
on assigning an issue and naming the branch `v2/<type>/<ISSUE_NUMBER>-<slug>`

0 commit comments

Comments
 (0)