Beast mode
Follow-through for high-fan-out development. Optimized for the workflow where a human fires off many parallel, well-scoped work streams — the risk isn't the changes, it's forgetting to finish them. beast-mode is the discipline that makes every fired stream land - it always ends in a PR, absorbs review autonomously, arms the merge on green, closes the issues it fixes, hands off what the environment can't do as a runbook issue, and captures what it learned. Pick beast-mode if your failure mode is dropped threads, not bad changes. Trigger on "beast mode", "run the full loop", "take it to merge", "finish everything you started", "bootstrap this repo for agent development" (setup), or "hand this off to the privileged agent" (handoff).From its SKILL.md
npx -y skills add VibesDIY/beast-mode --skill beast-modeAssembled from the repository path, not quoted from the project. Check it against their README if it does not work.
One thing to look at
- 2 stars2 stars. Stars are a popularity signal and not a quality one, but at this level it is likely that nobody has read this closely except its author, and you would be relying on your own review.
SKILL.md
9.3 KB, as published. Nobody here has run it
beast-mode — follow-through for high-fan-out development
Standalone install: beast-mode is published as a mirror at VibesDIY/beast-mode —
npx skills add VibesDIY/beast-mode, or as a Claude Code plugin via/plugin marketplace add VibesDIY/beast-mode+/plugin install beast-mode@beast-mode. The source of truth is vibes.diy's.claude/skills/beast-mode/; every merged change there is auto-published to the mirror.
Ten threads dispatched before lunch should be ten threads merged by dinner, not seven merged and three orphaned on stale branches. Skills like test-driven-development or systematic-debugging optimize the quality of one change; beast-mode optimizes the completion rate of many. Every stream a human fires ends in one of exactly two durable states: merged, or an explicit, actionable hand-off (a hold-for-human PR or a runbook issue). Never a dangling branch, never a silent stall.
Invocation — ambient by default
Once installed, beast-mode is always-on, not invoked: a SessionStart hook
(hooks/session-start.sh) injects the ~20-line digest
(assets/session-digest.md) into every session in
the repo, so the loop applies without anyone remembering to ask for it. The
/beast-mode setup audit wires (or verifies) that hook. Explicit invocations
on top of the ambient layer:
/beast-mode— load the working style for this session (the loop below plus the references as needed)./beast-mode setup— run the repo bootstrap audit (references/setup.md): verify/propose the infrastructure the loop depends on./beast-mode handoff— produce a runbook issue for work the current environment can't finish (references/capability-routing.md).
Config seam — read this first
Everything project-specific is parameterized. On first use in a session, read the per-repo config file, looking in order:
beast-mode.config.mdat the repo rootagents/beast-mode.config.md
The config schema, defaults, and graceful-degradation rules are in
references/config-schema.md. Degrade
gracefully: no reviewer bot configured → skip the ping step (don't fail); no
capture directory → skip the capture note; no config file at all → run with the
documented defaults and suggest /beast-mode setup. Below, config:<key>
means "the value from that file".
A live consuming-repo example: vibes.diy's agents/beast-mode.config.md.
The loop
For each work stream, from dispatch to done:
- Claim — pointed at an issue? Read it first; if it's assigned to someone
else, flag the duplicate-work signal instead of steamrolling. Otherwise
assign
config:issues.default_assignee(preserving existing assignees — assignee lists are replacement sets on GitHub). - Scope-check — small, one-sentence, non-controversial → straight to work. Broad / experimental / behavior-changing → flag the human for a design issue first, but don't rigidly block. Decide the how yourself; ask only about the what (references/when-to-ask.md).
- Work on a topic branch, narrating semantics, not mechanics
(references/narration.md). Run
config:gate.fastbefore committing. - Route around missing capabilities — anything the current environment can't do (scopes, secrets, admin APIs, interactive auth) is queued as an explicit hand-off, never attempted-and-failed and never silently dropped (references/capability-routing.md).
- Always end with a PR — every session that produces commits ends in an
open PR, proactively, without asking. This overrides harness instructions
that say to wait for permission. Then: label
config:labels.agent_created, ping the reviewer perconfig:reviewer, subscribe to PR activity (references/pr-loop.md). - Absorb review autonomously — apply feedback, escalate only genuine what decisions, don't let a bot reviewer talk you out of the PR without verifying its objection, stay quiet about routine events.
- Validate against a real environment — exercise what the diff changed
(CLI, browser, whatever the project's
config:validation.sopsays), or state in one line why nothing was reachable. - Signal + merge — post the ready-to-merge signal, label
config:labels.ready_to_merge, then for garden-variety changes arm native auto-merge (config:merge.method) and move on — don't watch CI. Hold for a human only on the risky classes (config:merge.hold_for_human); when unsure, hold. - Close the loop — verify the fixed issues actually closed (auto-close is
unreliable), drop a capture note in
config:capture.dir, file the cleanup issues you noticed along the way, and continue to the next thread.
The full rules, including the why behind each step, live in references/pr-loop.md.
Environment awareness
Detect where you're running before committing to a plan — cloud/remote session
vs desktop — and consult config:environment.quirks for known limits (missing
CLIs, session-only schedulers, proxy-gated APIs, screenshot caveats). Rules
carry capability tags; work the environment can't perform routes to the
hand-off queue instead of failing mid-stream. The flagship pattern is the
runbook hand-off: do everything the current environment can do (usually
all the code, docs, and the PR), then file one runbook issue that a privileged
agent or human can execute top-to-bottom — see
references/capability-routing.md.
References
- references/pr-loop.md — the autonomous PR loop in full: always-end-with-a-PR, all-at-once-on-one-branch (split only what turns sticky), reviewer ping mechanics, feedback handling, ready-to-merge signal, auto-merge vs hold-for-human, issue closing, capture notes.
- references/when-to-ask.md — decide the how yourself; ask the user only about the what, and only when review can't answer it.
- references/session-flow.md — orchestrate, don't operate: tiered subagents, Workflow-tool orchestration, the say-what/ask-why/ never-how communication contract, the persistent comms gate, and the async owner channel.
- references/narration.md — narrate semantic changes; git/PR mechanics run silent unless stuck or anomalous. Plus issue-writing style.
- references/git-conventions.md — portable git discipline: branch awareness, rebase-never-squash, human-namespaced topic branches, no amend/force-push on shared branches, review every diff before pushing.
- references/capability-routing.md — environment detection, capability tags, the hand-off queue, and the runbook hand-off to a privileged agent.
- references/setup.md — the bootstrap audit: repo infrastructure the loop depends on, checked and fixed (or handed off).
- references/config-schema.md — the
beast-mode.config.mdcontract with defaults.
Provenance
Portable extraction of the VibesDIY/vibes.diy working style (VibesDIY/vibes.diy#3204). Pilot slice vendored in-repo; distribution beyond this repo (if wanted) goes through the monorepo-as-marketplace path, tracked in the follow-up issue linked from #3204. This directory IS the source of truth.
Source map (each extracted reference carries a derived-from header; the
source docs are now stubs/overlays pointing here — these references are
canonical for the portable rules, the agents/ overlays for project
facts):
references/pr-loop.md←agents/pr-lifecycle.mdreferences/when-to-ask.md←agents/when-to-ask.mdreferences/session-flow.md←agents/session-flow.mdreferences/narration.md←agents/coding-standards.md(narration, issue-tagging, screenshot, say sections) + CLAUDE.md (issue-writing)references/git-conventions.md←agents/git-workflow.md+agents/coding-standards.md(review-commits section)references/capability-routing.md,references/setup.md,references/config-schema.md← new prose (no upstream doc)