rr remote test runner
Configures rr (github.com/rileyhilliard/rr) so the project's test, lint, and build commands can run on remote machines over SSH, with a committed .rr.yaml of named tasks, an AGENTS.md section, and the rr Claude Code plugin.
Category: tooling
In your existing repository
Ask your agent to check compatibility, follow this fragment’s brief, and verify the resulting project. What happens next
- Applies to:
- all stacks
- Requires tools:
- rr
Add to your project
Paste the prompt into the coding agent working on your project.
View prompt
Or use the terminal
npx @steamfield/stacks add rr| Step | Phase | Layer | Command |
|---|---|---|---|
| rr-config | check | check | rr tasks |
Use with a new stack
Starting fresh instead? These stacks support this fragment.
- astro-blogoptional
npx @steamfield/stacks new astro-blog --with rr - astro-fullstackoptional
npx @steamfield/stacks new astro-fullstack --with rr - mobile-expooptional
npx @steamfield/stacks new mobile-expo --with rr - python-apioptional
npx @steamfield/stacks new python-api --with rr - go-clioptional
npx @steamfield/stacks new go-cli --with rr - go-apioptional
npx @steamfield/stacks new go-api --with rr - nextjsoptional
npx @steamfield/stacks new nextjs --with rr - python-reactoptional
npx @steamfield/stacks new python-react --with rr - cloudflare-react-routeroptional
npx @steamfield/stacks new cloudflare-react-router --with rr - react-routeroptional
npx @steamfield/stacks new react-router --with rr - sveltekitoptional
npx @steamfield/stacks new sveltekit --with rr - tauri-reactoptional
npx @steamfield/stacks new tauri-react --with rr - typescript-clioptional
npx @steamfield/stacks new typescript-cli --with rr - typescript-apioptional
npx @steamfield/stacks new typescript-api --with rr
Alternatives in tooling
- Effect Schema
Effect Schema as the one validation and typing layer for data crossing a trust boundary (requests, config, storage, third-party and LLM output), with branded ids, tagged errors, JSON Schema for tools, and round-trip plus property tests.
Also applies to: astro-blog, astro-fullstack, mobile-expo, python-react, cloudflare-react-router, react-router, tauri-react, typescript-cli, typescript-api
- Effect testing and API skill
Effect testing with @effect/vitest (fresh real layers per test, TestClock instead of sleeps, typed failure and defect assertions), shipped Effect guidance for each agent, and an agent skill written from the installed Effect release's declarations.
Also applies to: astro-blog, astro-fullstack, mobile-expo, python-react, cloudflare-react-router, react-router, tauri-react, typescript-cli, typescript-api
- Git hooks (lefthook)
lefthook git hooks that format and lint staged files, enforce Conventional Commits, and run the project's tests before push.
Also applies to: astro-blog, astro-fullstack, mobile-expo, python-api, go-cli, go-api, nextjs, python-react, cloudflare-react-router, react-router, sveltekit, tauri-react, typescript-cli, typescript-api
- OpenTelemetry (OTLP) for Effect servers
OpenTelemetry traces, logs and metrics over OTLP for the Effect server in typescript-api, astro-fullstack and react-router. One observability layer adds trace ids to the existing logs, exports nothing without an endpoint, and is tested with an in-memory tracer and a loopback OTLP receiver.
Also applies to: astro-fullstack, react-router, typescript-api
- REST resource conventions
Agent rules for naming and shaping HTTP resources (plural nouns, methods and status codes, one resource shape, cursor pagination, versioning), independent of framework and layout, plus an AGENTS.md section recording the project's choices.
Also applies to: astro-fullstack, mobile-expo, python-api, go-api, python-react, typescript-api
Files
This fragment supplies instructions rather than project files.
Usage
Among stacks projects in the 28 days through 30 Oct 2026: 9,905 projects; 78% reached a green verify (77–80%, n=2,745).
Weekly projects by stack
Projects whose final fragment set included this fragment, grouped by stack.
Six largest series over available history; the rest are grouped in gray. Hidden counts are excluded.
- mobile-expo
- typescript-api
- sveltekit
- typescript-cli
- python-react
- go-api
- Other published stacks
- mobile-expo
- typescript-api
- sveltekit
- typescript-cli
- python-react
- go-api
- Other published stacks
Stacks projects per UTC week through 30 Oct 2026. Published stack counts only.
Data table
| Week ending | Stack | Projects |
|---|---|---|
| 5 Jul 2026 | astro-fullstack | – |
| 12 Jul 2026 | astro-fullstack | – |
| 19 Jul 2026 | astro-fullstack | – |
| 26 Jul 2026 | astro-fullstack | – |
| 2 Aug 2026 | astro-fullstack | – |
| 9 Aug 2026 | astro-fullstack | – |
| 16 Aug 2026 | astro-fullstack | – |
| 23 Aug 2026 | astro-fullstack | – |
| 30 Aug 2026 | astro-fullstack | – |
| 6 Sept 2026 | astro-fullstack | 5 |
| 13 Sept 2026 | astro-fullstack | – |
| 20 Sept 2026 | astro-fullstack | – |
| 27 Sept 2026 | astro-fullstack | – |
| 4 Oct 2026 | astro-fullstack | – |
| 11 Oct 2026 | astro-fullstack | – |
| 18 Oct 2026 | astro-fullstack | – |
| 25 Oct 2026 | astro-fullstack | – |
| 5 Jul 2026 | go-api | 40 |
| 12 Jul 2026 | go-api | 45 |
| 19 Jul 2026 | go-api | 75 |
| 26 Jul 2026 | go-api | 90 |
| 2 Aug 2026 | go-api | 85 |
| 9 Aug 2026 | go-api | 110 |
| 16 Aug 2026 | go-api | 110 |
| 23 Aug 2026 | go-api | 120 |
| 30 Aug 2026 | go-api | 155 |
| 6 Sept 2026 | go-api | 130 |
| 13 Sept 2026 | go-api | 160 |
| 20 Sept 2026 | go-api | 155 |
| 27 Sept 2026 | go-api | 150 |
| 4 Oct 2026 | go-api | 180 |
| 11 Oct 2026 | go-api | 180 |
| 18 Oct 2026 | go-api | 205 |
| 25 Oct 2026 | go-api | 200 |
| 5 Jul 2026 | go-cli | 25 |
| 12 Jul 2026 | go-cli | 20 |
| 19 Jul 2026 | go-cli | 30 |
| 26 Jul 2026 | go-cli | 50 |
| 2 Aug 2026 | go-cli | 40 |
| 9 Aug 2026 | go-cli | 55 |
| 16 Aug 2026 | go-cli | 60 |
| 23 Aug 2026 | go-cli | 70 |
| 30 Aug 2026 | go-cli | 65 |
| 6 Sept 2026 | go-cli | 85 |
| 13 Sept 2026 | go-cli | 105 |
| 20 Sept 2026 | go-cli | 110 |
| 27 Sept 2026 | go-cli | 135 |
| 4 Oct 2026 | go-cli | 185 |
| 11 Oct 2026 | go-cli | 225 |
| 18 Oct 2026 | go-cli | 210 |
| 25 Oct 2026 | go-cli | 235 |
| 5 Jul 2026 | mobile-expo | 100 |
| 12 Jul 2026 | mobile-expo | 150 |
| 19 Jul 2026 | mobile-expo | 200 |
| 26 Jul 2026 | mobile-expo | 265 |
| 2 Aug 2026 | mobile-expo | 270 |
| 9 Aug 2026 | mobile-expo | 335 |
| 16 Aug 2026 | mobile-expo | 320 |
| 23 Aug 2026 | mobile-expo | 325 |
| 30 Aug 2026 | mobile-expo | 345 |
| 6 Sept 2026 | mobile-expo | 365 |
| 13 Sept 2026 | mobile-expo | 410 |
| 20 Sept 2026 | mobile-expo | 440 |
| 27 Sept 2026 | mobile-expo | 460 |
| 4 Oct 2026 | mobile-expo | 470 |
| 11 Oct 2026 | mobile-expo | 515 |
| 18 Oct 2026 | mobile-expo | 530 |
| 25 Oct 2026 | mobile-expo | 535 |
| 5 Jul 2026 | nextjs | 30 |
| 12 Jul 2026 | nextjs | 35 |
| 19 Jul 2026 | nextjs | 65 |
| 26 Jul 2026 | nextjs | 75 |
| 2 Aug 2026 | nextjs | 85 |
| 9 Aug 2026 | nextjs | 95 |
| 16 Aug 2026 | nextjs | 100 |
| 23 Aug 2026 | nextjs | 120 |
| 30 Aug 2026 | nextjs | 110 |
| 6 Sept 2026 | nextjs | 130 |
| 13 Sept 2026 | nextjs | 130 |
| 20 Sept 2026 | nextjs | 140 |
| 27 Sept 2026 | nextjs | 130 |
| 4 Oct 2026 | nextjs | 140 |
| 11 Oct 2026 | nextjs | 155 |
| 18 Oct 2026 | nextjs | 190 |
| 25 Oct 2026 | nextjs | 185 |
| 5 Jul 2026 | python-api | – |
| 12 Jul 2026 | python-api | – |
| 19 Jul 2026 | python-api | – |
| 26 Jul 2026 | python-api | – |
| 2 Aug 2026 | python-api | – |
| 9 Aug 2026 | python-api | – |
| 16 Aug 2026 | python-api | – |
| 23 Aug 2026 | python-api | – |
| 30 Aug 2026 | python-api | – |
| 6 Sept 2026 | python-api | – |
| 13 Sept 2026 | python-api | – |
| 20 Sept 2026 | python-api | – |
| 27 Sept 2026 | python-api | – |
| 4 Oct 2026 | python-api | – |
| 11 Oct 2026 | python-api | – |
| 18 Oct 2026 | python-api | – |
| 25 Oct 2026 | python-api | – |
| 5 Jul 2026 | python-react | 60 |
| 12 Jul 2026 | python-react | 115 |
| 19 Jul 2026 | python-react | 150 |
| 26 Jul 2026 | python-react | 170 |
| 2 Aug 2026 | python-react | 210 |
| 9 Aug 2026 | python-react | 225 |
| 16 Aug 2026 | python-react | 240 |
| 23 Aug 2026 | python-react | 235 |
| 30 Aug 2026 | python-react | 265 |
| 6 Sept 2026 | python-react | 280 |
| 13 Sept 2026 | python-react | 280 |
| 20 Sept 2026 | python-react | 325 |
| 27 Sept 2026 | python-react | 320 |
| 4 Oct 2026 | python-react | 330 |
| 11 Oct 2026 | python-react | 290 |
| 18 Oct 2026 | python-react | 215 |
| 25 Oct 2026 | python-react | 180 |
| 5 Jul 2026 | react-router | – |
| 12 Jul 2026 | react-router | – |
| 19 Jul 2026 | react-router | – |
| 26 Jul 2026 | react-router | – |
| 2 Aug 2026 | react-router | – |
| 9 Aug 2026 | react-router | – |
| 16 Aug 2026 | react-router | – |
| 23 Aug 2026 | react-router | – |
| 30 Aug 2026 | react-router | – |
| 6 Sept 2026 | react-router | – |
| 13 Sept 2026 | react-router | – |
| 20 Sept 2026 | react-router | – |
| 27 Sept 2026 | react-router | – |
| 4 Oct 2026 | react-router | – |
| 11 Oct 2026 | react-router | – |
| 18 Oct 2026 | react-router | – |
| 25 Oct 2026 | react-router | – |
| 5 Jul 2026 | sveltekit | 80 |
| 12 Jul 2026 | sveltekit | 125 |
| 19 Jul 2026 | sveltekit | 220 |
| 26 Jul 2026 | sveltekit | 250 |
| 2 Aug 2026 | sveltekit | 230 |
| 9 Aug 2026 | sveltekit | 275 |
| 16 Aug 2026 | sveltekit | 285 |
| 23 Aug 2026 | sveltekit | 300 |
| 30 Aug 2026 | sveltekit | 295 |
| 6 Sept 2026 | sveltekit | 365 |
| 13 Sept 2026 | sveltekit | 380 |
| 20 Sept 2026 | sveltekit | 380 |
| 27 Sept 2026 | sveltekit | 415 |
| 4 Oct 2026 | sveltekit | 395 |
| 11 Oct 2026 | sveltekit | 395 |
| 18 Oct 2026 | sveltekit | 475 |
| 25 Oct 2026 | sveltekit | 480 |
| 5 Jul 2026 | tauri-react | – |
| 12 Jul 2026 | tauri-react | – |
| 19 Jul 2026 | tauri-react | – |
| 26 Jul 2026 | tauri-react | – |
| 2 Aug 2026 | tauri-react | – |
| 9 Aug 2026 | tauri-react | – |
| 16 Aug 2026 | tauri-react | – |
| 23 Aug 2026 | tauri-react | – |
| 30 Aug 2026 | tauri-react | – |
| 6 Sept 2026 | tauri-react | – |
| 13 Sept 2026 | tauri-react | – |
| 20 Sept 2026 | tauri-react | – |
| 27 Sept 2026 | tauri-react | – |
| 4 Oct 2026 | tauri-react | – |
| 11 Oct 2026 | tauri-react | – |
| 18 Oct 2026 | tauri-react | – |
| 25 Oct 2026 | tauri-react | – |
| 5 Jul 2026 | typescript-api | 70 |
| 12 Jul 2026 | typescript-api | 150 |
| 19 Jul 2026 | typescript-api | 185 |
| 26 Jul 2026 | typescript-api | 215 |
| 2 Aug 2026 | typescript-api | 260 |
| 9 Aug 2026 | typescript-api | 305 |
| 16 Aug 2026 | typescript-api | 300 |
| 23 Aug 2026 | typescript-api | 350 |
| 30 Aug 2026 | typescript-api | 340 |
| 6 Sept 2026 | typescript-api | 360 |
| 13 Sept 2026 | typescript-api | 385 |
| 20 Sept 2026 | typescript-api | 420 |
| 27 Sept 2026 | typescript-api | 375 |
| 4 Oct 2026 | typescript-api | 410 |
| 11 Oct 2026 | typescript-api | 500 |
| 18 Oct 2026 | typescript-api | 455 |
| 25 Oct 2026 | typescript-api | 510 |
| 5 Jul 2026 | typescript-cli | 70 |
| 12 Jul 2026 | typescript-cli | 110 |
| 19 Jul 2026 | typescript-cli | 180 |
| 26 Jul 2026 | typescript-cli | 215 |
| 2 Aug 2026 | typescript-cli | 255 |
| 9 Aug 2026 | typescript-cli | 245 |
| 16 Aug 2026 | typescript-cli | 280 |
| 23 Aug 2026 | typescript-cli | 295 |
| 30 Aug 2026 | typescript-cli | 285 |
| 6 Sept 2026 | typescript-cli | 320 |
| 13 Sept 2026 | typescript-cli | 375 |
| 20 Sept 2026 | typescript-cli | 350 |
| 27 Sept 2026 | typescript-cli | 365 |
| 4 Oct 2026 | typescript-cli | 405 |
| 11 Oct 2026 | typescript-cli | 410 |
| 18 Oct 2026 | typescript-cli | 440 |
| 25 Oct 2026 | typescript-cli | 440 |
By stack
How often this fragment stays in a default composition, or gets attached as an option.
Stacks projects · 28 days through 30 Oct 2026. Counts rounded to 5.
Data table
| Stack | Projects | Role | Share |
|---|---|---|---|
| astro-fullstack | – | Optional · attached | – |
| go-api | 700 | Optional · attached | 18% |
| go-cli | 810 | Optional · attached | 16% |
| mobile-expo | 1,960 | Optional · attached | 18% |
| nextjs | 640 | Optional · attached | 18% |
| python-api | – | Optional · attached | – |
| python-react | 790 | Optional · attached | 18% |
| react-router | – | Optional · attached | – |
| sveltekit | 1,655 | Optional · attached | 17% |
| tauri-react | – | Optional · attached | – |
| typescript-api | 1,775 | Optional · attached | 17% |
| typescript-cli | 1,560 | Optional · attached | 17% |
Green rate with and without it
This compares projects; it isn't an effect of the fragment.
With
75%71–79%, n=450
Without
74%72–76%, n=2,025
With
71%67–74%, n=550
Without
67%65–68%, n=2,880
With
80%78–82%, n=1,250
Without
79%78–80%, n=5,835
With
85%81–88%, n=495
Without
87%85–88%, n=2,255
Stacks projects · 28 days through 30 Oct 2026. Counts rounded to 5.
Data table
| Stack | With | Without |
|---|---|---|
| go-api | 75% (71–79%, n=450) | 74% (72–76%, n=2,025) |
| go-cli | 71% (67–74%, n=550) | 67% (65–68%, n=2,880) |
| mobile-expo | 80% (78–82%, n=1,250) | 79% (78–80%, n=5,835) |
| python-react | 85% (81–88%, n=495) | 87% (85–88%, n=2,255) |
Often used with
Co-occurrence above the baseline, within a stack. Required fragment pairs are excluded.
Not enough runs in this breakdown yet.
Stacks projects · 28 days through 30 Oct 2026. Counts rounded to 5.
Computed 31 Oct 2026, through 30 Oct 2026. Numbers describe stacks projects, not the ecosystem.