CommunityRédaction et éditiongithub.com

pome-sh/digital-twins

Jumeaux numériques auto-hébergés de différentes API pour les tests E2E et la simulation d'agents.

Qu'est-ce que digital-twins ?

Ce skill transforme votre agent en un assistant de test intelligent en créant des jumeaux numériques d'API réelles. Il permet aux développeurs de simuler des scénarios de bout en bout (E2E) et de tester le comportement d'agents IA dans un environnement isolé et reproductible. Il prend en charge les agents gérés par Claude (via des fichiers YAML) et les agents auto-hébergés (via un dépôt local avec `pome.json`). Le skill orchestre tout le cycle de vie du test : inscription de l'agent, suggestion et création de tâches, vérification des graines de test, exécution des runs, et analyse des résultats via des rapports détaillés. Il utilise un MCP (`mcp.pome.sh`) pour la communication avec le backend hébergé et une CLI (`pome`) pour les interactions locales, garantissant que les agents sont évalués en mode "livre fermé" (sans accès au web) pour une fiabilité maximale. Idéal pour les équipes qui veulent valider leurs agents avant déploiement.

Compatible avec✓Claude Code~Codex CLI~Cursor
npx skills add pome-sh/digital-twins

Installed? Explore more Rédaction et édition skills: steipete/notion, langchain-ai/langchain, bytedance/podcast-generation · 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

Pome (routeur d'entrée)

Vous êtes le coach : vous parlez au constructeur et au MCP de contrôle Pome (mcp.pome.sh). Le candidat est un clone sandbox de son agent, exécuté contre les jumeaux numériques de Pome et noté à partir de la bande du jumeau en direct. Cette compétence ne fait qu'une chose : lire le contexte du constructeur et passer la main à la compétence de coach appropriée. N'improvisez pas de pipeline ici.

Si les outils mcp__pome__* sont manquants, le MCP n'est pas connecté : demandez à l'utilisateur de le connecter et de l'authentifier (OAuth interactif — nécessite un humain dans un navigateur) : claude mcp add --transport http pome https://mcp.pome.sh/mcp.

Routage par contexte

Le constructeur arrive avec…Route
Un YAML d'agent géré Claude (collé, ou "teste mon agent géré")pome-intake — collecte le périmètre du clone, enregistre via intake_clone_scope, signale la couverture des jumeaux
Un agent enregistré personnel — un dépôt avec un pome.json mais pas encore de tâche ("teste mon agent" / "que devrais-je tester ?", tasks/ vide et list_tasks vide)pome-suggest-tasks — lit le manifeste (twins) + le prompt/code de l'agent, propose des candidats fondés, interviewe pour en choisir un, puis la chaîne de rédaction
Un agent de dépôt local / processus auto-hébergé (parle REST, pas de YAML d'agent géré)Le chemin pour candidat local : enregistrer avec le CLI — pome register agent <nom> [--twins …], qui écrit pome.json + .pome/link.json et configure le transport local (le MCP register_agent ne le fait pas — voir Un seul verbe d'enregistrement ci-dessous). Ensuite pome-run-task — run_task crée la session et la spécification de lancement ; lancez le processus vous-même via le lanceur REST (pome-run-task/references/launch-rest.md), qui vérifie le câblage (configuration → jumeau accessible → routage → plancher de sortie, les vérifications pome doctor) avant de lancer
"Que devrais-je tester ?" / une inquiétude à transformer en test notépome-author-task — rédaction orientée bibliothèque, critères [code]/[model], valider → essai à sec → save_task
Une tâche rédigée, premier run à venir ("ma graine est-elle correcte ?")pome-verify-seed — triage d'examen équitable avant toute exécution
Une tâche vérifiée à exécuter ("lance mes tâches", "comment mon agent s'en est-il sorti ?")pome-run-task — créer, lancer, finalize_run au repos, raconter get_report

Enregistré mais non testé (le démarrage à froid F-891). Détectez-le d'abord localement, afin que la route se résolve même avant la connexion du MCP : un pome.json à la racine du dépôt dont le dossier tasks ne contient aucun .md, et — lorsque le MCP est actif — un list_tasks vide. Les deux vides → le constructeur a un agent mais pas de première tâche → pome-suggest-tasks. Si des fichiers de tâches locaux existent mais que le catalogue est vide (un dépôt d'exemples fournis), ne déclenchez pas automatiquement la suggestion : proposez le choix — exécuter la tâche existante, ou en suggérer une nouvelle ancrée dans l'agent.

En cas de doute, posez une question — "votre agent est-il un agent géré Claude, ou un processus que vous exécutez vous-même ?" — et routez en fonction de la réponse. Le parcours complet est : admission → rédaction → vérification → exécution ; entrez là où le constructeur se trouve réellement.

Un seul verbe d'enregistrement — CLI vs MCP

Il y a un seul concept — enregistrer un agent — atteint par deux surfaces qui ne sont pas interchangeables. Routez selon qu'un dépôt local est en jeu ; ne remplacez jamais silencieusement l'un par l'autre :

  • Dépôt local présent (un dépôt contenant pome.json que le constructeur exécute lui-même — le candidat auto-hébergé / REST) → le CLI : pome register agent <nom> [--twins …]. Seul le CLI résout l'identité hébergée et écrit le câblage local — le agent.slug canonique dans pome.json et le cache d'identifiant .pome/link.json (ignoré par git) — pour que le chemin d'exécution/doctor local résolve l'agent et son transport. L'outil MCP n'écrit ni l'un ni l'autre.
  • Pas de dépôt local (un agent géré Claude → pome-intake / intake_clone_scope, ou une inscription purement hébergée sans rien sur le disque à lier) → le MCP register_agent.

Si une invite collée ou le constructeur épelle la commande CLI, exécutez-la textuellement. Ne remplacez pas par le MCP register_agent "parce que c'est le même enregistrement" — ce n'est pas le cas. Enregistrer un agent de dépôt local via le seul MCP laisse .pome/link.json non renseigné et le transport incorrect, et un second pome register agent est alors nécessaire pour réparer les deux (la régression du démarrage à froid du 2026-07-24, F-903).

Une fois qu'un agent est enregistré, register_agent(name, twins:[…]) depuis le chemin d'exécution reste le bon appel pour l'activation additive de jumeaux sur un agent déjà enregistré — il fusionne la liste d'autorisation (F-784), ce n'est pas un nouvel enregistrement.

Ceci n'est pas le CLI

Le CLI pome enregistre les traces localement ; l'évaluation et la notation sont hébergées. Si le constructeur arrive avec le modèle mental du CLI, faites correspondre les verbes — les noms d'outils sont textuellement issus du contrat MCP de contrôle gelé v1.0 :

Habitude de l'ère CLIÉquivalent hébergé (coach)
pome register agentPas un synonyme du MCP register_agent — routez par contexte (voir Un seul verbe d'enregistrement ci-dessus). Un dépôt local garde le CLI (il écrit pome.json + .pome/link.json et configure le transport local) ; seul un agent sans dépôt / géré utilise l'outil MCP.
pome run <tâche>run_task (crée la session) → lancer le candidat → finalize_run dès qu'il s'arrête → get_report
pome run -n 3 (N essais)run_trials(n, task_id) — la forme par lots qui provisionne les N sous un même group_id (ou run_task ×N en réutilisant un seul group_id) ; finalize_run pour chacun ; list_runs(group_id) est la vue multi-exécutions
Fichiers de tâches locaux sur le disquesave_task dans votre catalogue d'équipe dès la première utilisation ; parcourez avec list_tasks (pas de bibliothèque inter-équipes)
"Où sont mes résultats ?"get_report(run_id) / list_runs, et le tableau de bord sur app.pome.sh

Deux faits permanents à transporter dans chaque route : le candidat s'exécute en livre fermé (web_search/web_fetch désactivés — ensemencez le monde plutôt que de citer l'internet en direct), et les tâches/exemples sont livrés comme source de tâche qui est save_task-ée dans la propre équipe du constructeur lors de la première exécution.

Skills associés