labs-graduation

Faire sortir une fonctionnalité des Labs de Control UI, activée par défaut ou non. À utiliser lorsqu'on demande de promouvoir, faire passer diplômé ou expédier une fonctionnalité Labs.

Qu'est-ce que labs-graduation ?

Cette compétence automatisée, conçue pour les agents IA comme Claude Code, gère le processus complet de graduation d'une fonctionnalité des Labs de Control UI. Elle transforme une fonctionnalité expérimentale en fonctionnalité normale, en supprimant son interrupteur Labs et en lui donnant un emplacement permanent (page de paramètres ou de plugin). La compétence distingue deux décisions indépendantes : quitter les Labs (obtenir un emplacement permanent et perdre le vocabulaire Labs) et le comportement par défaut (activé par défaut ou non). Elle s'appuie sur des précédents réels (Swarm activé par défaut, Advisor sorti des Labs mais désactivé) et évite les suppositions automatiques. Le processus inclut la mesure des coûts/risques en conditions réelles, la correction des défauts connus, la modification du registre Labs, la mise à jour de la documentation et la génération des fichiers. Les preuves de la PR doivent inclure des captures d'écran avant/après, des tests de bout en bout du chemin d'activation, et une vérification de la montée de version pour garantir que les choix explicites des utilisateurs sont préservés. La compétence interagit directement avec Control UI, OpenClaw, et les systèmes de plugins, en utilisant des fichiers comme `labs-registry.ts`, `openclaw.plugin.json` et `docs/concepts/experimental-features.md`.

Compatible avec~Claude Code~Codex CLI~Cursor
npx skills add https://github.com/clawdbot/clawdbot/tree/main/.agents/skills/labs-graduation

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

Faire diplômer une fonctionnalité Labs

La graduation supprime l'interrupteur Labs d'une fonctionnalité et en fait une fonctionnalité normale. Deux décisions distinctes, prises par le propriétaire avant tout code :

  1. Quitter les Labs : la fonctionnalité trouve un emplacement permanent (sa propre page de paramètres ou de plugin) et perd le vocabulaire Labs.
  2. Par défaut : activée par défaut, ou toujours désactivée par défaut.

Elles sont indépendantes. #197029 a d'abord essayé les deux, puis n'a livré que la première : Advisor a quitté les Labs mais est resté désactivé. Demandez laquelle est souhaitée ; ne supposez pas que "diplômer" signifie "activé par défaut".

Précédents : Swarm activé par défaut (#136514), Tool Search activé par défaut (#154068), interface utilisateur de plugin natif activé sans option d'adhésion Labs (de50262a1f96), fonctionnalités Labs déplacées dans les Paramètres (#145460), Advisor sorti des Labs et toujours désactivé (#197029).

Avant la PR

  • Mesurez le coût ou le risque sur la route réelle si la fonctionnalité coûte de l'argent ou des tokens, ou modifie le comportement des utilisateurs qui n'ont jamais adhéré. Les chiffres d'aujourd'hui issus de mocks ou de tests unitaires ne sont pas une preuve. #197074 a fusionné une affirmation de coût de cache provenant d'un mock que les fournisseurs en direct ont contredite, et a été annulée dans #197175. Utilisez la mesure en direct que les propres PRs de la fonctionnalité ont déjà établie, et mettez les chiffres dans le corps de la PR.
  • Réglez les défauts connus d'abord. La graduation d'Advisor a attendu ses correctifs de cache de fourche (#197203, #197223, #197224, #197226) car l'activation par défaut aurait facturé à chaque utilisateur le coût non mis en cache.
  • Trouvez le chemin d'activation qui reste. Après la disparition de la ligne Labs, les utilisateurs doivent toujours pouvoir activer la fonctionnalité depuis l'interface utilisateur. Un plugin groupé utilise Paramètres → Plugins → → Activer ; une fonctionnalité centrale a besoin de sa page de paramètres. Ajoutez un interrupteur seulement s'il n'en existe pas.

Le changement

  1. Par défaut. Modifiez-le seulement si le propriétaire a choisi l'activation par défaut : enabledByDefault d'un plugin groupé dans openclaw.plugin.json, ou la valeur par défaut de la configuration centrale. Un false explicite existant (ou la valeur de désactivation de la fonctionnalité) doit continuer à fonctionner, et un true existant doit rester activé. N'ajoutez jamais de migration qui réécrit la configuration enregistrée pour modifier le choix de quelqu'un.
  2. Labs. Supprimez l'entrée de ui/src/pages/labs/labs-registry.ts et tout ce qui n'était utilisé que par elle : les lignes ou emplacements de labs-page.tsx, les entrées de labs-feature-state.ts, les chaînes et les tests.
  3. Documentation. Déplacez la section de la fonctionnalité hors de docs/concepts/experimental-features.md vers sa propre page de référence. Laissez-y une note d'un paragraphe avec l'ancienne ancre, indiquant qu'elle a été diplômée, sa valeur par défaut, et où l'activer. Mettez à jour la liste "Les Labs incluent..." et le tableau "Indicateurs actuellement documentés".
  4. Vocabulaire. Supprimez "Expérimental" et "OpenClaw Labs" de la description du manifeste, de la description du paquet, du README, du résumé du plugin, et de tout texte destiné à l'utilisateur ou au modèle, comme les préfixes d'invite.
  5. Fichiers générés. Régénérez, ne fusionnez jamais à la main : pnpm config:docs:gen, pnpm plugins:inventory:gen. Les artefacts de localisation de Control UI (*.meta.json, *.tm.jsonl, catalog-fallbacks.json) restent hors de la PR conformément à ui/AGENTS.md ; le flux de travail d'actualisation des locales les met à jour. pnpm ui:i18n:verify doit passer.
  6. Preuve de montée de version. Uniquement pour un changement de valeur par défaut : prouvez lors d'une mise à niveau réelle qu'aucune entrée enregistrée n'obtient la nouvelle valeur par défaut, qu'un désactivé explicite reste désactivé, et qu'un activé explicite reste activé. Une valeur par défaut qui reste la même n'a pas besoin de cas de mise à niveau ; #197029 a supprimé celui qu'il avait construit pour l'activation par défaut.

Preuve dans la PR

  • Captures d'écran de Control UI, inspectées pour les données privées avant le téléchargement : Labs avant et après, et le chemin d'activation fonctionnant sur une passerelle réelle. Attachez-les avec gh pr comment <n> --attach '<fichier>#<texte alternatif>'.
  • Le chemin d'activation testé de bout en bout : l'interrupteur enregistre la configuration attendue et prend effet sans redémarrage.
  • Les tests de la fonctionnalité et les tests de la page Labs réussissent ; le cliquet de lignes de test n'augmente pas.
  • Les affirmations de la documentation correspondent au code. ClawSweeper a détecté le "au plus une révision par everyMinutes" d'Advisor, qui était faux avec everyToolCalls activé.

Après la fusion

Le nouvel emplacement n'apparaît que dans les builds qui incluent la fusion. Indiquez aux utilisateurs le chemin exact, et que les builds plus anciennes affichent toujours l'interrupteur Labs.

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, 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.

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 and agent Templates when requested; add Templates; install, verify, update, uninstall, publish, or sync skills.

Skills associés