Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion PRD.md
Original file line number Diff line number Diff line change
Expand Up @@ -50,7 +50,7 @@ Aligned with [GOALS.md](./GOALS.md)'s Core Goals:
| FR-2 | The system MUST support installing into an explicit subset of environments via `--env <envs>` (comma-separated, case-insensitive, trimmed), including the aliases `gemini`/`agy` → `antigravity`. | Must | `--env CLAUDE,agy` installs into the claude and antigravity targets only. |
| FR-3 | The system MUST support installing/uninstalling a filtered subset of commands by name, accepting both bare (`push`) and `do:`-prefixed (`do:push`) forms. | Must | `npx slash-do@latest push pr` installs only the push and pr commands. |
| FR-4 | The system MUST transform each source command file into the native format of its target environment — subdirectory layout for Claude Code, flat `do-<name>.md` for OpenCode, directory-per-skill (`SKILL.md`) for Antigravity/Codex/Grok — without per-environment hand-authoring. | Must | A single source file in `commands/do/` produces a correctly formatted, working command/skill file in every installed environment. |
| FR-5 | For environments without `!cat` file-inclusion support, the system MUST inline referenced `lib/*.md` content directly into the transformed command file (recursively, with cycle termination) rather than leaving a broken path reference. | Must | No dangling `~/.claude/lib/<name>.md` references appear in Agent Skills output, even when the referenced file is missing. |
| FR-5 | For environments without `!cat` file-inclusion support, the system MUST make every referenced `lib/*.md` reachable — inlining content into the transformed command file (recursively, with cycle termination), or, for a mutually-exclusive lib the run selects at most one of, writing it into the skill's own `lib/` directory and citing it by a relative path the agent reads on demand. Neither may leave a broken path reference. | Must | No dangling `~/.claude/lib/<name>.md` references appear in Agent Skills output, even when the referenced file is missing; every `lib/<name>.md` cited in a SKILL.md resolves to a file installed beside it. |
| FR-6 | Re-running install MUST be idempotent — unchanged files report up to date, changed files are updated in place, and hooks/config are not duplicated. | Must | Two consecutive installs with no source changes report 0 updates on the second run. |
| FR-7 | `--dry-run` MUST preview changes without writing, creating, or deleting any file, directory, hook registration, or config entry. | Must | A dry-run install on a clean host leaves the filesystem byte-for-byte unchanged. |
| FR-8 | `--list` MUST show all commands and their install status per environment without making changes. | Must | Output lists every command with an installed/not-installed/outdated status per detected environment. |
Expand Down
2 changes: 1 addition & 1 deletion README.md
Original file line number Diff line number Diff line change
Expand Up @@ -454,7 +454,7 @@ npx slash-do@latest push pr release # install specific commands only
+------------------+
| Transformer | Converts format per environment:
| | - YAML frontmatter (Claude, OpenCode)
+------------------+ - Agent Skills / SKILL.md with inlined libs (Antigravity, Codex, Grok Build)
+------------------+ - Agent Skills / SKILL.md + bundled lib/ (Antigravity, Codex, Grok Build)
|
v
+------------------+
Expand Down
146 changes: 8 additions & 138 deletions commands/do/next.md

Large diffs are not rendered by default.

2 changes: 1 addition & 1 deletion install.sh
Original file line number Diff line number Diff line change
Expand Up @@ -176,7 +176,7 @@ LIBS=(
empty-array-expansion enhance-loop epic-children
finding-disposition fix-regression-guard
gh-host github-reviewer-loop graphql-escaping
local-agent-review-loop model-tiers multi-reviewer-loop ollama-review-loop
local-agent-review-loop model-tiers multi-reviewer-loop next-swarm ollama-review-loop
per-finding-root-cause plan-id-format plan-issue-mode
post-review-doc-recommendations remediation-agent-template
review-agent-selection review-config-defaults review-convergence-gate
Expand Down
2 changes: 1 addition & 1 deletion lib/multi-reviewer-loop.md
Original file line number Diff line number Diff line change
Expand Up @@ -59,7 +59,7 @@ This is the default path. Iterate `REVIEW_AGENTS` in order, running each reviewe

1. **Print a banner**: `--- Review pass {n}/{N}: {REVIEW_AGENT} ---`
2. **Capture baseline**: `PASS_START_SHA=$(git rev-parse HEAD)` so the wrapper can tell whether this reviewer changed anything (independent of the inner loop's own tracking).
3. **Dispatch** to the matching single-reviewer loop. The loop file lives under the host CLI's lib directory (`~/.claude/lib/` for Claude, `~/.config/opencode/lib/` for OpenCode — slashdo's installer rewrites command-spec `!cat` references for each env, so use the same lib basename in whichever env this wrapper executes. For Antigravity and Codex there is no separate lib path: slashdo inlines the loop bodies directly into the installed skill, so the dispatch targets below are already present in-context rather than at a file path):
3. **Dispatch** to the matching single-reviewer loop. The loop file lives under the host CLI's lib directory (`~/.claude/lib/` for Claude, `~/.config/opencode/lib/` for OpenCode) or bundled alongside the skill under `lib/` (for Antigravity, Codex, Grok — read on demand per the directive in this skill):
Forward this entry's resolved `{MAX_ITERATIONS}` and `{MAX_EXPLICIT}` (from the cap-resolution step) to **every** target below — that pair is what carries a `~max=<n>` into the reviewer; forward `{ENTRY_EFFORT}` as `{REVIEW_EFFORT}` / `{OLLAMA_EFFORT}` (empty if unset):
- `copilot` → `{LIB_DIR}/copilot-review-loop.md` (forward `{GH_HOST}`, and this entry's `{MAX_ITERATIONS}` as its `{REVIEW_ITERATIONS}` iteration cap)
- `@<login>` → `{LIB_DIR}/github-reviewer-loop.md` (forward `{GH_HOST}`, this entry's `{REVIEWER_LOGIN}`, and this entry's `{MAX_ITERATIONS}` as its `{REVIEW_ITERATIONS}` iteration cap)
Expand Down
Loading