Source profileQuality 91/100

gadievron/raptor/.claude/skills/oss-forensics/github-evidence-kit/SKILL.md

github-evidence-kit

Generate, export, load, and verify forensic evidence from GitHub sources. Use when creating verifiable evidence objects from GitHub API, GH Archive, Wayback Machine, local git repositories, or security vendor reports. Handles evidence storage, querying, and re-verification against original sources.

Source repository stars
3,668
Declared platforms
0
Static risk flags
1
Last source update
2026-08-25
Source checked
2026-08-26

Decision brief

What it does: where it fits

Purpose: Create, store, and verify forensic evidence from GitHub-related public sources and local git repositories.

Best for

  • Creating verifiable evidence objects from GitHub activity
  • Local git forensics - analyzing cloned repositories, dangling commits, reflog
  • Exporting evidence collections to JSON for sharing/archival

Not for

  • Tasks that require unconfirmed production actions or broad system permissions.
  • Environments where the pinned source and install steps cannot be inspected.

Compatibility matrix

Platform support, with evidence labels

PlatformStatusEvidenceWhat to check
CodexNot declaredNo explicit evidencePortability before use
Claude CodeNot declaredNo explicit evidencePortability before use
CursorNot declaredNo explicit evidencePortability before use
Gemini CLINot declaredNo explicit evidencePortability before use
Open the compatibility checker

Installation

Inspect first. Install second.

The source command is displayed only when detected. A safe inspection prompt is always available so your agent can explain every action before execution.

Source-detected install commandSource
npx skills add https://github.com/gadievron/raptor --skill ".claude/skills/oss-forensics/github-evidence-kit"
Safe inspection promptEditorial

Inspect the Agent Skill "github-evidence-kit" from https://github.com/gadievron/raptor/blob/4e75ac969b767cd81f403bd21fde4c2d29d7ec3b/.claude/skills/oss-forensics/github-evidence-kit/SKILL.md at commit 4e75ac969b767cd81f403bd21fde4c2d29d7ec3b. 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

What the source asks the agent to do

  1. 01

    Quick Start

    python from src.collectors import GitHubAPICollector, LocalGitCollector, GHArchiveCollector from src import EvidenceStore

    python from src.collectors import GitHubAPICollector, LocalGitCollector, GHArchiveCollector from src import EvidenceStore
  2. 02

    Verification

    Verification is separated from data collection. Use ConsistencyVerifier to validate evidence against original sources.

    Verification is separated from data collection. Use ConsistencyVerifier to validate evidence against original sources.python from src.verifiers import ConsistencyVerifierverifier = ConsistencyVerifier()
  3. 03

    Setup Steps

    1. Create a Google Cloud Project 2. Enable BigQuery API 3. Create a Service Account with BigQuery User role 4. Download JSON credentials 5. Set GOOGLEAPPLICATIONCREDENTIALS env var

    Create a Google Cloud ProjectEnable BigQuery APICreate a Service Account with BigQuery User role
  4. 04

    When to Use This Skill

    Creating verifiable evidence objects from GitHub activity

    Creating verifiable evidence objects from GitHub activityLocal git forensics - analyzing cloned repositories, dangling commits, reflogExporting evidence collections to JSON for sharing/archival
  5. 05

    Create collectors for different sources

    github = GitHubAPICollector() local = LocalGitCollector("/path/to/repo") archive = GHArchiveCollector()

    github = GitHubAPICollector() local = LocalGitCollector("/path/to/repo") archive = GHArchiveCollector()

Permission review

Static risk signals and limitations

Network access

medium · line 134

The documentation includes network, browsing, or remote request actions.

snapshots = collector.collect_snapshots("https://github.com/owner/repo")

Network access

medium · line 138

The documentation includes network, browsing, or remote request actions.

"https://github.com/owner/repo",

Evidence record

Why each signal appears

EvidenceSourceComputedTestedEditorial
SignalValueEvidence typeMeaning
Quality score91/100ComputedDocumentation, specificity, maintenance, and trust rules
Repository stars3,668SourceRepository attention, not individual Skill quality
Compatibility0 platformsSourceDeclared in the catalog source record
Usage guideautomated source guideEditorialGenerated or reviewed according to the visible evidence level

Pinned source

Provenance and original SKILL.md

Repository
gadievron/raptor
Skill path
.claude/skills/oss-forensics/github-evidence-kit/SKILL.md
Commit
4e75ac969b767cd81f403bd21fde4c2d29d7ec3b
License
NOASSERTION
Collected
2026-08-26
Default branch
main
View the original SKILL.md

GH Evidence Kit

Purpose: Create, store, and verify forensic evidence from GitHub-related public sources and local git repositories.

When to Use This Skill

  • Creating verifiable evidence objects from GitHub activity
  • Local git forensics - analyzing cloned repositories, dangling commits, reflog
  • Exporting evidence collections to JSON for sharing/archival
  • Loading and re-verifying previously collected evidence
  • Recovering deleted GitHub content (issues, PRs, commits) from GH Archive
  • Tracking IOCs (Indicators of Compromise) with source verification

Quick Start

from src.collectors import GitHubAPICollector, LocalGitCollector, GHArchiveCollector
from src import EvidenceStore

# Create collectors for different sources
github = GitHubAPICollector()
local = LocalGitCollector("/path/to/repo")
archive = GHArchiveCollector()

# Collect evidence from GitHub API
commit = github.collect_commit("aws", "aws-toolkit-vscode", "678851b...")
pr = github.collect_pull_request("aws", "aws-toolkit-vscode", 7710)

# Collect evidence from local git (first-class forensic source)
local_commit = local.collect_commit("HEAD")
dangling = local.collect_dangling_commits()  # Forensic gold!

# Store and export
store = EvidenceStore()
store.add(commit)
store.add(pr)
store.add(local_commit)
store.add_all(dangling)
store.save("evidence.json")

# Verify all evidence against original sources
is_valid, errors = store.verify_all()

Collectors

GitHubAPICollector

Collects evidence from the live GitHub API.

from src.collectors import GitHubAPICollector

collector = GitHubAPICollector()
MethodReturns
collect_commit(owner, repo, sha)CommitObservation
collect_issue(owner, repo, number)IssueObservation
collect_pull_request(owner, repo, number)IssueObservation
collect_file(owner, repo, path, ref)FileObservation
collect_branch(owner, repo, branch_name)BranchObservation
collect_tag(owner, repo, tag_name)TagObservation
collect_release(owner, repo, tag_name)ReleaseObservation
collect_forks(owner, repo)list[ForkObservation]

LocalGitCollector (First-Class Forensics)

Collects evidence from local git repositories. Essential for forensic analysis of cloned repos.

from src.collectors import LocalGitCollector

collector = LocalGitCollector("/path/to/cloned/repo")

# Collect a specific commit
commit = collector.collect_commit("HEAD")
commit = collector.collect_commit("abc123")

# Find dangling commits (not reachable from any ref)
# This is forensic gold - reveals force-pushed or deleted commits!
dangling = collector.collect_dangling_commits()
for commit in dangling:
    print(f"Found dangling: {commit.sha[:8]} - {commit.message}")
MethodReturns
collect_commit(sha)CommitObservation
collect_dangling_commits()list[CommitObservation]

GHArchiveCollector

Collects and recovers evidence from GH Archive (BigQuery). Requires credentials.

from src.collectors import GHArchiveCollector

collector = GHArchiveCollector()

# Query events by timestamp (YYYYMMDDHHMM format)
events = collector.collect_events(
    timestamp="202507132037",
    repo="aws/aws-toolkit-vscode"
)

# Recover deleted content
deleted_issue = collector.recover_issue("aws/aws-toolkit-vscode", 123, "2025-07-13T20:30:24Z")
deleted_pr = collector.recover_pr("aws/aws-toolkit-vscode", 7710, "2025-07-13T20:30:24Z")
deleted_commit = collector.recover_commit("aws/aws-toolkit-vscode", "678851b", "2025-07-13T20:30:24Z")
force_pushed = collector.recover_force_push("aws/aws-toolkit-vscode", "2025-07-13T20:30:24Z")
MethodReturns
collect_events(timestamp, repo, actor, event_type)list[Event]
recover_issue(repo, number, timestamp)IssueObservation
recover_pr(repo, number, timestamp)IssueObservation
recover_commit(repo, sha, timestamp)CommitObservation
recover_force_push(repo, timestamp)CommitObservation

WaybackCollector

Collects archived snapshots from the Wayback Machine.

from src.collectors import WaybackCollector

collector = WaybackCollector()

# Get all snapshots for a URL
snapshots = collector.collect_snapshots("https://github.com/owner/repo")

# With date filtering
snapshots = collector.collect_snapshots(
    "https://github.com/owner/repo",
    from_date="20250101",
    to_date="20250731"
)

# Fetch actual content of a snapshot
content = collector.collect_snapshot_content(
    "https://github.com/owner/repo",
    "20250713203024"  # YYYYMMDDHHMMSS format
)

Verification

Verification is separated from data collection. Use ConsistencyVerifier to validate evidence against original sources.

from src.verifiers import ConsistencyVerifier

verifier = ConsistencyVerifier()

# Verify single evidence
result = verifier.verify(commit)
if not result.is_valid:
    print(f"Errors: {result.errors}")

# Verify multiple
result = verifier.verify_all([commit, pr, issue])

Or use the convenience method on EvidenceStore:

store = EvidenceStore()
store.add_all([commit, pr, issue])
is_valid, errors = store.verify_all()

EvidenceStore

Store, query, and export evidence collections.

from src import EvidenceStore
from datetime import datetime

store = EvidenceStore()

# Add evidence
store.add(commit)
store.add_all([pr, issue, ioc])

# Query
commits = store.filter(observation_type="commit")
recent = store.filter(after=datetime(2025, 7, 1))
from_github = store.filter(source="github")
from_git = store.filter(source="git")
repo_events = store.filter(repo="aws/aws-toolkit-vscode")

# Export/Import
store.save("evidence.json")
store = EvidenceStore.load("evidence.json")

# Summary
print(store.summary())
# {'total': 5, 'events': {...}, 'observations': {...}, 'by_source': {...}}

# Verify all against sources
is_valid, errors = store.verify_all()

Loading Evidence from JSON

from src import load_evidence_from_json
import json

with open("evidence.json") as f:
    data = json.load(f)

for item in data:
    evidence = load_evidence_from_json(item)
    # Evidence is now a typed Pydantic model

Evidence Types

Events (from GH Archive)

All 12 GitHub event types are supported:

TypeDescription
PushEventCommits pushed
PullRequestEventPR opened/closed/merged
IssueEventIssue opened/closed
IssueCommentEventComment on issue/PR
CreateEventBranch/tag created
DeleteEventBranch/tag deleted
ForkEventRepository forked
WatchEventRepository starred
MemberEventCollaborator added/removed
PublicEventRepository made public
ReleaseEventRelease published/created/deleted
WorkflowRunEventGitHub Actions run

Observations (from GitHub API, Local Git, Wayback, Vendors)

TypeDescriptionSources
CommitObservationCommit metadata and filesGitHub, Git, GH Archive
IssueObservationIssue or PRGitHub, GH Archive
FileObservationFile content at refGitHub
BranchObservationBranch HEADGitHub
TagObservationTag targetGitHub
ReleaseObservationRelease metadataGitHub
ForkObservationFork relationshipGitHub
SnapshotObservationWayback snapshotsWayback
IOCIndicator of CompromiseVendor
ArticleObservationSecurity report/blogVendor

IOC Types

from src import EvidenceSource, IOCType
from src.schema import IOC, VerificationInfo
from pydantic import HttpUrl
from datetime import datetime, timezone

# IOCs are created directly as schema objects
ioc = IOC(
    evidence_id="ioc-commit-sha-abc123",
    observed_when=datetime.now(timezone.utc),
    observed_by=EvidenceSource.SECURITY_VENDOR,
    observed_what="Malicious commit SHA found in vendor report",
    verification=VerificationInfo(
        source=EvidenceSource.SECURITY_VENDOR,
        url=HttpUrl("https://vendor.com/report")
    ),
    ioc_type=IOCType.COMMIT_SHA,
    value="678851bbe9776228f55e0460e66a6167ac2a1685",
)

Available IOC types: COMMIT_SHA, FILE_PATH, FILE_HASH, CODE_SNIPPET, EMAIL, USERNAME, REPOSITORY, TAG_NAME, BRANCH_NAME, WORKFLOW_NAME, IP_ADDRESS, DOMAIN, URL, API_KEY, SECRET

Testing

Run Unit Tests

cd .claude/skills/oss-forensics/github-evidence-kit
pip install -r requirements.txt
pytest tests/ -v --ignore=tests/test_integration.py

Run Integration Tests (Optional)

Integration tests hit real external services (GitHub API, BigQuery, vendor URLs):

# All integration tests
pytest tests/test_integration.py -v -m integration

# Skip integration tests in CI
pytest tests/ -v -m "not integration"

Note: GitHub API integration tests use 60 req/hr unauthenticated rate limit. BigQuery tests require credentials (see below).

GCP BigQuery Credentials (for GH Archive)

GH Archive queries require Google Cloud BigQuery credentials. Two options:

Option 1: JSON File Path

export GOOGLE_APPLICATION_CREDENTIALS=/path/to/credentials.json

Option 2: JSON Content in Environment Variable

Useful for .env files or CI secrets:

export GOOGLE_APPLICATION_CREDENTIALS='{"type":"service_account","project_id":"...","private_key":"..."}'

The client auto-detects JSON content vs file path.

Setup Steps

  1. Create a Google Cloud Project
  2. Enable BigQuery API
  3. Create a Service Account with BigQuery User role
  4. Download JSON credentials
  5. Set GOOGLE_APPLICATION_CREDENTIALS env var

Free Tier: 1 TB/month of BigQuery queries included.

Requirements

pip install -r requirements.txt
  • pydantic - Schema validation
  • requests - HTTP client
  • google-cloud-bigquery - GH Archive queries (optional)
  • google-auth - GCP authentication (optional)

Frequently asked questions

What to verify before installation and use

What does the github-evidence-kit source document cover?

Purpose: Create, store, and verify forensic evidence from GitHub-related public sources and local git repositories.

How do I install github-evidence-kit?

The source record exposes this install command: npx skills add https://github.com/gadievron/raptor --skill ".claude/skills/oss-forensics/github-evidence-kit". Inspect the command and pinned source before running it.

Which permission-related actions were detected?

Static rules flagged network in the source; the page lists the matching lines and excerpts.

Alternatives

Compare before choosing

Computed 10045,643

coreyhaines31/marketingskills

ab-testing

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

Computed 10029,095

garrytan/gbrain

bulk-ingestion

End-to-end discipline for turning any large data source (audio libraries, email takeouts, document corpora, chat exports, API dumps) into brain pages at scale. The lifecycle spine: SCHEMA → ACCESS → TRIAL → EVALUATE → IMPROVE → CODIFY → TEST → SKILLIFY → BULK → MONITOR. State is tracked in a durable JSON manifest (see MANIFEST-PATTERN.md) so any crash, session boundary, or subagent fan-out resumes from ground truth instead of memory.

Computed 10024,975

alirezarezvani/claude-skills

app-store-optimization

App Store Optimization (ASO) toolkit for researching keywords, analyzing competitor rankings, generating metadata suggestions, and improving app visibility on Apple App Store and Google Play Store. Use when the user asks about ASO, app store rankings, app metadata, app titles and descriptions, app store listings, app visibility, or mobile app marketing on iOS or Android. Supports keyword research and scoring, competitor keyword analysis, metadata optimization, A/B test planning, launch checklist

Computed 1005,248

dotnet/skills

migrate-vstest-to-mtp

Migrates .NET test projects from VSTest to Microsoft.Testing.Platform (MTP). Use when user asks to "migrate to MTP", "switch from VSTest", "enable Microsoft.Testing.Platform", "use MTP runner", set OutputType=Exe only for test projects in Directory.Build.props, or mentions EnableMSTestRunner, EnableNUnitRunner, or UseMicrosoftTestingPlatformRunner. USE FOR: MTP behavioral differences vs VSTest (exit code 8, zero tests discovered, --ignore-exit-code, TESTINGPLATFORM_EXITCODE_IGNORE); centralizing