[BREAKGLASS] Offline compatibility inspector for OpenClaw plugins
Go to file
Vincent Koc 93b194cf1e
feat: expose contract capture inventory
Expose reusable contract capture inventory helpers and share synthetic probe defaults instead of duplicating fixture payloads.
2026-04-26 20:20:48 -07:00
.github/workflows ci: add package check workflow 2026-04-26 10:56:18 -07:00
src feat: expose contract capture inventory 2026-04-26 20:20:48 -07:00
test feat: add contract capture inventory 2026-04-26 20:17:20 -07:00
.gitignore feat: scaffold plugin inspector package 2026-04-26 10:55:03 -07:00
AGENTS.md feat: scaffold plugin inspector package 2026-04-26 10:55:03 -07:00
LICENSE feat: scaffold plugin inspector package 2026-04-26 10:55:03 -07:00
package.json feat: expose contract capture inventory 2026-04-26 20:20:48 -07:00
README.md feat: expose contract capture inventory 2026-04-26 20:20:48 -07:00

plugin-inspector

plugin-inspector is the reusable OpenClaw plugin compatibility inspector. It wraps the static inspection, registration capture, and report model prototyped in crabpot into an npm-publishable package.

No npm package has been published yet.

Install

During development, use a local checkout or packed tarball:

npm install --save-dev ../plugin-inspector

Future package name:

npm install --save-dev @openclaw/plugin-inspector

CLI

Inspect a crabpot-compatible fixture config:

plugin-inspector report --config crabpot.config.json --out reports

Fail if expected hooks, registrations, or manifest contracts are missing:

plugin-inspector ci --config crabpot.config.json --out reports --check

Capture a plugin entrypoint in an explicitly isolated execution lane:

PLUGIN_INSPECTOR_EXECUTE_ISOLATED=1 plugin-inspector capture ./dist/index.js

API

import {
  buildCiSummary,
  buildContractCapture,
  createCaptureApi,
  inspectFixtureSet,
  loadInspectorConfig,
  renderContractCaptureMarkdown,
  renderMarkdownReport,
  writeCiSummary,
  writeContractCapture,
  writeReport,
} from "@openclaw/plugin-inspector";

const config = await loadInspectorConfig("crabpot.config.json");
const report = await inspectFixtureSet(config);
await writeReport(report, { outDir: "reports" });

const summary = await buildCiSummary({ reportsDir: "reports" });
await writeCiSummary(summary);

const capture = buildContractCapture({ report });
await writeContractCapture(capture);

Scope

Default inspection is offline and credential-free. It reads manifests, package metadata, and source files, then reports observed api.on(...), api.register*, define*, SDK imports, and manifest contracts.

Cold import capture and synthetic contract probes are explicit opt-in modes. Live lanes will stay credential-gated and must never run in default CI.