[BREAKGLASS] Compatibility testbed for OpenClaw community plugins and plugin seams
Go to file
2026-04-25 13:01:25 -07:00
.github test(contract): gate issue evidence coverage 2026-04-25 12:53:30 -07:00
docs test(contract): gate issue evidence coverage 2026-04-25 12:53:30 -07:00
plugins chore: initialize crabpot compat testbed 2026-04-25 12:11:50 -07:00
reports feat(report): find package contract issues 2026-04-25 13:01:25 -07:00
scripts feat(report): find package contract issues 2026-04-25 13:01:25 -07:00
test feat(report): validate registrars against openclaw api 2026-04-25 12:56:35 -07:00
.gitignore chore: initialize crabpot compat testbed 2026-04-25 12:11:50 -07:00
.gitmodules chore: initialize crabpot compat testbed 2026-04-25 12:11:50 -07:00
AGENTS.md chore: initialize crabpot compat testbed 2026-04-25 12:11:50 -07:00
crabpot.config.json test: inspect fixture hook seams 2026-04-25 12:20:37 -07:00
crabpot.schema.json test: inspect fixture hook seams 2026-04-25 12:20:37 -07:00
LICENSE chore: initialize crabpot compat testbed 2026-04-25 12:11:50 -07:00
package.json test(contract): gate issue evidence coverage 2026-04-25 12:53:30 -07:00
README.md test(contract): gate issue evidence coverage 2026-04-25 12:53:30 -07:00

crabpot

Compatibility trap for OpenClaw plugin contracts.

crabpot keeps a curated set of real community plugins pinned under plugins/ and runs seam-focused compatibility checks against OpenClaw plugin APIs. The goal is to catch contract drift before external plugin authors do.

What this tests

  • plugin manifests and install metadata
  • native tool registration and dynamic tool schemas
  • channel registration and message delivery seams
  • lifecycle hooks such as gateway_start, gateway_stop, and before_install
  • agent hooks such as before_tool_call, before_prompt_build, llm_input, llm_output, and agent_end
  • provider capability registration such as speech/TTS
  • plugin-owned services, routes, subprocesses, and async job patterns

Layout

crabpot/
  crabpot.config.json        fixture manifest and seam tags
  plugins/                   external plugin repositories as git submodules
  reports/                   generated compatibility report artifacts
  scripts/                   manifest and fixture helpers
  test/                      repo-level checks
  docs/                      operating notes and seam matrix

Quick start

npm test
node scripts/list-fixtures.mjs
node scripts/sync-fixtures.mjs --check
npm run report
npm run contract:coverage

To materialize the fixture repos as submodules:

node scripts/sync-fixtures.mjs --materialize
git submodule update --init --recursive

That command mutates .gitmodules and plugins/*. Commit those changes when you intentionally pin or update fixture revisions.

Compatibility report

npm run report writes:

  • reports/crabpot-report.md
  • reports/crabpot-report.json
  • reports/crabpot-issues.md

The report is the local review surface for hard breakages, warnings, raw seam logs, OpenClaw compatibility-record coverage, suggestions for compat-layer work, issue findings, contract-probe backlog, and the decision matrix. It defaults to the OpenClaw checkout configured in crabpot.config.json and can be pointed elsewhere:

node scripts/generate-report.mjs --openclaw ../openclaw
node scripts/generate-report.mjs --check --openclaw ../openclaw

Fixture policy

Fixtures should earn their spot by covering a distinct seam. Popularity is a useful signal, but a small plugin that exercises a rare hook is more valuable than the fourth web-search wrapper.

The first fixture set intentionally covers channels, dynamic tools, LLM observation, diagnostics, gateway-owned services, async jobs, provider capabilities, and security/policy hooks.