From orbit
This skill should be used when the user says '/orbit', '/orbit init', '/orbit status', '/orbit test', '/orbit staging', '/orbit use', '/orbit sidecars', '/orbit logs', '/orbit stop', '/orbit check', '/orbit templates', asks about environment status or switching, wants to run tests in Docker containers, needs to manage dev/test/staging environments, or asks about sidecar services like PostgreSQL or Redis for their project.
How this skill is triggered — by the user, by Claude, or both
Slash command
/orbit:orbitThe summary Claude sees in its skill listing — used to decide when to auto-load this skill
Ambient environment management for `~/Source/` projects.
Ambient environment management for ~/Source/ projects.
The Orbit MCP server provides these tools. Prefer MCP tools when available:
| Tool | Purpose |
|---|---|
orbit_status | Get current environment status |
orbit_switch_env | Switch to dev/test/staging |
orbit_get_state | Query projects, audit log, registry |
orbit_sidecars | List/start/stop sidecars |
orbit_stop_all | Stop all Orbit containers |
Parse user input:
/orbit or /orbit status → Status/orbit init → Init/orbit test [--fresh] → Test Suite/orbit staging → Staging/orbit use <env> → Use/orbit sidecars [action] [name] → Sidecars/orbit logs [limit] → Logs/orbit stop → Stop All/orbit check → Parity Check/orbit templates → TemplatesShow current environment state.
Call orbit_status with project_path = <cwd>
# Check initialization
if [ ! -f ".orbit/config.json" ]; then
echo "Project not initialized. Run /orbit init"
exit 1
fi
# Show config
cat .orbit/config.json
# Query state
sqlite3 ~/.orbit/state.db "SELECT current_env, last_activity FROM project_state WHERE project = '$(pwd)';"
sqlite3 ~/.orbit/state.db "SELECT timestamp, command, success FROM audit_log WHERE project = '$(pwd)' ORDER BY timestamp DESC LIMIT 5;"
Project: <name>
Type: <node|python|go|rust>
Environment: <dev|test|staging>
Sidecars: <running sidecars or "none">
Recent activity:
<timestamp> <command> <success/fail>
...
Initialize Orbit for current project.
${CLAUDE_PLUGIN_ROOT}/scripts/detect-project.sh .
Returns type|supported (e.g., node|yes).
Use AskUserQuestion:
question: "Detected project type: <type>. Initialize Orbit?"
options:
- "Yes, initialize as <type>"
- "No, cancel"
If unsupported (swift|no or xcode|no):
Orbit currently supports: Node.js, Python, Go, Rust
Swift/Xcode support planned for future release.
Stop here.
${CLAUDE_PLUGIN_ROOT}/scripts/orbit-init.sh . <type>
Orbit initialized for <project>
Type: <type>
Config: .orbit/config.json
Edit .orbit/config.json to add sidecars if needed.
Run tests in fresh Docker container.
${CLAUDE_PLUGIN_ROOT}/scripts/orbit-test.sh [--fresh] .
NODE_ENV=test and CI=trueDocker required for /orbit test.
Install: brew install --cask docker (macOS)
sudo apt-get install docker.io (Linux)
Switch to staging environment (Docker with staging env vars).
Call orbit_switch_env with:
environment: "staging"
project_path: <cwd>
# Check Docker
${CLAUDE_PLUGIN_ROOT}/scripts/check-docker.sh check || {
echo "Docker required for staging environment"
exit 1
}
# Start sidecars
SIDECARS=$(python3 -c "import json; print(' '.join(json.load(open('.orbit/config.json')).get('sidecars', [])))")
for sidecar in $SIDECARS; do
docker compose -f ${CLAUDE_PLUGIN_ROOT}/docker/docker-compose.yml --profile sidecar-$sidecar up -d
done
# Update state
sqlite3 ~/.orbit/state.db "UPDATE project_state SET current_env = 'staging', last_activity = datetime('now') WHERE project = '$(pwd)';"
Switched to staging environment (Production-Mimic)
Sidecars started: <list>
NODE_ENV: production
CI: true
Orbit no longer manages production deployments directly. Staging is the final high-fidelity local validation step.
Manually override environment (dev/test/staging).
Call orbit_switch_env with:
environment: <env>
project_path: <cwd>
Switch to dev:
# Stop containers (dev is local)
docker compose -f ${CLAUDE_PLUGIN_ROOT}/docker/docker-compose.yml down 2>/dev/null || true
# Update state
sqlite3 ~/.orbit/state.db "UPDATE project_state SET current_env = 'dev', sidecars_running = '[]', last_activity = datetime('now') WHERE project = '$(pwd)';"
echo "Switched to dev (local) environment"
Switch to test/staging:
# Requires Docker
${CLAUDE_PLUGIN_ROOT}/scripts/check-docker.sh check || exit 1
# Start sidecars
# ... (same as staging)
# Update state
sqlite3 ~/.orbit/state.db "UPDATE project_state SET current_env = '<env>', last_activity = datetime('now') WHERE project = '$(pwd)';"
Manage sidecar services.
# List
Call orbit_sidecars with action: "list"
# Start
Call orbit_sidecars with action: "start", sidecar: "<name>"
# Stop
Call orbit_sidecars with action: "stop", sidecar: "<name>"
| Name | Service | Port |
|---|---|---|
| postgres | PostgreSQL 15 | 5432 |
| redis | Redis 7 | 6379 |
| mysql | MySQL 8 | 3306 |
| mongodb | MongoDB 7 | 27017 |
| rabbitmq | RabbitMQ 3 | 5672, 15672 |
| aws | LocalStack | 4566 |
Edit .orbit/config.json:
{
"sidecars": ["postgres", "redis"]
}
# Start
docker compose -f ${CLAUDE_PLUGIN_ROOT}/docker/docker-compose.yml --profile sidecar-<name> up -d
# Stop
docker compose -f ${CLAUDE_PLUGIN_ROOT}/docker/docker-compose.yml --profile sidecar-<name> down
# Status
docker compose -f ${CLAUDE_PLUGIN_ROOT}/docker/docker-compose.yml ps
Show recent audit log entries.
Call orbit_get_state with:
query_type: "audit"
project_path: <cwd>
limit: 20
sqlite3 -header -column ~/.orbit/state.db \
"SELECT timestamp, command, environment,
CASE success WHEN 1 THEN 'ok' ELSE 'fail' END as result,
duration_ms
FROM audit_log
WHERE project = '$(pwd)'
ORDER BY timestamp DESC
LIMIT 20;"
Recent activity for <project>:
TIMESTAMP COMMAND ENV RESULT DURATION
2024-01-15 10:30:00 test test ok 12500ms
2024-01-15 10:25:00 init dev ok -
...
Stop all Orbit containers.
Call orbit_stop_all with confirm: true
docker compose -f ${CLAUDE_PLUGIN_ROOT}/docker/docker-compose.yml down
# Clear sidecar state for all projects
sqlite3 ~/.orbit/state.db "UPDATE project_state SET sidecars_running = '[]';"
echo "Stopped all Orbit containers"
Check version parity between local toolchain and project requirements.
${CLAUDE_PLUGIN_ROOT}/scripts/check-parity.sh .
{
"status": "ok|warning",
"project_type": "node",
"tool": "node",
"local_version": "20.10.0",
"required_version": "20",
"warnings": []
}
Version parity warning:
Project expects Node 20, you have Node 18
Consider updating or use /orbit test for consistent environment
Copy GitHub Actions workflow templates to project.
| Template | File | Purpose |
|---|---|---|
| ci | ci.yml | Basic CI (build + test) |
| vercel | vercel-deploy.yml | Deploy to Vercel |
| railway | railway-deploy.yml | Deploy to Railway |
mkdir -p .github/workflows
cp ${CLAUDE_PLUGIN_ROOT}/templates/<template>.yml .github/workflows/
/orbit templates ci
> Copies ci.yml to .github/workflows/ci.yml
Edit to uncomment your project type (Node/Python/Go/Rust)
Orbit detects monorepos/workspaces automatically during /orbit init:
| Type | Detection |
|---|---|
| npm | package.json with workspaces |
| pnpm | pnpm-workspace.yaml |
| cargo | Cargo.toml with [workspace] |
| go | go.work file |
.orbit/config.json${CLAUDE_PLUGIN_ROOT}/scripts/detect-workspace.sh .
# Returns: type|subprojects (e.g., "npm|packages/a,packages/b")
| Command | Action |
|---|---|
/orbit | Show status |
/orbit init | Initialize project |
/orbit test | Run tests in Docker |
/orbit test --fresh | Run tests (no cache) |
/orbit staging | Switch to staging |
/orbit use dev | Switch to local dev |
/orbit use test | Switch to test env |
/orbit sidecars | List sidecars |
/orbit sidecars start postgres | Start PostgreSQL |
/orbit sidecars stop redis | Stop Redis |
/orbit logs | Show audit history |
/orbit stop | Stop all containers |
/orbit check | Version parity check |
/orbit templates ci | Copy CI template |
npx claudepluginhub shihwesley/shihwesley-plugins --plugin orbitDefines standardized development environments or onboards developers by generating setup scripts, container configs, CI workflows, toolchain pins, and dev-setup documents.
Generates CI/CD workflows, Dockerfiles, and deployment configs from a tech stack definition. Use when scaffolding infrastructure for a project.
Generates bash scripts for dev server lifecycle (start/stop/status/ports) from detected project structure and package manager (pnpm/bun/yarn/npm/Cargo/Go).