██╗██████╗ ██████╗
██╔╝██╔══██╗██╔═══██╗
██╔╝ ██║ ██║██║ ██║
██╔╝ ██║ ██║██║ ██║
██╔╝ ██████╔╝╚██████╔╝
╚═╝ ╚═════╝ ╚═════╝
One install. Multiple environments. All the workflows.
Quick Start • Commands • Environments • How It Works
slashdo commands emphasize high-quality software engineering over token conservation. While efforts are made to use agents, models, and prompts efficiently, these tools work hard to ensure your software meets high-quality standards — and will use the tokens necessary to meet that end. Expect thorough reviews, multi-agent scans, and verification loops rather than shortcuts.
With npm/npx:
npx slash-do@latestWithout npm (curl):
curl -fsSL https://raw.githubusercontent.com/atomantic/slashdo/main/install.sh | bashThat's it. slashdo detects your installed AI coding environments and installs commands to each one.
All commands live under the do: namespace:
| Command | What it does |
|---|---|
/do:push |
Commit and push all work with changelog |
/do:pr |
Open a PR with self-review and a review loop (Copilot by default; see Review loop flags) |
/do:pr-better |
Run a full do:better audit on the current branch, commit fixes directly, then open a single PR |
/do:fpr |
Fork PR -- push to fork, PR against upstream |
/do:rpr |
Resolve PR review feedback with parallel agents |
/do:release |
Create a release PR with version bump and changelog |
/do:review |
Deep code review against best practices |
/do:better |
Full DevSecOps audit with 8-agent scan and remediation |
/do:better-swift |
SwiftUI DevSecOps audit with multi-platform coverage |
/do:scan |
Read-only safety audit of an unfamiliar directory — flags malware patterns, network calls, and vulnerable deps without executing code |
/do:depfree |
Audit dependencies, remove unnecessary ones, write replacement code |
/do:goals |
Generate GOALS.md from codebase analysis |
/do:replan |
Review and clean up PLAN.md |
/do:omd |
Audit and optimize markdown files |
/do:update |
Update slashdo to latest version |
/do:help |
List all available commands |
These commands accept a shared set of flags that control which reviewer(s) run and how the multi-reviewer loop is gated:
| Flag | Default | What it does |
|---|---|---|
--review-with <agent>[,<agent>...] |
copilot (on do:pr / do:release / do:pr-better); empty (on do:review, which still runs its own self-review unconditionally) |
Pick one or more reviewers, run in the order given. Accepted slugs: copilot (GitHub cloud review), codex, gemini, claude (each non-copilot slug spawns that local CLI in headless mode). Example: --review-with codex,gemini,copilot runs codex first, then gemini, then copilot, each reviewing the branch as the previous pass left it. |
--review-stop-on-findings |
off | Stop the multi-reviewer loop after the first reviewer that fixes at least one finding (subsequent reviewers in the list are skipped). Mutually exclusive with --review-stop-on-clean. |
--review-stop-on-clean |
off | Stop after the first reviewer that reports zero findings (clean). Mutually exclusive with --review-stop-on-findings. |
--reviewer-applies |
off | Edit the working tree directly from the reviewing CLI instead of routing findings back through the orchestrating thread. No effect on copilot passes (Copilot reviews are read-only); takes effect on each codex / gemini / claude pass in the list. |
By default every listed reviewer runs in order, and the orchestrator that opened the PR also applies the fixes — it reads each reviewer's findings and edits the working tree itself. Pass --reviewer-applies when you want the reviewing agent's judgment in the final patch (e.g. asking gemini to both find and patch its own concerns). For /do:release, the merge gate requires the multi-reviewer aggregate status to be clean (or partial, if you explicitly opted into a stop-mode short-circuit) — a dirty aggregate (build/test broken on some pass) or an inconclusive aggregate (any executed pass timed out, errored, hit its guardrail, or was skipped — even if other passes returned clean) blocks the merge.
For /do:review, the listed agents run after the host CLI's own self-review (the multi-agent review built into do:review). The list names additional reviewers; whichever CLI is hosting /do:review does its own pass first regardless.
Claude Code ~/.claude/commands/do/ YAML frontmatter + subdirectories
OpenCode ~/.config/opencode/commands/ YAML frontmatter + flat naming
Gemini CLI ~/.gemini/commands/do/ TOML headers + subdirectories
Codex ~/.codex/skills/ SKILL.md per-command directories
slashdo auto-detects which environments you have installed. Or specify manually:
npx slash-do@latest --env claude # just Claude Code
npx slash-do@latest --env opencode,gemini # multiple environmentsnpx slash-do@latest # auto-detect + install all
npx slash-do@latest --env claude # target specific environment
npx slash-do@latest --list # show commands and install status
npx slash-do@latest --dry-run # preview changes
npx slash-do@latest --uninstall # remove installed commands
curl -fsSL https://raw.githubusercontent.com/atomantic/slashdo/main/uninstall.sh | bash # curl uninstall
npx slash-do@latest push pr release # install specific commands only Source (commands/do/*.md)
|
v
+------------------+
| Transformer | Converts format per environment:
| | - YAML frontmatter (Claude, OpenCode)
+------------------+ - TOML headers (Gemini)
| - SKILL.md with inlined libs (Codex)
v
+------------------+
| Installer | Diff-based: only writes changed files
| | Tracks version for update notifications
+------------------+
|
v
~/.claude/commands/do/push.md
~/.config/opencode/commands/do-push.md
~/.gemini/commands/do/push.md
~/.codex/skills/do-push/SKILL.md
npx slash-do@latest # from your terminal/do:update # from inside your AI coding assistant
- Commands live in
commands/do/as Claude Code format.mdfiles (source of truth) - Lib files (shared partials) live in
lib/ - The transformer handles format conversion for each environment
- Capability-gated content: wrap environment-specific instructions in
<!-- if:teams -->…<!-- else -->…<!-- /if:teams -->blocks. The transformer keeps the matching branch per the target environment's capability flag (supportsTeamsinsrc/environments.js) and strips the markers — e.g.do:betterusesTeamCreateon Claude Code and falls back to parallel sub-agents elsewhere. - Test with
node bin/cli.js --listandnode bin/cli.js --dry-run
MIT