| name | local-dev |
| description | Local Dev Skill: Sets up and manages local development environments by profile name. MANDATORY TRIGGERS: setup, local dev, start the app, set up my local env, dev environment, docker compose issues, port conflicts, container problems, dev server won't start, fresh setup, environment variables, migration errors, npm install problems, health checks, daily startup, rebuild docker, check if everything is running. |
| argument-hint | <profile> [fresh|daily|reset|check] |
Bobby Local Skill
Sets up the local development environment for a named profile. Run /bobby-local <profile> to stand up all repos and services for that project.
Before Starting
- Check learnings — Read
.claude/skills/bobby-local/learnings.md + .claude/skills/bobby-local/learnings.local.md
- Parse the argument — Extract the profile name and optional action:
/bobby-local myproject → profile myproject, action fresh (default for first run) or daily (if already set up)
/bobby-local myproject reset → profile myproject, action reset
/bobby-local myproject check → profile myproject, action check
/bobby-local with no argument → list available profiles
Safety Rules
<safety_rules>
- Never delete
.env files or credentials — they contain secrets that cannot be regenerated.
- Never run
docker compose down -v without explicit user confirmation — it destroys database volumes.
- Never run destructive database commands (
rails db:reset, rails db:drop, DROP TABLE, etc.) — these destroy data. Use safe alternatives like rails db:prepare or migrations.
- Do not modify CI configs, production env vars, or deploy scripts.
- Do not install global packages or modify system-level configuration.
</safety_rules>
No Profiles Configured
Add a local block to .bobbyrc.yml to define named profiles:
local:
myproject:
subdomain: myproject
compose_project: myproject_dev
ports: { api: 3000, ui: 3001 }
That's it — commands are auto-generated from your stack and repos config. Add steps to override:
local:
myproject:
ports: { api: 3000, ui: 3001 }
steps:
fresh:
- name: Start backend
command: docker compose up --build
cwd: backend-api
- name: Start frontend
command: npm run dev
cwd: frontend-ui
Falling Back to Default Commands
Running the Setup
Action: check (default when environment exists)
- Run every health check for the profile
- Report which services are up/down
- Check for pending database migrations
- Verify required env files exist
Action: fresh (default for first run)
- Verify prerequisites are installed
- Check env files exist (prompt user to create from templates if missing)
- Execute each step in order
- Run all health checks to verify
- Report final status
Action: daily
- Execute each step in order
- Check for pending migrations:
git log --oneline origin/main..HEAD -- db/migrate
- Run health checks
- Report status
Action: reset
- Confirm with user — list what will be destroyed
- Execute reset steps
- Run fresh steps to rebuild
- Run health checks to verify
Troubleshooting
If a health check fails:
- Check if the process is running —
docker compose ps or check process list
- Check logs — Look for errors in service logs
- Check ports — Ensure no port conflicts:
lsof -i :<port>
- Check env vars — Verify required environment files exist and have required values
- Check dependencies — Ensure all packages are installed and up to date
If you discover a recurring issue or fix, save it:
bobby learn bobby-local "pattern" "description"
Completing
After any action:
- Run all health checks and report results
- If something failed, diagnose and fix it or report the issue to the user
- Log any new learnings discovered during setup
Project overrides
If .claude/skills/bobby-local/SKILL.local.md exists, read it and follow it. It holds this
project's own instructions for this skill and wins wherever it conflicts with anything
above.
SKILL.md is shipped by Bobby and is replaced on every upgrade — edits here are lost.
SKILL.local.md is yours and is never overwritten.