Personal Claude Code marketplace — opinionated GitHub-workflow slash commands.
_ _ _ ____
| | | | |__ ___ _ __| _ \ _____ __
| | | | '_ \ / _ \ '__| | | |/ _ \ \ / /
| |_| | |_) | __/ | | |_| | __/\ V /
\___/|_.__/ \___|_| |____/ \___| \_/
Five commands. Zero ceremony. Every issue, triaged, shipped, merged.
UberDev's whole personality is parallel agent fanout: /issue runs a 2-Sonnet-scout fanout, /uberdev:review-pr and /uberdev:simplify fan out 3–5 reviewers concurrently, /solve waves dispatch every task in parallel, /merge spawns one conflict-resolver per conflicted file. That's where the speed and quality come from — and that's where the cost comes from.
Recommended setup: 2× Claude Max ×20 subscriptions. A single Pro or single Max usage window genuinely is not enough headroom for a normal day of /turbo + /review-pr + /merge cycles. Expect to hit the limit mid-task on a single seat.
If that's too much, scale down: prefer /solve --trivial / --small (skips the orchestrator), skip /turbo (interactive /solve runs fewer agents), or use a less aggressive plugin. The defaults are tuned for "ship faster, pay for it" — a deliberate choice, not a bug.
| Command | What it does |
|---|---|
/solve <issue#> |
Spawns an autonomous Claude agent in a new terminal (cmux / Ghostty / iTerm / Terminal.app / nohup). Tier-aware: trivial issues skip brainstorm; large ones get the full orchestrator → spec → plan → wave-dispatch → review pipeline. |
/turbo <issue#> |
Unattended /solve. Same pipeline, but the brainstorm phase auto-accepts the lead agent's recommendation and Q&A is resolved against the research bundle. Use when you trust the recommendation and want issue → PR with no babysitting. |
/issue <description> |
Creates a well-investigated, deduped, label-validated GitHub issue from a one-line ask. 2-Sonnet-scout fanout (codebase + triage) runs in <30 s, with conventional-commit titling and template-by-type. |
/review-pr [<PR#>] |
Comprehensive PR review using specialized agents fanned out in parallel — code review, simplifier, silent-failure hunter, type-design analyzer, comment analyzer, test analyzer. |
/merge [<PR#> | --all] |
Lands an approved PR into the integration branch — autopilot. Bare invocation auto-discovers scope: single PR for the current branch, or all eligible open PRs against integration_branch. Ordering, per-PR strategy, conflict resolution (one parallel agent per conflicted file), and local sync, all unattended. |
Every command is repo-agnostic — they auto-detect via gh repo view. No per-repo config required.
# One-liner — installs the plugin and patches the missing enabledPlugins entry.
curl -fsSL https://raw.githubusercontent.com/TheFJK/UberDev/main/install.sh | bashThen in Claude Code:
/uberdev:issue trivial typo in README install step # smoke-testThe six short-form aliases (/issue, /solve, /turbo, /simplify, /review-pr, /merge) are auto-installed on first session and refreshed on plugin upgrade. Opt out with auto_install_aliases: false in .claude/uberdev.local.md or UBERDEV_NO_AUTO_ALIAS=1.
Why a bootstrap script? Upstream Claude Code has a bug (anthropics/claude-code#20661) where
/plugin installpopulates the cache but does not writeenabledPluginsin~/.claude/settings.json— so/uberdev:*commands silently 404.install.shdoes the install and jq-patchesenabledPlugins. Idempotent. Requiresjq.
Manual install (without curl|bash)
# 1. Inside Claude Code:
/plugin marketplace add TheFJK/UberDev
/plugin install uberdev@uberdev
# 2. In your shell — patch the entry the upstream bug skips:
[ -s ~/.claude/settings.json ] || echo '{}' > ~/.claude/settings.json
jq '.enabledPlugins["uberdev@uberdev"] = true' \
~/.claude/settings.json > ~/.claude/settings.json.tmp \
&& mv ~/.claude/settings.json.tmp ~/.claude/settings.json
# 3. Back in Claude Code:
/reload-pluginsThird-party plugins ship with auto-update off. Two options:
Manual (default) — refresh marketplace metadata, then reinstall:
/plugin marketplace update uberdev
/plugin install uberdev@uberdevAuto-update for this marketplace — /plugin → Marketplaces → select uberdev → toggle auto-update on. Picks up new versions when version in plugin.json is bumped.
Disable Claude Code's auto-updater globally with DISABLE_AUTOUPDATER=1 in your shell environment.
| Requirement | Why |
|---|---|
gh CLI authenticated against your target repos |
Repo detection, label/scope validation, dedup search, issue & PR ops |
jq |
Used by install.sh and /merge |
| macOS (Apple Silicon or Intel) | Terminal dispatch via osascript for iTerm/Terminal.app; Linux/Windows degrade to detached nohup |
| Claude Code 2.x+ with plugin support | Required for /plugin marketplace add |
| One of: cmux, Ghostty, iTerm2, Terminal.app | /solve auto-detects; falls back to detached nohup if none found |
Auto-classifies a GitHub issue into a tier, then spawns an agent with a tier-appropriate workflow.
| Tier | Auto-detected from… | Spawned workflow |
|---|---|---|
| trivial | Labels typo/docs/chore/good-first-issue. Body <300 chars. Single file named. |
Direct edit → test if touched code is tested → /uberdev:simplify → PR |
| small | Clear repro + error. Localized to one module. ≤50 LOC. | Lightweight TodoWrite plan (3–6 tasks) → TDD → /uberdev:simplify → PR |
| medium / large (default) | Labels epic/architectural/infrastructure. ≥3 files mentioned. Cross-package. |
/uberdev:orchestrator (research fanout → optional Q&A → spec-writer → spec-reviewer (always-on for medium+) → plan-writer → plan-reviewer) → /uberdev:subagent-driven-dev wave dispatch → /uberdev:review-pr |
Misclassification is recoverable — the spawned agent can escalate to
/uberdev:orchestratormid-flight if the scope proves larger than triaged. When in doubt, defaults to medium.
Manual overrides:
/solve 123 --trivial # force trivial tier
/solve 123 --small # force small tier
/solve 123 --full # force medium/large
/solve 123 --terminal=ghostty # force terminal dispatcher
SOLVE_TERMINAL=cmux /solve 123 # same, via envWhat runs in the spawned terminal — model and effort are pinned so behavior is reproducible across runs:
claude \
--model 'claude-opus-4-7[1m]' \
--effort max \
--worktree solve-issue-123 \
"$PROMPT"After opening its PR, the agent renames its own terminal tab from #123 <issue-title> to PR #456 <pr-title> via OSC escape sequences (or cmux's workspace API).
Wave-based parallel execution — multi-task plans declare Depends on: / Wave: / Owns: per task. Tasks share a wave only if their Owns allowlists are pairwise disjoint. Implementers never run git (controller serializes commits) — eliminates .git/index.lock races without per-task worktree ceremony. Maximum parallelism on edits, deterministic commit history, zero merge ceremony between waves.
Identical to /solve for trivial / small. For medium / large, the brainstorm phase auto-accepts the lead agent's recommendation instead of asking clarifying questions, and Phase 2 Q&A becomes non-blocking — clarifying answers are auto-picked from the research-bundle synthesis and written to questions.md for audit.
| Combo | Brainstorm Q&A | Tool gating |
|---|---|---|
/solve 42 |
interactive | manual per-tool |
/solve 42 --auto |
interactive | AI classifier |
/turbo 42 |
auto-accept | manual per-tool |
/turbo 42 --auto |
auto-accept | AI classifier — max autonomy |
/turbo and --auto are orthogonal: /turbo governs brainstorm interactivity; --auto governs Claude Code's per-tool permission mode.
Multi-issue dispatch. /turbo 5 6 7 validates all three issues up front (open + classifiable) and spawns three independent agents — one terminal tab/workspace each, all running in parallel. Override flags (--trivial|--small|--full, --auto, --terminal=...) apply batch-wide. If any issue is closed, missing, or fails gh fetch, the run aborts before spawning anything (no agents dispatched). /solve accepts the same syntax.
Spec & plan are still written to disk before implementation — audit them mid-flight to course-correct.
Lands approved PRs into the integration branch — fully unattended. No prompts, no halts. Per-PR failures park; the queue continues.
Invocation modes:
/merge <PR#>— land a specific PR./merge --all— land every eligible open PR (APPROVED + CI-green) againstintegration_branch./merge(no args) — context-aware. On a PR feature branch: single-PR fast path. Otherwise: auto-discover and land every eligible open PR againstintegration_branch(same path as--all, with a pre-flight stderr summary listing the discovered set).
- Pre-flight gate — open / not-draft / approved (
reviewDecision == "APPROVED") / CI-green; integration branch resolved (CLI flag > env var > config >gh repo view's default > literalmain); single-instance lock. - Merge plan — order (topo-sort hard deps → file-overlap heuristic → approval-age tie-break) + per-PR strategy (conventional-commit ratio + WIP-msg count +
merge-strategy:<name>label). - Merge + resolve — non-destructive
git merge-treeprobe; clean PRs viagh pr merge --<strategy>; conflicted PRs get one parallel agent per conflicted file in a scratch worktree, project test gate, fast-forward push back (Conventional Commits prefix, no Claude trailer). - Local sync —
git fetch --prune,git pull --ff-onlyon integration branch (auto-rebase on ff-only fail), worktree teardown, stale-rooted branch list (never auto-rebase).
Audit log — .uberdev/runs/<run-id>/audit.jsonl, one JSON line per event (gate, order, strategy, probe, agent, patch, test, push, merge, sync). Path surfaced in the final summary.
Configuration in .claude/uberdev.local.md:
---
integration_branch: main
---Or per-invocation: --integration-branch=develop.
Note (v0.14.0):
bot_authors_allow_list,auto_confirm, and--yes/-yare deprecated no-ops. Autopilot has no author gate and asks no questions; the trust anchor isreviewDecision == "APPROVED"plus GitHub branch protections.
Pipeline: classify → 2-Sonnet-scout fanout (codebase-scout + triage-scout, parallel in one turn — dedup against closed issues, label/scope validation against gh label list and commitlint) → draft → user-confirm → create → print Next step: /solve N. Median wall-clock under 30 seconds.
Templates by type — bug (fix), feature (feat), or chore/refactor — each producing conventional-commit-style titles and a body footed with **Triage hint:** <trivial|small|medium> that /solve reads later to pick the workflow without reclassifying.
After the spawned agent's PR is approved (and you've run /uberdev:review-pr), run /merge <PR#> to land it.
Skip the codebase investigation for docs/typo issues unrelated to code logic:
/issue Fix the install step in the README — wrong command --no-explorePer-repo settings live in .claude/uberdev.local.md (YAML frontmatter; ignored by git). Env vars override file values.
---
solve_terminal: ghostty # ghostty | iterm | cmux | terminal | nohup
solve_auto: false # auto-accept brainstorm recommendations (= /turbo)
auto_install_aliases: true # install short-form forwarders at SessionStart
integration_branch: main # /merge target branch (overrides gh repo view default)
---| Env var | File key | Purpose |
|---|---|---|
SOLVE_TERMINAL |
solve_terminal |
Override /solve's terminal dispatcher (cmux / ghostty / iterm / terminal / nohup) |
SOLVE_AUTO |
solve_auto |
When 1/true, spawned agent runs with --permission-mode auto |
UBERDEV_NO_AUTO_ALIAS |
auto_install_aliases |
When 1/true (env) or false (file), suppresses session-start auto-install of /issue, /solve, /turbo, /simplify, /review-pr, /merge forwarders |
UBERDEV_INTEGRATION_BRANCH |
integration_branch |
/merge target branch |
Precedence: CLI flag > env var > .claude/uberdev.local.md > default. Missing file → defaults apply silently.
Plugin commands are addressed as /uberdev:<command> by default — the uberdev: prefix is required by Claude Code's plugin manifest. Auto-install drops six forwarders into ~/.claude/commands/:
| Short form | Canonical |
|---|---|
/issue |
/uberdev:issue |
/solve |
/uberdev:solve |
/turbo |
/uberdev:turbo |
/simplify |
/uberdev:simplify |
/review-pr |
/uberdev:review-pr |
/merge |
/uberdev:merge |
/uberdev:install-aliases # install (skip-if-exists)
/uberdev:install-aliases --dry-run # preview without writing
/uberdev:install-aliases --force # refresh existing managed forwarders
/uberdev:uninstall-aliases # remove (only marker-tagged files)Forwarders carry <!-- managed-by: uberdev-aliases --> so uninstall is scoped to files we own. Hand-authored ~/.claude/commands/<name>.md files are never overwritten — collisions skip with a warning. If you reinstall the plugin to a different location, --force refreshes the captured paths.
UberDev ships these so all commands work standalone — no superpowers, pr-review-toolkit, or code-simplifier plugin install required.
| Type | Slugs | Source |
|---|---|---|
| Skills | brainstorm, write-plan, execute-plan, subagent-driven-dev, finish-branch, systematic-debugging, test-driven-development, using-git-worktrees, dispatching-parallel-agents, verification-before-completion, requesting-code-review, receiving-code-review, writing-skills |
adapted from superpowers (MIT, Jesse Vincent) |
| Skills | orchestrator, merge, solve-pipeline, post-impl-review, using-uberdev |
UberDev original |
| Agents | code-reviewer, comment-analyzer, pr-test-analyzer, silent-failure-hunter, type-design-analyzer |
from pr-review-toolkit (Apache 2.0) |
| Agents | code-simplifier |
from code-simplifier (Apache 2.0) |
| Agents | plan-reviewer, spec-writer, spec-reviewer, spec-reviser, plan-writer, research-codebase, research-patterns, research-prior-art, research-constraints, research-security, research-test-coverage, codebase-scout, triage-scout, conflict-resolver |
UberDev original |
| Commands | /uberdev:review-pr, /uberdev:simplify |
adapted; review-pr defaults to parallel fanout (divergence from upstream) |
Bundled upstream license texts in plugins/uberdev/licenses/.
| Decision | Rationale |
|---|---|
| Repo-agnostic by default | Commands derive $REPO from gh repo view at runtime. No hardcoded org/project IDs. |
| No GitHub Project board auto-add | Portability over board affordance. May return via opt-in .claude/board.json. |
Model pin baked in (in solve.md) |
Spawned agents run on claude-opus-4-7[1m] for reproducibility. Forks should adjust. |
| macOS-first terminal dispatch | osascript for iTerm/Terminal.app; native CLI for cmux/Ghostty; nohup fallback elsewhere. |
| Triage hint in every issue body | /solve skips re-classification and picks the right workflow without re-reading the body. |
| Conventional commits enforced | feat(scope): / fix(scope): / chore(scope): / refactor(scope):. enhancement is a label, never a type. |
/merge autopilot has no author gate |
Trust anchor is reviewDecision == "APPROVED" + GitHub branch protections. Bot vs. human vs. external contributor — same eligibility. |
No Co-Authored-By: Claude trailer |
Commits and PR bodies use the user's authorship only. |
| Wave-based parallel execution | Plans declare task dependencies + file ownership; subagent-driven-dev fires every wave's tasks concurrently in one shared worktree. Controller-only git eliminates index races without per-task worktree ceremony. |
| No HARD-GATE approval checkpoints | Upstream's brainstorm pauses for user sign-off before implementation. UberDev replaces user gates with parallel research fanout and always-on agent reviewers (spec-reviewer, plan-reviewer, end-of-issue post-impl-review). Quality wins from review depth, not approval ceremony. |
Why doesn't UberDev pause for me to approve the design?
Upstream obra/superpowers gates implementation behind a user-approval HARD-GATE: brainstorm halts, asks "does this look right so far?", and waits for sign-off before any subagent runs. Per-section approval prompts and a 3-iteration review-loop cap follow the same pattern.
UberDev rejects all of those. User gates trade quality for ceremony — every pause shifts review burden onto a non-expert reader (you) and adds wall-clock cost. Quality wins from parallel research fanout (six research agents in one shot), always-on reviewers (spec-reviewer runs on medium/large tier per orchestrator Phase 3.5; plan-reviewer runs on every plan per Phase 4.5), and an end-of-issue post-impl-review fanout (5 advisory reviewers — code-reviewer, code-simplifier, silent-failure-hunter, type-design-analyzer, comment-analyzer — dispatched in one message after PR push via /uberdev:review-pr).
Release notes live in CHANGELOG.md (Keep-a-Changelog 1.1.0 / SemVer). The GitHub releases tab is intentionally kept lean — CHANGELOG.md is authoritative.
Why "UberDev"?
Personal brand. Marketplace and repo are UberDev; the plugin inside is uberdev (lowercase to match Claude Code naming conventions).
Will /solve work outside macOS?
Partially. The terminal-dispatch chain falls through to nohup (detached background process with logs in /tmp/solve-N.log) on any platform without a recognized terminal app. You lose the per-issue tab and notifications, but the agent still runs.
How do I disable the plugin without uninstalling?
/plugin disable uberdev@uberdev
Or edit ~/.claude/settings.json:
"enabledPlugins": {
"uberdev@uberdev": false
}I'm hitting Claude usage limits constantly. What do I do?
Either upgrade — the headline warning recommends 2× Claude Max ×20 for sustained daily use — or scale down: prefer /solve --trivial / --small, skip /turbo, skip /uberdev:review-pr, or use a less aggressive plugin. UberDev's defaults are tuned for "ship faster, pay for it" — that's a deliberate choice.
See CONTRIBUTING.md.
MIT. See LICENSE.
Built by @TheFJK for shipping fast on solo and small-team GitHub projects.
If you fork this, open an issue — I'd love to see what you build on top.