openclaw-test-performance skill
Benchmark, diagnose, and optimize OpenClaw test and plugin-suite runtime, import hotspots, CPU/RSS, heap growth, and slow coverage paths.
Is the openclaw-test-performance skill safe?
Clean: nothing in its files matched our rules. We read 2 files in the folder on 2026-11-06.
No findings.
Install the openclaw-test-performance skill
A skill is a folder. Copy it into your agent's skills folder and the agent loads it when the task matches its description.
git clone --depth 1 https://github.com/openclaw/openclaw.git /tmp/openclaw mkdir -p ~/.claude/skills cp -r /tmp/openclaw/.agents/skills/openclaw-test-performance ~/.claude/skills/openclaw-test-performance
In the Claude apps, zip the folder and upload it from the Skills settings. The folder on GitHub
The instructions your agent would load
SKILL.md as published, without the frontmatter. Read it on GitHub
OpenClaw Test Performance
Use evidence first. The goal is real pnpm test, plugin-suite, and plugin-inspector speed/RSS improvement with coverage intact, not runner tuning by guesswork.
Workflow
- Read the relevant local AGENTS.md files before editing:
laziness.
- src/agents/AGENTS.md for agent/import hotspots.
- src/channels/AGENTS.md and src/plugins/AGENTS.md for plugin/channel
src/channels/plugins/contracts/test-helpers/AGENTS.md for shared contract helpers.
- src/gateway/AGENTS.md for server lifecycle tests.
- test/helpers/AGENTS.md and
- src/infra/outbound/AGENTS.md for outbound/media/action tests.
- Establish a baseline before changing code:
for full-suite ranking.
- Prefer pnpm test:perf:groups --full-suite --allow-failures --output
test:extensions:batch or plugin-inspector command before jumping to the full extension sweep.
- For bundled plugin breadth, run the smallest relevant pnpm
/usr/bin/time -l pnpm test --maxWorkers=1 --reporter=verbose
- For a scoped hotspot use:
OPENCLAWVITESTIMPORTDURATIONS=1 OPENCLAWVITESTPRINTIMPORT_BREAKDOWN=1.
- For import-heavy suspicion add:
- Separate wall/runner noise from real file cost:
max RSS.
- Compare Vitest duration, test body timing, import breakdown, wall time, and
passed, capture that as harness/noise and verify the suspect file directly.
- Re-run single files when grouped/full-suite numbers look stale or noisy.
- If a full-suite grouped run reports a lane failure but JSON says tests
- Pick the next attack by return and risk:
extension-batch run to load broad runtime.
- High return: one file/test dominates seconds or RSS and has a clear root.
- High leverage: one plugin or SDK barrel causes every plugin-inspector or
setup hints, registry fixtures, or test server lifecycle.
- Lower risk: static descriptors, target parsing, routing, auth bypass,
contracts, or broad production refactors.
- Higher risk: real memory/runtime behavior, live providers, protocol
- Fix the root cause, not the symptom:
reused by full runtime and fast paths.
- Move static metadata/parsing into narrow helpers or lightweight artifacts
and pure helpers over broad mocks.
- Prefer dependency injection, loaded-plugin-only lookup, explicit fixtures,
and keep runtime plugin loads behind explicit execution boundaries.
- Reuse suite-level servers/clients when a fresh handshake is irrelevant.
- Keep schedulers/background loops off unless the test proves scheduling.
- In plugin paths, move static metadata into manifest/lightweight artifacts
- Preserve coverage shape:
composition is extracted into a named helper and tested.
- Do not delete a slow integration proof unless the exact production
- Keep one cheap integration smoke when cross-component wiring matters.
- State explicitly what incidental coverage was removed, if any.
percent gain.
- Re-benchmark the same command after the change and compute seconds plus
Include before/after commands, artifacts, coverage notes, verification, and next attack order.
- Update the running report when requested or when this thread is tracking one.
user asked for commits/pushes. Stage only files touched for this attack.
- Stage the intended paths, commit with standard Git, and push when the
Plugin-Suite Workflow
Use this section when perf work involves bundled plugins, plugin-inspector, SDK barrels, package-boundary tests, or extension suites.
- Map the suite shape first:
pnpm run test:extensions:package-boundary:compile
- source tests: pnpm test extensions/ or pnpm test:extensions:batch
- package boundaries: pnpm run test:extensions:package-boundary:canary and
keep wrappers thin and collect peak RSS when the command supports it.
- all bundled source tests: pnpm test:extensions
- plugin import memory: pnpm test:extensions:memory -- --json .artifacts/test-perf/extensions-memory.json
- plugin-inspector/report work: keep report primitives in plugin-inspector;
- Start narrow, then widen:
and feature plugins.
- one plugin changed: run that plugin's tests and plugin-inspector slice.
- SDK/public barrel changed: add representative provider, channel, memory,
proof as needed.
- loader/runtime mirror changed: add package-boundary checks and build/package
pnpm test:extensions.
More skills from openclaw/openclaw
- A1passwordSet up and use 1Password CLI for sign-in, desktop integration, and reading or injecting secrets.
- Aacp-routerRoute plain-language requests for Claude Code, Cursor, Copilot, OpenClaw ACP, OpenCode, Gemini CLI, Grok Build, Qwen, Kiro, Kimi, iFlow, Factory Droid, Kilocode, or explicit ACP harness work into either OpenClaw ACP runtime sessions or direct acpx-driven sessions ("telephone game" flow). For coding-agent thread requests, read this skill first, then use only `sessions_spawn` for thread creation. Codex chat binding defaults to the native Codex app-server plugin unless ACP is explicit or background spawn needs ACP.
- Aadd-model-providerAdd and live-prove a model provider with non-interactive config one-liners, without exposing credentials.
- Aagent-transcriptRequested GitHub PR/issue agent transcripts: redact, trim, preview, and insert safely.
- Aapple-notesCreate, view, edit, delete, search, move, or export Apple Notes via the memo CLI on macOS.
- Aapple-remindersList, add, edit, complete, or delete Apple Reminders and reminder lists via remindctl.
- Aauto-qaRun OpenClaw-wide autonomous QA and live/stress campaigns across independent subsystem lanes, with verified fixes and a resumable evidence report.
- AautoreviewStructured code review through the shared OpenClaw agent-skills installation.
- Abear-notesCreate, search, and manage Bear notes via grizzly CLI.
- Ablock-kitUse proactively for structured or interactive Slack replies, and when asked to author or validate native Slack Block Kit JSON.
- AblogwatcherMonitor blogs and RSS/Atom feeds for updates using the blogwatcher CLI.
- AblucliBluOS CLI (blu) for discovery, playback, grouping, and volume.