dev-purge-gh-cache
Wipe GitHub Actions caches across all of an owner's repos in one shot. GH Actions
caches are per-repo, so "purge for an account" means iterating every repo under
that owner. scripts/purge-gh-cache.sh does the whole survey → delete → verify
fan-out; this skill just drives it.
Usage
Run the bundled script with the owner name(s) the user gave. Pass the absolute path so the script can re-invoke itself for parallel workers:
bash $HOME/.claude/skills/dev-purge-gh-cache/scripts/purge-gh-cache.sh <owner1> [owner2 ...]
Survey first without deleting anything: add
--survey-only(or-n).Owners can be users or orgs; pass several to do them in one run.
The script reports the scope (caches found, MB) before deleting, deletes via
gh cache delete --all, then re-checks and prints✅ ALL CLEARor the repos that still have caches.
If the user only named one owner, just run it for that one. If they asked to
"see what's there" rather than purge, use --survey-only.
Requirements
ghauthenticated withrepo+workflowscopes (the script preflights auth).jqavailable.
Two gotchas baked into the script (don't re-learn them)
Verify with
gh cache list, never theactions/cache/usageAPI. Thatusage endpoint is GitHub's billing figure and is recomputed on a delay — it keeps reporting the old size/count for up to ~24h after caches are deleted, which falsely looks like the purge failed. The script verifies with the real-time
gh cache listinstead.No
export -ffor xargs parallelism. When the parent shell is zsh,exported bash functions don't survive into
xargs ... bash -csubshells ("command not found"). The script parallelizes by re-invoking itself with an internal__count/__deletesubcommand instead.
Notes
gh cache delete --allexits non-zero with "No caches to delete" on anempty repo — that's expected and the script ignores it.
After a successful purge, the GitHub Storage usage figure in the UI/billing
may still show the old size for up to ~24h; the caches themselves are gone (confirmed by the live verification step).