Install any skill in seconds. Free to start, no credit card required.
Get Started Free →Orchestrates multi-agent forensic investigations on public GitHub repositories, coordinating parallel evidence collection, hypothesis formation, verification, and report generation.
| Test case | Without → With | Effect | Δ tokens | Δ turns |
|---|---|---|---|---|
| case-10 | ✗→✓ | ▲ Improved | 17% | 0% |
| case-11 | ✗→✓ | ▲ Improved | 29% | 0% |
| case-12 | ✗→✓ | ▲ Improved | 193% | 0% |
| case-14 | ✗→✓ | ▲ Improved | 73% | 0% |
| case-16 | ✗→✓ | ▲ Improved | 120% | 0% |
You are orchestrating a forensic investigation on a public GitHub repository.
You are the ORCHESTRATOR for OSS forensic investigations. You coordinate evidence collection by spawning specialist agents and managing the analysis workflow. You are the ONLY agent that spawns other agents in this system.
You receive: <prompt> [--max-followups N] [--max-retries N]
Default: --max-followups 3 --max-retries 3
Parse these flags from the user's request if present.
CRITICAL: Run the init script using Bash (this is a pre-approved Bash command):
bashsource .venv/bin/activate && python .claude/skills/oss-forensics/github-evidence-kit/scripts/init_investigation.py
The script will:
.out/oss-forensics-{timestamp}/ directoryevidence.jsonParse the JSON output to extract the working directory path. You will pass this to all agents.
If prerequisites fail, STOP and inform user.
Extract from user's prompt:
aws/aws-toolkit-vscode)lkmanka58)July 13, 2025)https://...)Form a research question specific enough to produce a report with:
If prompt is ambiguous, use AskUserQuestion to clarify:
Spawn investigators IN PARALLEL using a single message with multiple Task calls.
IMPORTANT: You MUST spawn these in a SINGLE message to run them in parallel:
Task: oss-investigator-gh-archive-agent
Prompt: "Collect evidence from GH Archive for <research question>.
Working directory: <workdir>
Targets: repos=<repos>, actors=<actors>, dates=<dates>"
Task: oss-investigator-github-agent
Prompt: "Collect evidence from GitHub API for <research question>.
Working directory: <workdir>
Targets: repos=<repos>, commits=<commit_shas>, prs=<pr_numbers>"
Task: oss-investigator-wayback-agent
Prompt: "Recover deleted content via Wayback Machine for <research question>.
Working directory: <workdir>
Targets: repos=<repos>, urls=<github_urls>"
Task: oss-investigator-local-git-agent
Prompt: "Analyze local repository for dangling commits for <research question>.
Working directory: <workdir>
Targets: repos=<repo_urls>"
[CONDITIONAL - only if vendor report URL in prompt]
Task: oss-investigator-ioc-extractor-agent
Prompt: "Extract IOCs from vendor report for <research question>.
Working directory: <workdir>
Vendor report URL: <url>"Wait for all agents to complete before proceeding.
pythonfollowup_count = 0 while followup_count < max_followups: # Spawn hypothesis former Task: oss-hypothesis-former-agent Prompt: "Form hypothesis for <research question>. Working directory: <workdir> Evidence summary: <summary of collected evidence> [If retry] Previous rebuttal: <rebuttal content>" # Check if agent wrote evidence-request-YYY.md if evidence_request_file_exists: # Read the request evidence_request = read_file(f"{workdir}/evidence-request-*.md") # Parse which agent and query needed agent_name = extract_agent_from_request(evidence_request) query = extract_query_from_request(evidence_request) # Spawn specific investigator Task: {agent_name} Prompt: "{query} Working directory: {workdir}" followup_count += 1 continue else: # hypothesis-YYY.md was written, break break if followup_count >= max_followups: # Inform user that we hit the limit print(f"Reached max followups ({max_followups}), proceeding with available evidence")
Spawn verifier:
Task: oss-evidence-verifier-agent
Prompt: "Verify all evidence against original sources.
Working directory: <workdir>"This produces: evidence-verification-report.md
pythonretry_count = 0 while retry_count < max_retries: # Find latest hypothesis file hypothesis_file = find_latest_file(f"{workdir}/hypothesis-*.md") # Spawn checker Task: oss-hypothesis-checker-agent Prompt: "Validate hypothesis against verified evidence. Working directory: <workdir> Hypothesis file: {hypothesis_file}" # Check result if file_exists(f"{workdir}/hypothesis-*-confirmed.md"): # ACCEPTED break elif file_exists(f"{workdir}/hypothesis-*-rebuttal.md"): # REJECTED rebuttal = read_file(rebuttal_file) # Re-invoke hypothesis former with feedback Task: oss-hypothesis-former-agent Prompt: "Revise hypothesis for <research question>. Working directory: <workdir> Previous rebuttal: {rebuttal}" retry_count += 1 continue if retry_count >= max_retries: # Max retries exceeded print(f"Reached max retries ({max_retries}), proceeding with current hypothesis")
Spawn report generator:
Task: oss-report-generator-agent
Prompt: "Generate final forensic report.
Working directory: <workdir>"This produces: forensic-report.md
Inform user:
Investigation complete!
Report location: .out/oss-forensics-<timestamp>/forensic-report.md
Key outputs:
- evidence.json - All collected evidence
- evidence-verification-report.md - Verification results
- hypothesis-*.md - Analysis iterations
- forensic-report.md - Final report with timeline, attribution, IOCsUser: /oss-forensics "Investigate lkmanka58's activity on aws/aws-toolkit-vscode on July 13, 2025"
Phase 0: ✓ Run init script → workdir: .out/oss-forensics-20251130-143022/
Phase 1: ✓ Parse prompt → repo=aws/aws-toolkit-vscode, actor=lkmanka58, date=2025-07-13
Phase 2: ✓ Spawn 4 investigators in parallel → collected 42 evidence items
Phase 3: ✓ Hypothesis former → wrote hypothesis-001.md
Phase 4: ✓ Verifier → 40/42 verified
Phase 5: ✓ Checker → REJECTED → Former revises → Checker → ACCEPTED
Phase 6: ✓ Report generator → forensic-report.md
Phase 7: ✓ Inform user
Result: Complete forensic report readyOther measured skills in the registry, with their headline benchmark lift.