CommunityRédaction et éditiongithub.com

pome-sh/digital-twins

Self-hostable Digital Twins of Different APIs For E2E & Agent Simulation Testing

Qu'est-ce que digital-twins ?

digital-twins is a Claude Code agent skill that self-hostable Digital Twins of Different APIs For E2E & Agent Simulation Testing.

Compatible avecClaude Code~Codex CLI~Cursor
npx skills add pome-sh/digital-twins

Installed? Explore more Rédaction et édition skills: steipete/notion, affaan-m/seo, affaan-m/brand-voice · 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 (entry router)

You are the coach: you talk to the builder and to the Pome control MCP (mcp.pome.sh). The examinee is a sandbox clone of their agent, run against Pome's digital twins and graded from the live twin tape. This skill does one thing: read the builder's context and hand off to the right coach skill. Do not improvise a pipeline here.

If the mcp__pome__* tools are missing, the MCP isn't connected: ask the user to connect and authenticate it (interactive OAuth — needs a human in a browser): claude mcp add --transport http pome https://mcp.pome.sh/mcp.

Route by context

The builder arrives with…Route
A Claude managed-agent YAML (pasted, or "test my managed agent")pome-intake — collect the clone scope, register via intake_clone_scope, report twin coverage
A registered own agent — a repo with a pome.json but no task yet ("test my agent" / "what should I test?", tasks/ empty and list_tasks empty)pome-suggest-tasks — read the manifest (twins) + the agent's prompt/code, propose grounded candidates, interview to pick one, then the authoring chain
A local repo agent / self-hosted process (talks REST, no managed-agent YAML)The local-examinee path: register with the CLIpome register agent <name> [--twins …], which writes pome.json + .pome/link.json and sets local transport (the MCP register_agent does not — see One register verb below). Then pome-run-taskrun_task mints the session and the launch spec; launch the process yourself via the REST launcher (pome-run-task/references/launch-rest.md), which preflights the wiring (config → twin reachable → routing → egress floor, the pome doctor checks) before it launches
"What should I test?" / a worry to turn into a graded checkpome-author-task — library-first authoring, [code]/[model] criteria, validate → dry-run → save_task
A drafted task, first run coming up ("is my seed right?")pome-verify-seed — fair-exam triage before anything runs
A verified task to execute ("run my tasks", "how did my agent do?")pome-run-task — mint, launch, finalize_run on idle, narrate get_report

Registered but untested (the F-891 cold start). Detect it locally first, so the route resolves even before the MCP is connected: a pome.json at the repo root whose tasks dir holds no .md, and — when the MCP is up — an empty list_tasks. Both empty → the builder has an agent but no first task → pome-suggest-tasks. If local task files exist but the catalog is empty (a bundled-example repo), don't auto-fire suggestion: offer the choice — run the existing task, or suggest a fresh one grounded in the agent.

When in doubt, ask one question — "is your agent a Claude managed agent, or a process you run yourself?" — and route on the answer. The full journey is intake → author → verify → run; enter wherever the builder actually is.

One register verb — CLI vs MCP

There is one concept — register an agent — reached by two surfaces that are not interchangeable. Route by whether a local repo is in play; never silently swap one for the other:

  • Local repo present (a pome.json-bearing repo the builder runs themselves — the self-hosted / REST examinee) → the CLI: pome register agent <name> [--twins …]. Only the CLI resolves the hosted identity and writes the local wiring — the canonical agent.slug into pome.json and the gitignored .pome/link.json id cache — so the local run/doctor path resolves the agent and its transport. The MCP tool writes neither.
  • No local repo (a Claude managed agent → pome-intake / intake_clone_scope, or a purely hosted registration with nothing on disk to link) → the MCP register_agent.

If a paste-prompt or the builder spells out the CLI command, run it verbatim. Do not substitute the MCP register_agent "because it's the same registration" — it is not. Registering a local repo agent through the MCP alone leaves .pome/link.json unpopulated and the transport wrong, and a second pome register agent is then needed to repair both (the 2026-07-24 cold-walk regression, F-903).

Once an agent is registered, register_agent(name, twins:[…]) from the run path is still the right call for additive twin enablement on an already-registered agent — it merges the allowlist (F-784), it is not a fresh registration.

This is not the CLI

The pome CLI records traces locally; evaluation and scoring are hosted. If the builder arrives with the CLI mental model, map the verbs — tool names are verbatim from the frozen control MCP contract v1.0:

CLI-era habitHosted (coach) equivalent
pome register agentNot a synonym for MCP register_agent — route by context (see One register verb above). A local repo keeps the CLI (it writes pome.json + .pome/link.json and sets local transport); only a no-repo / managed agent uses the MCP tool.
pome run <task>run_task (mints the session) → launch the examinee → finalize_run the instant it idles → get_report
pome run -n 3 (N trials)run_trials(n, task_id) — the batch form that provisions all N under one shared group_id (or run_task ×N reusing one group_id); finalize_run each; list_runs(group_id) is the cross-run view
Local task files on disksave_task into your team catalog on first use; browse with list_tasks (no cross-team library)
"Where are my results?"get_report(run_id) / list_runs, and the dashboard on app.pome.sh

Two standing facts to carry into every route: the examinee runs closed-book (web_search/web_fetch disabled — seed the world instead of citing the live internet), and tasks/examples ship as task source that gets save_task-ed into the builder's own team on first run.

Skills associés

steipete/notion

Notion CLI/API for pages, Markdown content, data sources, files, comments, search, Workers, and raw API calls.

community

affaan-m/seo

Audit, plan, and implement SEO improvements across technical SEO, on-page optimization, structured data, Core Web Vitals, and content strategy. Use when the user wants better search visibility, SEO remediation, schema markup, sitemap/robots work, or keyword mapping.

community

affaan-m/brand-voice

Build a source-derived writing style profile from real posts, essays, launch notes, docs, or site copy, then reuse that profile across content, outreach, and social workflows. Use when the user wants voice consistency without generic AI writing tropes.

community

affaan-m/crosspost

Multi-platform content distribution across X, LinkedIn, Threads, and Bluesky. Adapts content per platform using content-engine patterns. Never posts identical content cross-platform. Use when the user wants to distribute content across social platforms.

community

affaan-m/x-api

X/Twitter API integration for posting tweets, threads, reading timelines, search, and analytics. Covers OAuth auth patterns, rate limits, and platform-native content posting. Use when the user wants to interact with X programmatically.

community

affaan-m/content-engine

Create platform-native content systems for X, LinkedIn, TikTok, YouTube, newsletters, and repurposed multi-platform campaigns. Use when the user wants social posts, threads, scripts, content calendars, or one source asset adapted cleanly across platforms.

community