Thunderbolt ships with a set of Claude Code slash commands that automate common development tasks. These are the fastest way to get up and running, manage your environment, and ship code.
Install Claude Code, then run it from the repo root:
claudeFrom inside Claude Code, type any of the commands below.
Bootstrap the full dev environment in one shot.
/thunderup # install deps, start Docker, verify tools
/thunderup all # same as above + start dev servers
/thunderup THU-123 # create a worktree for a Linear ticket, then bootstrap
/thunderup my-branch # create a worktree for a branch, then bootstrap
What it does:
make doctor-q— verify required tools (only prints issues)make setup— install frontend and backend dependenciesmake docker-up— start Docker containersmake docker-status— confirm containers are healthy- (with
all)make run— start backend (:8000) and frontend (:5173) dev servers
When given a Linear ticket ID or branch name, it creates a git worktree first, then bootstraps inside it.
Stop all Docker containers for the project.
/thunderdown
Shows what's running, stops everything, and confirms containers are down.
Run make doctor to verify all dev tools and environment files are configured correctly.
/thunderdoctor
If anything fails, it explains what's missing and provides the exact install command for your platform.
Remove build artifacts (dist, node_modules, Rust target).
/thunderclean
Run type-checking, linting, and format-checking (make check).
/thundercheck
If anything fails, it suggests the appropriate fix command (make lint-fix, make format, etc.).
Stage, commit, and push all current changes in a single command.
/thunderpush # auto-generates a conventional commit message
/thunderpush added login form # uses your hint for the commit message
What it does:
- Inspects staged and unstaged changes
- Stages relevant files by name (never
git add .) - Writes a conventional commit message (
feat:,fix:,refactor:, etc.) - Commits and pushes to the current branch
- Verifies clean state
Rules: one atomic commit per invocation, never amends, never force pushes, never skips pre-commit hooks. If changes span unrelated concerns, it asks whether to split into multiple commits.
Enter a work context — create a worktree, install deps, or bootstrap the environment.
/thunderin my-feature # create worktree for a branch
/thunderin THU-456 # look up the Linear ticket's branch and create a worktree
/thunderin setup # install frontend + backend dependencies
/thunderin up # full bootstrap (doctor, setup, docker)
/thunderin up all # full bootstrap + dev servers
When given a Linear ticket ID, it fetches the ticket's branch name automatically. Reports the worktree path, branch name, and whether it was created from remote or as a new branch.
Leave the current worktree, tear it down, and return to main.
/thunderout
Checks for uncommitted changes and unpushed commits before removing the worktree. Warns and asks for confirmation if work would be lost.
Autonomous coding agent. Give it a Linear task (or let it pick one) and it will implement the feature end-to-end and open a PR.
/thunderbot # auto-select the highest-priority unstarted task
/thunderbot THU-789 # work a specific task
Phases:
- Prerequisites — verifies tools, Linear auth, and GitHub auth
- Task selection — fetches and scores candidate tasks, picks the best one
- Claim — marks the task as started and assigns it to itself
- Isolated environment — creates a git worktree with its own Docker stack on unique ports
- Explore & spec — reads the codebase with parallel agents, writes a spec, posts it to Linear
- Implement — writes tests first, implements changes, commits incrementally
- Draft PR — pushes and opens a draft pull request linked to the Linear ticket
- Quality checks — runs
make check, tests, and the/simplifycode review skill - Finalize — marks the PR as ready, requests review, updates Linear status
- CI — watches CI, fixes failures (up to 3 attempts), addresses review comments
- Cleanup — tears down Docker, reports a summary
Control a background daemon that continuously polls Linear for tasks and works them using /thunderbot.
/thunderbot-daemon start # start polling (every 5 minutes)
/thunderbot-daemon stop # stop the daemon
/thunderbot-daemon status # show daemon status and recent activity
State is persisted at ~/.claude/thunderbot/daemon.state.json and logs at ~/.claude/thunderbot/daemon.log.
Submit feedback about Thunderbolt as a GitHub issue.
/thunderfeedback # prompts for your feedback
/thunderfeedback the sidebar feels cramped on small screens
Creates a labeled issue on the Thunderbolt GitHub repo.
The slash commands in .claude/commands/ are managed via git subtree from the thunderbot repo. You can edit them here as normal files and sync changes in both directions.
# Pull latest skills from thunderbot
git subtree pull --prefix=.claude/commands thunderbot main --squash
# Push local skill edits back to thunderbot
git subtree push --prefix=.claude/commands thunderbot mainIf you haven't added the remote yet:
git remote add thunderbot git@github.com:thunderbird/thunderbot.git