CommunityProgramación y desarrollogithub.com

release-openclaw-plugin-testing

Planificar y ejecutar validaciones previas al lanzamiento de plugins de OpenClaw en paquetes empaquetados, artefactos de paquete, comandos de ciclo de vida, doctor/fix, config round-trip, inicio de gateway, compatibilidad con SDK, E2E en Docker, Aceptación de Paquete y prueba Testbox.

¿Qué es release-openclaw-plugin-testing?

Esta habilidad para el agente de IA automatiza la validación integral de plugins de OpenClaw antes de un lanzamiento, cubriendo desde el ciclo de vida de plugins empaquetados hasta la compatibilidad con SDK externos. Está diseñada para complementar la habilidad `openclaw-testing` y se enfoca en probar la superficie del producto plugin, no solo las pruebas de código fuente. Proporciona una matriz de confianza para la aprobación previa al lanzamiento y define el orden de ejecución de los runners (Aceptación de Paquete en GitHub, workers Linux dedicados, o cajas Testbox) para optimizar la eficiencia y minimizar costos. Incluye planes detallados para probar el ciclo de vida de plugins, doctor/fix, config round-trip, inicio de gateway y sondeos 'live-ish' seguros, así como la cualificación de artefactos npm de plugins para publicación. La habilidad también especifica cómo reportar los resultados de las pruebas y distinguir entre fallos reales del producto y problemas del entorno de pruebas.

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

Installed? Explore more Programación y desarrollo skills: steipete/bluebubbles, steipete/eightctl, steipete/blucli · View all 6 →

Preguntar en tu IA favorita

Abre un nuevo chat con esta habilidad de agente ya precargada.

Documentación

Pruebas de Plugins de Pre-Lanzamiento de OpenClaw

Usa esta habilidad cuando el usuario solicite confianza en el lanzamiento de plugins, barridos de ciclo de vida de plugins, prueba de artefactos de paquete de plugins, o "¿qué más deberíamos probar antes del lanzamiento?". Complementa a openclaw-testing; usa también esa habilidad al elegir el runner seguro más barato o al depurar una línea fallida.

Objetivo

Demostrar el sistema de plugins como una superficie de producto, no solo como pruebas de código fuente:

  • ciclo de vida de plugins empaquetados: instalar, inspeccionar, habilitar, deshabilitar, desinstalar
  • comportamiento de artefactos de paquete desde un HOME limpio
  • validación e idempotencia de doctor/fix/config
  • descubrimiento de config y config round-trip
  • visibilidad y diagnósticos de estado/log
  • inicio/arranque de gateway con instantáneas de metadatos de plugins
  • compatibilidad con SDK público para plugins externos reales
  • sondas de proveedor/canal semi-activas solo cuando existan credenciales seguras

Primeras Comprobaciones

Desde la raíz del repositorio de OpenClaw:

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

Sigue openclaw-testing para la propiedad de dependencias y la elección de prueba local o remota.

Elección del Runner

Preferir este orden:

  1. Aceptación de Paquete de GitHub para pruebas de producto de paquete instalable.
  2. Worker Linux dedicado actual para pruebas confiables de fuente/paquete/Docker cuando tenga las dependencias y capacidades requeridas.
  3. Testbox ci-build-artifacts-testbox.yml cuando las líneas de Docker/paquete necesiten dist, dist-runtime y cachés de paquete sembrados.
  4. Testbox ci-check-testbox.yml para comprobaciones de código fuente, Vitest dirigido, comprobaciones de límite de paquete o líneas de Docker enfocadas.
  5. Comandos dirigidos solo en estación de trabajo para sondas pequeñas de formato/estático/unidad.

Evita largas ejecuciones de Docker de paquete desde un árbol de trabajo disperso desactualizado. Si la sincronización de Testbox reporta cientos de archivos cambiados o comienza a eliminar entradas de paquete, detente y prepara una caja nueva desde main actual, o cambia a Aceptación de Paquete.

Línea Base Existente

Ejecuta o verifica estos antes de inventar nueva cobertura:

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

Para pruebas completas de instalación/desinstalación empaquetadas, fragmenta el barrido empaquetado:

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

Este ejemplo particiona el inventario de plugins del paquete seleccionado en fragmentos 0-7. Los plugins de QA privados son solo en modo fuente a menos que un paquete los incluya explícitamente.

Matriz de Confianza

Usa esta matriz para la aprobación previa al lanzamiento. Registra aprobado/fallido, URL de ejecución/ID de Testbox, SHA/versión del paquete y razón de salteo de live.

SuperficiePruebaRunner preferido
Artefacto de paqueteAceptación de Paquete suite_profile=package o líneas personalizadasGitHub Actions
Ciclo de vida empaquetadoFragmentado test:docker:bundled-plugin-install-uninstallTestbox o Docker de lanzamiento
Plugins externostest:docker:plugins y plugins-offlineTestbox/aceptación de paquete
Actualización sin operacióntest:docker:plugin-updateTestbox/aceptación de paquete
Doctor/fixconfigs erróneas sembradas + doctor --fix --non-interactivenuevo arnés Docker/Testbox
Config round-tripconfig set/get, inspeccionar, doctor, recargar, hash diffnuevo arnés Docker/Testbox
Arranque de gatewayHOME limpio, grupos de plugins habilitados/deshabilitados, JSON de estadonuevo arnés Docker/Testbox
Compatibilidad con SDKdirectorio, tgz y file: plugins externos usando subrutas SDKtest:docker:plugins más nuevo smoke
Semi-activosondas de proveedor/canal redactadas solo para env presenteLíneas live de Testbox

Plan de Aceptación de Paquete

La Validación Completa de Lanzamiento posee la calificación final de candidato con Q=C y los tarballs exactos de publicación. Usa Aceptación de Paquete independiente para diagnósticos o confianza posterior a la publicación, no como reemplazo de la calificación de candidato:

gh workflow run package-acceptance.yml \
  --repo openclaw/openclaw \
  --ref main \
  -f workflow_ref=main \
  -f source=ref \
  -f package_ref=<branch-or-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

Usa source=npm -f package_spec=openclaw@beta para pruebas de beta publicado. Estas ejecuciones independientes de diagnóstico/confianza pueden usar el código de arnés actual de confianza; la calificación de candidato debe retener el arnés congelado del candidato.

Para la publicación compartida de extended-stable, requiere la Validación Completa de Lanzamiento de destino exacto desde el arnés release-ci/* propiedad del candidato admitido en Q=C, con herramientas de admisión y publicación separadas. Los productores directos de rama canónica o main no satisfacen al editor protegido. La Aceptación de Paquete es un smoke de selector posterior a la publicación:

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

Registra la versión resuelta. Aún verifica cada paquete y selector en el inventario all-publishable de la etiqueta; un smoke no es una lectura de registro.

Cualificación de Artefacto npm de Plugin

Para un candidato a publicación, la Validación Completa de Lanzamiento posee la cualificación del artefacto npm del plugin. Proporciona su selección de publicación en el despacho; el padre de todos los grupos invoca plugin-npm-release.yml en modo solo artefacto contra el SHA de Lanzamiento exacto, requiere una lectura correcta del tarball y registra el descriptor agregado inmutable en publicationArtifacts.pluginNpm. La Preparación del Lanzamiento y la publicación deben adoptar ese descriptor exacto en lugar de reempaquetar plugins.

Usa un pre-vuelo de flujo de trabajo de confianza independiente solo para un diagnóstico enfocado o una reparación de plugin seleccionado que esté fuera de un candidato de publicación regular:

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

No pases release_publish_run_id. Requiere que el flujo de trabajo termine verify_plugin_npm_preflight exitosamente. Registra la URL de ejecución, SHA del flujo de trabajo y SHA de la fuente. El flujo de trabajo primero crea el artefacto de preparación/lectura plugin-npm-package-source-<source-sha>-<extension-id> que contiene npm-pack.json, preflight-manifest.json y el tarball. Luego sube el artefacto de consumidor final plugin-npm-package-<extension-id>-<version>-<route>-<run-id>-<attempt> que contiene el tarball y plugin-publication-manifest.json.

Registra el nombre del artefacto final y el resumen por separado. El manifiesto usa openclaw.plugin-publication-artifact/v1 y registra el SHA objetivo, hashes del manifiesto del paquete, ruta y política de publicación, y hashes e inventario del tarball. Esta prueba independiente es solo de validación; no autoriza ni prepara la publicación y no puede reemplazar el descriptor vinculado al manifiesto de la Validación Completa de Lanzamiento. El inventario de artefactos, en lugar del árbol fuente desempaquetado, es el límite de seguridad y contenido del paquete: los fixtures solo de fuente son irrelevantes. Las rutas de prueba y fixture propiedad del paquete fuera de los activos de ejecución y habilidad enviados fallan la cualificación; el tiempo de ejecución enviado permanece escaneado por seguridad. Los node_modules empaquetados se quedan con evidencia de dependencia en lugar de política de código fuente del plugin. La comprobación OIDC separada trusted_publisher_preflight=true requiere una etiqueta de despacho protegida release-publish/<tooling-sha12>-<epoch> y se ejecuta en npm-publish. La publicación real también requiere esa etiqueta de herramientas; un despacho humano directo espera su trabajo de aprobación npm-release antes de publicar. Para una versión ya publicada, requiere que dist.integrity y dist.shasum de npm coincidan con el tarball verificado. Trata solo dist-tags faltantes o demostrablemente más antiguos como reparables; selectores más nuevos o no comparables son un bloqueador.

Plan de Nuevo Arnés de Testbox

Si se necesita más certeza, agrega o ejecuta una línea de Docker plugin-lifecycle-matrix que use un tarball de paquete y listas de plugins fragmentadas. Por plugin:

  1. Comienza con un HOME limpio.
  2. Captura plugins list --json.
  3. plugins install <id>.
  4. plugins inspect <id> --json.
  5. plugins disable <id>, luego afirma visibilidad deshabilitada.
  6. plugins enable <id>, excepto plugins que requieren config sin config.
  7. plugins registry --refresh.
  8. doctor --non-interactive.
  9. plugins uninstall <id> --force.
  10. Afirma que el valor plugins.entries del plugin es exactamente { enabled: false }, mientras que sus entradas allow/deny, registro de instalación, directorio administrado y rutas de carga de tiempo de ejecución empaquetadas han desaparecido. Usa las expectativas de desinstalación calificadas por fuente del arnés existente para objetivos históricos.
  11. Afirma que los diagnósticos no contienen level: "error" y que la salida redacta valores que parecen secretos.

Mantén memory-lancedb especial: requiere config. Primero afirma que la instalación no lo habilita sin config incrustada, luego ejecuta un segundo caso configurado.

Matriz de Doctor/Fix

Siembra estados incorrectos y requiere que doctor --fix --non-interactive los repare, luego ejecuta doctor nuevamente y requiere idempotencia:

  • plugins.allow obsoleto
  • plugins.entries obsoleto
  • config de canal obsoleto para plugin de canal faltante
  • plugins.entries.<id>.config inválido
  • ruta empaquetada empaquetada en plugins.load.paths
  • plugins.installs heredado
  • config de canal/plugin deshabilitado que no debe preparar dependencias de tiempo de ejecución
  • árbol de paquete global propiedad de root que debe permanecer sin modificar

Matriz de Arranque de Gateway

Inicia OpenClaw empaquetado en Docker con estado limpio:

  • plugins de proveedor habilitados, sin credenciales: listo con advertencias, sin bloqueo
  • plugins de canal configurados como deshabilitados: sin dependencias de tiempo de ejecución preparadas
  • plugins de activación de inicio habilitados: listo y reflejado en estado
  • config de plugin único inválido: plugin incorrecto saltado/puesto en cuarentena, otros permanecen

Afirma:

  • gateway alcanza estado listo
  • openclaw status --json incluye diagnósticos de plugins
  • openclaw plugins inspect --all --json es analizable
  • el árbol del paquete no se muta
  • los registros no contienen tokens sin procesar

Representantes de Config Round-Trip

Usa familias de plugins representativas en lugar de cada plugin para config round-trip profundo:

  • proveedores: openai, anthropic, mistral, openrouter
  • canales: telegram, discord, slack, whatsapp
  • memoria: memory-lancedb
  • característica/tiempo de ejecución: browser, acpx, tokenjuice

Para cada representante:

  1. Escribe config a través de CLI cuando sea posible.
  2. Léela de vuelta a través de config get o JSON.
  3. Ejecuta plugins inspect.
  4. Ejecuta doctor --non-interactive.
  5. Desencadena la recarga de config del gateway si corresponde.
  6. Compara el hash de config antes/después de comandos sin operación.

Smoke de SDK Externo

En una línea de Docker de paquete, crea pequeños plugins externos e instálalos desde:

  • directorio local
  • .tgz
  • especificación npm file:

Cubre formas CJS y ESM, más al menos un plugin que importe subrutas enfocadas de openclaw/plugin-sdk/*. Afirma que plugins inspect ve su herramienta, método de gateway, comando CLI o servicio.

Reglas de Sondas Semi-Activas

Antes del trabajo semi-activo, busca las env permitidas en Testbox y genera una matriz de disponibilidad redactada: presente/ausente solo, nunca valores.

Solo ejecuta sondas para credenciales que existan. Prefiere sondas de autenticación/catálogo/estado sobre enviar mensajes visibles para el usuario. Si una sonda podría contactar a un usuario, canal o espacio de trabajo externo, detente y pregunta al usuario.

Reporte

Reporta en esta forma:

paquete/ref:
ids de tbx / urls de ejecución:
matriz:
  ciclo de vida empaquetado:
  aceptación de paquete:
  doctor/fix:
  arranque de gateway:
  config round-trip:
  sdk externo:
  semi-activo:
fallos:
salteos:
próxima brecha de mayor valor:

Di claramente cuando un fallo sea daño de sincronización/env de Testbox en lugar de comportamiento del producto, y pruébalo con una re-ejecución limpia o una comparación con main actual.

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.

Skills relacionados