What’s New

caveman v1.8.0

v1.8.0

v1.8.0 — Lobster grunt. Opencode grunt. Brain still big.

Added
  • Add OpenClaw (lobster) as a first-class always-on agent target via skill drop at ~/.openclaw/workspace/skills/caveman/SKILL.md and SOUL.md marker-fenced bootstrap block
  • Add opencode native plugin as always-on replacement for npx-skills fallback, with session.created and tui.prompt.append lifecycle hooks
  • Add six opencode slash-command prompt templates (/caveman, /caveman-commit, /caveman-review, /caveman-compress, /caveman-stats, /caveman-help)
  • Add three cavecrew subagents for opencode plugin
  • Add seven skill folders for opencode (caveman, caveman-commit, caveman-review, caveman-help, caveman-stats, caveman-compress, cavecrew)
  • Add Tier-3 always-on ruleset in opencode AGENTS.md fenced with <!-- caveman-begin --> / <!-- caveman-end --> markers
  • Add caveman-shrink MCP server to opencode.json (enabled by default via --with-mcp-shrink)
  • Add seven new tests covering --only typo validation, --config-dir ~ expansion, --help scope disclosure, malformed-input safety, AGENTS.md fence assertion, plugin.js hand-edit survival, and fenced uninstall preservation
Changed
  • Consolidate repository layout by moving hooks/, rules/, tools/, mcp-servers/ under src/
  • Change opencode plugin payload to no longer overwrite on reinstall, requiring --force flag to update user edits
  • Change opencode AGENTS.md to use fence markers for uninstall, preserving legacy un-fenced blocks by default unless --force is passed
  • Update --config-dir help text to disclose that it does not sandbox claude plugin install, gemini extensions install, opencode (XDG_CONFIG_HOME), or openclaw (OPENCLAW_WORKSPACE)
Fixed
  • Fix downloadTo Promise that was unawaited on https fallback path, causing silent partial install when curl was missing
  • Fix --only <typo> to validate against provider matrix and exit with code 2 instead of silently exiting 0
  • Fix .bak files being silently overwritten on every reinstall by preserving them on first install only
  • Fix opencode plugin payload (plugin.js, package.json, caveman-config.cjs) being rewritten on every reinstall by honoring --force flag
  • Fix uninstall to probe claude plugin list and gemini extensions list before firing uninstaller to eliminate stderr noise on cold uninstalls
  • Fix uninstall to also run claude mcp remove caveman-shrink when the subcommand exists
  • Fix removeCavemanHooks to no longer crash on malformed pre-existing settings.hooks
  • Fix --config-dir value to be ~-expanded

⚠️ v1.8.0's curl|bash one-liner was broken (BASH_SOURCE unbound + stray -- to parseArgs). Use v1.8.1 instead — same release contents plus the hotfix.

Brain still big. Two more mouths now small.

This release teaches caveman to two new agents: OpenClaw (the lobster) and opencode (the TUI). Both now grunt fluent caveman from message one — no /caveman per session, no setup nag.

Plus a stack of installer fixes from a top-to-bottom review of bin/install.js.

What's new
🦞 OpenClaw — first-class always-on target

npx -y github:JuliusBrussee/caveman -- --only openclaw and the lobster talks like a caveman every turn.

Two tiny writes do the work:

  • Skill drop at ~/.openclaw/workspace/skills/caveman/SKILL.md — spec-correct frontmatter (version, always: true), discoverable by openclaw skills list.
  • SOUL.md nudge — marker-fenced bootstrap block at ~/.openclaw/workspace/SOUL.md, auto-injected each turn under "Project Context". Stays well under OpenClaw's 12K-per-file cap.

Idempotent on both writes. Uninstall strips the skill folder + the marker block, leaves your other workspace content alone. Custom workspace via OPENCLAW_WORKSPACE.

See README's Lobster, Meet Rock section for the longer pitch.

🤖 opencode — native plugin replaces npx-skills fallback

opencode goes from "manual /caveman per session" to always-on. The installer drops:

  • A real opencode plugin (~/.config/opencode/plugins/caveman/) using session.created and tui.prompt.append lifecycle hooks
  • Six slash-command prompt templates (/caveman, /caveman-{commit,review,compress,stats,help})
  • Three cavecrew subagents
  • Seven skill folders (caveman, caveman-commit/review/help/stats/compress, cavecrew)
  • A Tier-3 always-on ruleset in AGENTS.md, fenced with <!-- caveman-begin --> / <!-- caveman-end --> markers (clean uninstall later)

opencode.json gets patched with the plugin entry plus the caveman-shrink MCP server (when --with-mcp-shrink is on, which is the default).

opencode reaches Tier-1 minus the statusline (opencode's TUI exposes no plugin-writable badge).

🛠️ Installer rewrite + correctness fixes

The unified bin/install.js got reviewed end-to-end. What changed in this release:

Bug fixes (high-severity)

  • downloadTo Promise was unawaited on the https fallback path — silent partial install if curl was missing. Now properly awaited.
  • --only <typo> used to exit 0 with no work done. Now validates against the provider matrix and exits 2 with error: unknown agent: <id>.
  • .bak files were silently overwritten on every reinstall, destroying recovery. Now preserved on first install only.
  • opencode plugin payload (plugin.js, package.json, caveman-config.cjs) used to be rewritten on every reinstall, wiping user edits. Now honors the same !--force skip the rest of the payload uses.
  • --config-dir help text now discloses scope honestly: it does not sandbox claude plugin install, gemini extensions install, opencode (XDG_CONFIG_HOME), or openclaw (OPENCLAW_WORKSPACE).

Idempotency / hygiene

  • Uninstall now probes claude plugin list / gemini extensions list before firing the uninstaller — no more "Plugin not installed" stderr noise on cold uninstalls.
  • Uninstall now also runs claude mcp remove caveman-shrink (when the subcommand exists).
  • opencode AGENTS.md is now fenced with <!-- caveman-begin --> / <!-- caveman-end -->. Uninstall strips just the fenced block, preserving any user content above and below it.
  • --config-dir value is now ~-expanded.
  • removeCavemanHooks no longer crashes on malformed pre-existing settings.hooks (e.g. when a user hand-edited and broke things).
🧹 Repo layout consolidated

hooks/, rules/, tools/, mcp-servers/ all moved under src/. Sources of truth are at the top of the tree; distribution mirrors live below. See CLAUDE.md for the new map.

Tests

50/50 passing (npm test). Up from 43 in v1.7.0 — seven new tests cover:

  • --only typo validation
  • --config-dir ~ expansion
  • --help discloses --config-dir scope
  • removeCavemanHooks malformed-input safety
  • AGENTS.md fence assertion
  • opencode plugin.js hand-edit survives reinstall (without --force)
  • AGENTS.md fenced uninstall preserves user prefix and suffix
Verify after upgrade
node bin/install.js --list      # 34 providers; OpenClaw + opencode visible
node bin/install.js --help      # --config-dir scope is now spelled out

For the lobster: npx -y github:JuliusBrussee/caveman -- --only openclaw.

For opencode: npx -y github:JuliusBrussee/caveman -- --only opencode (needs a local clone or npx-extracted repo for the native plugin payload).

Upgrade

Existing users:

npx -y github:JuliusBrussee/caveman

Auto-detects everything you already had + picks up OpenClaw and opencode if present. Safe to re-run.

Behavior changes worth knowing
  • opencode plugin payload no longer overwrites on reinstall. If you've edited ~/.config/opencode/plugins/caveman/plugin.js and want the new version, pass --force. Without --force, your edits stay.
  • opencode AGENTS.md from v1.7.x and earlier was un-fenced. Reinstall won't replace a legacy block by default; pass --force to rewrite with the fenced version. Uninstall still removes legacy blocks correctly.
Caveman ecosystem
  • caveman (you here) — output compression
  • cavemem — cross-agent memory
  • cavekit — spec-driven build loop

One rock. Two rock. Three rock. That it.

View original