Best for
- You have commit SHAs and need actual code content
- Investigating commits that were force-pushed over ("deleted")
- Need commit diffs, patches, or full file contents
gadievron/raptor/.claude/skills/oss-forensics/github-commit-recovery/SKILL.md
Recover deleted commits from GitHub using REST API, web interface, and git fetch. Use when you have commit SHAs and need to retrieve actual commit content, diffs, or patches. Includes techniques for accessing "deleted" commits that remain on GitHub servers.
Decision brief
Purpose: Access commit content, diffs, and metadata directly from GitHub when you have commit SHAs. Includes methods for retrieving "deleted" commits that remain accessible on GitHub servers.
Compatibility matrix
| Platform | Status | Evidence | What to check |
|---|---|---|---|
| Codex | Not declared | No explicit evidence | Portability before use |
| Claude Code | Not declared | No explicit evidence | Portability before use |
| Cursor | Not declared | No explicit evidence | Portability before use |
| Gemini CLI | Not declared | No explicit evidence | Portability before use |
Installation
The source command is displayed only when detected. A safe inspection prompt is always available so your agent can explain every action before execution.
npx skills add https://github.com/gadievron/raptor --skill ".claude/skills/oss-forensics/github-commit-recovery"Inspect the Agent Skill "github-commit-recovery" from https://github.com/gadievron/raptor/blob/e63c1b0ae449516f50ab510226ceb09a0edb3895/.claude/skills/oss-forensics/github-commit-recovery/SKILL.md at commit e63c1b0ae449516f50ab510226ceb09a0edb3895. List every install step, command, network request, credential, file read/write, external action, and rollback step. Explain whether it fits my task. Do not install or execute anything until I approve.
Workflow
Access a "deleted" commit via web browser:
SHA Sources: GitHub Archive, git reflog, CI/CD logs, PR comments, issue references, external archives, security reports.
Deleted Commits Are Never Really Deleted: - When developers force push to "delete" commits, GitHub keeps them indefinitely - Any commit SHA remains accessible if you know the hash - GitHub displays a warning ("This commit does not belong to any branch") but serves the content -…
GitHub serves "deleted" commits at predictable URLs. These commits show a warning banner but content remains fully accessible.
GitHub serves "deleted" commits at predictable URLs. These commits show a warning banner but content remains fully accessible.
Permission review
The documentation includes network, browsing, or remote request actions.
https://github.com/org/repo/commit/FULL_COMMIT_SHAThe documentation asks the agent to create, modify, or delete local files.
*Get commit as patch file**:The documentation includes network, browsing, or remote request actions.
curl -L https://github.com/org/repo/commit/FULL_COMMIT_SHA.patchThe documentation asks the agent to run terminal commands or scripts.
git clone --filter=blob:none --no-checkout https://github.com/org/repo.gitThe documentation asks the agent to run terminal commands or scripts.
git fetch origin <COMMIT_SHA>The documentation asks the agent to create, modify, or delete local files.
patch = download_commit_patch(commit["repo"], commit["sha"])Evidence record
| Signal | Value | Evidence type | Meaning |
|---|---|---|---|
| Quality score | 81/100 | Computed | Documentation, specificity, maintenance, and trust rules |
| Repository stars | 3,413 | Source | Repository attention, not individual Skill quality |
| Compatibility | 0 platforms | Source | Declared in the catalog source record |
| Usage guide | automated source guide | Editorial | Generated or reviewed according to the visible evidence level |
Pinned source
Purpose: Access commit content, diffs, and metadata directly from GitHub when you have commit SHAs. Includes methods for retrieving "deleted" commits that remain accessible on GitHub servers.
SHA Sources: GitHub Archive, git reflog, CI/CD logs, PR comments, issue references, external archives, security reports.
Deleted Commits Are Never Really Deleted:
Rate Limits Matter:
Access a "deleted" commit via web browser:
https://github.com/org/repo/commit/FULL_COMMIT_SHA
Get commit as patch file:
curl -L https://github.com/org/repo/commit/FULL_COMMIT_SHA.patch
Query via REST API:
curl -H "Authorization: Bearer $GITHUB_TOKEN" \
https://api.github.com/repos/org/repo/commits/FULL_COMMIT_SHA
GitHub serves "deleted" commits at predictable URLs. These commits show a warning banner but content remains fully accessible.
Commit View:
https://github.com/<ORG>/<REPO>/commit/<SHA>
Patch Format (raw diff with headers):
https://github.com/<ORG>/<REPO>/commit/<SHA>.patch
Diff Format (unified diff only):
https://github.com/<ORG>/<REPO>/commit/<SHA>.diff
Example:
# View commit that was force-pushed over
curl -L https://github.com/grapefruit623/gcloud-python/commit/e9c3d31212847723aec86ef96aba0a77f9387493
# Download as patch
curl -L -o leaked_commit.patch \
https://github.com/grapefruit623/gcloud-python/commit/e9c3d31212847723aec86ef96aba0a77f9387493.patch
Short SHA Access: GitHub allows accessing commits with just 4+ hex characters (if unique):
https://github.com/org/repo/commit/e9c3
The GitHub REST API provides structured commit data including file changes, author info, and commit message.
Endpoint:
GET https://api.github.com/repos/{owner}/{repo}/commits/{ref}
Example Request:
curl -H "Accept: application/vnd.github+json" \
-H "Authorization: Bearer $GITHUB_TOKEN" \
https://api.github.com/repos/org/repo/commits/abc123def456
Response Structure:
{
"sha": "abc123def456...",
"commit": {
"author": {
"name": "Developer Name",
"email": "[email protected]",
"date": "2025-06-15T14:23:11Z"
},
"message": "Commit message here"
},
"files": [
{
"filename": "src/config.js",
"status": "added",
"patch": "@@ -0,0 +1,3 @@\n+// config"
}
]
}
Rate Limit Headers:
x-ratelimit-limit: 5000
x-ratelimit-remaining: 4999
x-ratelimit-reset: 1623456789
For bulk analysis or when you need full repository context, fetch specific commits via Git.
Minimal Clone + Fetch Specific Commit:
# Clone without file contents (just history/trees/commits)
git clone --filter=blob:none --no-checkout https://github.com/org/repo.git
cd repo
# Fetch the specific "deleted" commit
git fetch origin <COMMIT_SHA>
# View the commit
git show FETCH_HEAD
# View specific file from that commit
git show FETCH_HEAD:path/to/file.txt
Why This Works:
--filter=blob:none: Omits file contents initially (fast clone)--no-checkout: Doesn't populate working directorygit fetch origin <SHA>: Retrieves specific commit even if "deleted"Scenario: You have a list of commit SHAs to investigate and need their content.
import requests
import time
def download_commit_patch(repo, sha, token=None):
url = f"https://github.com/{repo}/commit/{sha}.patch"
headers = {"Authorization": f"Bearer {token}"} if token else {}
response = requests.get(url, headers=headers, allow_redirects=True)
if response.status_code == 200:
return response.text
return None
# Download patches for a list of commits
commits = [
{"repo": "org/repo1", "sha": "abc123..."},
{"repo": "org/repo2", "sha": "def456..."},
]
for commit in commits:
patch = download_commit_patch(commit["repo"], commit["sha"])
if patch:
with open(f"{commit['sha'][:8]}.patch", "w") as f:
f.write(patch)
time.sleep(0.5) # Rate limit courtesy
Scenario: Need to verify who actually authored a suspicious commit (committer vs author can differ).
API Query:
curl -s -H "Authorization: Bearer $GITHUB_TOKEN" \
"https://api.github.com/repos/org/repo/commits/SHA" | \
jq '{
author: .commit.author,
committer: .commit.committer,
verified: .commit.verification.verified
}'
Response Analysis:
{
"author": {
"name": "Real Developer",
"email": "[email protected]",
"date": "2025-06-15T10:00:00Z"
},
"committer": {
"name": "CI Bot",
"email": "[email protected]",
"date": "2025-06-15T10:05:00Z"
},
"verified": false
}
Forensic Notes:
git commit --author)Discovery: Security researcher Sharon Brizinov used GitHub Archive to find zero-commit PushEvents, recovering commit SHAs of "deleted" commits. Using GitHub API to fetch commit content, discovered a leaked GitHub PAT token.
Impact: The token had admin access to ALL Istio repositories (36k stars, used by Google, IBM, Red Hat). Could have enabled:
Resolution: Reported via Istio's security disclosure process; token was immediately revoked.
Technique Chain:
before SHAGET /repos/istio/istio/commits/{SHA}.patch/user endpointFrom scanning recovered force-pushed commits, the most impactful secrets found in order:
Files Most Likely to Contain Secrets:
.env, .env.local, .env.productionconfig.js, config.py, config.jsondocker-compose.yml, docker-compose.yamlapplication.properties, application.ymlhardhat.config.js (crypto/web3 projects)403 Forbidden on API requests:
repo for private repos)x-ratelimit-remaining header404 Not Found for commit:
Rate limit exceeded:
x-ratelimit-reset header for Unix timestamp)Web access blocked by WAF:
Git fetch fails for commit:
Alternatives
coreyhaines31/marketingskills
When the user wants to plan, design, or implement an A/B test or experiment, or build a growth experimentation program. Also use when the user mentions "A/B test," "split test," "experiment," "test this change," "variant copy," "multivariate test," "hypothesis," "should I test this," "which version is better," "test two versions," "statistical significance," "how long should I run this test," "growth experiments," "experiment velocity," "experiment backlog," "ICE score," "experimentation program
event4u-app/agent-config
Grounded design brief from the adopted corpus — style, WCAG-checked color tokens, typography, layout pattern, anti-patterns. Use on ui-design-brief or any which-style/palette/font/chart decision.
event4u-app/agent-config
Use BEFORE writing or editing any non-trivial UI — inventories components, design tokens, shadcn primitives, and reusable patterns into state.ui_audit. Hard gate for the ui directive set.
event4u-app/agent-config
Use BEFORE writing/changing tests, adding mocks, or test-only methods on production classes — vs mocking-the-mock, production pollution, partial mocks, and overfit/tautological assertions