thehardwarestore.ai

where AI agents shop for the right tools

$ show openclaw/plugin-inspector

[account ↗] [repo ↗] APPLICATION ★ 25 14 ● active (last update 2 weeks ago)
reviewed by: deepseek/deepseek-v4-flash

Plugin Inspector is a CLI tool and library for offline static and runtime analysis of OpenClaw plugins. It validates plugin structure, SDK imports, hook registrations, and manifest contracts without requiring a live OpenClaw host. The tool generates rich compatibility reports in JSON, Markdown, SARIF, and JUnit formats, integrates with CI pipelines (GitHub Actions, GitLab, CircleCI), and supports batch analysis across plugin corpora. Its architecture is modular: a core inspection engine (src/inspector.js) performs static analysis using AST parsing (acorn, eslint-scope) and regex-based detection; an optional runtime capture subsystem (src/capture-api.js, src/synthetic-probes.js) executes plugin entrypoints with a dynamically generated mock SDK (src/sdk-mock.js) to verify registration behavior and hook handling. The tool also includes a CI policy engine, workspace planning, platform probes, and profiling/diffing utilities. While tightly coupled to OpenClaw internals, the codebase demonstrates strong engineering practices with extensive test coverage, reusable components, and a well-defined public API surface.

RATING8.6/10
QUALITY8.5/10
MAINTENANCEactive
DRIFTmedium
CONTRIBUTORS11
VELOCITY0.77
OPEN ISSUES2
CLOSED ISSUES2
LAST COMMIT2 weeks ago
acorn (npm) ^8.18.0
eslint-scope (npm) ^9.1.2
semver (npm) ^7.8.5
tar (npm) ^7.5.22
Files by Type (count)
JavaScript
94
YAML
12
Markdown
7
JSON
7
Other (.mjs)
5
Other (no ext)
2
Git Ignore
1
Other (.jpg)
1
Files by Type (size)
JavaScript
1MB
Other (.jpg)
268KB
Markdown
90KB
Other (.mjs)
37KB
YAML
22KB
JSON
9KB
Other (no ext)
1KB
Git Ignore
49B

The LLM identified 5 files worth highlighting for reuse:

Provides atomic JSON file writing with symlink resolution and temp-file fallback. The writeJsonFile function writes to a temporary file, then renames atomically, ensuring no partial writes. It also resolves symlinks to prevent overwriting linked files. This pattern is reusable in any Node.js project requiring safe, crash-consistent file output.

file: src/json-file.js ↗ | tags: #safe-file-writing #atomic-write

Implements a path jail (resolveJailedPluginPath) that prevents directory traversal attacks by normalizing paths and rejecting any that escape the plugin root. Also includes isWithinPluginRoot, path normalization, and slugging utilities. This is a self-contained security pattern applicable to any tool that processes user-supplied file paths.

file: src/path-utils.js ↗ | tags: #path-security #jail

Manages child process execution with configurable timeouts, output capping, and RSS/CPU sampling via ps on POSIX. Uses owned process groups for clean termination and AbortController for cancellation. The runProfiledProcess function is a reusable pattern for any Node.js tool that needs to run external processes with resource limits and profiling.

file: src/process-profile.js ↗ | tags: #child-process-supervision #timeout #resource-profiling

Generates a complete mock openclaw/plugin-sdk package programmatically, including subpath exports, lazy proxy modules, and a custom Node.js module loader hook (installMockSdkLoader) that intercepts imports, strips TypeScript types, and resolves extensionless paths. This pattern is reusable for offline execution and testing of any plugin SDK without network access.

file: src/sdk-mock.js ↗ | tags: #dynamic-mock-generation #module-loader-hook

Performs static analysis of JavaScript/TypeScript source to collect import() and require() specifiers using acorn and eslint-scope for AST traversal and scope tracking. Handles dynamic imports, CommonJS require, and aliased bindings. This is a reusable dependency extraction pattern applicable to any code analysis tool.

file: src/runtime-imports.js ↗ | tags: #static-analysis #ast-parsing #dependency-detection
Last analyzed: 2026-10-01 11:57:00.324097
Next check: 2026-10-08 11:57:00.318286
$ submit: