Troubleshooting
Here is a list of common issues and how to resolve them when dealing with Caveman.
"Install script broke. What now?"
Open your agent in this repo and say:
"Read CLAUDE.md and INSTALL.md. Install caveman for me."
Agent read repo. Agent run install. Caveman make agent talk less — agent first job is install caveman to talk less. Snake eat tail.
Still broken? Open an issue.
"I ran the installer but Claude Code isn't talking caveman."
- Run
node cli/install.js --list— confirmclaudeis on the detected list. If not,claudeisn't onPATH. Fix that first. - Open
$CLAUDE_CONFIG_DIR/settings.json(default~/.claude/settings.json) and look for"hooks"containingcaveman-activate.jsandcaveman-mode-tracker.js. If missing, re-run with--force. - Check
$CLAUDE_CONFIG_DIR/.caveman-activeexists with contentfull. If not, the SessionStart hook silent-failed — check$CLAUDE_CONFIG_DIR/hooks/for the js files and trynode $CLAUDE_CONFIG_DIR/hooks/caveman-activate.js < /dev/nullto see if it errors. - Restart Claude Code. The SessionStart hook only fires on session start, not mid-session.
"Hooks failing on Windows."
- Use
install.ps1, notinstall.sh. Git Bash works for the shell version, but the hook side wires PowerShell counterparts (caveman-statusline.ps1). - PowerShell 5.1 minimum. Check with
$PSVersionTable.PSVersion. - If
irm | iexblocks on execution policy:Set-ExecutionPolicy -Scope Process -ExecutionPolicy Bypassfor the install session, then re-run. - Long-running issues: see
docs/install-windows.mdin the repo for manual fallback.
"My settings.json got mangled."
The installer uses a JSONC-tolerant parser (cli/lib/settings.js) so comments and trailing commas don't crash the merge. It also runs validateHookFields() before every write so a malformed hook can't poison the file. If something still went wrong:
- Check for a backup at
$CLAUDE_CONFIG_DIR/settings.json.bak(installer writes one before any merge). - If no backup, restore from your shell history or version control.
- File an issue with the broken
settings.jsoncontent (redacted) — that file passing validation but breaking Claude Code is a bug we want to fix.
"I'm in a managed env where I can't install hooks."
Use the rule-file-only path. Hooks are Claude Code-specific; everything else works via static rule files:
# Just install for one agent, no Claude hooks
node cli/install.js --only cursor
# Or write rule files into the current repo only (no global state)
node cli/install.js --with-init --only cursor --only windsurf
This drops .cursor/rules/caveman.mdc (and friends) into your repo. No hooks, no global config, nothing outside the repo.
"npx skills add errored on a profile slug."
The profile slug must exist in vercel-labs/skills. If a row in the support matrix 404s, the upstream profile was renamed or removed — open an issue, we'll update.