Tests de pré-lancement des plugins OpenClaw

Planifier et exécuter la validation pré-lancement des plugins OpenClaw sur l'ensemble des plugins intégrés, des artefacts de paquets, des commandes du cycle de vie, doctor/fix, config round-trip, démarrage de la passerelle, compatibilité SDK, Docker E2E, Package Acceptance et preuve Testbox.

Qu'est-ce que Tests de pré-lancement des plugins OpenClaw ?

Ce skill permet de réaliser une validation complète du système de plugins OpenClaw avant une mise en production, en couvrant toutes les surfaces critiques : cycle de vie des plugins intégrés (installation, inspection, activation, désactivation, désinstallation), comportement des artefacts de paquets depuis un HOME propre, validation et idempotence des commandes doctor/fix/config, découverte et round-trip de configuration, visibilité des logs et diagnostics, démarrage de la passerelle avec instantanés de métadonnées de plugins, compatibilité SDK public pour plugins externes réels, sondes live uniquement en présence d'identifiants sécurisés. Il s'appuie sur une matrice de confiance structurée, des plans d'exécution pour Package Acceptance, et des matrices de test détaillées pour le doctor/fix, le bootstrap de passerelle et le round-trip de configuration représentatif. Le skill fournit également des règles claires pour le choix du runner (GitHub Package Acceptance, worker Linux dédié, Testbox, commandes locales), des commandes de base existantes à vérifier, et un format de rapport standardisé. Il est conçu pour compléter le skill `openclaw-testing` en se concentrant sur la surface produit plutôt que sur les tests source unitaires.

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

Installed? Explore more Développement et programmation skills: steipete/bluebubbles, steipete/eightctl, steipete/blucli · View all 6 →

Demander à votre IA préférée

Ouvre une nouvelle conversation avec cette compétence d'agent déjà préchargée.

Documentation

Que fait Tests de pré-lancement des plugins OpenClaw ?

Utilisez ce skill lorsque l'utilisateur demande une confiance de lancement de plugin, des analyses du cycle de vie des plugins, une preuve de l'artefact de paquet-plugin, ou « quoi d'autre devrions-nous tester avant le lancement ? ». Il complète openclaw-testing ; utilisez également ce skill lorsque vous choisissez le runner sécurisé le moins coûteux ou que vous déboguez une voie défaillante.

Objectif

Prouver le système de plugins en tant que surface produit, pas seulement en tant que tests source :

  • cycle de vie des plugins intégrés : installer, inspecter, activer, désactiver, désinstaller
  • comportement des artefacts de paquets depuis un HOME propre
  • validation et idempotence de doctor/fix/config
  • découverte de configuration et round-trip de configuration
  • visibilité des logs/statut et diagnostics
  • démarrage/amorçage de la passerelle avec instantanés de métadonnées de plugins
  • compatibilité SDK public pour des plugins externes réels
  • sondes fournisseur/canal en condition quasi réelle uniquement lorsque des identifiants sécurisés existent

Premières vérifications

Depuis la racine du dépôt OpenClaw :

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

Suivez openclaw-testing pour la propriété des dépendances et le choix de la preuve locale ou distante.

Choix du runner

Préférez cet ordre :

  1. GitHub Package Acceptance pour la preuve produit du paquet installable.
  2. Worker Linux dédié actuel pour la preuve source/paquet/Docker de confiance lorsqu'il possède les dépendances et capacités requises.
  3. Testbox ci-build-artifacts-testbox.yml lorsque les voies Docker/paquet ont besoin de caches dist, dist-runtime, et de paquet amorcés.
  4. Testbox ci-check-testbox.yml pour les vérifications source, Vitest ciblé, vérifications aux limites du paquet, ou voies Docker ciblées.
  5. Commandes ciblées sur poste de travail uniquement pour les petites sondes de format/statique/unité.

Évitez les longues exécutions Docker de paquets à partir d'un arbre de travail partiel obsolète. Si la synchronisation Testbox signale des centaines de fichiers modifiés ou commence à supprimer des entrées de paquets, arrêtez et préparez une nouvelle boîte à partir du main actuel, ou passez à Package Acceptance.

Base existante

Exécutez ou vérifiez ces éléments avant d'inventer une nouvelle couverture :

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

Pour une preuve complète d'installation/désinstallation intégrée, partitionnez l'analyse groupée :

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

Cet exemple partitionne l'inventaire des plugins du paquet sélectionné sur les partitions 0-7. Les plugins QA privés sont en mode source uniquement, sauf si un paquet les inclut explicitement.

Matrice de confiance

Utilisez cette matrice pour l'approbation pré-lancement. Enregistrez le succès/échec, l'URL d'exécution/ID Testbox, le SHA/version du paquet, et la raison du saut en condition quasi réelle.

SurfacePreuveRunner préféré
Artefact de paquetPackage Acceptance suite_profile=package ou voies personnaliséesGitHub Actions
Cycle de vie intégrétest:docker:bundled-plugin-install-uninstall partitionnéTestbox ou Docker de lancement
Plugins externestest:docker:plugins et plugins-offlineTestbox/package acceptance
Mise à jour sans optest:docker:plugin-updateTestbox/package acceptance
Doctor/fixconfigs erronées amorcées + doctor --fix --non-interactivenouveau harnais Docker/Testbox
Round-trip configconfig set/get, inspecter, doctor, recharger, diff de hachagenouveau harnais Docker/Testbox
Bootstrap passerelleHOME propre, groupes de plugins activés/désactivés, JSON de statutnouveau harnais Docker/Testbox
Compatibilité SDKPlugins externes (répertoire, tgz, file:) utilisant des sous-chemins SDKtest:docker:plugins plus nouvelle fumée
Condition quasi réelleSondes fournisseur/canal expurgées uniquement pour env. présenteVoies Testbox live

Plan Package Acceptance

La validation complète de lancement (Full Release Validation) possède la qualification finale du candidat avec Q=C et les tarballs de publication exacts. Utilisez Package Acceptance de manière autonome pour les diagnostics ou la confiance post-publication, et non comme qualification de remplacement du candidat :

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

Utilisez source=npm -f package_spec=openclaw@beta pour une preuve de bêta publiée. Ces exécutions de diagnostic/confiance autonomes peuvent utiliser le code de harnais actuel de confiance ; la qualification du candidat doit conserver le harnais gelé du candidat à la place.

Pour la publication partagée étendue-stable, exigez une validation complète de lancement exacte cible à partir du harnais release-ci/* appartenant au candidat admis à Q=C, avec un outil de publication et d'admission P distinct. Les producteurs directs de branche canonique ou main ne satisfont pas l'éditeur protégé. Package Acceptance est une fumée de sélecteur post-publication :

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

Enregistrez la version résolue. Vérifiez toujours chaque paquet et sélecteur dans l'inventaire all-publishable du tag ; une seule fumée ne remplace pas une relecture de registre.

Qualification des artefacts npm des plugins

Pour un candidat à la publication, la validation complète de lancement (Full Release Validation) possède la qualification des artefacts npm des plugins. Fournissez sa sélection de publication au moment du déclenchement ; le parent de tous les groupes appelle plugin-npm-release.yml en mode artefact uniquement contre le SHA exact de la version, exige une relecture réussie du tarball, et enregistre le descripteur agrégé immuable dans publicationArtifacts.pluginNpm. La préparation de la version et la publication doivent adopter ce descripteur exact plutôt que de recompresser les plugins.

Utilisez un prévol de workflow de confiance autonome uniquement pour un diagnostic ciblé ou une réparation de plugin sélectionné en dehors d'un candidat de publication régulier :

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

Ne passez pas release_publish_run_id. Exigez que le workflow termine verify_plugin_npm_preflight avec succès. Enregistrez l'URL d'exécution, le SHA du workflow et le SHA source. Le workflow crée d'abord l'artefact de staging/relecture plugin-npm-package-source-<source-sha>-<extension-id> contenant npm-pack.json, preflight-manifest.json, et le tarball. Il téléverse ensuite l'artefact consommateur final plugin-npm-package-<extension-id>-<version>-<route>-<run-id>-<attempt> contenant le tarball et plugin-publication-manifest.json.

Enregistrez séparément le nom et le condensé de l'artefact final. Le manifeste utilise openclaw.plugin-publication-artifact/v1 et enregistre le SHA cible, les hachages du manifeste du paquet, la route et la politique de publication, ainsi que les hachages et l'inventaire du tarball. Cette preuve autonome est uniquement une validation ; elle n'autorise ni ne prépare la publication et ne peut pas remplacer le descripteur lié au manifeste de la validation complète de lancement. L'inventaire des artefacts, plutôt que l'arborescence source décompressée, constitue la frontière de sécurité et de contenu du paquet : les fixtures source uniquement sont sans importance. Les chemins de test et de fixture appartenant au paquet en dehors des actifs d'exécution et de compétence expédiés échouent à la qualification ; l'exécution expédiée reste soumise à une analyse de sécurité. Les node_modules intégrés restent avec la preuve de dépendance plutôt que la politique de source de plugin. La vérification OIDC distincte trusted_publisher_preflight=true nécessite un tag de déclenchement protégé release-publish/<tooling-sha12>-<epoch> et s'exécute dans npm-publish. La publication réelle nécessite également ce tag d'outillage ; un déclenchement humain direct attend son job d'approbation npm-release avant de publier. Pour une version déjà publiée, exigez que dist.integrity et dist.shasum de npm correspondent au tarball vérifié. Traitez uniquement les tags de distribution manquants ou prouvablement plus anciens comme réparables ; les sélecteurs plus récents ou incomparables sont un blocage.

Nouveau plan de harnais Testbox

Si davantage de certitude est nécessaire, ajoutez ou exécutez une voie Docker plugin-lifecycle-matrix qui utilise un tarball de paquet et des listes de plugins partitionnées. Par plugin :

  1. Commencez avec un HOME propre.
  2. Capturez plugins list --json.
  3. plugins install <id>.
  4. plugins inspect <id> --json.
  5. plugins disable <id>, puis affirmez la visibilité désactivée.
  6. plugins enable <id>, sauf pour les plugins nécessitant une configuration sans config.
  7. plugins registry --refresh.
  8. doctor --non-interactive.
  9. plugins uninstall <id> --force.
  10. Affirmez que la valeur plugins.entries du plugin est exactement { enabled: false }, tandis que ses entrées allow/deny, enregistrement d'installation, répertoire géré et chemins de chargement d'exécution intégrés ont disparu. Utilisez les attentes de désinstallation qualifiées par source du harnais existant pour les cibles historiques.
  11. Affirmez que les diagnostics ne contiennent aucun level: "error" et que la sortie masque les valeurs d'apparence secrète.

Gardez memory-lancedb spécial : il nécessite une configuration. Affirmez d'abord que l'installation ne l'active pas sans config intégrée, puis exécutez un second cas configuré.

Matrice Doctor/Fix

Amorcez des états erronés et exigez que doctor --fix --non-interactive les répare, puis exécutez à nouveau doctor et exigez l'idempotence :

  • plugins.allow obsolète
  • plugins.entries obsolète
  • config de canal obsolète pour plugin de canal manquant
  • plugins.entries.<id>.config invalide
  • chemin intégré dans plugins.load.paths
  • plugins.installs hérité
  • config de canal/plugin désactivé qui ne doit pas préparer les dépendances d'exécution
  • arbre de paquet global appartenant à root qui doit rester non modifié

Matrice de bootstrap de passerelle

Démarrez OpenClaw empaqueté dans Docker avec un état propre :

  • plugins fournisseur activés, pas d'identifiants : prêt avec avertissements, pas de crash
  • plugins de canal configurés désactivés : aucune dépendance d'exécution préparée
  • plugins d'activation au démarrage activés : prêt et reflété dans le statut
  • config de plugin unique invalide : plugin erroné ignoré/mis en quarantaine, les autres restent

Affirmez :

  • la passerelle atteint l'état prêt
  • openclaw status --json inclut les diagnostics des plugins
  • openclaw plugins inspect --all --json est analysable
  • l'arbre de paquet n'est pas modifié
  • les logs ne contiennent aucun jeton brut

Représentants du round-trip de configuration

Utilisez des familles de plugins représentatives au lieu de chaque plugin pour un round-trip de configuration approfondi :

  • fournisseurs : openai, anthropic, mistral, openrouter
  • canaux : telegram, discord, slack, whatsapp
  • mémoire : memory-lancedb
  • fonctionnalité/exécution : browser, acpx, tokenjuice

Pour chaque représentant :

  1. Écrivez la configuration via CLI lorsque c'est possible.
  2. Relisez-la via config get ou JSON.
  3. Exécutez plugins inspect.
  4. Exécutez doctor --non-interactive.
  5. Déclenchez le rechargement de configuration de la passerelle si applicable.
  6. Comparez le hachage de configuration avant/après les commandes sans opération.

Fumée SDK externe

Dans une voie Docker de paquet, créez de minuscules plugins externes et installez-les à partir de :

  • répertoire local
  • .tgz
  • spécification npm file:

Couvez les formes CJS et ESM, plus au moins un plugin important des sous-chemins ciblés openclaw/plugin-sdk/*. Affirmez que plugins inspect voit son outil, sa méthode de passerelle, sa commande CLI ou son service.

Règles des sondes en condition quasi réelle

Avant un travail en condition quasi réelle, sourcez les env autorisées dans Testbox et générez une matrice de disponibilité expurgée : présente/absente uniquement, jamais de valeurs.

Exécutez uniquement des sondes pour les identifiants qui existent. Préférez les sondes d'authentification/catalogue/statut à l'envoi de messages visibles par l'utilisateur. Si une sonde pourrait contacter un utilisateur externe, un canal ou un espace de travail, arrêtez-vous et demandez à l'utilisateur.

Rapport

Rapportez sous cette forme :

paquet/réf :
ids tbx / urls d'exécution :
matrice :
  cycle de vie intégré :
  acceptance paquet :
  doctor/fix :
  bootstrap passerelle :
  round-trip config :
  sdk externe :
  condition quasi réelle :
échecs :
sauts :
prochain écart de plus haute valeur :

Dites clairement lorsqu'un échec est dû à des dommages de synchronisation/env Testbox plutôt qu'à un comportement produit, et prouvez-le avec une nouvelle exécution propre ou une comparaison avec le main actuel.

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 associés