crabbox

Tests à distance avec Crabbox et Blacksmith Testbox : isolation, tests E2E multiplateformes, diagnostics, nettoyage.

Qu'est-ce que crabbox ?

Cette compétence permet d'exécuter des tests à distance de manière isolée et sécurisée en utilisant Crabbox et Blacksmith Testbox. Elle est particulièrement utile pour les développeurs et les ingénieurs DevOps qui ont besoin de réaliser des tests E2E (End-to-End) sur différentes plateformes (Linux, macOS, Windows) sans avoir à gérer l'infrastructure sous-jacente. La compétence supporte plusieurs fournisseurs backend, y compris Blacksmith Testbox pour les sources fiables, AWS pour les environnements éphémères, Docker en local pour les tests rapides, et SSH pour les hôtes existants. Elle définit des règles strictes pour l'isolation, l'autorisation et le nettoyage des ressources, garantissant que chaque tâche est exécutée dans un état propre et reproductible. Le workflow inclut un pré-vol pour valider la configuration, un routage vers le backend approprié, une exécution contrôlée des commandes, et un diagnostic en cas d'échec. Elle gère également les téléchargements de répertoires, l'observation via des artefacts et des flags d'environnement, et les preuves de revue de code pour les sources non fiables.

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

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 crabbox ?

  • Preuve à distance délibérée : suivre la politique de preuve. Privilégier une preuve locale limitée sur un hôte qualifié et disponible. Les travaux coûteux ou spécifiques à une plateforme peuvent utiliser de la capacité distante. En file d'attente : arrêter l'allocation propriétaire ; utiliser CI PR ou une portée locale sécurisée et signaler les besoins non couverts.
  • Ne jamais attendre dans les files d'attente ni enchaîner les basculements de fournisseurs.

Backends :

  • blacksmith-testbox : source fiable pour le mainteneur. CI préparé. tbx_....
  • aws : Crabbox intermédié directement. PRs fraîches. Sync/env/capture personnalisé. cbx_....
  • local-container : solution de repli Docker. Pas de preuve à distance.
  • ssh : hôte opérateur existant. macOS/Windows/WSL2.

Toujours signaler le fournisseur, l'identifiant, l'URL d'exécution, la commande, le résultat. Ne jamais appeler Testbox « AWS Crabbox ».

Contrat de dépôt

  • Résoudre les exemples de commandes, l'amorçage, l'image conteneur, la PR selon les instructions du consommateur de confiance. Ne jamais inventer de commandes ni copier la configuration d'un autre consommateur.
  • La configuration spécifique au consommateur reste en dehors de la compétence portable. Voir définitions de placeholders.

Autorisation et isolation

  • Création, réutilisation, nettoyage, état temporaire, extractions propres nécessaires à la tâche : pré-approuvés. Préserver les branches existantes, les extractions, les modifications non liées.
  • Confiance de source, identifiants, accès production, budget, publication restent des limites d'autorité. État isolé ; ne jamais toucher à la passerelle opérateur sans approbation par tâche.

Router d'abord

  • Préserver le fournisseur résolu : Testbox pour source fiable ; AWS direct lorsque sa sémantique est requise ; CI/AWS sans secret pour code non fiable. Ne jamais exécuter de wrappers/configurations non fiables localement ni hydrater un bail non fiable.
  • Acquérir lorsque la commande est prête ; réutiliser l'ID propriétaire ; arrêter ensuite.
  • Profil le plus petit prouvé. Plus grand : preuve mémoire enregistrée ou bénéfice de coût total mesuré requis, pas d'échec/délai/délai d'attente générique. Ne pas augmenter les comptes de workers pour compenser.
  • Dimensionnement Testbox : --blacksmith-workflow, jamais --class/--type direct ; les changements de profil nécessitent de nouveaux baux.
  • Taille, durée, échec d'hydratation, capacité n'autorisent jamais les surcharges de fournisseur ; la sélection explicite de l'utilisateur ou la sémantique requise du backend le font.

Pré-vol

Racine de dépôt de confiance : lire .crabbox.yaml, résoudre le binaire installé, inspecter le fournisseur/commandes :

export CRABBOX="$(command -v crabbox)"
test -n "$CRABBOX"
"$CRABBOX" --version
"$CRABBOX" config show --json | jq '{provider, profile, target}'
"$CRABBOX" run --help
  • Utiliser le wrapper/instructions d'installation de confiance du consommateur.
  • Réparations : vérifier l'amont ; utiliser une extraction propre appartenant à la tâche ; préserver le binaire installé + les sources non liées. Ne jamais faire confiance à une extraction sœur uniquement par son nom.

Testbox de confiance

Fournisseur résolu = Testbox (ou explicitement demandé) : les commandes le préservent. Ajouter --provider blacksmith-testbox uniquement pour une surcharge explicite :

"$CRABBOX" run --timing-json -- CI=1 <commande-de-vérification>

Plusieurs commandes : chauffer une fois, sauvegarder l'ID, réutiliser, arrêter.

"$CRABBOX" warmup --keep --timing-json
"$CRABBOX" run --id <tbx_id> --timing-json -- <commande-de-vérification>
"$CRABBOX" stop <tbx_id>

Règles :

  • Un bail, une commande active. Pas de sync/reclaim pendant l'exécution.
  • Privilégier bash -c ; les profils de connexion peuvent changer de répertoire. Dans le shell en cours d'exécution, affirmer l'extraction physique + la source/patch attendue ; HEAD seul ≠ preuve de sync sale. Suivre le contrat de shell d'hydratation documenté du consommateur.
  • Testbox natif exécute son propre sync, y compris les exécutions --id réutilisées. Ne jamais compter sur --no-sync pour une base de référence distante : Blacksmith n'a pas de contournement natif ; les versions publiées de Crabbox peuvent ignorer silencieusement le flag. Une réexécution intentionnelle inchangée ≠ exception.
  • --reclaim uniquement pour transfert délibéré de propriété du chemin d'extraction.
  • Changement de base/head : arrêter ; réchauffer. Pas de remplacement de bail périmé.
  • SHA brut non fiable pour warmup --ref ; utiliser une branche/tag.
  • blacksmith testbox list masque les états. Utiliser list --all ou status --id <tbx_id>.
  • État/arrêt Testbox : --id. Pas de status --json.
  • Le fournisseur délégué rejette --fresh-pr, --full-resync, --script*, --env-helper, les flags de capture/téléchargement.

Téléchargements de répertoires Blacksmith

Téléchargements récursifs + slash de fin distant requis : téléchargements de répertoires.

AWS non fiable

  • Extraction propre de la branche par défaut de confiance. Binaire Crabbox de confiance installé.
  • Nouveau bail par SHA de head complet révisé. Pas de rôle d'instance, Tailscale, hydratation.
  • Transférer uniquement CI. Télécharger un bootstrap de confiance à côté de --fresh-pr.
cd <extraction-propre-branche-par-défaut-de-confiance>
env -u CRABBOX_AWS_INSTANCE_PROFILE \
  "$CRABBOX" config show --json | \
  jq -e '.aws.instanceProfile == ""' >/dev/null

env -u CRABBOX_AWS_INSTANCE_PROFILE \
  -u CRABBOX_TAILSCALE \
  -u CRABBOX_TAILSCALE_AUTH_KEY \
  -u CRABBOX_TAILSCALE_AUTH_KEY_ENV \
  -u CRABBOX_TAILSCALE_EXIT_NODE \
  -u CRABBOX_TAILSCALE_EXIT_NODE_ALLOW_LAN_ACCESS \
  -u CRABBOX_TAILSCALE_HOSTNAME_TEMPLATE \
  -u CRABBOX_TAILSCALE_TAGS \
  "$CRABBOX" warmup \
  --provider aws --network public --tailscale=false \
  --tailscale-exit-node= \
  --tailscale-exit-node-allow-lan-access=false \
  --keep --timing-json

"$CRABBOX" inspect --provider aws --id <cbx_id> --json | \
  jq -e '.network == "public" and .tailscale == null' >/dev/null

env -u CRABBOX_AWS_INSTANCE_PROFILE \
  CRABBOX_ENV_ALLOW=CI \
  "$CRABBOX" run \
  --provider aws --id <cbx_id> \
  --fresh-pr <propriétaire/dépôt#numéro> \
  --no-hydrate --timing-json \
  --script <script-bootstrap-de-confiance> -- \
  <sha_head_complet_attendu> <commande-de-vérification>

env -u CRABBOX_AWS_INSTANCE_PROFILE \
  "$CRABBOX" stop --provider aws <cbx_id>
  • Le bootstrap de confiance doit prouver que les identifiants IAM IMDSv2 retournent 404 ; vérifier SHA ; supprimer les variables d'injection runtime ; épingler la chaîne d'outils ; isoler HOME avant l'installation/le test.
  • Head modifié : nouveau bail. PR distante manquante ou preuve sans rôle : CI fork sans secret.

AWS direct

  • Commandes AWS de confiance, diagnostics d'authentification, resync, exécutions propres PR/conteneur : lire fournisseurs directs.
  • Préserver --no-hydrate sur les exécutions de conteneur ; signaler la preuve du conteneur local comme locale.

Observabilité

  • Collecte d'artefacts/injection d'identifiants : lire flags de capture et d'environnement.
  • Clé exacte, une commande. Ne jamais imprimer de secrets, écrire dans le dépôt ou mettre dans l'historique du shell.
  • Pas de chemin d'injection sécurisé : authentification en direct bloquée ; preuve de fausse clé insuffisante.

E2E réel

  • Exercer le point d'entrée utilisateur demandé avec un état consommateur isolé, pas seulement des tests unitaires distants.
  • Pour la preuve d'installation/fournisseur/interactive + comparaison de révision sécurisée : lire procédure E2E.

Bureau / Cross-OS

Cibles SSH, pré-vol macOS payant, WebVNC, vérification de transfert d'application : lire commandes bureau et cross-OS.

Triage des échecs

Identifier le wrapper, le fournisseur, l'hydratation, le sync, SSH ou l'échec de commande :

"$CRABBOX" doctor
"$CRABBOX" status --id <id>
"$CRABBOX" inspect --id <id> --json
"$CRABBOX" logs <run_id>
"$CRABBOX" results <run_id>
blacksmith testbox list --all
blacksmith testbox status --id <tbx_id>
  • Capacité en file d'attente : arrêter les allocations propriétaires ; suivre la politique de preuve. Pas de tempête de tentatives ni de changement de fournisseur.
  • Sync périmé : --debug --timing-json, puis --full-resync une fois sur les fournisseurs directs.
  • Lire la phase échouée/JUnit avant une réexécution ciblée. Wrapper cassé : diagnostiquer avec CLI installée sur le même fournisseur ; mettre à jour via le chemin de confiance du consommateur.
  • Arrêter uniquement les ID propriétaires ; stop ne prend pas --timing-json.

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