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.jsonque 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 — leagent.slugcanonique danspome.jsonet 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 MCPregister_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 agent | Pas 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 disque | save_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.