plugins/dev/skills/speedrun/SKILL.md
Interactive speedrun loop for small, low-risk changes. Delegates each request to a general sub-agent. Redirects larger work to /build-fast or /build.
npx skillsauth add rp1-run/rp1 speedrunInstall this skill globally with one command. Works with Claude Code, Cursor, and Windsurf.
3 of 9 scanners reported clean
Some scanners were skipped, did not run, or reported a non-clean status. Review each row below.
Interactive speedrun loop for rapid, small changes. Delegates each request to a single general sub-agent.
This command ONLY orchestrates. It does NOT implement code.
First emit: Include --name "{RUN_NAME}" on the first emit call to label the run in the Arcade dashboard. Derive RUN_NAME from the initial request: a brief summary (max 60 chars) prefixed with "Feature: ". Use the RUN_ID from the generated Workflow Bootstrap section. Capture DATESTAMP=$(date +%Y-%m-%d) once at session start for use in session log paths. Initialize TASK_COUNT=0 at session start.
On session start, emit the status change:
rp1 agent-tools emit \
--workflow speedrun \
--type status_change \
--run-id {RUN_ID} \
--name "Feature: {brief summary of request}" \
--step active \
--data '{"status": "running"}'
Per-task unit tracking: Each task in the session gets a unit identifier task-{TASK_COUNT}. Increment TASK_COUNT before each new task starts. Include --unit task-{TASK_COUNT} on ALL emit calls for that task so each task appears as a trackable item in the Arcade.
stateDiagram-v2
[*] --> active
active --> [*] : session_end
If REQUEST empty:
{% ask_user "What would you like to build?" %}
Super vague (ask for clarification):
Clear enough (proceed):
If vague: ask ONE clarifying question. Do NOT over-interrogate.
Before delegating, assess the request:
| Factor | Small (proceed) | Medium/Large (redirect) | |--------|-----------------|------------------------| | Files | 1-3 | >3 | | Systems | 1 | >1 | | Risk | Low | Medium or High | | Estimated effort | <2h | >2h |
If Medium or Large: Do NOT delegate. Instead:
/build-fast/build/phase-plan---
## This request is better suited for a structured workflow
**Request**: {polished request — a clear, self-contained description of what the user wants}
**Why**: {brief reason — e.g. touches N files across M systems, requires design decisions}
**Recommended** (copy-paste ready):
For medium scope (2-8h):
```
/rp1-dev:build-fast "{polished request}"
```
For large single-feature scope (>8h):
```
/rp1-dev:build "{suggested-feature-id}"
```
For initiative-sized scope (multiple independently valuable features, explicit rollout phases, or distinct child-feature handoffs):
```
/rp1-dev:phase-plan <prd-or-requirements-source>
```
---
The polished request inserted into the commands must be the cleaned-up version, NOT the user's raw input. Transform vague or conversational input into a concise, actionable prompt that a downstream workflow can act on without further clarification.
When recommending /phase-plan, explain that the command expects a completed PRD or oversized requirements.md artifact as its source. Do not mention legacy tracker or milestone workflows.
Then loop to §1.5 (Post-Build Prompt) so the user can submit a smaller request or exit.
Increment TASK_COUNT. Emit a build-start status with the unit:
rp1 agent-tools emit \
--workflow speedrun \
--type status_change \
--run-id {RUN_ID} \
--step active \
--unit task-{TASK_COUNT} \
--data '{"status": "running", "request": "{brief summary of REQUEST}"}'
Spawn a single general sub-agent to implement the request:
{% dispatch_agent "rp1-dev:speedrun-builder" %} Implement the following change in the codebase:
{REQUEST}
Code edits directory: {codeRoot} Canonical project root: {projectRoot}
Keep change minimal. Apply Speedrun Gate. Do NOT commit. {% enddispatch_agent %}
Wait for completion. Do NOT implement anything yourself.
After builder completes, emit waiting status so the Arcade dashboard reflects the gate pause:
rp1 agent-tools emit \
--workflow speedrun \
--type waiting_for_user \
--run-id {RUN_ID} \
--step active \
--unit task-{TASK_COUNT} \
--data '{"prompt": "What would you like to do next?", "context": "Post-build prompt after express builder completes"}'
{% ask_user "What would you like to do next?", options: "Commit & move on", "Refine", "Review feedback from Arcade", "New task (no commit)", "Exit" %}
| Option | Action |
|--------|--------|
| Commit & move on | Commit current changes (conventional commit), then loop to 1.1 |
| Refine | Ask what to change, re-invoke §1.4 with refinement as REQUEST |
| Review feedback from Arcade | Load the arcade-collab skill (/rp1-dev:arcade-collab), then call rp1 agent-tools feedback read --run-id {RUN_ID} --status open. If feedback exists, process it per the collaboration loop in the skill. After all feedback is processed, return to this prompt and re-present the same options. Not shown when AFK=true. |
| New task (no commit) | Loop to 1.1 without committing |
| Exit | STOP |
After a scope redirect (§1.3), show only "New task" and "Exit" options (no feedback review since no build occurred).
When user chooses "Commit & move on":
git add -A)rp1 agent-tools emit \
--workflow speedrun \
--type status_change \
--run-id {RUN_ID} \
--step active \
--unit task-{TASK_COUNT} \
--data '{"status": "completed"}'
Clear REQUEST, update session log with status "skipped" (see §1.8), then loop to 1.1 (Get Request).
After every task resolution (commit, skip, or refine cycle completion), write or append to the session log file at {workRoot}/speedrun/{DATESTAMP}-{RUN_ID}/session-log.md.
rp1-base:artifact-templates SKILL.md -- locate row where Producer = speedrun and Artifact = session-log.md.committed, skipped, or refined (refined = was refined then committed).Create the directory if it does not exist (mkdir -p). Rewrite the entire file each time (header + all rows) so it stays consistent.
After writing the file, register it as an artifact (on first write) or let subsequent writes update the content in-place:
rp1 agent-tools emit \
--workflow speedrun \
--type artifact_registered \
--run-id {RUN_ID} \
--step active \
--unit task-{TASK_COUNT} \
--data '{"path": "speedrun/{DATESTAMP}-{RUN_ID}/session-log.md", "storageRoot": "work_dir", "format": "markdown"}'
On exit, report tasks completed count.
## Session Summary
**Tasks Completed**: {count}
Speedrun session ended.
YOU MUST:
YOU MUST NOT:
{workRoot}/speedrun/{DATESTAMP}-{RUN_ID}/session-log.md)data-ai
Capture session context as a structured, frontmatter-rich markdown note under .rp1/work/notes/ with auto-maintained index and log.
tools
Plan and execute splitting a large PR or branch into a reviewable stacked PR sequence.
development
Write maximally terse agent prompts from scratch. Use when creating new agent specs, command prompts, or instruction sets. Teaches structure-first composition with compression-by-default patterns. Extended with constitutional governance, epistemic stance selection, and a six-stage prompt pipeline.
development
Quick-iteration development for small/medium scope changes with persistent artifacts and optional review.