Community程式設計與開發github.com

release-openclaw-plugin-testing

規劃並執行 OpenClaw 發行前的外掛程式驗證,涵蓋捆綁外掛程式、封包成品、生命週期指令、doctor/fix、組態往返、閘道啟動、SDK 相容性、Docker E2E、封包驗收及 Testbox 驗證。

release-openclaw-plugin-testing 是什麼?

此技能旨在於 OpenClaw 正式發行前,對外掛程式系統進行全面性的產品級驗證。它不僅執行源碼層級的測試,更專注於驗證外掛程式作為產品的完整性,包含捆綁外掛程式的完整生命週期管理(安裝、檢查、啟用、停用、卸載),以及從全新家目錄(clean HOME)驗證封包成品的行為。此外,它也涵蓋 doctor/fix 指令的配置驗證與冪等性、組態的發現與往返驗證、閘道啟動與引導程序、以及公開 SDK 對真實外部外掛程式的相容性。該技能優先建議使用 GitHub Actions 進行封包驗收,以獲得最高的產品信心,並在需要時利用專用的 Linux worker 或 Testbox 環境來執行 Docker 相關的測試。對於需要更高信心度的場景,它提供了詳細的「新 Testbox Harness 計劃」,可以建立一個全新的 Docker 測試通道,逐個外掛程式驗證其完整生命週期。此技能主要用於 CLI 工具(如 Claude Code、Cursor 等)與 OpenClaw 專案整合時,開發者要求進行外掛程式發行信心評估或發行前測試規劃的場景。

相容平台✓Claude Code✓Codex CLI~Cursor
npx skills add https://github.com/clawdbot/clawdbot/tree/main/.agents/skills/release-openclaw-plugin-testing

Installed? Explore more 程式設計與開發 skills: steipete/bluebubbles, steipete/eightctl, steipete/blucli · View all 6 →

在你喜歡的 AI 中提問

開啟一個已預先載入此 Agent Skill 的新對話。

說明文件

OpenClaw 發行前外掛程式測試

當使用者要求外掛程式發行信心、外掛程式生命週期掃描、封包成品外掛程式驗證,或「發行前我們還應該測試什麼?」時,使用此技能。它補充了 openclaw-testing 技能;在選擇最便宜的可靠執行器或除錯失敗的測試通道時,也應一併使用該技能。

目標

證明外掛程式系統作為一個產品表面,而不僅僅是原始碼測試:

  • 捆綁外掛程式生命週期:安裝、檢查、啟用、停用、卸載
  • 從全新 HOME 目錄的封包成品行為
  • doctor/fix/組態驗證與冪等性
  • 組態發現與組態往返
  • 狀態/日誌可見性與診斷
  • 閘道啟動/引導與外掛程式元資料快照
  • 真實外部外掛程式的公開 SDK 相容性
  • 僅在安全憑證存在時進行接近線上的提供者/通道探測

首要檢查

從 OpenClaw 儲存庫根目錄執行:

pnpm docs:list
git status --short --branch
pnpm changed:lanes --json

遵循 openclaw-testing 以了解相依性所有權以及選擇本機或遠端驗證方式。

執行器選擇

偏好以下順序:

  1. GitHub Package Acceptance:用於可安裝封包產品的驗證。
  2. 目前的專用 Linux Worker:當其具有所需的相依性與能力時,用於可信賴的原始碼/封包/Docker 驗證。
  3. ci-build-artifacts-testbox.yml Testbox:當 Docker/封包通道需要預先準備好的 dist、dist-runtime 及封包快取時使用。
  4. ci-check-testbox.yml Testbox:用於原始碼檢查、目標 Vitest、封包邊界檢查或聚焦的 Docker 通道。
  5. 僅工作站目標指令:用於小型格式/靜態/單元探測。

避免從過時的稀疏工作樹執行長時間的封包 Docker 執行。如果 Testbox 同步報告數百個已變更的檔案或開始刪除封包輸入,請停止並從當前的 main 分支啟動一個新的環境,或切換至 Package Acceptance。

現有基準線

在發明新的測試覆蓋範圍之前,請先執行或驗證以下指令:

OPENCLAW_TESTBOX=1 pnpm check:changed
pnpm run test:extensions:package-boundary:canary
pnpm run test:extensions:package-boundary:compile
pnpm test:docker:plugins
OPENCLAW_PLUGINS_E2E_CLAWHUB=0 pnpm test:docker:plugins
pnpm test:docker:plugin-update

為了完整的捆綁安裝/卸載驗證,請對已打包的掃描進行分片:

OPENCLAW_BUNDLED_PLUGIN_SWEEP_TOTAL=8 \
OPENCLAW_BUNDLED_PLUGIN_SWEEP_INDEX=<0-7> \
pnpm test:docker:bundled-plugin-install-uninstall

此範例將所選封包的外掛程式庫存分配到 0-7 的分片中。除非封包明確包含,否則私有 QA 外掛程式僅為原始碼模式。

信心矩陣

使用此矩陣進行發行前簽核。記錄通過/失敗、執行 URL/Testbox ID、封包 SHA/版本以及跳過的線上測試原因。

表面驗證內容偏好的執行器
封包成品Package Acceptance suite_profile=package 或自訂通道GitHub Actions
捆綁生命週期分片 test:docker:bundled-plugin-install-uninstallTestbox 或發行 Docker
外部外掛程式test:docker:plugins 及 plugins-offlineTestbox/封包驗收
更新無操作test:docker:plugin-updateTestbox/封包驗收
Doctor/fix植入錯誤配置 + doctor --fix --non-interactive新的 Docker/Testbox 框架
組態往返config set/get、檢查、doctor、重新載入、差異雜湊新的 Docker/Testbox 框架
閘道引導全新 HOME、外掛程式群組啟用/停用、狀態 JSON新的 Docker/Testbox 框架
SDK 相容性目錄、tgz 及使用 SDK 子路徑的 file: 外部外掛程式test:docker:plugins 加上新冒煙測試
接近線上僅針對目前環境中存在的憑證進行脫敏後的提供者/通道探測Testbox 線上通道

封包驗收計畫

完整的發行驗證擁有最終候選版本的資格認定,其資格為 Q=C 並使用確切的發行 tarball。使用獨立的 Package Acceptance 進行診斷或發行後信心驗證,但不可取代候選版本的資格認定:

gh workflow run package-acceptance.yml \
  --repo openclaw/openclaw \
  --ref main \
  -f workflow_ref=main \
  -f source=ref \
  -f package_ref=<分支或 SHA> \
  -f suite_profile=custom \
  -f docker_lanes='plugins-offline plugin-update doctor-switch update-channel-switch config-reload mcp-channels npm-onboard-channel-agent' \
  -f telegram_mode=mock-openai

使用 source=npm -f package_spec=openclaw@beta 進行已發行 beta 版的驗證。這些獨立的診斷/信心驗證執行可以使用目前可信賴的框架程式碼;候選版本的資格認定必須改用凍結的候選版本框架。

對於 extended-stable 共享發行,要求從經認可的候選版本擁有的 release-ci/* 框架中,使用 Q=C 進行完整的確切目標完整發行驗證,並將可信賴的 P 認可與發行工具分離。直接的規範分支或 main 分支生產者不符合受保護的發行者要求。Package Acceptance 是一個發行後選擇性冒煙測試:

gh workflow run package-acceptance.yml \
  --repo openclaw/openclaw \
  --ref main \
  -f workflow_ref=main \
  -f source=npm \
  -f package_spec=openclaw@extended-stable \
  -f suite_profile=package \
  -f telegram_mode=mock-openai

記錄解析出的版本。仍須驗證標籤的 all-publishable 庫存中的每個封包和選擇器;一次冒煙測試不等於註冊表回讀。

外掛程式 npm 成品資格認定

對於發行候選版本,完整的發行驗證負責外掛程式 npm 成品的資格認定。在分發時提供其發行選擇;所有群組的父級工作流程會以僅成品模式呼叫 plugin-npm-release.yml,針對確切的 Release SHA,要求成功讀回 tarball,並在 publicationArtifacts.pluginNpm 中記錄不可變的聚合描述符。Release Prepare 與發行作業必須採用該確切描述符,而非重新打包外掛程式。

僅在針對常規發行候選版本之外的聚焦診斷或所選外掛程式修復時,使用獨立的可信賴工作流程預檢:

release_sha="$(git rev-parse origin/release/2026.7.1)"
gh workflow run plugin-npm-release.yml \
  --repo openclaw/openclaw \
  --ref main \
  -f preflight_only=true \
  -f publish_scope=selected \
  -f plugins=@openclaw/meta-provider \
  -f ref="${release_sha}" \
  -f npm_dist_tag=default

請勿傳遞 release_publish_run_id。要求工作流程成功完成 verify_plugin_npm_preflight。記錄執行 URL、工作流程 SHA 及原始碼 SHA。工作流程首先建立暫存/回讀成品 plugin-npm-package-source-<source-sha>-<extension-id>,其中包含 npm-pack.json、preflight-manifest.json 及 tarball。然後上傳最終的消費者成品 plugin-npm-package-<extension-id>-<version>-<route>-<run-id>-<attempt>,其中包含 tarball 及 plugin-publication-manifest.json。

分別記錄最終的成品名稱與摘要。該 manifest 使用 openclaw.plugin-publication-artifact/v1,並記錄目標 SHA、封包 manifest 雜湊、發行路由與策略,以及 tarball 雜湊與庫存。此獨立驗證僅為驗證用途;它不會授權或暫存發行,也無法取代完整發行驗證的 manifest 限定描述符。成品庫存(而非解壓縮的原始碼樹)是安全性與封包內容的邊界:僅原始碼的測試夾具無關緊要。封包擁有的、位於已發行執行期與技能資產之外的測試與夾具路徑會導致資格認定失敗;已發行執行期仍須進行安全掃描。捆綁的 node_modules 與相依性證據(而非外掛程式原始碼策略)一同保留。獨立的 trusted_publisher_preflight=true OIDC 檢查需要一個受保護的 release-publish/<tooling-sha12>-<epoch> 分發標籤,並在 npm-publish 中執行。真實的發行也需要該工具標籤;直接的人工分發在發行前會等待其 npm-release 核准工作。

對於已發行的版本,要求 npm 的 dist.integrity 與 dist.shasum 與已驗證的 tarball 匹配。僅將缺失或可證明為較舊的 dist-tag 視為可修復;較新或無法比較的選擇器是阻斷因素。

新 Testbox 框架計畫

如果需要更高的信心度,請新增或執行一個使用一個封包 tarball 及分片外掛程式清單的 plugin-lifecycle-matrix Docker 通道。每個外掛程式:

  1. 從全新的 HOME 開始。
  2. 捕捉 plugins list --json。
  3. plugins install <id>。
  4. plugins inspect <id> --json。
  5. plugins disable <id>,然後斷言停用的可見性。
  6. plugins enable <id>,但需要組態的外掛程式若無組態則除外。
  7. plugins registry --refresh。
  8. doctor --non-interactive。
  9. plugins uninstall <id> --force。
  10. 斷言該外掛程式的 plugins.entries 值恰好為 { enabled: false },而它的允許/拒絕條目、安裝記錄、受管理目錄以及捆綁的執行期載入路徑均已消失。對於舊版目標,使用現有框架的原始碼限定卸載預期。
  11. 斷定診斷訊息中沒有 level: "error" 且輸出脫敏了看起來像秘密的值。

特別處理 memory-lancedb:它需要組態。首先斷言在不嵌入組態的情況下安裝不會啟用它,然後執行第二個已配置的案例。

Doctor/Fix 矩陣

植入錯誤狀態並要求 doctor --fix --non-interactive 修復它們,然後再次執行 doctor 並要求冪等性:

  • 過時的 plugins.allow
  • 過時的 plugins.entries
  • 缺少通道外掛程式的過時通道組態
  • 無效的 plugins.entries.<id>.config
  • plugins.load.paths 中的打包捆綁路徑
  • 舊版 plugins.installs
  • 已停用的通道/外掛程式組態,不應暫存執行期相依性
  • 必須保持不變的 root 擁有全域封包樹

閘道引導矩陣

在 Docker 中以全新狀態啟動打包的 OpenClaw:

  • 提供者外掛程式已啟用,無憑證:準備就緒但有警告,不崩潰
  • 通道外掛程式配置為停用:不暫存執行期相依性
  • 啟動時啟用的外掛程式已啟用:準備就緒並反映在狀態中
  • 無效的單一外掛程式組態:錯誤外掛程式被跳過/隔離,其餘正常

斷言:

  • 閘道達到準備就緒狀態
  • openclaw status --json 包含外掛程式診斷
  • openclaw plugins inspect --all --json 可解析
  • 封包樹未被修改
  • 日誌中不包含原始 token

組態往返代表

對深層組態往返使用代表性的外掛程式系列,而非每個外掛程式:

  • 提供者:openai、anthropic、mistral、openrouter
  • 通道:telegram、discord、slack、whatsapp
  • 記憶體:memory-lancedb
  • 功能/執行期:browser、acpx、tokenjuice

對於每個代表:

  1. 盡可能透過 CLI 寫入組態。
  2. 透過 config get 或 JSON 讀回。
  3. 執行 plugins inspect。
  4. 執行 doctor --non-interactive。
  5. 如果適用,觸發閘道組態重新載入。
  6. 比較無操作指令前後的組態雜湊。

外部 SDK 冒煙測試

在封包 Docker 通道中,建立小型外部外掛程式並從以下來源安裝:

  • 本機目錄
  • .tgz
  • file: npm 規格

涵蓋 CJS 和 ESM 格式,以及至少一個匯入了聚焦的 openclaw/plugin-sdk/* 子路徑的外掛程式。斷言 plugins inspect 能看到其工具、閘道方法、CLI 指令或服務。

接近線上探測規則

在進行接近線上的工作之前,先在 Testbox 中取得允許的環境變數並產生一個脫敏的可用性矩陣:僅標記為存在/缺失,絕不包含值。

僅對已存在的憑證執行探測。偏好 auth/catalog/status 探測,而非發送使用者可見的訊息。如果某個探測可能會聯絡到外部使用者、頻道或工作區,請停止並詢問使用者。

報告

以以下格式報告:

封包/參考:
tbx ID / 執行 URL:
矩陣:
  捆綁生命週期:
  封包驗收:
  doctor/fix:
  閘道引導:
  組態往返:
  SDK 外部:
  接近線上:
失敗:
跳過:
下一個最高價值缺口:

當失敗是 Testbox 同步/環境損壞而非產品行為時,請清楚說明,並透過乾淨的重新執行或與當前 main 分支的比較來證明。

Individual skills in this repo

This repo contains 20 individual skills — each has its own dedicated page.

1password

Set up and use 1Password CLI for sign-in, desktop integration, and reading or injecting secrets.

acp-router

Route plain-language requests for Claude Code, Cursor, Copilot, OpenClaw ACP, OpenCode, Gemini CLI, 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.

add-model-provider

Add and live-prove a model provider with non-interactive config one-liners, without exposing credentials.

agent-transcript

Requested GitHub PR/issue agent transcripts: redact, trim, preview, and insert safely.

apple-notes

Create, view, edit, delete, search, move, or export Apple Notes via the memo CLI on macOS.

apple-reminders

List, add, edit, complete, or delete Apple Reminders and reminder lists via remindctl.

auto-qa

Run OpenClaw-wide autonomous QA and live/stress campaigns across independent subsystem lanes, with verified fixes and a resumable evidence report.

autoreview

Structured code review through the shared OpenClaw agent-skills installation.

bear-notes

Create, search, and manage Bear notes via grizzly CLI.

blacksmith-testbox

Run Blacksmith Testbox for CI-parity checks, secrets, hosted services, migrations, or builds local cannot reproduce.

block-kit

Use proactively for structured or interactive Slack replies, and when asked to author or validate native Slack Block Kit JSON.

blogwatcher

Monitor blogs and RSS/Atom feeds for updates using the blogwatcher CLI.

blucli

BluOS CLI (blu) for discovery, playback, grouping, and volume.

bluebubbles

Send and manage iMessages via BlueBubbles, including attachments, tapbacks, edits, replies, and groups.

browser-automation

Use when controlling web pages with the OpenClaw browser tool, especially multi-step flows, login checks, tab management, or recovery from stale refs/timeouts.

camsnap

Capture frames or clips from RTSP/ONVIF cameras and local webcams, including USB pan/tilt/zoom control.

canvas

Present HTML on connected OpenClaw node canvases, navigate/eval/snapshot, and debug canvas host URLs.

channel-message-flows

Use when running QA Lab channel message flow evidence.

clawdtributor

Clawtributor PRs here, last week or another window: discover conversation refs, recheck GitHub, rank by impact.

clawhub

Search ClawHub for plugins by default, or skills when explicitly requested; install, verify, update, uninstall, publish, or sync skills.

相關技能