Skip to content

Setup Health Check

The /catalyst-dev:setup-catalyst skill validates your full Catalyst environment and automatically fixes what it can. Use it for new installs, after upgrades, or when something isn’t working.

In Claude Code:

/catalyst-dev:setup-catalyst

The skill runs the diagnostic script, fixes auto-fixable issues, then verifies the fixes.

If you need to run the diagnostic script directly (for troubleshooting without Claude Code):

Terminal window
bash plugins/dev/scripts/check-setup.sh

Or if you installed via the plugin marketplace:

Terminal window
bash ~/.claude/plugins/cache/catalyst/catalyst-dev/*/scripts/check-setup.sh

The script checks that ~/.catalyst/bin/ exists and that all symlinks inside it resolve to their targets. The following CLIs are installed as symlinks:

CLIPurpose
catalyst-commsAgent coordination channels
catalyst-sessionSession lifecycle tracking
catalyst-stateGlobal orchestrator state
catalyst-dbSQLite database operations
catalyst-monitororch-monitor start/stop/status
catalyst-thoughtsHumanLayer thoughts shortcuts
catalyst-claudeClaude Code wrapper with context injection

If ~/.catalyst/bin is not on your PATH, the check prints the one line to add to your shell profile:

Terminal window
export PATH="$HOME/.catalyst/bin:$PATH"

Note: catalyst-events is not yet wired into install-cli.sh’s CLI_NAMES array. Until it is, run it via the full path: plugins/dev/scripts/catalyst-events.

Required CLIs (Git, jq, sqlite3, gh, humanlayer, linearis) and optional tools (agent-browser, sentry-cli, bun, direnv).

The ~/catalyst/ directory structure: database files, worktree root (wt/), event logs (events/).

Whether ~/catalyst/catalyst.db exists, has all tables, is on the correct schema migration, and has WAL mode enabled.

Whether .catalyst/config.json exists in the current directory with the required fields: projectKey, ticketPrefix, teamKey, and stateMap.

Whether ~/.config/catalyst/config-{projectKey}.json exists and has API tokens configured.

Whether OTel Docker containers are running and reachable. This is entirely optional — Catalyst works without observability. If not configured, the check notes it and points to the claude-code-otel repo to set it up. Automatically detects remapped ports from Docker when configured.

Whether the orch-monitor web dashboard is running. This check is classified as warn (not info) when the monitor is not running, because catalyst-events wait-for falls back to 600-second polling intervals when the monitor is absent — significantly increasing latency for event-driven skills. The monitor is optional but strongly recommended for orchestration workflows.

If not running, the check shows the command to start it:

Terminal window
bash plugins/dev/scripts/catalyst-monitor.sh start

Two webhook-related items are verified:

CheckSourceWhat it means if absent
smeeChannelLayer 2 (~/.config/catalyst/config.json)No smee tunnel — monitor falls back to 10-min polling
webhookId (Linear)Layer 2 (~/.config/catalyst/config-<projectKey>.json)Linear events not registered — monitor won’t receive Linear webhook deliveries

Run plugins/dev/scripts/setup-webhooks.sh to provision both. See Webhook Pipeline Setup for the full setup guide.

Whether direnv is installed, library functions (profiles.sh, otel.sh) exist, profile .env files are present, and the current project has a valid .envrc.

Whether thoughts/ is initialized with the required subdirectories and linked to a HumanLayer profile.

Whether the project has a CLAUDE.md with the Catalyst workflow snippet.

The skill automatically fixes these without asking:

IssueFix
Missing ~/catalyst/ directoriesCreates wt/, events/, history/
Missing or incomplete databaseRuns catalyst-db.sh init
WAL mode not setPRAGMA journal_mode=WAL
Missing thoughts/shared/ subdirectoriesCreates research/, plans/, handoffs/, prs/, reports/

These need your input — the skill tells you exactly what to do:

IssueWhat to do
Missing CLI toolsInstall commands are shown (e.g., brew install jq)
Missing API tokensAdd to ~/.config/catalyst/config-{projectKey}.json
No project configRun setup-catalyst.sh or create .catalyst/config.json manually
direnv not installedbrew install direnv + shell hook setup
OTel not configured (optional)See claude-code-otel

When running the script directly:

  • 0 — All checks passed (warnings are OK)
  • N > 0 — N failures found (things that need fixing)