From savage-research
The 8-stage pipeline driver for the savage-research plugin. Takes a local repo path, runs ingest → claim extraction → parallel specialists → synthesis → adversary → revision → self-audit → emit, and produces the final markdown report. Invoked by the /research slash command.
How this skill is triggered — by the user, by Claude, or both
Slash command
/savage-research:research-orchestratorThe summary Claude sees in its skill listing — used to decide when to auto-load this skill
You are orchestrating a savage-research run on a local repository.
You are orchestrating a savage-research run on a local repository.
Announce at start: "Using research-orchestrator to run the 8-stage savage-research pipeline on <path>."
<path> was provided. If missing → print error: /research requires a local path argument and stop.<path> exists and is a directory. If not → print error: <path> is not a directory and stop.http://, https://, or git@ → print error: only local paths are supported in v1; clone the repo locally first and stop.<path> to an absolute path; store as $REPO.$TS = current timestamp as YYYY-MM-DD-HHMM (local time).$REPO_NAME = basename of $REPO.$REPO/.research/runs/$TS/scratchpads/$REPO/.research/$TS-$REPO_NAME.md.Read:
$REPO/README* (any casing, any extension)$REPO/docs/**/*.md (up to reasonable depth; if enormous, summarize by file).md files matching LANDING*, PITCH*, ABOUT*, OVERVIEW*package.json, pyproject.toml, Cargo.toml, go.mod, pom.xml, Gemfile, etc. — extract stated purpose/description and dependency list only.Do not read source files line-by-line.
Write a neutral summary to $REPO/.research/runs/$TS/ingest-summary.md. The summary states, in the repo's own framing:
If no README and no pitch material exists, the summary says so explicitly and proceeds from metadata + structure alone.
Dispatch the claim-extractor subagent with the task:
Read
$REPO/.research/runs/$TS/ingest-summary.mdand produce a structured claim list at$REPO/.research/runs/$TS/claims.mdconforming to the schema inplugin/skills/claim-extraction/SKILL.md. Also readplugin/skills/research-rubric/SKILL.mdfirst.
Wait for completion signal claims-extracted: <path>.
Dispatch all five in one batch (parallel tool calls, single message):
prior-art-hunter → writes $REPO/.research/runs/$TS/scratchpads/prior-art.mdclaim-auditor → writes $REPO/.research/runs/$TS/scratchpads/claim-audit.mdfailure-mode-hunter → writes $REPO/.research/runs/$TS/scratchpads/failure-modes.mdtraction-checker → writes $REPO/.research/runs/$TS/scratchpads/traction.mdquestion-critic → writes $REPO/.research/runs/$TS/scratchpads/question-critique.mdEach gets the same core prompt: "Run your agent on the repo at $REPO. Your inputs are at $REPO/.research/runs/$TS/. Your output goes to the path named in your agent file. Read plugin/skills/research-rubric/SKILL.md before producing output."
Wait for all five completion signals.
Dispatch synthesizer with stage=4:
Read all inputs at
$REPO/.research/runs/$TS/(ingest-summary, claims, all five scratchpads). Followplugin/skills/savage-synthesis/SKILL.mdStage 4 rules. Write draft to$REPO/.research/runs/$TS/draft-v1.md.
Wait for completion.
Dispatch adversary:
Read
$REPO/.research/runs/$TS/draft-v1.mdand all scratchpads at$REPO/.research/runs/$TS/scratchpads/. Produce kill-list at$REPO/.research/runs/$TS/kill-list.md.
Wait for completion.
Dispatch synthesizer with stage=6:
Read
draft-v1.mdandkill-list.mdat$REPO/.research/runs/$TS/. Follow Stage 6 rules in savage-synthesis. Writedraft-v2.md.
Wait for completion.
Dispatch self-auditor:
Audit
$REPO/.research/runs/$TS/draft-v2.mdagainstkill-list.md. Write audit to$REPO/.research/runs/$TS/audit-v1.md.
Wait for completion signal audit-result: <PASS|FAIL>.
draft-v2.md to final. Go to Stage 8.stage=6 again, but this time reading draft-v2.md + audit-v1.md as the kill-list, producing draft-v3.md. Then dispatch self-auditor again producing audit-v2.md.
draft-v3.md.draft-v3.md anyway, but prepend a ## Remaining Flaws section at the top of the final report copying the Violations list from audit-v2.md.Copy the promoted draft to $REPO/.research/$TS-$REPO_NAME.md. If Remaining Flaws were prepended, do that during the copy.
Print a terminal summary:
============================================================
Savage research complete: <REPO_NAME>
============================================================
Verdict:
<paste the Verdict section content>
Top 3 red flags:
<first 3 bullets from Red flags>
Full report: <absolute path to final report>
============================================================
$REPO/.research/runs/$TS/run.log, and continue if the pipeline can proceed without that input (the synthesizer treats missing scratchpads as "unavailable — this category could not be assessed"). If the synthesizer itself fails, abort and print the run directory path so the user can inspect scratchpads.npx claudepluginhub alibassam/savage-researcher --plugin savage-researchCreates, edits, and optimizes skills for Claude Code, including drafting, evaluating with test prompts, iterating on performance, and improving skill descriptions for better triggering accuracy.