radin-batch
Use for "work through my backlog", or name an epic or task to run only those. Works tasks via sub-agents in priority order, one…
Use for /radin-review, "review and log to backlog". Reviews a commit, PR, directory or range for the simplest native solution, maintainability and documented repo rubrics, then triages findings with the user.
Claude Code
$ npx -y skills add shortcuts/radin --skill radin-review --agent claude-code
Codex
$ npx skills add shortcuts/radin --skill radin-review -a codex -y
Cursor
$ npx skills add shortcuts/radin --skill radin-review -a cursor -y
Gemini CLI
$ npx skills add shortcuts/radin --skill radin-review -a gemini-cli -y
GitHub Copilot
$ npx skills add shortcuts/radin --skill radin-review -a github-copilot -y
OpenCode
$ npx skills add shortcuts/radin --skill radin-review -a opencode -y
Windsurf
$ npx skills add shortcuts/radin --skill radin-review -a windsurf -y
name: radin-review description: | Use for /radin-review, "review and log to backlog". Reviews a commit, PR, directory or range for the simplest native solution, maintainability and documented repo rubrics, then triages findings with the user. argument-hint: "[commit | PR number | path | A..B | staged | since <date>]"
Review a scope, then triage the findings with the user: each kept group goes to the backlog or gets tackled now. An agent caller reads `RADIN_LIB/radin-review-core.md` and follows it instead of this skill. Both read `RADIN_LIB/radin-explore-rule.md` before they explore.
Pass `<arg>` as one literal form the CLI accepts: a hash, PR number, path, `A..B`, `last commit`, `last N commits`, `staged` or `since <date>`. Map the user's words to it yourself: "the current branch changes" is `<default-branch>..HEAD`. When two maps fit, ask which.
RADIN_CLI scope [<arg>]
It prints `type`/`scope`/`command`/`passes` lines, and Step 3 hands the reviewer exactly the skills the `passes` line names. Route on its exit code:
stop.
directory). Ask which one.
State the resolved scope in one line, `Scope: commit a1b2c3d` or `Scope: directory src/auth/`, then capture both inputs the review needs, here and once:
Record it verbatim and paste that same string into every later Bash call and the brief.
prints one `<hash> <subject>` line per commit. A `dir` scope prints nothing: it has no commit list, and the brief says so.
Run the `command` before the review starts. No output (for a `dir` scope, no file under the path) means report "nothing to review in `<scope>`" and stop.
Work these rungs in order and stop at the first that yields a spec:
1. **The invoking prompt named one**: a backlog id, a title, or a path. For an id or title, `RADIN_CLI backlog field "<it>" TASK_FILE` and `RADIN_CLI backlog field "<it>" PLAN_PATHS` (exit 1 means no plan; the task file alone is then the spec). For a path, that file is the spec. 2. **The backlog holds it.**
RADIN_CLI scope --specs [<the same scope arg as Step 1>]
It prints one `id`, `created`, `branch`, `commit`, `source`, `role`, `plan`, `facts` line per candidate, oldest first. `source` says how the entry joined: `commit` (the task's commit is in scope), `reflog` (a squash or rebase rewrote that commit, and the review branch's reflog still lists it), `patch` (a cherry-pick copied the commit under a new hash; the diffs, the author time and subject, or the subject alone, match) or `pending` (an open entry recorded on the review branch).
Report the stderr line and stop the review.
`plan` names the plan file(s), comma-separated. `facts` names the facts file. Add each path to the entry; `none` means absent. A `pending` id's task file resolves as in rung 1.
`role` is `follow-up` or `feature`. Follow-ups are **decisions**; features are the **spec**.
When every entry is a follow-up, there is no spec, only decisions, and Step 6 reports `no spec available`. <!-- host:claude --> 3. **Ask.** One `AskUserQuestion` offering the top entries from <!-- /host --> <!-- host:agents --> 3. **Ask.** One ask offering the top 3 entries from <!-- /host --> `RADIN_CLI backlog list` as options, with the free-text field carrying a path. "There isn't one" falls to rung 4. 4. **Skip.** No spec: say so once here, and report `no spec available` in Step 6.
When the invoking prompt hands over a core review's findings for this scope, skip the dispatch and relay those.
<!-- host:claude --> Dispatch one sub-agent (`name: "radin-review"`) with a self-contained brief: <!-- /host --> <!-- host:agents --> Dispatch one sub-agent named `radin-review` with a self-contained brief: <!-- /host -->
`diff` for a `staged` scope).
verbatim.
reviewing". Label the decisions: "these entries fixed earlier findings on purpose; the scope's behaviour they describe is settled, so raise it again only when a changed line contradicts the decision."
the core's two.
as "write the report there".
<!-- host:claude --> Read the file the `REPORT:` line names, whole and in the order written. A missing or empty file: `SendMessage` the sub-agent once for it, then report the review as inconclusive. Step 4 carries the report to the user. <!-- /host --> <!-- host:agents --> Read the file the `REPORT:` line names, whole and in the order written. A missing or empty file: message the sub-agent once for it with the host's agent-message tool, then report the review as inconclusive. Step 4 carries the report to the user. <!-- /host -->
Nothing is logged or acted on until the user agrees to it. The citations go through one filter, which drops the out-of-scope findings:
printf '%s\n' "<path:line per finding, one per line>" | RADIN_CLI scope --in-scope [<the same scope arg as Step 1>]
Keep the findings on the `in` lines, drop the `out` ones, and carry the `dropped` count into Step 6. A finding about missing b
Use for "work through my backlog", or name an epic or task to run only those. Works tasks via sub-agents in priority order, one…
Use for /radin-do <prompt>. Records one ad-hoc prompt as a backlog entry, then executes just that task.
Use for /radin-plan, "plan this backlog entry", "write a plan for X before we execute it". Writes an implementation plan for one…
Use for /radin-record or any ask to save something for later, even a vague one ("add the findings"): scan the whole session. Logs…
Use for /radin-stats. Shows the stats or gain output of every companion tool that ships one, side by side.
Use for /radin-teardown while /radin-batch or /radin-do runs. Stops the run from starting new tasks; the task in flight, the gate…
You MUST use this before any creative work - creating features, building components, adding functionality, modifying behavior, or…
Ask which skill or flow fits your situation. A router over the skills in this repo.