+1
-1
| { | ||
| "name": "adverse", | ||
| "version": "0.2.0", | ||
| "version": "0.2.1", | ||
| "description": "Multi-agent adversarial code review for any coding agent. Single model, three lenses, two rounds. Ships as both a CLI and a Claude Code Skill.", | ||
@@ -5,0 +5,0 @@ "type": "module", |
+15
-19
@@ -43,4 +43,18 @@ # adverse | ||
| Lives under [`skills/adverse-review/`](skills/adverse-review/). Inside Claude Code, ask for "adversarial review" / "adverse review" / "review my changes from multiple angles" and the skill takes over. Spawns reviewers via Claude Code's native Agent tool (no nested-auth issues, no subprocess overhead) and calls a small Node helper for the deterministic synthesis step. | ||
| The skill is in [`skills/adverse-review/`](skills/adverse-review/). One-liner install via [skills.sh](https://skills.sh/): | ||
| ```bash | ||
| npx skills add addyosmani/adverse | ||
| ``` | ||
| That clones the repo, locates `skills/adverse-review/`, and installs it to `~/.claude/skills/adverse-review/` (or `.claude/skills/` with `--project`). Re-run to update. If you'd rather pin the exact subpath, `npx skills add https://github.com/addyosmani/adverse/tree/main/skills/adverse-review` works too. Or do it by hand: | ||
| ```bash | ||
| git clone https://github.com/addyosmani/adverse.git ~/.adverse-source | ||
| mkdir -p ~/.claude/skills | ||
| ln -s ~/.adverse-source/skills/adverse-review ~/.claude/skills/adverse-review | ||
| ``` | ||
| Inside Claude Code, ask for "adversarial review", "adverse review of these changes", or "review my changes from multiple angles" — or hit `/adverse-review`. The skill handles scope detection (uncommitted changes vs branch diff vs full tree), spawns three reviewer subagents in parallel via Claude Code's native Agent tool (no nested-auth issues, no subprocess overhead), runs the cross-review round, and calls a small Node helper for the deterministic synthesis step. Needs `node` ≥ 20 on PATH; no `npm install`. | ||
| Both modes share the same `src/` core, so a finding the CLI flags is the same finding the Skill flags — no drift between the two. | ||
@@ -133,20 +147,2 @@ | ||
| ## Skill usage (Claude Code) | ||
| The Skill is in [`skills/adverse-review/`](skills/adverse-review/). To install it into your Claude Code config: | ||
| ```bash | ||
| # Symlink into your user skills directory | ||
| mkdir -p ~/.claude/skills | ||
| ln -s "$(pwd)/skills/adverse-review" ~/.claude/skills/adverse-review | ||
| # Or, install the package and link from there | ||
| npm install -g adverse | ||
| ln -s "$(npm root -g)/adverse/skills/adverse-review" ~/.claude/skills/adverse-review | ||
| ``` | ||
| Then in Claude Code: ask for "adversarial review" or "adverse review of these changes" or hit `/adverse-review`. The Skill handles scope detection (uncommitted changes vs branch diff vs full tree), spawns three reviewer subagents in parallel, runs the cross-review round, calls Node helpers for source collection and synthesis, and presents you with a summary plus pointers to the full report. | ||
| The Skill needs `node` (>= 20) on PATH but no `npm install` — its helper scripts under `scripts/` use stdlib only. | ||
| ## The personas | ||
@@ -153,0 +149,0 @@ |
@@ -8,3 +8,3 @@ #!/usr/bin/env node | ||
| const { values } = parseArgs({ | ||
| const { values, positionals } = parseArgs({ | ||
| options: { | ||
@@ -15,2 +15,3 @@ round1: { type: 'string', multiple: true }, | ||
| }, | ||
| allowPositionals: true, | ||
| strict: true, | ||
@@ -24,8 +25,11 @@ }); | ||
| const inputs = values.round1 ?? values.round2 ?? []; | ||
| if (inputs.length === 0) { | ||
| process.stderr.write('combine: at least one --round1 or --round2 input is required\n'); | ||
| const hasRound1 = values.round1 !== undefined; | ||
| const hasRound2 = values.round2 !== undefined; | ||
| if (hasRound1 === hasRound2) { | ||
| process.stderr.write('combine: provide exactly one of --round1 or --round2\n'); | ||
| process.exit(2); | ||
| } | ||
| const inputs = [...(values.round1 ?? values.round2), ...positionals]; | ||
| const combined = {}; | ||
@@ -32,0 +36,0 @@ for (const path of inputs) { |
107893
0.01%1635
0.18%237
-1.66%