[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"skill-openai-replayio":3,"mdc--tkx1sc-key":36,"related-repo-openai-replayio":3198,"related-org-openai-replayio":3317},{"slug":4,"name":4,"fn":5,"description":6,"org":7,"tags":11,"stars":25,"repoUrl":26,"updatedAt":27,"license":28,"forks":29,"topics":30,"repo":31,"sourceUrl":34,"mdContent":35},"replayio","inspect agent browser runs with Replay","Use when you need to record or inspect an agent browser run in Replay, test a local app with the host agent browser using Replay Chromium, or use the Replay MCP server for deeper debugging of an uploaded recording.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},"openai","OpenAI","https:\u002F\u002Fpexgzepcugksgbtrxkhf.supabase.co\u002Fstorage\u002Fv1\u002Fobject\u002Fpublic\u002Forg-logos\u002Fopenai.png",[12,16,19,22],{"name":13,"slug":14,"type":15},"Observability","observability","tag",{"name":17,"slug":18,"type":15},"Testing","testing",{"name":20,"slug":21,"type":15},"Debugging","debugging",{"name":23,"slug":24,"type":15},"Browser Automation","browser-automation",3992,"https:\u002F\u002Fgithub.com\u002Fopenai\u002Fplugins","2026-06-30T19:00:57.102",null,465,[],{"repoUrl":26,"stars":25,"forks":29,"topics":32,"description":33},[],"OpenAI Plugins","https:\u002F\u002Fgithub.com\u002Fopenai\u002Fplugins\u002Ftree\u002FHEAD\u002Fplugins\u002Freplayio\u002Fskills\u002Freplayio","---\nname: \"replayio\"\ndescription: \"Use when you need to record or inspect an agent browser run in Replay, test a local app with the host agent browser using Replay Chromium, or use the Replay MCP server for deeper debugging of an uploaded recording.\"\n---\n\n# Replay Browser + Agent Browser + Replay MCP\n\nUse the host **agent browser** with Replay Chromium whenever you need a recorded browser session. Do **not** drive the app with `playwright-cli` for normal browser work.\n\nBefore opening the agent browser, point it at Replay Chromium:\n\n```bash\nexport AGENT_BROWSER_EXECUTABLE_PATH=\u002Fpath\u002Fto\u002Fchromium\n```\n\nFor the standard Replay install on macOS, the executable is usually:\n\n```bash\nexport AGENT_BROWSER_EXECUTABLE_PATH=\"$HOME\u002F.replay\u002Fruntimes\u002FReplay-Chromium.app\u002FContents\u002FMacOS\u002FChromium\"\n```\n\nRecordings upload through the plugin's stop\u002Fidle hook as a safety net. If you need the Replay URL before reporting results, close the agent browser tab\u002Fsession and force an upload with `replayio upload-all || replayio upload`.\n\n## Direct Agent Browser First\n\nUse the host agent browser directly for live browser control and first-pass inspection. Do not reach for the Replay MCP server just to click, type, read DOM state, inspect console output, check network requests, take screenshots, read storage, or check cookies.\n\nUse the Replay MCP server only after a recording has uploaded and you need deeper Replay-specific debugging, such as inspecting execution history, narrowing a time-travel debugging problem, or investigating details that the live agent browser cannot answer.\n\nIn Browser-plugin hosts, follow the Browser skill and use the selected `iab` browser. Typical direct checks look like this:\n\n```js\nawait browser.nameSession(\"replay repro\");\nif (typeof tab === \"undefined\") {\n  globalThis.tab = await browser.tabs.new();\n}\nawait tab.goto(URL);\nconsole.log(await tab.playwright.domSnapshot());\nconsole.log(await tab.title());\nconsole.log(await tab.url());\nconsole.log(await tab.dev.logs({ levels: [\"error\"], limit: 50 }));\nawait nodeRepl.emitImage(await tab.screenshot({ fullPage: false }));\n```\n\nUse the browser API's Playwright\u002FDOM\u002Fvision helpers for interaction; the key restriction is to avoid the external `playwright-cli` path.\n\n## Close-When-Done Contract\n\nAfter you finish a test run, **before reporting the outcome to the user**, close the agent browser tab or session using the host browser API.\n\nIn Browser-plugin hosts:\n\n```js\nawait tab.close();\n```\n\nThen, if you need the uploaded Replay URL before your response, run:\n\n```bash\nreplayio upload-all || replayio upload\n```\n\nDo not leave a browser open at the end of your turn. If you forget, the stop\u002Fidle hook will attempt to upload pending recordings as a safety net, but you may not see the resulting Replay URL before responding.\n\n**Exception - authentication wall:** If you must stop because the user needs to sign in interactively (see below), **do not** close the browser just to retry or reset. Leaving the session open preserves the headed window they should use; closing can end the recording before login is done.\n\n## Web App Authentication Walls\n\nIf you hit a **login or authorization barrier** you cannot complete with automation alone - for example a sign-in page, SSO redirect, MFA step, CAPTCHA, or consent screen - **do not** close the browser and loop on reopen\u002Fretry. That drops useful context and trains failing retries.\n\nInstead:\n\n1. **Stop driving the browser** for this turn.\n2. Briefly report what blocked you (URL or visible state).\n3. Ask the user to complete sign-in **in the existing headed browser session** when that is possible (or give them the exact URL if they must use another window).\n4. Ask them to **send another message when they are logged in** so you can attach to the same session or continue from an authenticated page.\n5. End your turn there; resume only after they confirm.\n\nDo not treat an auth wall as a generic error to brute-force by closing and reopening the Replay browser.\n\n## The Reliable Path\n\n1. Verify the Replay runtime exists and the CLI is logged in.\n2. Resolve the Replay Chromium executable path.\n3. Export `AGENT_BROWSER_EXECUTABLE_PATH` to that executable **before** opening the agent browser.\n4. Set both `RECORD_ALL_CONTENT='1'` and `RECORD_REPLAY_VERBOSE='1'`.\n5. If Replay QA will be used, map `REPLAY_QA_API_KEY` from `SECRET_REPLAY_QA_API_KEY` when available.\n6. If testing a local app, start it first and verify the actual reachable URL.\n7. Drive and inspect the page directly with the host agent browser, not `playwright-cli`.\n8. Use fresh DOM snapshots or screenshots after navigation and major UI changes.\n9. Close the agent browser tab\u002Fsession when done.\n10. Run `replayio upload-all || replayio upload` if you need the uploaded Replay URL before reporting results.\n\n## Prerequisites\n\nCheck Replay first:\n\n```bash\nreplayio info\nreplayio whoami\n```\n\nIf Replay is missing, verify `npx` exists:\n\n```bash\ncommand -v npx >\u002Fdev\u002Fnull 2>&1\n```\n\nIf `npx` is missing, stop and ask the user to install Node.js\u002Fnpm. If `npx` exists, install Replay:\n\n```bash\nnpx @replayio\u002Freplay install\n```\n\nIf not logged in, authenticate:\n\n```bash\nreplayio login\n```\n\n## Replay MCP Authentication (Private Recordings)\n\nReplay MCP calls are authorized **per user**. If tools return **Access denied**, you are usually not authenticated to Replay **as the same account that owns the recording**.\n\n- **Cursor**: open **Settings -> MCP**, select the **Replay** server, and complete **Sign in \u002F Connect \u002F Reconnect** so Cursor can finish the **OAuth** flow (including **dynamic client registration** when supported). Stay on `https:\u002F\u002Fdispatch.replay.io\u002Fmcp` (do not swap in unrelated endpoints unless Replay explicitly instructs you to).\n- **Other hosts**: follow that host's MCP authentication mechanism (some environments use API keys or separate app connectors instead of OAuth).\n\n## Agent Browser Executable Path\n\nThe agent browser should launch Replay Chromium through `AGENT_BROWSER_EXECUTABLE_PATH`:\n\n```bash\nexport AGENT_BROWSER_EXECUTABLE_PATH=\"$HOME\u002F.replay\u002Fruntimes\u002FReplay-Chromium.app\u002FContents\u002FMacOS\u002FChromium\"\n```\n\nVerify the executable exists before browser work:\n\n```bash\ntest -x \"$AGENT_BROWSER_EXECUTABLE_PATH\"\n```\n\nDo not configure `.playwright\u002Fcli.config.json` for normal runs, and do not switch back to `playwright-cli` just to select the browser executable. If the agent browser was already running before the environment variable was set, restart or reconnect the agent browser so it picks up the Replay Chromium path.\n\n## Recording Environment\n\nSet recording flags before the run:\n\n```bash\nexport RECORD_ALL_CONTENT='1'\nexport RECORD_REPLAY_VERBOSE='1'\n```\n\nSome hosts or hooks may set these automatically. If in doubt, set them explicitly before opening the agent browser.\n\n## Replay QA Environment\n\nIf Replay QA will be used, map the Replay QA API secret before calling the Replay QA API skill:\n\n```bash\nif [ -z \"${REPLAY_QA_API_KEY:-}\" ] && [ -n \"${SECRET_REPLAY_QA_API_KEY:-}\" ]; then\n  export REPLAY_QA_API_KEY=\"$SECRET_REPLAY_QA_API_KEY\"\nfi\n\ntest -n \"${REPLAY_QA_API_KEY:-}\"\n```\n\nNever print the token. Replay QA tokens start with `lqa_`.\n\n## Local App Check\n\nIf testing a local app:\n\n1. Start the app first.\n2. Use the URL the dev server actually prints.\n3. Do not assume the requested port is the final port. Some dev servers auto-increment when the port is busy.\n4. Verify reachability before opening the browser.\n\n```bash\ncurl -I http:\u002F\u002F127.0.0.1:4323\u002Ftodos\n```\n\nIf a localhost request fails even though a process is clearly listening, you may be in a restricted sandbox. Rerun the browser and reachability checks outside the sandbox.\n\n## Reliable Agent Browser Workflow\n\n```bash\nexport AGENT_BROWSER_EXECUTABLE_PATH=\"$HOME\u002F.replay\u002Fruntimes\u002FReplay-Chromium.app\u002FContents\u002FMacOS\u002FChromium\"\nexport RECORD_ALL_CONTENT='1'\nexport RECORD_REPLAY_VERBOSE='1'\n```\n\nThen use the host agent browser. In Browser-plugin hosts:\n\n```js\nconst URL = \"http:\u002F\u002F127.0.0.1:4323\u002Ftodos\";\nawait browser.nameSession(\"replay todos\");\nif (typeof tab === \"undefined\") {\n  globalThis.tab = await browser.tabs.new();\n}\nawait tab.goto(URL);\nconsole.log(await tab.playwright.domSnapshot());\nawait tab.playwright.getByLabel(\"New todo\", { exact: false }).fill(\"Buy milk\", {});\nawait tab.playwright.getByRole(\"button\", { name: \"Add\" }).click({});\nconsole.log(await tab.playwright.domSnapshot());\nconsole.log(await tab.dev.logs({ levels: [\"error\"], limit: 50 }));\nawait nodeRepl.emitImage(await tab.screenshot({ fullPage: false }));\nawait tab.close();\n```\n\nUse `domSnapshot()` before constructing locators, and again after DOM changes or navigation.\n\n## Attach To An Already-Open Agent Browser\n\nIf the agent browser is already running, attach through the host browser API instead of starting a new CLI session.\n\nIn Browser-plugin hosts:\n\n```js\nconst tabs = await browser.tabs.list();\nconsole.log(tabs);\nglobalThis.tab = tabs.length > 0 ? await browser.tabs.get(tabs[0].id) : await browser.tabs.new();\n```\n\n## Analyzing Uploaded Recordings\n\nFirst inspect the live run with direct agent-browser APIs. Once a recording has uploaded, use the `replay` MCP server tools only when you need deeper Replay-specific debugging beyond direct browser output. Codex connects to Replay through the app configured in `.app.json`, which provides app-level authentication and exposes the Replay MCP tools.\n\n## Replay MCP Widgets\n\nReplay MCP tool calls may return both text `content` for the model and `structuredContent` for an MCP Apps widget. In MCP Apps-aware hosts, prefer the rendered widget for dense debugging views such as Logpoint output, React component trees, Redux actions, network details, screenshots, source code, profiles, and exception stacks.\n\nWhen a widget is visible, use it as evidence instead of restating every detail in prose. Use follow-up actions or related Replay MCP tools when the widget points to a specific point, source, component, request, or stack frame that needs deeper inspection.\n\n## Recording Uploads\n\nThe plugin's stop\u002Fidle hook attempts to upload pending Replay recordings automatically at the end of the turn. Because agent-browser interactions do not necessarily run through a shell close command, force an upload yourself when you need the Replay URL before reporting results:\n\n```bash\nreplayio upload-all || replayio upload\n```\n\nIf you need to inspect the upload state yourself:\n\n```bash\nreplayio list\n```\n\n## Troubleshooting\n\n- If the agent browser does not record, verify `AGENT_BROWSER_EXECUTABLE_PATH` points at Replay Chromium and restart\u002Freconnect the agent browser after setting it.\n- If `test -x \"$AGENT_BROWSER_EXECUTABLE_PATH\"` fails, run `npx @replayio\u002Freplay install` or fix the path.\n- If no Replay URL is available before you respond, close the agent browser tab\u002Fsession and run `replayio upload-all || replayio upload`.\n- If the app is on localhost, verify the exact URL with `curl -I` before opening the browser.\n- If the requested port was busy, use the actual port printed by the dev server.\n- Prefer direct agent-browser inspection (DOM snapshots, console logs, screenshots, storage, cookies, network tools when available) before using the Replay MCP server.\n- If Replay authentication fails, run `replayio login` or reconnect the relevant Replay app\u002Fintegration.\n- If Replay QA returns 401, verify `REPLAY_QA_API_KEY` is set from `SECRET_REPLAY_QA_API_KEY` and starts with `lqa_`.\n- If the **application under test** requires interactive login, follow **Web App Authentication Walls** - do not close-and-retry the browser session in a loop.\n\n## References\n\n- Agent browser reference: `references\u002Fcli.md`\n- Workflow notes: `references\u002Fworkflows.md`\n- [Replay docs](https:\u002F\u002Fdocs.replay.io)\n",{"data":37,"body":38},{"name":4,"description":6},{"type":39,"children":40},"root",[41,50,80,85,125,130,173,186,193,198,203,216,777,789,795,807,812,847,852,887,892,909,915,933,938,987,992,998,1110,1116,1121,1152,1165,1205,1224,1248,1253,1272,1278,1303,1370,1376,1387,1424,1429,1462,1482,1488,1493,1559,1564,1570,1575,1724,1736,1742,1747,1770,1795,1800,1806,1898,1903,2653,2666,2672,2677,2681,2895,2901,2922,2928,2949,2954,2960,2965,2994,2999,3018,3024,3149,3155,3192],{"type":42,"tag":43,"props":44,"children":46},"element","h1",{"id":45},"replay-browser-agent-browser-replay-mcp",[47],{"type":48,"value":49},"text","Replay Browser + Agent Browser + Replay MCP",{"type":42,"tag":51,"props":52,"children":53},"p",{},[54,56,62,64,69,71,78],{"type":48,"value":55},"Use the host ",{"type":42,"tag":57,"props":58,"children":59},"strong",{},[60],{"type":48,"value":61},"agent browser",{"type":48,"value":63}," with Replay Chromium whenever you need a recorded browser session. Do ",{"type":42,"tag":57,"props":65,"children":66},{},[67],{"type":48,"value":68},"not",{"type":48,"value":70}," drive the app with ",{"type":42,"tag":72,"props":73,"children":75},"code",{"className":74},[],[76],{"type":48,"value":77},"playwright-cli",{"type":48,"value":79}," for normal browser work.",{"type":42,"tag":51,"props":81,"children":82},{},[83],{"type":48,"value":84},"Before opening the agent browser, point it at Replay Chromium:",{"type":42,"tag":86,"props":87,"children":92},"pre",{"className":88,"code":89,"language":90,"meta":91,"style":91},"language-bash shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","export AGENT_BROWSER_EXECUTABLE_PATH=\u002Fpath\u002Fto\u002Fchromium\n","bash","",[93],{"type":42,"tag":72,"props":94,"children":95},{"__ignoreMap":91},[96],{"type":42,"tag":97,"props":98,"children":101},"span",{"class":99,"line":100},"line",1,[102,108,114,120],{"type":42,"tag":97,"props":103,"children":105},{"style":104},"--shiki-light:#9C3EDA;--shiki-default:#C792EA;--shiki-dark:#C792EA",[106],{"type":48,"value":107},"export",{"type":42,"tag":97,"props":109,"children":111},{"style":110},"--shiki-light:#90A4AE;--shiki-default:#EEFFFF;--shiki-dark:#BABED8",[112],{"type":48,"value":113}," AGENT_BROWSER_EXECUTABLE_PATH",{"type":42,"tag":97,"props":115,"children":117},{"style":116},"--shiki-light:#39ADB5;--shiki-default:#89DDFF;--shiki-dark:#89DDFF",[118],{"type":48,"value":119},"=",{"type":42,"tag":97,"props":121,"children":122},{"style":110},[123],{"type":48,"value":124},"\u002Fpath\u002Fto\u002Fchromium\n",{"type":42,"tag":51,"props":126,"children":127},{},[128],{"type":48,"value":129},"For the standard Replay install on macOS, the executable is usually:",{"type":42,"tag":86,"props":131,"children":133},{"className":88,"code":132,"language":90,"meta":91,"style":91},"export AGENT_BROWSER_EXECUTABLE_PATH=\"$HOME\u002F.replay\u002Fruntimes\u002FReplay-Chromium.app\u002FContents\u002FMacOS\u002FChromium\"\n",[134],{"type":42,"tag":72,"props":135,"children":136},{"__ignoreMap":91},[137],{"type":42,"tag":97,"props":138,"children":139},{"class":99,"line":100},[140,144,148,152,157,162,168],{"type":42,"tag":97,"props":141,"children":142},{"style":104},[143],{"type":48,"value":107},{"type":42,"tag":97,"props":145,"children":146},{"style":110},[147],{"type":48,"value":113},{"type":42,"tag":97,"props":149,"children":150},{"style":116},[151],{"type":48,"value":119},{"type":42,"tag":97,"props":153,"children":154},{"style":116},[155],{"type":48,"value":156},"\"",{"type":42,"tag":97,"props":158,"children":159},{"style":110},[160],{"type":48,"value":161},"$HOME",{"type":42,"tag":97,"props":163,"children":165},{"style":164},"--shiki-light:#91B859;--shiki-default:#C3E88D;--shiki-dark:#C3E88D",[166],{"type":48,"value":167},"\u002F.replay\u002Fruntimes\u002FReplay-Chromium.app\u002FContents\u002FMacOS\u002FChromium",{"type":42,"tag":97,"props":169,"children":170},{"style":116},[171],{"type":48,"value":172},"\"\n",{"type":42,"tag":51,"props":174,"children":175},{},[176,178,184],{"type":48,"value":177},"Recordings upload through the plugin's stop\u002Fidle hook as a safety net. If you need the Replay URL before reporting results, close the agent browser tab\u002Fsession and force an upload with ",{"type":42,"tag":72,"props":179,"children":181},{"className":180},[],[182],{"type":48,"value":183},"replayio upload-all || replayio upload",{"type":48,"value":185},".",{"type":42,"tag":187,"props":188,"children":190},"h2",{"id":189},"direct-agent-browser-first",[191],{"type":48,"value":192},"Direct Agent Browser First",{"type":42,"tag":51,"props":194,"children":195},{},[196],{"type":48,"value":197},"Use the host agent browser directly for live browser control and first-pass inspection. Do not reach for the Replay MCP server just to click, type, read DOM state, inspect console output, check network requests, take screenshots, read storage, or check cookies.",{"type":42,"tag":51,"props":199,"children":200},{},[201],{"type":48,"value":202},"Use the Replay MCP server only after a recording has uploaded and you need deeper Replay-specific debugging, such as inspecting execution history, narrowing a time-travel debugging problem, or investigating details that the live agent browser cannot answer.",{"type":42,"tag":51,"props":204,"children":205},{},[206,208,214],{"type":48,"value":207},"In Browser-plugin hosts, follow the Browser skill and use the selected ",{"type":42,"tag":72,"props":209,"children":211},{"className":210},[],[212],{"type":48,"value":213},"iab",{"type":48,"value":215}," browser. Typical direct checks look like this:",{"type":42,"tag":86,"props":217,"children":221},{"className":218,"code":219,"language":220,"meta":91,"style":91},"language-js shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","await browser.nameSession(\"replay repro\");\nif (typeof tab === \"undefined\") {\n  globalThis.tab = await browser.tabs.new();\n}\nawait tab.goto(URL);\nconsole.log(await tab.playwright.domSnapshot());\nconsole.log(await tab.title());\nconsole.log(await tab.url());\nconsole.log(await tab.dev.logs({ levels: [\"error\"], limit: 50 }));\nawait nodeRepl.emitImage(await tab.screenshot({ fullPage: false }));\n","js",[222],{"type":42,"tag":72,"props":223,"children":224},{"__ignoreMap":91},[225,277,330,390,399,430,487,532,577,699],{"type":42,"tag":97,"props":226,"children":227},{"class":99,"line":100},[228,234,239,243,249,254,258,263,267,272],{"type":42,"tag":97,"props":229,"children":231},{"style":230},"--shiki-light:#39ADB5;--shiki-light-font-style:italic;--shiki-default:#89DDFF;--shiki-default-font-style:italic;--shiki-dark:#89DDFF;--shiki-dark-font-style:italic",[232],{"type":48,"value":233},"await",{"type":42,"tag":97,"props":235,"children":236},{"style":110},[237],{"type":48,"value":238}," browser",{"type":42,"tag":97,"props":240,"children":241},{"style":116},[242],{"type":48,"value":185},{"type":42,"tag":97,"props":244,"children":246},{"style":245},"--shiki-light:#6182B8;--shiki-default:#82AAFF;--shiki-dark:#82AAFF",[247],{"type":48,"value":248},"nameSession",{"type":42,"tag":97,"props":250,"children":251},{"style":110},[252],{"type":48,"value":253},"(",{"type":42,"tag":97,"props":255,"children":256},{"style":116},[257],{"type":48,"value":156},{"type":42,"tag":97,"props":259,"children":260},{"style":164},[261],{"type":48,"value":262},"replay repro",{"type":42,"tag":97,"props":264,"children":265},{"style":116},[266],{"type":48,"value":156},{"type":42,"tag":97,"props":268,"children":269},{"style":110},[270],{"type":48,"value":271},")",{"type":42,"tag":97,"props":273,"children":274},{"style":116},[275],{"type":48,"value":276},";\n",{"type":42,"tag":97,"props":278,"children":280},{"class":99,"line":279},2,[281,286,291,296,301,306,311,316,320,325],{"type":42,"tag":97,"props":282,"children":283},{"style":230},[284],{"type":48,"value":285},"if",{"type":42,"tag":97,"props":287,"children":288},{"style":110},[289],{"type":48,"value":290}," (",{"type":42,"tag":97,"props":292,"children":293},{"style":116},[294],{"type":48,"value":295},"typeof",{"type":42,"tag":97,"props":297,"children":298},{"style":110},[299],{"type":48,"value":300}," tab ",{"type":42,"tag":97,"props":302,"children":303},{"style":116},[304],{"type":48,"value":305},"===",{"type":42,"tag":97,"props":307,"children":308},{"style":116},[309],{"type":48,"value":310}," \"",{"type":42,"tag":97,"props":312,"children":313},{"style":164},[314],{"type":48,"value":315},"undefined",{"type":42,"tag":97,"props":317,"children":318},{"style":116},[319],{"type":48,"value":156},{"type":42,"tag":97,"props":321,"children":322},{"style":110},[323],{"type":48,"value":324},") ",{"type":42,"tag":97,"props":326,"children":327},{"style":116},[328],{"type":48,"value":329},"{\n",{"type":42,"tag":97,"props":331,"children":333},{"class":99,"line":332},3,[334,339,343,348,353,358,362,366,371,375,380,386],{"type":42,"tag":97,"props":335,"children":336},{"style":110},[337],{"type":48,"value":338},"  globalThis",{"type":42,"tag":97,"props":340,"children":341},{"style":116},[342],{"type":48,"value":185},{"type":42,"tag":97,"props":344,"children":345},{"style":110},[346],{"type":48,"value":347},"tab",{"type":42,"tag":97,"props":349,"children":350},{"style":116},[351],{"type":48,"value":352}," =",{"type":42,"tag":97,"props":354,"children":355},{"style":230},[356],{"type":48,"value":357}," await",{"type":42,"tag":97,"props":359,"children":360},{"style":110},[361],{"type":48,"value":238},{"type":42,"tag":97,"props":363,"children":364},{"style":116},[365],{"type":48,"value":185},{"type":42,"tag":97,"props":367,"children":368},{"style":110},[369],{"type":48,"value":370},"tabs",{"type":42,"tag":97,"props":372,"children":373},{"style":116},[374],{"type":48,"value":185},{"type":42,"tag":97,"props":376,"children":377},{"style":245},[378],{"type":48,"value":379},"new",{"type":42,"tag":97,"props":381,"children":383},{"style":382},"--shiki-light:#E53935;--shiki-default:#F07178;--shiki-dark:#F07178",[384],{"type":48,"value":385},"()",{"type":42,"tag":97,"props":387,"children":388},{"style":116},[389],{"type":48,"value":276},{"type":42,"tag":97,"props":391,"children":393},{"class":99,"line":392},4,[394],{"type":42,"tag":97,"props":395,"children":396},{"style":116},[397],{"type":48,"value":398},"}\n",{"type":42,"tag":97,"props":400,"children":402},{"class":99,"line":401},5,[403,407,412,416,421,426],{"type":42,"tag":97,"props":404,"children":405},{"style":230},[406],{"type":48,"value":233},{"type":42,"tag":97,"props":408,"children":409},{"style":110},[410],{"type":48,"value":411}," tab",{"type":42,"tag":97,"props":413,"children":414},{"style":116},[415],{"type":48,"value":185},{"type":42,"tag":97,"props":417,"children":418},{"style":245},[419],{"type":48,"value":420},"goto",{"type":42,"tag":97,"props":422,"children":423},{"style":110},[424],{"type":48,"value":425},"(URL)",{"type":42,"tag":97,"props":427,"children":428},{"style":116},[429],{"type":48,"value":276},{"type":42,"tag":97,"props":431,"children":433},{"class":99,"line":432},6,[434,439,443,448,452,456,460,464,469,473,478,483],{"type":42,"tag":97,"props":435,"children":436},{"style":110},[437],{"type":48,"value":438},"console",{"type":42,"tag":97,"props":440,"children":441},{"style":116},[442],{"type":48,"value":185},{"type":42,"tag":97,"props":444,"children":445},{"style":245},[446],{"type":48,"value":447},"log",{"type":42,"tag":97,"props":449,"children":450},{"style":110},[451],{"type":48,"value":253},{"type":42,"tag":97,"props":453,"children":454},{"style":230},[455],{"type":48,"value":233},{"type":42,"tag":97,"props":457,"children":458},{"style":110},[459],{"type":48,"value":411},{"type":42,"tag":97,"props":461,"children":462},{"style":116},[463],{"type":48,"value":185},{"type":42,"tag":97,"props":465,"children":466},{"style":110},[467],{"type":48,"value":468},"playwright",{"type":42,"tag":97,"props":470,"children":471},{"style":116},[472],{"type":48,"value":185},{"type":42,"tag":97,"props":474,"children":475},{"style":245},[476],{"type":48,"value":477},"domSnapshot",{"type":42,"tag":97,"props":479,"children":480},{"style":110},[481],{"type":48,"value":482},"())",{"type":42,"tag":97,"props":484,"children":485},{"style":116},[486],{"type":48,"value":276},{"type":42,"tag":97,"props":488,"children":490},{"class":99,"line":489},7,[491,495,499,503,507,511,515,519,524,528],{"type":42,"tag":97,"props":492,"children":493},{"style":110},[494],{"type":48,"value":438},{"type":42,"tag":97,"props":496,"children":497},{"style":116},[498],{"type":48,"value":185},{"type":42,"tag":97,"props":500,"children":501},{"style":245},[502],{"type":48,"value":447},{"type":42,"tag":97,"props":504,"children":505},{"style":110},[506],{"type":48,"value":253},{"type":42,"tag":97,"props":508,"children":509},{"style":230},[510],{"type":48,"value":233},{"type":42,"tag":97,"props":512,"children":513},{"style":110},[514],{"type":48,"value":411},{"type":42,"tag":97,"props":516,"children":517},{"style":116},[518],{"type":48,"value":185},{"type":42,"tag":97,"props":520,"children":521},{"style":245},[522],{"type":48,"value":523},"title",{"type":42,"tag":97,"props":525,"children":526},{"style":110},[527],{"type":48,"value":482},{"type":42,"tag":97,"props":529,"children":530},{"style":116},[531],{"type":48,"value":276},{"type":42,"tag":97,"props":533,"children":535},{"class":99,"line":534},8,[536,540,544,548,552,556,560,564,569,573],{"type":42,"tag":97,"props":537,"children":538},{"style":110},[539],{"type":48,"value":438},{"type":42,"tag":97,"props":541,"children":542},{"style":116},[543],{"type":48,"value":185},{"type":42,"tag":97,"props":545,"children":546},{"style":245},[547],{"type":48,"value":447},{"type":42,"tag":97,"props":549,"children":550},{"style":110},[551],{"type":48,"value":253},{"type":42,"tag":97,"props":553,"children":554},{"style":230},[555],{"type":48,"value":233},{"type":42,"tag":97,"props":557,"children":558},{"style":110},[559],{"type":48,"value":411},{"type":42,"tag":97,"props":561,"children":562},{"style":116},[563],{"type":48,"value":185},{"type":42,"tag":97,"props":565,"children":566},{"style":245},[567],{"type":48,"value":568},"url",{"type":42,"tag":97,"props":570,"children":571},{"style":110},[572],{"type":48,"value":482},{"type":42,"tag":97,"props":574,"children":575},{"style":116},[576],{"type":48,"value":276},{"type":42,"tag":97,"props":578,"children":580},{"class":99,"line":579},9,[581,585,589,593,597,601,605,609,614,618,623,627,632,637,642,647,651,656,660,665,670,675,679,685,690,695],{"type":42,"tag":97,"props":582,"children":583},{"style":110},[584],{"type":48,"value":438},{"type":42,"tag":97,"props":586,"children":587},{"style":116},[588],{"type":48,"value":185},{"type":42,"tag":97,"props":590,"children":591},{"style":245},[592],{"type":48,"value":447},{"type":42,"tag":97,"props":594,"children":595},{"style":110},[596],{"type":48,"value":253},{"type":42,"tag":97,"props":598,"children":599},{"style":230},[600],{"type":48,"value":233},{"type":42,"tag":97,"props":602,"children":603},{"style":110},[604],{"type":48,"value":411},{"type":42,"tag":97,"props":606,"children":607},{"style":116},[608],{"type":48,"value":185},{"type":42,"tag":97,"props":610,"children":611},{"style":110},[612],{"type":48,"value":613},"dev",{"type":42,"tag":97,"props":615,"children":616},{"style":116},[617],{"type":48,"value":185},{"type":42,"tag":97,"props":619,"children":620},{"style":245},[621],{"type":48,"value":622},"logs",{"type":42,"tag":97,"props":624,"children":625},{"style":110},[626],{"type":48,"value":253},{"type":42,"tag":97,"props":628,"children":629},{"style":116},[630],{"type":48,"value":631},"{",{"type":42,"tag":97,"props":633,"children":634},{"style":382},[635],{"type":48,"value":636}," levels",{"type":42,"tag":97,"props":638,"children":639},{"style":116},[640],{"type":48,"value":641},":",{"type":42,"tag":97,"props":643,"children":644},{"style":110},[645],{"type":48,"value":646}," [",{"type":42,"tag":97,"props":648,"children":649},{"style":116},[650],{"type":48,"value":156},{"type":42,"tag":97,"props":652,"children":653},{"style":164},[654],{"type":48,"value":655},"error",{"type":42,"tag":97,"props":657,"children":658},{"style":116},[659],{"type":48,"value":156},{"type":42,"tag":97,"props":661,"children":662},{"style":110},[663],{"type":48,"value":664},"]",{"type":42,"tag":97,"props":666,"children":667},{"style":116},[668],{"type":48,"value":669},",",{"type":42,"tag":97,"props":671,"children":672},{"style":382},[673],{"type":48,"value":674}," limit",{"type":42,"tag":97,"props":676,"children":677},{"style":116},[678],{"type":48,"value":641},{"type":42,"tag":97,"props":680,"children":682},{"style":681},"--shiki-light:#F76D47;--shiki-default:#F78C6C;--shiki-dark:#F78C6C",[683],{"type":48,"value":684}," 50",{"type":42,"tag":97,"props":686,"children":687},{"style":116},[688],{"type":48,"value":689}," }",{"type":42,"tag":97,"props":691,"children":692},{"style":110},[693],{"type":48,"value":694},"))",{"type":42,"tag":97,"props":696,"children":697},{"style":116},[698],{"type":48,"value":276},{"type":42,"tag":97,"props":700,"children":702},{"class":99,"line":701},10,[703,707,712,716,721,725,729,733,737,742,746,750,755,759,765,769,773],{"type":42,"tag":97,"props":704,"children":705},{"style":230},[706],{"type":48,"value":233},{"type":42,"tag":97,"props":708,"children":709},{"style":110},[710],{"type":48,"value":711}," nodeRepl",{"type":42,"tag":97,"props":713,"children":714},{"style":116},[715],{"type":48,"value":185},{"type":42,"tag":97,"props":717,"children":718},{"style":245},[719],{"type":48,"value":720},"emitImage",{"type":42,"tag":97,"props":722,"children":723},{"style":110},[724],{"type":48,"value":253},{"type":42,"tag":97,"props":726,"children":727},{"style":230},[728],{"type":48,"value":233},{"type":42,"tag":97,"props":730,"children":731},{"style":110},[732],{"type":48,"value":411},{"type":42,"tag":97,"props":734,"children":735},{"style":116},[736],{"type":48,"value":185},{"type":42,"tag":97,"props":738,"children":739},{"style":245},[740],{"type":48,"value":741},"screenshot",{"type":42,"tag":97,"props":743,"children":744},{"style":110},[745],{"type":48,"value":253},{"type":42,"tag":97,"props":747,"children":748},{"style":116},[749],{"type":48,"value":631},{"type":42,"tag":97,"props":751,"children":752},{"style":382},[753],{"type":48,"value":754}," fullPage",{"type":42,"tag":97,"props":756,"children":757},{"style":116},[758],{"type":48,"value":641},{"type":42,"tag":97,"props":760,"children":762},{"style":761},"--shiki-light:#FF5370;--shiki-default:#FF9CAC;--shiki-dark:#FF9CAC",[763],{"type":48,"value":764}," false",{"type":42,"tag":97,"props":766,"children":767},{"style":116},[768],{"type":48,"value":689},{"type":42,"tag":97,"props":770,"children":771},{"style":110},[772],{"type":48,"value":694},{"type":42,"tag":97,"props":774,"children":775},{"style":116},[776],{"type":48,"value":276},{"type":42,"tag":51,"props":778,"children":779},{},[780,782,787],{"type":48,"value":781},"Use the browser API's Playwright\u002FDOM\u002Fvision helpers for interaction; the key restriction is to avoid the external ",{"type":42,"tag":72,"props":783,"children":785},{"className":784},[],[786],{"type":48,"value":77},{"type":48,"value":788}," path.",{"type":42,"tag":187,"props":790,"children":792},{"id":791},"close-when-done-contract",[793],{"type":48,"value":794},"Close-When-Done Contract",{"type":42,"tag":51,"props":796,"children":797},{},[798,800,805],{"type":48,"value":799},"After you finish a test run, ",{"type":42,"tag":57,"props":801,"children":802},{},[803],{"type":48,"value":804},"before reporting the outcome to the user",{"type":48,"value":806},", close the agent browser tab or session using the host browser API.",{"type":42,"tag":51,"props":808,"children":809},{},[810],{"type":48,"value":811},"In Browser-plugin hosts:",{"type":42,"tag":86,"props":813,"children":815},{"className":218,"code":814,"language":220,"meta":91,"style":91},"await tab.close();\n",[816],{"type":42,"tag":72,"props":817,"children":818},{"__ignoreMap":91},[819],{"type":42,"tag":97,"props":820,"children":821},{"class":99,"line":100},[822,826,830,834,839,843],{"type":42,"tag":97,"props":823,"children":824},{"style":230},[825],{"type":48,"value":233},{"type":42,"tag":97,"props":827,"children":828},{"style":110},[829],{"type":48,"value":411},{"type":42,"tag":97,"props":831,"children":832},{"style":116},[833],{"type":48,"value":185},{"type":42,"tag":97,"props":835,"children":836},{"style":245},[837],{"type":48,"value":838},"close",{"type":42,"tag":97,"props":840,"children":841},{"style":110},[842],{"type":48,"value":385},{"type":42,"tag":97,"props":844,"children":845},{"style":116},[846],{"type":48,"value":276},{"type":42,"tag":51,"props":848,"children":849},{},[850],{"type":48,"value":851},"Then, if you need the uploaded Replay URL before your response, run:",{"type":42,"tag":86,"props":853,"children":855},{"className":88,"code":854,"language":90,"meta":91,"style":91},"replayio upload-all || replayio upload\n",[856],{"type":42,"tag":72,"props":857,"children":858},{"__ignoreMap":91},[859],{"type":42,"tag":97,"props":860,"children":861},{"class":99,"line":100},[862,867,872,877,882],{"type":42,"tag":97,"props":863,"children":865},{"style":864},"--shiki-light:#E2931D;--shiki-default:#FFCB6B;--shiki-dark:#FFCB6B",[866],{"type":48,"value":4},{"type":42,"tag":97,"props":868,"children":869},{"style":164},[870],{"type":48,"value":871}," upload-all",{"type":42,"tag":97,"props":873,"children":874},{"style":116},[875],{"type":48,"value":876}," ||",{"type":42,"tag":97,"props":878,"children":879},{"style":864},[880],{"type":48,"value":881}," replayio",{"type":42,"tag":97,"props":883,"children":884},{"style":164},[885],{"type":48,"value":886}," upload\n",{"type":42,"tag":51,"props":888,"children":889},{},[890],{"type":48,"value":891},"Do not leave a browser open at the end of your turn. If you forget, the stop\u002Fidle hook will attempt to upload pending recordings as a safety net, but you may not see the resulting Replay URL before responding.",{"type":42,"tag":51,"props":893,"children":894},{},[895,900,902,907],{"type":42,"tag":57,"props":896,"children":897},{},[898],{"type":48,"value":899},"Exception - authentication wall:",{"type":48,"value":901}," If you must stop because the user needs to sign in interactively (see below), ",{"type":42,"tag":57,"props":903,"children":904},{},[905],{"type":48,"value":906},"do not",{"type":48,"value":908}," close the browser just to retry or reset. Leaving the session open preserves the headed window they should use; closing can end the recording before login is done.",{"type":42,"tag":187,"props":910,"children":912},{"id":911},"web-app-authentication-walls",[913],{"type":48,"value":914},"Web App Authentication Walls",{"type":42,"tag":51,"props":916,"children":917},{},[918,920,925,927,931],{"type":48,"value":919},"If you hit a ",{"type":42,"tag":57,"props":921,"children":922},{},[923],{"type":48,"value":924},"login or authorization barrier",{"type":48,"value":926}," you cannot complete with automation alone - for example a sign-in page, SSO redirect, MFA step, CAPTCHA, or consent screen - ",{"type":42,"tag":57,"props":928,"children":929},{},[930],{"type":48,"value":906},{"type":48,"value":932}," close the browser and loop on reopen\u002Fretry. That drops useful context and trains failing retries.",{"type":42,"tag":51,"props":934,"children":935},{},[936],{"type":48,"value":937},"Instead:",{"type":42,"tag":939,"props":940,"children":941},"ol",{},[942,953,958,970,982],{"type":42,"tag":943,"props":944,"children":945},"li",{},[946,951],{"type":42,"tag":57,"props":947,"children":948},{},[949],{"type":48,"value":950},"Stop driving the browser",{"type":48,"value":952}," for this turn.",{"type":42,"tag":943,"props":954,"children":955},{},[956],{"type":48,"value":957},"Briefly report what blocked you (URL or visible state).",{"type":42,"tag":943,"props":959,"children":960},{},[961,963,968],{"type":48,"value":962},"Ask the user to complete sign-in ",{"type":42,"tag":57,"props":964,"children":965},{},[966],{"type":48,"value":967},"in the existing headed browser session",{"type":48,"value":969}," when that is possible (or give them the exact URL if they must use another window).",{"type":42,"tag":943,"props":971,"children":972},{},[973,975,980],{"type":48,"value":974},"Ask them to ",{"type":42,"tag":57,"props":976,"children":977},{},[978],{"type":48,"value":979},"send another message when they are logged in",{"type":48,"value":981}," so you can attach to the same session or continue from an authenticated page.",{"type":42,"tag":943,"props":983,"children":984},{},[985],{"type":48,"value":986},"End your turn there; resume only after they confirm.",{"type":42,"tag":51,"props":988,"children":989},{},[990],{"type":48,"value":991},"Do not treat an auth wall as a generic error to brute-force by closing and reopening the Replay browser.",{"type":42,"tag":187,"props":993,"children":995},{"id":994},"the-reliable-path",[996],{"type":48,"value":997},"The Reliable Path",{"type":42,"tag":939,"props":999,"children":1000},{},[1001,1006,1011,1031,1051,1072,1077,1088,1093,1098],{"type":42,"tag":943,"props":1002,"children":1003},{},[1004],{"type":48,"value":1005},"Verify the Replay runtime exists and the CLI is logged in.",{"type":42,"tag":943,"props":1007,"children":1008},{},[1009],{"type":48,"value":1010},"Resolve the Replay Chromium executable path.",{"type":42,"tag":943,"props":1012,"children":1013},{},[1014,1016,1022,1024,1029],{"type":48,"value":1015},"Export ",{"type":42,"tag":72,"props":1017,"children":1019},{"className":1018},[],[1020],{"type":48,"value":1021},"AGENT_BROWSER_EXECUTABLE_PATH",{"type":48,"value":1023}," to that executable ",{"type":42,"tag":57,"props":1025,"children":1026},{},[1027],{"type":48,"value":1028},"before",{"type":48,"value":1030}," opening the agent browser.",{"type":42,"tag":943,"props":1032,"children":1033},{},[1034,1036,1042,1044,1050],{"type":48,"value":1035},"Set both ",{"type":42,"tag":72,"props":1037,"children":1039},{"className":1038},[],[1040],{"type":48,"value":1041},"RECORD_ALL_CONTENT='1'",{"type":48,"value":1043}," and ",{"type":42,"tag":72,"props":1045,"children":1047},{"className":1046},[],[1048],{"type":48,"value":1049},"RECORD_REPLAY_VERBOSE='1'",{"type":48,"value":185},{"type":42,"tag":943,"props":1052,"children":1053},{},[1054,1056,1062,1064,1070],{"type":48,"value":1055},"If Replay QA will be used, map ",{"type":42,"tag":72,"props":1057,"children":1059},{"className":1058},[],[1060],{"type":48,"value":1061},"REPLAY_QA_API_KEY",{"type":48,"value":1063}," from ",{"type":42,"tag":72,"props":1065,"children":1067},{"className":1066},[],[1068],{"type":48,"value":1069},"SECRET_REPLAY_QA_API_KEY",{"type":48,"value":1071}," when available.",{"type":42,"tag":943,"props":1073,"children":1074},{},[1075],{"type":48,"value":1076},"If testing a local app, start it first and verify the actual reachable URL.",{"type":42,"tag":943,"props":1078,"children":1079},{},[1080,1082,1087],{"type":48,"value":1081},"Drive and inspect the page directly with the host agent browser, not ",{"type":42,"tag":72,"props":1083,"children":1085},{"className":1084},[],[1086],{"type":48,"value":77},{"type":48,"value":185},{"type":42,"tag":943,"props":1089,"children":1090},{},[1091],{"type":48,"value":1092},"Use fresh DOM snapshots or screenshots after navigation and major UI changes.",{"type":42,"tag":943,"props":1094,"children":1095},{},[1096],{"type":48,"value":1097},"Close the agent browser tab\u002Fsession when done.",{"type":42,"tag":943,"props":1099,"children":1100},{},[1101,1103,1108],{"type":48,"value":1102},"Run ",{"type":42,"tag":72,"props":1104,"children":1106},{"className":1105},[],[1107],{"type":48,"value":183},{"type":48,"value":1109}," if you need the uploaded Replay URL before reporting results.",{"type":42,"tag":187,"props":1111,"children":1113},{"id":1112},"prerequisites",[1114],{"type":48,"value":1115},"Prerequisites",{"type":42,"tag":51,"props":1117,"children":1118},{},[1119],{"type":48,"value":1120},"Check Replay first:",{"type":42,"tag":86,"props":1122,"children":1124},{"className":88,"code":1123,"language":90,"meta":91,"style":91},"replayio info\nreplayio whoami\n",[1125],{"type":42,"tag":72,"props":1126,"children":1127},{"__ignoreMap":91},[1128,1140],{"type":42,"tag":97,"props":1129,"children":1130},{"class":99,"line":100},[1131,1135],{"type":42,"tag":97,"props":1132,"children":1133},{"style":864},[1134],{"type":48,"value":4},{"type":42,"tag":97,"props":1136,"children":1137},{"style":164},[1138],{"type":48,"value":1139}," info\n",{"type":42,"tag":97,"props":1141,"children":1142},{"class":99,"line":279},[1143,1147],{"type":42,"tag":97,"props":1144,"children":1145},{"style":864},[1146],{"type":48,"value":4},{"type":42,"tag":97,"props":1148,"children":1149},{"style":164},[1150],{"type":48,"value":1151}," whoami\n",{"type":42,"tag":51,"props":1153,"children":1154},{},[1155,1157,1163],{"type":48,"value":1156},"If Replay is missing, verify ",{"type":42,"tag":72,"props":1158,"children":1160},{"className":1159},[],[1161],{"type":48,"value":1162},"npx",{"type":48,"value":1164}," exists:",{"type":42,"tag":86,"props":1166,"children":1168},{"className":88,"code":1167,"language":90,"meta":91,"style":91},"command -v npx >\u002Fdev\u002Fnull 2>&1\n",[1169],{"type":42,"tag":72,"props":1170,"children":1171},{"__ignoreMap":91},[1172],{"type":42,"tag":97,"props":1173,"children":1174},{"class":99,"line":100},[1175,1180,1185,1190,1195,1200],{"type":42,"tag":97,"props":1176,"children":1177},{"style":245},[1178],{"type":48,"value":1179},"command",{"type":42,"tag":97,"props":1181,"children":1182},{"style":164},[1183],{"type":48,"value":1184}," -v",{"type":42,"tag":97,"props":1186,"children":1187},{"style":164},[1188],{"type":48,"value":1189}," npx",{"type":42,"tag":97,"props":1191,"children":1192},{"style":116},[1193],{"type":48,"value":1194}," >",{"type":42,"tag":97,"props":1196,"children":1197},{"style":164},[1198],{"type":48,"value":1199},"\u002Fdev\u002Fnull",{"type":42,"tag":97,"props":1201,"children":1202},{"style":116},[1203],{"type":48,"value":1204}," 2>&1\n",{"type":42,"tag":51,"props":1206,"children":1207},{},[1208,1210,1215,1217,1222],{"type":48,"value":1209},"If ",{"type":42,"tag":72,"props":1211,"children":1213},{"className":1212},[],[1214],{"type":48,"value":1162},{"type":48,"value":1216}," is missing, stop and ask the user to install Node.js\u002Fnpm. If ",{"type":42,"tag":72,"props":1218,"children":1220},{"className":1219},[],[1221],{"type":48,"value":1162},{"type":48,"value":1223}," exists, install Replay:",{"type":42,"tag":86,"props":1225,"children":1227},{"className":88,"code":1226,"language":90,"meta":91,"style":91},"npx @replayio\u002Freplay install\n",[1228],{"type":42,"tag":72,"props":1229,"children":1230},{"__ignoreMap":91},[1231],{"type":42,"tag":97,"props":1232,"children":1233},{"class":99,"line":100},[1234,1238,1243],{"type":42,"tag":97,"props":1235,"children":1236},{"style":864},[1237],{"type":48,"value":1162},{"type":42,"tag":97,"props":1239,"children":1240},{"style":164},[1241],{"type":48,"value":1242}," @replayio\u002Freplay",{"type":42,"tag":97,"props":1244,"children":1245},{"style":164},[1246],{"type":48,"value":1247}," install\n",{"type":42,"tag":51,"props":1249,"children":1250},{},[1251],{"type":48,"value":1252},"If not logged in, authenticate:",{"type":42,"tag":86,"props":1254,"children":1256},{"className":88,"code":1255,"language":90,"meta":91,"style":91},"replayio login\n",[1257],{"type":42,"tag":72,"props":1258,"children":1259},{"__ignoreMap":91},[1260],{"type":42,"tag":97,"props":1261,"children":1262},{"class":99,"line":100},[1263,1267],{"type":42,"tag":97,"props":1264,"children":1265},{"style":864},[1266],{"type":48,"value":4},{"type":42,"tag":97,"props":1268,"children":1269},{"style":164},[1270],{"type":48,"value":1271}," login\n",{"type":42,"tag":187,"props":1273,"children":1275},{"id":1274},"replay-mcp-authentication-private-recordings",[1276],{"type":48,"value":1277},"Replay MCP Authentication (Private Recordings)",{"type":42,"tag":51,"props":1279,"children":1280},{},[1281,1283,1288,1290,1295,1297,1302],{"type":48,"value":1282},"Replay MCP calls are authorized ",{"type":42,"tag":57,"props":1284,"children":1285},{},[1286],{"type":48,"value":1287},"per user",{"type":48,"value":1289},". If tools return ",{"type":42,"tag":57,"props":1291,"children":1292},{},[1293],{"type":48,"value":1294},"Access denied",{"type":48,"value":1296},", you are usually not authenticated to Replay ",{"type":42,"tag":57,"props":1298,"children":1299},{},[1300],{"type":48,"value":1301},"as the same account that owns the recording",{"type":48,"value":185},{"type":42,"tag":1304,"props":1305,"children":1306},"ul",{},[1307,1360],{"type":42,"tag":943,"props":1308,"children":1309},{},[1310,1315,1317,1322,1324,1329,1331,1336,1338,1343,1345,1350,1352,1358],{"type":42,"tag":57,"props":1311,"children":1312},{},[1313],{"type":48,"value":1314},"Cursor",{"type":48,"value":1316},": open ",{"type":42,"tag":57,"props":1318,"children":1319},{},[1320],{"type":48,"value":1321},"Settings -> MCP",{"type":48,"value":1323},", select the ",{"type":42,"tag":57,"props":1325,"children":1326},{},[1327],{"type":48,"value":1328},"Replay",{"type":48,"value":1330}," server, and complete ",{"type":42,"tag":57,"props":1332,"children":1333},{},[1334],{"type":48,"value":1335},"Sign in \u002F Connect \u002F Reconnect",{"type":48,"value":1337}," so Cursor can finish the ",{"type":42,"tag":57,"props":1339,"children":1340},{},[1341],{"type":48,"value":1342},"OAuth",{"type":48,"value":1344}," flow (including ",{"type":42,"tag":57,"props":1346,"children":1347},{},[1348],{"type":48,"value":1349},"dynamic client registration",{"type":48,"value":1351}," when supported). Stay on ",{"type":42,"tag":72,"props":1353,"children":1355},{"className":1354},[],[1356],{"type":48,"value":1357},"https:\u002F\u002Fdispatch.replay.io\u002Fmcp",{"type":48,"value":1359}," (do not swap in unrelated endpoints unless Replay explicitly instructs you to).",{"type":42,"tag":943,"props":1361,"children":1362},{},[1363,1368],{"type":42,"tag":57,"props":1364,"children":1365},{},[1366],{"type":48,"value":1367},"Other hosts",{"type":48,"value":1369},": follow that host's MCP authentication mechanism (some environments use API keys or separate app connectors instead of OAuth).",{"type":42,"tag":187,"props":1371,"children":1373},{"id":1372},"agent-browser-executable-path",[1374],{"type":48,"value":1375},"Agent Browser Executable Path",{"type":42,"tag":51,"props":1377,"children":1378},{},[1379,1381,1386],{"type":48,"value":1380},"The agent browser should launch Replay Chromium through ",{"type":42,"tag":72,"props":1382,"children":1384},{"className":1383},[],[1385],{"type":48,"value":1021},{"type":48,"value":641},{"type":42,"tag":86,"props":1388,"children":1389},{"className":88,"code":132,"language":90,"meta":91,"style":91},[1390],{"type":42,"tag":72,"props":1391,"children":1392},{"__ignoreMap":91},[1393],{"type":42,"tag":97,"props":1394,"children":1395},{"class":99,"line":100},[1396,1400,1404,1408,1412,1416,1420],{"type":42,"tag":97,"props":1397,"children":1398},{"style":104},[1399],{"type":48,"value":107},{"type":42,"tag":97,"props":1401,"children":1402},{"style":110},[1403],{"type":48,"value":113},{"type":42,"tag":97,"props":1405,"children":1406},{"style":116},[1407],{"type":48,"value":119},{"type":42,"tag":97,"props":1409,"children":1410},{"style":116},[1411],{"type":48,"value":156},{"type":42,"tag":97,"props":1413,"children":1414},{"style":110},[1415],{"type":48,"value":161},{"type":42,"tag":97,"props":1417,"children":1418},{"style":164},[1419],{"type":48,"value":167},{"type":42,"tag":97,"props":1421,"children":1422},{"style":116},[1423],{"type":48,"value":172},{"type":42,"tag":51,"props":1425,"children":1426},{},[1427],{"type":48,"value":1428},"Verify the executable exists before browser work:",{"type":42,"tag":86,"props":1430,"children":1432},{"className":88,"code":1431,"language":90,"meta":91,"style":91},"test -x \"$AGENT_BROWSER_EXECUTABLE_PATH\"\n",[1433],{"type":42,"tag":72,"props":1434,"children":1435},{"__ignoreMap":91},[1436],{"type":42,"tag":97,"props":1437,"children":1438},{"class":99,"line":100},[1439,1444,1449,1453,1458],{"type":42,"tag":97,"props":1440,"children":1441},{"style":245},[1442],{"type":48,"value":1443},"test",{"type":42,"tag":97,"props":1445,"children":1446},{"style":164},[1447],{"type":48,"value":1448}," -x",{"type":42,"tag":97,"props":1450,"children":1451},{"style":116},[1452],{"type":48,"value":310},{"type":42,"tag":97,"props":1454,"children":1455},{"style":110},[1456],{"type":48,"value":1457},"$AGENT_BROWSER_EXECUTABLE_PATH",{"type":42,"tag":97,"props":1459,"children":1460},{"style":116},[1461],{"type":48,"value":172},{"type":42,"tag":51,"props":1463,"children":1464},{},[1465,1467,1473,1475,1480],{"type":48,"value":1466},"Do not configure ",{"type":42,"tag":72,"props":1468,"children":1470},{"className":1469},[],[1471],{"type":48,"value":1472},".playwright\u002Fcli.config.json",{"type":48,"value":1474}," for normal runs, and do not switch back to ",{"type":42,"tag":72,"props":1476,"children":1478},{"className":1477},[],[1479],{"type":48,"value":77},{"type":48,"value":1481}," just to select the browser executable. If the agent browser was already running before the environment variable was set, restart or reconnect the agent browser so it picks up the Replay Chromium path.",{"type":42,"tag":187,"props":1483,"children":1485},{"id":1484},"recording-environment",[1486],{"type":48,"value":1487},"Recording Environment",{"type":42,"tag":51,"props":1489,"children":1490},{},[1491],{"type":48,"value":1492},"Set recording flags before the run:",{"type":42,"tag":86,"props":1494,"children":1496},{"className":88,"code":1495,"language":90,"meta":91,"style":91},"export RECORD_ALL_CONTENT='1'\nexport RECORD_REPLAY_VERBOSE='1'\n",[1497],{"type":42,"tag":72,"props":1498,"children":1499},{"__ignoreMap":91},[1500,1531],{"type":42,"tag":97,"props":1501,"children":1502},{"class":99,"line":100},[1503,1507,1512,1516,1521,1526],{"type":42,"tag":97,"props":1504,"children":1505},{"style":104},[1506],{"type":48,"value":107},{"type":42,"tag":97,"props":1508,"children":1509},{"style":110},[1510],{"type":48,"value":1511}," RECORD_ALL_CONTENT",{"type":42,"tag":97,"props":1513,"children":1514},{"style":116},[1515],{"type":48,"value":119},{"type":42,"tag":97,"props":1517,"children":1518},{"style":116},[1519],{"type":48,"value":1520},"'",{"type":42,"tag":97,"props":1522,"children":1523},{"style":164},[1524],{"type":48,"value":1525},"1",{"type":42,"tag":97,"props":1527,"children":1528},{"style":116},[1529],{"type":48,"value":1530},"'\n",{"type":42,"tag":97,"props":1532,"children":1533},{"class":99,"line":279},[1534,1538,1543,1547,1551,1555],{"type":42,"tag":97,"props":1535,"children":1536},{"style":104},[1537],{"type":48,"value":107},{"type":42,"tag":97,"props":1539,"children":1540},{"style":110},[1541],{"type":48,"value":1542}," RECORD_REPLAY_VERBOSE",{"type":42,"tag":97,"props":1544,"children":1545},{"style":116},[1546],{"type":48,"value":119},{"type":42,"tag":97,"props":1548,"children":1549},{"style":116},[1550],{"type":48,"value":1520},{"type":42,"tag":97,"props":1552,"children":1553},{"style":164},[1554],{"type":48,"value":1525},{"type":42,"tag":97,"props":1556,"children":1557},{"style":116},[1558],{"type":48,"value":1530},{"type":42,"tag":51,"props":1560,"children":1561},{},[1562],{"type":48,"value":1563},"Some hosts or hooks may set these automatically. If in doubt, set them explicitly before opening the agent browser.",{"type":42,"tag":187,"props":1565,"children":1567},{"id":1566},"replay-qa-environment",[1568],{"type":48,"value":1569},"Replay QA Environment",{"type":42,"tag":51,"props":1571,"children":1572},{},[1573],{"type":48,"value":1574},"If Replay QA will be used, map the Replay QA API secret before calling the Replay QA API skill:",{"type":42,"tag":86,"props":1576,"children":1578},{"className":88,"code":1577,"language":90,"meta":91,"style":91},"if [ -z \"${REPLAY_QA_API_KEY:-}\" ] && [ -n \"${SECRET_REPLAY_QA_API_KEY:-}\" ]; then\n  export REPLAY_QA_API_KEY=\"$SECRET_REPLAY_QA_API_KEY\"\nfi\n\ntest -n \"${REPLAY_QA_API_KEY:-}\"\n",[1579],{"type":42,"tag":72,"props":1580,"children":1581},{"__ignoreMap":91},[1582,1653,1683,1691,1700],{"type":42,"tag":97,"props":1583,"children":1584},{"class":99,"line":100},[1585,1589,1593,1598,1603,1607,1612,1617,1622,1626,1631,1635,1639,1643,1648],{"type":42,"tag":97,"props":1586,"children":1587},{"style":230},[1588],{"type":48,"value":285},{"type":42,"tag":97,"props":1590,"children":1591},{"style":116},[1592],{"type":48,"value":646},{"type":42,"tag":97,"props":1594,"children":1595},{"style":116},[1596],{"type":48,"value":1597}," -z",{"type":42,"tag":97,"props":1599,"children":1600},{"style":116},[1601],{"type":48,"value":1602}," \"${",{"type":42,"tag":97,"props":1604,"children":1605},{"style":110},[1606],{"type":48,"value":1061},{"type":42,"tag":97,"props":1608,"children":1609},{"style":116},[1610],{"type":48,"value":1611},":-}\"",{"type":42,"tag":97,"props":1613,"children":1614},{"style":116},[1615],{"type":48,"value":1616}," ]",{"type":42,"tag":97,"props":1618,"children":1619},{"style":116},[1620],{"type":48,"value":1621}," &&",{"type":42,"tag":97,"props":1623,"children":1624},{"style":116},[1625],{"type":48,"value":646},{"type":42,"tag":97,"props":1627,"children":1628},{"style":116},[1629],{"type":48,"value":1630}," -n",{"type":42,"tag":97,"props":1632,"children":1633},{"style":116},[1634],{"type":48,"value":1602},{"type":42,"tag":97,"props":1636,"children":1637},{"style":110},[1638],{"type":48,"value":1069},{"type":42,"tag":97,"props":1640,"children":1641},{"style":116},[1642],{"type":48,"value":1611},{"type":42,"tag":97,"props":1644,"children":1645},{"style":116},[1646],{"type":48,"value":1647}," ];",{"type":42,"tag":97,"props":1649,"children":1650},{"style":230},[1651],{"type":48,"value":1652}," then\n",{"type":42,"tag":97,"props":1654,"children":1655},{"class":99,"line":279},[1656,1661,1666,1670,1674,1679],{"type":42,"tag":97,"props":1657,"children":1658},{"style":104},[1659],{"type":48,"value":1660},"  export",{"type":42,"tag":97,"props":1662,"children":1663},{"style":110},[1664],{"type":48,"value":1665}," REPLAY_QA_API_KEY",{"type":42,"tag":97,"props":1667,"children":1668},{"style":116},[1669],{"type":48,"value":119},{"type":42,"tag":97,"props":1671,"children":1672},{"style":116},[1673],{"type":48,"value":156},{"type":42,"tag":97,"props":1675,"children":1676},{"style":110},[1677],{"type":48,"value":1678},"$SECRET_REPLAY_QA_API_KEY",{"type":42,"tag":97,"props":1680,"children":1681},{"style":116},[1682],{"type":48,"value":172},{"type":42,"tag":97,"props":1684,"children":1685},{"class":99,"line":332},[1686],{"type":42,"tag":97,"props":1687,"children":1688},{"style":230},[1689],{"type":48,"value":1690},"fi\n",{"type":42,"tag":97,"props":1692,"children":1693},{"class":99,"line":392},[1694],{"type":42,"tag":97,"props":1695,"children":1697},{"emptyLinePlaceholder":1696},true,[1698],{"type":48,"value":1699},"\n",{"type":42,"tag":97,"props":1701,"children":1702},{"class":99,"line":401},[1703,1707,1711,1715,1719],{"type":42,"tag":97,"props":1704,"children":1705},{"style":245},[1706],{"type":48,"value":1443},{"type":42,"tag":97,"props":1708,"children":1709},{"style":164},[1710],{"type":48,"value":1630},{"type":42,"tag":97,"props":1712,"children":1713},{"style":116},[1714],{"type":48,"value":1602},{"type":42,"tag":97,"props":1716,"children":1717},{"style":110},[1718],{"type":48,"value":1061},{"type":42,"tag":97,"props":1720,"children":1721},{"style":116},[1722],{"type":48,"value":1723},":-}\"\n",{"type":42,"tag":51,"props":1725,"children":1726},{},[1727,1729,1735],{"type":48,"value":1728},"Never print the token. Replay QA tokens start with ",{"type":42,"tag":72,"props":1730,"children":1732},{"className":1731},[],[1733],{"type":48,"value":1734},"lqa_",{"type":48,"value":185},{"type":42,"tag":187,"props":1737,"children":1739},{"id":1738},"local-app-check",[1740],{"type":48,"value":1741},"Local App Check",{"type":42,"tag":51,"props":1743,"children":1744},{},[1745],{"type":48,"value":1746},"If testing a local app:",{"type":42,"tag":939,"props":1748,"children":1749},{},[1750,1755,1760,1765],{"type":42,"tag":943,"props":1751,"children":1752},{},[1753],{"type":48,"value":1754},"Start the app first.",{"type":42,"tag":943,"props":1756,"children":1757},{},[1758],{"type":48,"value":1759},"Use the URL the dev server actually prints.",{"type":42,"tag":943,"props":1761,"children":1762},{},[1763],{"type":48,"value":1764},"Do not assume the requested port is the final port. Some dev servers auto-increment when the port is busy.",{"type":42,"tag":943,"props":1766,"children":1767},{},[1768],{"type":48,"value":1769},"Verify reachability before opening the browser.",{"type":42,"tag":86,"props":1771,"children":1773},{"className":88,"code":1772,"language":90,"meta":91,"style":91},"curl -I http:\u002F\u002F127.0.0.1:4323\u002Ftodos\n",[1774],{"type":42,"tag":72,"props":1775,"children":1776},{"__ignoreMap":91},[1777],{"type":42,"tag":97,"props":1778,"children":1779},{"class":99,"line":100},[1780,1785,1790],{"type":42,"tag":97,"props":1781,"children":1782},{"style":864},[1783],{"type":48,"value":1784},"curl",{"type":42,"tag":97,"props":1786,"children":1787},{"style":164},[1788],{"type":48,"value":1789}," -I",{"type":42,"tag":97,"props":1791,"children":1792},{"style":164},[1793],{"type":48,"value":1794}," http:\u002F\u002F127.0.0.1:4323\u002Ftodos\n",{"type":42,"tag":51,"props":1796,"children":1797},{},[1798],{"type":48,"value":1799},"If a localhost request fails even though a process is clearly listening, you may be in a restricted sandbox. Rerun the browser and reachability checks outside the sandbox.",{"type":42,"tag":187,"props":1801,"children":1803},{"id":1802},"reliable-agent-browser-workflow",[1804],{"type":48,"value":1805},"Reliable Agent Browser Workflow",{"type":42,"tag":86,"props":1807,"children":1809},{"className":88,"code":1808,"language":90,"meta":91,"style":91},"export AGENT_BROWSER_EXECUTABLE_PATH=\"$HOME\u002F.replay\u002Fruntimes\u002FReplay-Chromium.app\u002FContents\u002FMacOS\u002FChromium\"\nexport RECORD_ALL_CONTENT='1'\nexport RECORD_REPLAY_VERBOSE='1'\n",[1810],{"type":42,"tag":72,"props":1811,"children":1812},{"__ignoreMap":91},[1813,1844,1871],{"type":42,"tag":97,"props":1814,"children":1815},{"class":99,"line":100},[1816,1820,1824,1828,1832,1836,1840],{"type":42,"tag":97,"props":1817,"children":1818},{"style":104},[1819],{"type":48,"value":107},{"type":42,"tag":97,"props":1821,"children":1822},{"style":110},[1823],{"type":48,"value":113},{"type":42,"tag":97,"props":1825,"children":1826},{"style":116},[1827],{"type":48,"value":119},{"type":42,"tag":97,"props":1829,"children":1830},{"style":116},[1831],{"type":48,"value":156},{"type":42,"tag":97,"props":1833,"children":1834},{"style":110},[1835],{"type":48,"value":161},{"type":42,"tag":97,"props":1837,"children":1838},{"style":164},[1839],{"type":48,"value":167},{"type":42,"tag":97,"props":1841,"children":1842},{"style":116},[1843],{"type":48,"value":172},{"type":42,"tag":97,"props":1845,"children":1846},{"class":99,"line":279},[1847,1851,1855,1859,1863,1867],{"type":42,"tag":97,"props":1848,"children":1849},{"style":104},[1850],{"type":48,"value":107},{"type":42,"tag":97,"props":1852,"children":1853},{"style":110},[1854],{"type":48,"value":1511},{"type":42,"tag":97,"props":1856,"children":1857},{"style":116},[1858],{"type":48,"value":119},{"type":42,"tag":97,"props":1860,"children":1861},{"style":116},[1862],{"type":48,"value":1520},{"type":42,"tag":97,"props":1864,"children":1865},{"style":164},[1866],{"type":48,"value":1525},{"type":42,"tag":97,"props":1868,"children":1869},{"style":116},[1870],{"type":48,"value":1530},{"type":42,"tag":97,"props":1872,"children":1873},{"class":99,"line":332},[1874,1878,1882,1886,1890,1894],{"type":42,"tag":97,"props":1875,"children":1876},{"style":104},[1877],{"type":48,"value":107},{"type":42,"tag":97,"props":1879,"children":1880},{"style":110},[1881],{"type":48,"value":1542},{"type":42,"tag":97,"props":1883,"children":1884},{"style":116},[1885],{"type":48,"value":119},{"type":42,"tag":97,"props":1887,"children":1888},{"style":116},[1889],{"type":48,"value":1520},{"type":42,"tag":97,"props":1891,"children":1892},{"style":164},[1893],{"type":48,"value":1525},{"type":42,"tag":97,"props":1895,"children":1896},{"style":116},[1897],{"type":48,"value":1530},{"type":42,"tag":51,"props":1899,"children":1900},{},[1901],{"type":48,"value":1902},"Then use the host agent browser. In Browser-plugin hosts:",{"type":42,"tag":86,"props":1904,"children":1906},{"className":218,"code":1905,"language":220,"meta":91,"style":91},"const URL = \"http:\u002F\u002F127.0.0.1:4323\u002Ftodos\";\nawait browser.nameSession(\"replay todos\");\nif (typeof tab === \"undefined\") {\n  globalThis.tab = await browser.tabs.new();\n}\nawait tab.goto(URL);\nconsole.log(await tab.playwright.domSnapshot());\nawait tab.playwright.getByLabel(\"New todo\", { exact: false }).fill(\"Buy milk\", {});\nawait tab.playwright.getByRole(\"button\", { name: \"Add\" }).click({});\nconsole.log(await tab.playwright.domSnapshot());\nconsole.log(await tab.dev.logs({ levels: [\"error\"], limit: 50 }));\nawait nodeRepl.emitImage(await tab.screenshot({ fullPage: false }));\nawait tab.close();\n",[1907],{"type":42,"tag":72,"props":1908,"children":1909},{"__ignoreMap":91},[1910,1944,1988,2031,2082,2089,2116,2167,2285,2394,2445,2553,2625],{"type":42,"tag":97,"props":1911,"children":1912},{"class":99,"line":100},[1913,1918,1923,1927,1931,1936,1940],{"type":42,"tag":97,"props":1914,"children":1915},{"style":104},[1916],{"type":48,"value":1917},"const",{"type":42,"tag":97,"props":1919,"children":1920},{"style":110},[1921],{"type":48,"value":1922}," URL ",{"type":42,"tag":97,"props":1924,"children":1925},{"style":116},[1926],{"type":48,"value":119},{"type":42,"tag":97,"props":1928,"children":1929},{"style":116},[1930],{"type":48,"value":310},{"type":42,"tag":97,"props":1932,"children":1933},{"style":164},[1934],{"type":48,"value":1935},"http:\u002F\u002F127.0.0.1:4323\u002Ftodos",{"type":42,"tag":97,"props":1937,"children":1938},{"style":116},[1939],{"type":48,"value":156},{"type":42,"tag":97,"props":1941,"children":1942},{"style":116},[1943],{"type":48,"value":276},{"type":42,"tag":97,"props":1945,"children":1946},{"class":99,"line":279},[1947,1951,1955,1959,1963,1967,1971,1976,1980,1984],{"type":42,"tag":97,"props":1948,"children":1949},{"style":230},[1950],{"type":48,"value":233},{"type":42,"tag":97,"props":1952,"children":1953},{"style":110},[1954],{"type":48,"value":238},{"type":42,"tag":97,"props":1956,"children":1957},{"style":116},[1958],{"type":48,"value":185},{"type":42,"tag":97,"props":1960,"children":1961},{"style":245},[1962],{"type":48,"value":248},{"type":42,"tag":97,"props":1964,"children":1965},{"style":110},[1966],{"type":48,"value":253},{"type":42,"tag":97,"props":1968,"children":1969},{"style":116},[1970],{"type":48,"value":156},{"type":42,"tag":97,"props":1972,"children":1973},{"style":164},[1974],{"type":48,"value":1975},"replay todos",{"type":42,"tag":97,"props":1977,"children":1978},{"style":116},[1979],{"type":48,"value":156},{"type":42,"tag":97,"props":1981,"children":1982},{"style":110},[1983],{"type":48,"value":271},{"type":42,"tag":97,"props":1985,"children":1986},{"style":116},[1987],{"type":48,"value":276},{"type":42,"tag":97,"props":1989,"children":1990},{"class":99,"line":332},[1991,1995,1999,2003,2007,2011,2015,2019,2023,2027],{"type":42,"tag":97,"props":1992,"children":1993},{"style":230},[1994],{"type":48,"value":285},{"type":42,"tag":97,"props":1996,"children":1997},{"style":110},[1998],{"type":48,"value":290},{"type":42,"tag":97,"props":2000,"children":2001},{"style":116},[2002],{"type":48,"value":295},{"type":42,"tag":97,"props":2004,"children":2005},{"style":110},[2006],{"type":48,"value":300},{"type":42,"tag":97,"props":2008,"children":2009},{"style":116},[2010],{"type":48,"value":305},{"type":42,"tag":97,"props":2012,"children":2013},{"style":116},[2014],{"type":48,"value":310},{"type":42,"tag":97,"props":2016,"children":2017},{"style":164},[2018],{"type":48,"value":315},{"type":42,"tag":97,"props":2020,"children":2021},{"style":116},[2022],{"type":48,"value":156},{"type":42,"tag":97,"props":2024,"children":2025},{"style":110},[2026],{"type":48,"value":324},{"type":42,"tag":97,"props":2028,"children":2029},{"style":116},[2030],{"type":48,"value":329},{"type":42,"tag":97,"props":2032,"children":2033},{"class":99,"line":392},[2034,2038,2042,2046,2050,2054,2058,2062,2066,2070,2074,2078],{"type":42,"tag":97,"props":2035,"children":2036},{"style":110},[2037],{"type":48,"value":338},{"type":42,"tag":97,"props":2039,"children":2040},{"style":116},[2041],{"type":48,"value":185},{"type":42,"tag":97,"props":2043,"children":2044},{"style":110},[2045],{"type":48,"value":347},{"type":42,"tag":97,"props":2047,"children":2048},{"style":116},[2049],{"type":48,"value":352},{"type":42,"tag":97,"props":2051,"children":2052},{"style":230},[2053],{"type":48,"value":357},{"type":42,"tag":97,"props":2055,"children":2056},{"style":110},[2057],{"type":48,"value":238},{"type":42,"tag":97,"props":2059,"children":2060},{"style":116},[2061],{"type":48,"value":185},{"type":42,"tag":97,"props":2063,"children":2064},{"style":110},[2065],{"type":48,"value":370},{"type":42,"tag":97,"props":2067,"children":2068},{"style":116},[2069],{"type":48,"value":185},{"type":42,"tag":97,"props":2071,"children":2072},{"style":245},[2073],{"type":48,"value":379},{"type":42,"tag":97,"props":2075,"children":2076},{"style":382},[2077],{"type":48,"value":385},{"type":42,"tag":97,"props":2079,"children":2080},{"style":116},[2081],{"type":48,"value":276},{"type":42,"tag":97,"props":2083,"children":2084},{"class":99,"line":401},[2085],{"type":42,"tag":97,"props":2086,"children":2087},{"style":116},[2088],{"type":48,"value":398},{"type":42,"tag":97,"props":2090,"children":2091},{"class":99,"line":432},[2092,2096,2100,2104,2108,2112],{"type":42,"tag":97,"props":2093,"children":2094},{"style":230},[2095],{"type":48,"value":233},{"type":42,"tag":97,"props":2097,"children":2098},{"style":110},[2099],{"type":48,"value":411},{"type":42,"tag":97,"props":2101,"children":2102},{"style":116},[2103],{"type":48,"value":185},{"type":42,"tag":97,"props":2105,"children":2106},{"style":245},[2107],{"type":48,"value":420},{"type":42,"tag":97,"props":2109,"children":2110},{"style":110},[2111],{"type":48,"value":425},{"type":42,"tag":97,"props":2113,"children":2114},{"style":116},[2115],{"type":48,"value":276},{"type":42,"tag":97,"props":2117,"children":2118},{"class":99,"line":489},[2119,2123,2127,2131,2135,2139,2143,2147,2151,2155,2159,2163],{"type":42,"tag":97,"props":2120,"children":2121},{"style":110},[2122],{"type":48,"value":438},{"type":42,"tag":97,"props":2124,"children":2125},{"style":116},[2126],{"type":48,"value":185},{"type":42,"tag":97,"props":2128,"children":2129},{"style":245},[2130],{"type":48,"value":447},{"type":42,"tag":97,"props":2132,"children":2133},{"style":110},[2134],{"type":48,"value":253},{"type":42,"tag":97,"props":2136,"children":2137},{"style":230},[2138],{"type":48,"value":233},{"type":42,"tag":97,"props":2140,"children":2141},{"style":110},[2142],{"type":48,"value":411},{"type":42,"tag":97,"props":2144,"children":2145},{"style":116},[2146],{"type":48,"value":185},{"type":42,"tag":97,"props":2148,"children":2149},{"style":110},[2150],{"type":48,"value":468},{"type":42,"tag":97,"props":2152,"children":2153},{"style":116},[2154],{"type":48,"value":185},{"type":42,"tag":97,"props":2156,"children":2157},{"style":245},[2158],{"type":48,"value":477},{"type":42,"tag":97,"props":2160,"children":2161},{"style":110},[2162],{"type":48,"value":482},{"type":42,"tag":97,"props":2164,"children":2165},{"style":116},[2166],{"type":48,"value":276},{"type":42,"tag":97,"props":2168,"children":2169},{"class":99,"line":534},[2170,2174,2178,2182,2186,2190,2195,2199,2203,2208,2212,2216,2221,2226,2230,2234,2238,2242,2246,2251,2255,2259,2264,2268,2272,2277,2281],{"type":42,"tag":97,"props":2171,"children":2172},{"style":230},[2173],{"type":48,"value":233},{"type":42,"tag":97,"props":2175,"children":2176},{"style":110},[2177],{"type":48,"value":411},{"type":42,"tag":97,"props":2179,"children":2180},{"style":116},[2181],{"type":48,"value":185},{"type":42,"tag":97,"props":2183,"children":2184},{"style":110},[2185],{"type":48,"value":468},{"type":42,"tag":97,"props":2187,"children":2188},{"style":116},[2189],{"type":48,"value":185},{"type":42,"tag":97,"props":2191,"children":2192},{"style":245},[2193],{"type":48,"value":2194},"getByLabel",{"type":42,"tag":97,"props":2196,"children":2197},{"style":110},[2198],{"type":48,"value":253},{"type":42,"tag":97,"props":2200,"children":2201},{"style":116},[2202],{"type":48,"value":156},{"type":42,"tag":97,"props":2204,"children":2205},{"style":164},[2206],{"type":48,"value":2207},"New todo",{"type":42,"tag":97,"props":2209,"children":2210},{"style":116},[2211],{"type":48,"value":156},{"type":42,"tag":97,"props":2213,"children":2214},{"style":116},[2215],{"type":48,"value":669},{"type":42,"tag":97,"props":2217,"children":2218},{"style":116},[2219],{"type":48,"value":2220}," {",{"type":42,"tag":97,"props":2222,"children":2223},{"style":382},[2224],{"type":48,"value":2225}," exact",{"type":42,"tag":97,"props":2227,"children":2228},{"style":116},[2229],{"type":48,"value":641},{"type":42,"tag":97,"props":2231,"children":2232},{"style":761},[2233],{"type":48,"value":764},{"type":42,"tag":97,"props":2235,"children":2236},{"style":116},[2237],{"type":48,"value":689},{"type":42,"tag":97,"props":2239,"children":2240},{"style":110},[2241],{"type":48,"value":271},{"type":42,"tag":97,"props":2243,"children":2244},{"style":116},[2245],{"type":48,"value":185},{"type":42,"tag":97,"props":2247,"children":2248},{"style":245},[2249],{"type":48,"value":2250},"fill",{"type":42,"tag":97,"props":2252,"children":2253},{"style":110},[2254],{"type":48,"value":253},{"type":42,"tag":97,"props":2256,"children":2257},{"style":116},[2258],{"type":48,"value":156},{"type":42,"tag":97,"props":2260,"children":2261},{"style":164},[2262],{"type":48,"value":2263},"Buy milk",{"type":42,"tag":97,"props":2265,"children":2266},{"style":116},[2267],{"type":48,"value":156},{"type":42,"tag":97,"props":2269,"children":2270},{"style":116},[2271],{"type":48,"value":669},{"type":42,"tag":97,"props":2273,"children":2274},{"style":116},[2275],{"type":48,"value":2276}," {}",{"type":42,"tag":97,"props":2278,"children":2279},{"style":110},[2280],{"type":48,"value":271},{"type":42,"tag":97,"props":2282,"children":2283},{"style":116},[2284],{"type":48,"value":276},{"type":42,"tag":97,"props":2286,"children":2287},{"class":99,"line":579},[2288,2292,2296,2300,2304,2308,2313,2317,2321,2326,2330,2334,2338,2343,2347,2351,2356,2360,2364,2368,2372,2377,2381,2386,2390],{"type":42,"tag":97,"props":2289,"children":2290},{"style":230},[2291],{"type":48,"value":233},{"type":42,"tag":97,"props":2293,"children":2294},{"style":110},[2295],{"type":48,"value":411},{"type":42,"tag":97,"props":2297,"children":2298},{"style":116},[2299],{"type":48,"value":185},{"type":42,"tag":97,"props":2301,"children":2302},{"style":110},[2303],{"type":48,"value":468},{"type":42,"tag":97,"props":2305,"children":2306},{"style":116},[2307],{"type":48,"value":185},{"type":42,"tag":97,"props":2309,"children":2310},{"style":245},[2311],{"type":48,"value":2312},"getByRole",{"type":42,"tag":97,"props":2314,"children":2315},{"style":110},[2316],{"type":48,"value":253},{"type":42,"tag":97,"props":2318,"children":2319},{"style":116},[2320],{"type":48,"value":156},{"type":42,"tag":97,"props":2322,"children":2323},{"style":164},[2324],{"type":48,"value":2325},"button",{"type":42,"tag":97,"props":2327,"children":2328},{"style":116},[2329],{"type":48,"value":156},{"type":42,"tag":97,"props":2331,"children":2332},{"style":116},[2333],{"type":48,"value":669},{"type":42,"tag":97,"props":2335,"children":2336},{"style":116},[2337],{"type":48,"value":2220},{"type":42,"tag":97,"props":2339,"children":2340},{"style":382},[2341],{"type":48,"value":2342}," name",{"type":42,"tag":97,"props":2344,"children":2345},{"style":116},[2346],{"type":48,"value":641},{"type":42,"tag":97,"props":2348,"children":2349},{"style":116},[2350],{"type":48,"value":310},{"type":42,"tag":97,"props":2352,"children":2353},{"style":164},[2354],{"type":48,"value":2355},"Add",{"type":42,"tag":97,"props":2357,"children":2358},{"style":116},[2359],{"type":48,"value":156},{"type":42,"tag":97,"props":2361,"children":2362},{"style":116},[2363],{"type":48,"value":689},{"type":42,"tag":97,"props":2365,"children":2366},{"style":110},[2367],{"type":48,"value":271},{"type":42,"tag":97,"props":2369,"children":2370},{"style":116},[2371],{"type":48,"value":185},{"type":42,"tag":97,"props":2373,"children":2374},{"style":245},[2375],{"type":48,"value":2376},"click",{"type":42,"tag":97,"props":2378,"children":2379},{"style":110},[2380],{"type":48,"value":253},{"type":42,"tag":97,"props":2382,"children":2383},{"style":116},[2384],{"type":48,"value":2385},"{}",{"type":42,"tag":97,"props":2387,"children":2388},{"style":110},[2389],{"type":48,"value":271},{"type":42,"tag":97,"props":2391,"children":2392},{"style":116},[2393],{"type":48,"value":276},{"type":42,"tag":97,"props":2395,"children":2396},{"class":99,"line":701},[2397,2401,2405,2409,2413,2417,2421,2425,2429,2433,2437,2441],{"type":42,"tag":97,"props":2398,"children":2399},{"style":110},[2400],{"type":48,"value":438},{"type":42,"tag":97,"props":2402,"children":2403},{"style":116},[2404],{"type":48,"value":185},{"type":42,"tag":97,"props":2406,"children":2407},{"style":245},[2408],{"type":48,"value":447},{"type":42,"tag":97,"props":2410,"children":2411},{"style":110},[2412],{"type":48,"value":253},{"type":42,"tag":97,"props":2414,"children":2415},{"style":230},[2416],{"type":48,"value":233},{"type":42,"tag":97,"props":2418,"children":2419},{"style":110},[2420],{"type":48,"value":411},{"type":42,"tag":97,"props":2422,"children":2423},{"style":116},[2424],{"type":48,"value":185},{"type":42,"tag":97,"props":2426,"children":2427},{"style":110},[2428],{"type":48,"value":468},{"type":42,"tag":97,"props":2430,"children":2431},{"style":116},[2432],{"type":48,"value":185},{"type":42,"tag":97,"props":2434,"children":2435},{"style":245},[2436],{"type":48,"value":477},{"type":42,"tag":97,"props":2438,"children":2439},{"style":110},[2440],{"type":48,"value":482},{"type":42,"tag":97,"props":2442,"children":2443},{"style":116},[2444],{"type":48,"value":276},{"type":42,"tag":97,"props":2446,"children":2448},{"class":99,"line":2447},11,[2449,2453,2457,2461,2465,2469,2473,2477,2481,2485,2489,2493,2497,2501,2505,2509,2513,2517,2521,2525,2529,2533,2537,2541,2545,2549],{"type":42,"tag":97,"props":2450,"children":2451},{"style":110},[2452],{"type":48,"value":438},{"type":42,"tag":97,"props":2454,"children":2455},{"style":116},[2456],{"type":48,"value":185},{"type":42,"tag":97,"props":2458,"children":2459},{"style":245},[2460],{"type":48,"value":447},{"type":42,"tag":97,"props":2462,"children":2463},{"style":110},[2464],{"type":48,"value":253},{"type":42,"tag":97,"props":2466,"children":2467},{"style":230},[2468],{"type":48,"value":233},{"type":42,"tag":97,"props":2470,"children":2471},{"style":110},[2472],{"type":48,"value":411},{"type":42,"tag":97,"props":2474,"children":2475},{"style":116},[2476],{"type":48,"value":185},{"type":42,"tag":97,"props":2478,"children":2479},{"style":110},[2480],{"type":48,"value":613},{"type":42,"tag":97,"props":2482,"children":2483},{"style":116},[2484],{"type":48,"value":185},{"type":42,"tag":97,"props":2486,"children":2487},{"style":245},[2488],{"type":48,"value":622},{"type":42,"tag":97,"props":2490,"children":2491},{"style":110},[2492],{"type":48,"value":253},{"type":42,"tag":97,"props":2494,"children":2495},{"style":116},[2496],{"type":48,"value":631},{"type":42,"tag":97,"props":2498,"children":2499},{"style":382},[2500],{"type":48,"value":636},{"type":42,"tag":97,"props":2502,"children":2503},{"style":116},[2504],{"type":48,"value":641},{"type":42,"tag":97,"props":2506,"children":2507},{"style":110},[2508],{"type":48,"value":646},{"type":42,"tag":97,"props":2510,"children":2511},{"style":116},[2512],{"type":48,"value":156},{"type":42,"tag":97,"props":2514,"children":2515},{"style":164},[2516],{"type":48,"value":655},{"type":42,"tag":97,"props":2518,"children":2519},{"style":116},[2520],{"type":48,"value":156},{"type":42,"tag":97,"props":2522,"children":2523},{"style":110},[2524],{"type":48,"value":664},{"type":42,"tag":97,"props":2526,"children":2527},{"style":116},[2528],{"type":48,"value":669},{"type":42,"tag":97,"props":2530,"children":2531},{"style":382},[2532],{"type":48,"value":674},{"type":42,"tag":97,"props":2534,"children":2535},{"style":116},[2536],{"type":48,"value":641},{"type":42,"tag":97,"props":2538,"children":2539},{"style":681},[2540],{"type":48,"value":684},{"type":42,"tag":97,"props":2542,"children":2543},{"style":116},[2544],{"type":48,"value":689},{"type":42,"tag":97,"props":2546,"children":2547},{"style":110},[2548],{"type":48,"value":694},{"type":42,"tag":97,"props":2550,"children":2551},{"style":116},[2552],{"type":48,"value":276},{"type":42,"tag":97,"props":2554,"children":2556},{"class":99,"line":2555},12,[2557,2561,2565,2569,2573,2577,2581,2585,2589,2593,2597,2601,2605,2609,2613,2617,2621],{"type":42,"tag":97,"props":2558,"children":2559},{"style":230},[2560],{"type":48,"value":233},{"type":42,"tag":97,"props":2562,"children":2563},{"style":110},[2564],{"type":48,"value":711},{"type":42,"tag":97,"props":2566,"children":2567},{"style":116},[2568],{"type":48,"value":185},{"type":42,"tag":97,"props":2570,"children":2571},{"style":245},[2572],{"type":48,"value":720},{"type":42,"tag":97,"props":2574,"children":2575},{"style":110},[2576],{"type":48,"value":253},{"type":42,"tag":97,"props":2578,"children":2579},{"style":230},[2580],{"type":48,"value":233},{"type":42,"tag":97,"props":2582,"children":2583},{"style":110},[2584],{"type":48,"value":411},{"type":42,"tag":97,"props":2586,"children":2587},{"style":116},[2588],{"type":48,"value":185},{"type":42,"tag":97,"props":2590,"children":2591},{"style":245},[2592],{"type":48,"value":741},{"type":42,"tag":97,"props":2594,"children":2595},{"style":110},[2596],{"type":48,"value":253},{"type":42,"tag":97,"props":2598,"children":2599},{"style":116},[2600],{"type":48,"value":631},{"type":42,"tag":97,"props":2602,"children":2603},{"style":382},[2604],{"type":48,"value":754},{"type":42,"tag":97,"props":2606,"children":2607},{"style":116},[2608],{"type":48,"value":641},{"type":42,"tag":97,"props":2610,"children":2611},{"style":761},[2612],{"type":48,"value":764},{"type":42,"tag":97,"props":2614,"children":2615},{"style":116},[2616],{"type":48,"value":689},{"type":42,"tag":97,"props":2618,"children":2619},{"style":110},[2620],{"type":48,"value":694},{"type":42,"tag":97,"props":2622,"children":2623},{"style":116},[2624],{"type":48,"value":276},{"type":42,"tag":97,"props":2626,"children":2628},{"class":99,"line":2627},13,[2629,2633,2637,2641,2645,2649],{"type":42,"tag":97,"props":2630,"children":2631},{"style":230},[2632],{"type":48,"value":233},{"type":42,"tag":97,"props":2634,"children":2635},{"style":110},[2636],{"type":48,"value":411},{"type":42,"tag":97,"props":2638,"children":2639},{"style":116},[2640],{"type":48,"value":185},{"type":42,"tag":97,"props":2642,"children":2643},{"style":245},[2644],{"type":48,"value":838},{"type":42,"tag":97,"props":2646,"children":2647},{"style":110},[2648],{"type":48,"value":385},{"type":42,"tag":97,"props":2650,"children":2651},{"style":116},[2652],{"type":48,"value":276},{"type":42,"tag":51,"props":2654,"children":2655},{},[2656,2658,2664],{"type":48,"value":2657},"Use ",{"type":42,"tag":72,"props":2659,"children":2661},{"className":2660},[],[2662],{"type":48,"value":2663},"domSnapshot()",{"type":48,"value":2665}," before constructing locators, and again after DOM changes or navigation.",{"type":42,"tag":187,"props":2667,"children":2669},{"id":2668},"attach-to-an-already-open-agent-browser",[2670],{"type":48,"value":2671},"Attach To An Already-Open Agent Browser",{"type":42,"tag":51,"props":2673,"children":2674},{},[2675],{"type":48,"value":2676},"If the agent browser is already running, attach through the host browser API instead of starting a new CLI session.",{"type":42,"tag":51,"props":2678,"children":2679},{},[2680],{"type":48,"value":811},{"type":42,"tag":86,"props":2682,"children":2684},{"className":218,"code":2683,"language":220,"meta":91,"style":91},"const tabs = await browser.tabs.list();\nconsole.log(tabs);\nglobalThis.tab = tabs.length > 0 ? await browser.tabs.get(tabs[0].id) : await browser.tabs.new();\n",[2685],{"type":42,"tag":72,"props":2686,"children":2687},{"__ignoreMap":91},[2688,2737,2761],{"type":42,"tag":97,"props":2689,"children":2690},{"class":99,"line":100},[2691,2695,2700,2704,2708,2712,2716,2720,2724,2729,2733],{"type":42,"tag":97,"props":2692,"children":2693},{"style":104},[2694],{"type":48,"value":1917},{"type":42,"tag":97,"props":2696,"children":2697},{"style":110},[2698],{"type":48,"value":2699}," tabs ",{"type":42,"tag":97,"props":2701,"children":2702},{"style":116},[2703],{"type":48,"value":119},{"type":42,"tag":97,"props":2705,"children":2706},{"style":230},[2707],{"type":48,"value":357},{"type":42,"tag":97,"props":2709,"children":2710},{"style":110},[2711],{"type":48,"value":238},{"type":42,"tag":97,"props":2713,"children":2714},{"style":116},[2715],{"type":48,"value":185},{"type":42,"tag":97,"props":2717,"children":2718},{"style":110},[2719],{"type":48,"value":370},{"type":42,"tag":97,"props":2721,"children":2722},{"style":116},[2723],{"type":48,"value":185},{"type":42,"tag":97,"props":2725,"children":2726},{"style":245},[2727],{"type":48,"value":2728},"list",{"type":42,"tag":97,"props":2730,"children":2731},{"style":110},[2732],{"type":48,"value":385},{"type":42,"tag":97,"props":2734,"children":2735},{"style":116},[2736],{"type":48,"value":276},{"type":42,"tag":97,"props":2738,"children":2739},{"class":99,"line":279},[2740,2744,2748,2752,2757],{"type":42,"tag":97,"props":2741,"children":2742},{"style":110},[2743],{"type":48,"value":438},{"type":42,"tag":97,"props":2745,"children":2746},{"style":116},[2747],{"type":48,"value":185},{"type":42,"tag":97,"props":2749,"children":2750},{"style":245},[2751],{"type":48,"value":447},{"type":42,"tag":97,"props":2753,"children":2754},{"style":110},[2755],{"type":48,"value":2756},"(tabs)",{"type":42,"tag":97,"props":2758,"children":2759},{"style":116},[2760],{"type":48,"value":276},{"type":42,"tag":97,"props":2762,"children":2763},{"class":99,"line":332},[2764,2769,2773,2778,2782,2787,2791,2796,2801,2806,2811,2815,2819,2823,2827,2831,2836,2841,2846,2850,2854,2859,2863,2867,2871,2875,2879,2883,2887,2891],{"type":42,"tag":97,"props":2765,"children":2766},{"style":110},[2767],{"type":48,"value":2768},"globalThis",{"type":42,"tag":97,"props":2770,"children":2771},{"style":116},[2772],{"type":48,"value":185},{"type":42,"tag":97,"props":2774,"children":2775},{"style":110},[2776],{"type":48,"value":2777},"tab ",{"type":42,"tag":97,"props":2779,"children":2780},{"style":116},[2781],{"type":48,"value":119},{"type":42,"tag":97,"props":2783,"children":2784},{"style":110},[2785],{"type":48,"value":2786}," tabs",{"type":42,"tag":97,"props":2788,"children":2789},{"style":116},[2790],{"type":48,"value":185},{"type":42,"tag":97,"props":2792,"children":2793},{"style":110},[2794],{"type":48,"value":2795},"length ",{"type":42,"tag":97,"props":2797,"children":2798},{"style":116},[2799],{"type":48,"value":2800},">",{"type":42,"tag":97,"props":2802,"children":2803},{"style":681},[2804],{"type":48,"value":2805}," 0",{"type":42,"tag":97,"props":2807,"children":2808},{"style":116},[2809],{"type":48,"value":2810}," ?",{"type":42,"tag":97,"props":2812,"children":2813},{"style":230},[2814],{"type":48,"value":357},{"type":42,"tag":97,"props":2816,"children":2817},{"style":110},[2818],{"type":48,"value":238},{"type":42,"tag":97,"props":2820,"children":2821},{"style":116},[2822],{"type":48,"value":185},{"type":42,"tag":97,"props":2824,"children":2825},{"style":110},[2826],{"type":48,"value":370},{"type":42,"tag":97,"props":2828,"children":2829},{"style":116},[2830],{"type":48,"value":185},{"type":42,"tag":97,"props":2832,"children":2833},{"style":245},[2834],{"type":48,"value":2835},"get",{"type":42,"tag":97,"props":2837,"children":2838},{"style":110},[2839],{"type":48,"value":2840},"(tabs[",{"type":42,"tag":97,"props":2842,"children":2843},{"style":681},[2844],{"type":48,"value":2845},"0",{"type":42,"tag":97,"props":2847,"children":2848},{"style":110},[2849],{"type":48,"value":664},{"type":42,"tag":97,"props":2851,"children":2852},{"style":116},[2853],{"type":48,"value":185},{"type":42,"tag":97,"props":2855,"children":2856},{"style":110},[2857],{"type":48,"value":2858},"id) ",{"type":42,"tag":97,"props":2860,"children":2861},{"style":116},[2862],{"type":48,"value":641},{"type":42,"tag":97,"props":2864,"children":2865},{"style":230},[2866],{"type":48,"value":357},{"type":42,"tag":97,"props":2868,"children":2869},{"style":110},[2870],{"type":48,"value":238},{"type":42,"tag":97,"props":2872,"children":2873},{"style":116},[2874],{"type":48,"value":185},{"type":42,"tag":97,"props":2876,"children":2877},{"style":110},[2878],{"type":48,"value":370},{"type":42,"tag":97,"props":2880,"children":2881},{"style":116},[2882],{"type":48,"value":185},{"type":42,"tag":97,"props":2884,"children":2885},{"style":245},[2886],{"type":48,"value":379},{"type":42,"tag":97,"props":2888,"children":2889},{"style":110},[2890],{"type":48,"value":385},{"type":42,"tag":97,"props":2892,"children":2893},{"style":116},[2894],{"type":48,"value":276},{"type":42,"tag":187,"props":2896,"children":2898},{"id":2897},"analyzing-uploaded-recordings",[2899],{"type":48,"value":2900},"Analyzing Uploaded Recordings",{"type":42,"tag":51,"props":2902,"children":2903},{},[2904,2906,2912,2914,2920],{"type":48,"value":2905},"First inspect the live run with direct agent-browser APIs. Once a recording has uploaded, use the ",{"type":42,"tag":72,"props":2907,"children":2909},{"className":2908},[],[2910],{"type":48,"value":2911},"replay",{"type":48,"value":2913}," MCP server tools only when you need deeper Replay-specific debugging beyond direct browser output. Codex connects to Replay through the app configured in ",{"type":42,"tag":72,"props":2915,"children":2917},{"className":2916},[],[2918],{"type":48,"value":2919},".app.json",{"type":48,"value":2921},", which provides app-level authentication and exposes the Replay MCP tools.",{"type":42,"tag":187,"props":2923,"children":2925},{"id":2924},"replay-mcp-widgets",[2926],{"type":48,"value":2927},"Replay MCP Widgets",{"type":42,"tag":51,"props":2929,"children":2930},{},[2931,2933,2939,2941,2947],{"type":48,"value":2932},"Replay MCP tool calls may return both text ",{"type":42,"tag":72,"props":2934,"children":2936},{"className":2935},[],[2937],{"type":48,"value":2938},"content",{"type":48,"value":2940}," for the model and ",{"type":42,"tag":72,"props":2942,"children":2944},{"className":2943},[],[2945],{"type":48,"value":2946},"structuredContent",{"type":48,"value":2948}," for an MCP Apps widget. In MCP Apps-aware hosts, prefer the rendered widget for dense debugging views such as Logpoint output, React component trees, Redux actions, network details, screenshots, source code, profiles, and exception stacks.",{"type":42,"tag":51,"props":2950,"children":2951},{},[2952],{"type":48,"value":2953},"When a widget is visible, use it as evidence instead of restating every detail in prose. Use follow-up actions or related Replay MCP tools when the widget points to a specific point, source, component, request, or stack frame that needs deeper inspection.",{"type":42,"tag":187,"props":2955,"children":2957},{"id":2956},"recording-uploads",[2958],{"type":48,"value":2959},"Recording Uploads",{"type":42,"tag":51,"props":2961,"children":2962},{},[2963],{"type":48,"value":2964},"The plugin's stop\u002Fidle hook attempts to upload pending Replay recordings automatically at the end of the turn. Because agent-browser interactions do not necessarily run through a shell close command, force an upload yourself when you need the Replay URL before reporting results:",{"type":42,"tag":86,"props":2966,"children":2967},{"className":88,"code":854,"language":90,"meta":91,"style":91},[2968],{"type":42,"tag":72,"props":2969,"children":2970},{"__ignoreMap":91},[2971],{"type":42,"tag":97,"props":2972,"children":2973},{"class":99,"line":100},[2974,2978,2982,2986,2990],{"type":42,"tag":97,"props":2975,"children":2976},{"style":864},[2977],{"type":48,"value":4},{"type":42,"tag":97,"props":2979,"children":2980},{"style":164},[2981],{"type":48,"value":871},{"type":42,"tag":97,"props":2983,"children":2984},{"style":116},[2985],{"type":48,"value":876},{"type":42,"tag":97,"props":2987,"children":2988},{"style":864},[2989],{"type":48,"value":881},{"type":42,"tag":97,"props":2991,"children":2992},{"style":164},[2993],{"type":48,"value":886},{"type":42,"tag":51,"props":2995,"children":2996},{},[2997],{"type":48,"value":2998},"If you need to inspect the upload state yourself:",{"type":42,"tag":86,"props":3000,"children":3002},{"className":88,"code":3001,"language":90,"meta":91,"style":91},"replayio list\n",[3003],{"type":42,"tag":72,"props":3004,"children":3005},{"__ignoreMap":91},[3006],{"type":42,"tag":97,"props":3007,"children":3008},{"class":99,"line":100},[3009,3013],{"type":42,"tag":97,"props":3010,"children":3011},{"style":864},[3012],{"type":48,"value":4},{"type":42,"tag":97,"props":3014,"children":3015},{"style":164},[3016],{"type":48,"value":3017}," list\n",{"type":42,"tag":187,"props":3019,"children":3021},{"id":3020},"troubleshooting",[3022],{"type":48,"value":3023},"Troubleshooting",{"type":42,"tag":1304,"props":3025,"children":3026},{},[3027,3039,3059,3070,3083,3088,3093,3106,3131],{"type":42,"tag":943,"props":3028,"children":3029},{},[3030,3032,3037],{"type":48,"value":3031},"If the agent browser does not record, verify ",{"type":42,"tag":72,"props":3033,"children":3035},{"className":3034},[],[3036],{"type":48,"value":1021},{"type":48,"value":3038}," points at Replay Chromium and restart\u002Freconnect the agent browser after setting it.",{"type":42,"tag":943,"props":3040,"children":3041},{},[3042,3043,3049,3051,3057],{"type":48,"value":1209},{"type":42,"tag":72,"props":3044,"children":3046},{"className":3045},[],[3047],{"type":48,"value":3048},"test -x \"$AGENT_BROWSER_EXECUTABLE_PATH\"",{"type":48,"value":3050}," fails, run ",{"type":42,"tag":72,"props":3052,"children":3054},{"className":3053},[],[3055],{"type":48,"value":3056},"npx @replayio\u002Freplay install",{"type":48,"value":3058}," or fix the path.",{"type":42,"tag":943,"props":3060,"children":3061},{},[3062,3064,3069],{"type":48,"value":3063},"If no Replay URL is available before you respond, close the agent browser tab\u002Fsession and run ",{"type":42,"tag":72,"props":3065,"children":3067},{"className":3066},[],[3068],{"type":48,"value":183},{"type":48,"value":185},{"type":42,"tag":943,"props":3071,"children":3072},{},[3073,3075,3081],{"type":48,"value":3074},"If the app is on localhost, verify the exact URL with ",{"type":42,"tag":72,"props":3076,"children":3078},{"className":3077},[],[3079],{"type":48,"value":3080},"curl -I",{"type":48,"value":3082}," before opening the browser.",{"type":42,"tag":943,"props":3084,"children":3085},{},[3086],{"type":48,"value":3087},"If the requested port was busy, use the actual port printed by the dev server.",{"type":42,"tag":943,"props":3089,"children":3090},{},[3091],{"type":48,"value":3092},"Prefer direct agent-browser inspection (DOM snapshots, console logs, screenshots, storage, cookies, network tools when available) before using the Replay MCP server.",{"type":42,"tag":943,"props":3094,"children":3095},{},[3096,3098,3104],{"type":48,"value":3097},"If Replay authentication fails, run ",{"type":42,"tag":72,"props":3099,"children":3101},{"className":3100},[],[3102],{"type":48,"value":3103},"replayio login",{"type":48,"value":3105}," or reconnect the relevant Replay app\u002Fintegration.",{"type":42,"tag":943,"props":3107,"children":3108},{},[3109,3111,3116,3118,3123,3125,3130],{"type":48,"value":3110},"If Replay QA returns 401, verify ",{"type":42,"tag":72,"props":3112,"children":3114},{"className":3113},[],[3115],{"type":48,"value":1061},{"type":48,"value":3117}," is set from ",{"type":42,"tag":72,"props":3119,"children":3121},{"className":3120},[],[3122],{"type":48,"value":1069},{"type":48,"value":3124}," and starts with ",{"type":42,"tag":72,"props":3126,"children":3128},{"className":3127},[],[3129],{"type":48,"value":1734},{"type":48,"value":185},{"type":42,"tag":943,"props":3132,"children":3133},{},[3134,3136,3141,3143,3147],{"type":48,"value":3135},"If the ",{"type":42,"tag":57,"props":3137,"children":3138},{},[3139],{"type":48,"value":3140},"application under test",{"type":48,"value":3142}," requires interactive login, follow ",{"type":42,"tag":57,"props":3144,"children":3145},{},[3146],{"type":48,"value":914},{"type":48,"value":3148}," - do not close-and-retry the browser session in a loop.",{"type":42,"tag":187,"props":3150,"children":3152},{"id":3151},"references",[3153],{"type":48,"value":3154},"References",{"type":42,"tag":1304,"props":3156,"children":3157},{},[3158,3169,3180],{"type":42,"tag":943,"props":3159,"children":3160},{},[3161,3163],{"type":48,"value":3162},"Agent browser reference: ",{"type":42,"tag":72,"props":3164,"children":3166},{"className":3165},[],[3167],{"type":48,"value":3168},"references\u002Fcli.md",{"type":42,"tag":943,"props":3170,"children":3171},{},[3172,3174],{"type":48,"value":3173},"Workflow notes: ",{"type":42,"tag":72,"props":3175,"children":3177},{"className":3176},[],[3178],{"type":48,"value":3179},"references\u002Fworkflows.md",{"type":42,"tag":943,"props":3181,"children":3182},{},[3183],{"type":42,"tag":3184,"props":3185,"children":3189},"a",{"href":3186,"rel":3187},"https:\u002F\u002Fdocs.replay.io",[3188],"nofollow",[3190],{"type":48,"value":3191},"Replay docs",{"type":42,"tag":3193,"props":3194,"children":3195},"style",{},[3196],{"type":48,"value":3197},"html .light .shiki span {color: var(--shiki-light);background: var(--shiki-light-bg);font-style: var(--shiki-light-font-style);font-weight: var(--shiki-light-font-weight);text-decoration: var(--shiki-light-text-decoration);}html.light .shiki span {color: var(--shiki-light);background: var(--shiki-light-bg);font-style: var(--shiki-light-font-style);font-weight: var(--shiki-light-font-weight);text-decoration: var(--shiki-light-text-decoration);}html .default .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html.dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}",{"items":3199,"total":3316},[3200,3218,3230,3242,3262,3284,3304],{"slug":3201,"name":3201,"fn":3202,"description":3203,"org":3204,"tags":3205,"stars":25,"repoUrl":26,"updatedAt":27},"accessibility-and-inclusive-visualization","make data visualizations accessible","Make data visualizations accessible and inclusive. Use when the user needs chart or diagram accessibility guidance, text alternatives for complex visuals, color and contrast review, keyboard support, reduced-motion behavior for animation or parallax, or an accessibility QA workflow for exported figures, UML-like diagrams, and dashboards.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[3206,3209,3212,3215],{"name":3207,"slug":3208,"type":15},"Accessibility","accessibility",{"name":3210,"slug":3211,"type":15},"Charts","charts",{"name":3213,"slug":3214,"type":15},"Data Visualization","data-visualization",{"name":3216,"slug":3217,"type":15},"Design","design",{"slug":3219,"name":3219,"fn":3220,"description":3221,"org":3222,"tags":3223,"stars":25,"repoUrl":26,"updatedAt":3229},"agent-browser","automate browser interactions for agents","Browser automation CLI for AI agents. Use when the user needs to interact with websites, verify dev server output, test web apps, navigate pages, fill forms, click buttons, take screenshots, extract data, or automate any browser task. Also triggers when a dev server starts so you can verify it visually.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[3224,3227,3228],{"name":3225,"slug":3226,"type":15},"Agents","agents",{"name":23,"slug":24,"type":15},{"name":17,"slug":18,"type":15},"2026-04-06T18:41:03.44016",{"slug":3231,"name":3231,"fn":3232,"description":3233,"org":3234,"tags":3235,"stars":25,"repoUrl":26,"updatedAt":3241},"agent-browser-verify","verify dev server output with automated browser","Automated browser verification for dev servers. Triggers when a dev server starts to run a visual gut-check with agent-browser — verifies the page loads, checks for console errors, validates key UI elements, and reports pass\u002Ffail before continuing.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[3236,3237,3240],{"name":23,"slug":24,"type":15},{"name":3238,"slug":3239,"type":15},"Local Development","local-development",{"name":17,"slug":18,"type":15},"2026-04-06T18:41:17.526867",{"slug":3243,"name":3243,"fn":3244,"description":3245,"org":3246,"tags":3247,"stars":25,"repoUrl":26,"updatedAt":3261},"agents-sdk","build AI agents on Cloudflare Workers","Build AI agents on Cloudflare Workers using the Agents SDK. Load when creating stateful agents, durable workflows, real-time WebSocket apps, scheduled tasks, MCP servers, or chat applications. Covers Agent class, state management, callable RPC, Workflows integration, and React hooks. Biases towards retrieval from Cloudflare docs over pre-trained knowledge.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[3248,3249,3252,3255,3258],{"name":3225,"slug":3226,"type":15},{"name":3250,"slug":3251,"type":15},"Cloudflare Workers","cloudflare-workers",{"name":3253,"slug":3254,"type":15},"SDK","sdk",{"name":3256,"slug":3257,"type":15},"Serverless","serverless",{"name":3259,"slug":3260,"type":15},"WebSockets","websockets","2026-04-06T18:39:51.717063",{"slug":3263,"name":3263,"fn":3264,"description":3265,"org":3266,"tags":3267,"stars":25,"repoUrl":26,"updatedAt":3283},"ai-elements","build chat UIs with AI Elements","AI Elements component library guidance — pre-built React components for AI interfaces built on shadcn\u002Fui. Use when building chat UIs, message displays, tool call rendering, streaming responses, reasoning panels, or any AI-native interface with the AI SDK.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[3268,3271,3274,3277,3280],{"name":3269,"slug":3270,"type":15},"Frontend","frontend",{"name":3272,"slug":3273,"type":15},"React","react",{"name":3275,"slug":3276,"type":15},"shadcn\u002Fui","shadcn-ui",{"name":3278,"slug":3279,"type":15},"UI Components","ui-components",{"name":3281,"slug":3282,"type":15},"Vercel","vercel","2026-04-06T18:40:59.619419",{"slug":3285,"name":3285,"fn":3286,"description":3287,"org":3288,"tags":3289,"stars":25,"repoUrl":26,"updatedAt":3303},"ai-gateway","configure Vercel AI Gateway","Vercel AI Gateway expert guidance. Use when configuring model routing, provider failover, cost tracking, or managing multiple AI providers through a unified API.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[3290,3293,3296,3299,3302],{"name":3291,"slug":3292,"type":15},"AI Infrastructure","ai-infrastructure",{"name":3294,"slug":3295,"type":15},"Cost Optimization","cost-optimization",{"name":3297,"slug":3298,"type":15},"LLM","llm",{"name":3300,"slug":3301,"type":15},"Performance","performance",{"name":3281,"slug":3282,"type":15},"2026-04-06T18:40:44.377464",{"slug":3305,"name":3305,"fn":3306,"description":3307,"org":3308,"tags":3309,"stars":25,"repoUrl":26,"updatedAt":3315},"ai-generation-persistence","implement persistence patterns for AI generations","AI generation persistence patterns — unique IDs, addressable URLs, database storage, and cost tracking for every LLM generation",{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[3310,3311,3314],{"name":3294,"slug":3295,"type":15},{"name":3312,"slug":3313,"type":15},"Database","database",{"name":3297,"slug":3298,"type":15},"2026-04-06T18:41:08.513425",600,{"items":3318,"total":3515},[3319,3340,3363,3380,3396,3413,3432,3444,3458,3472,3484,3499],{"slug":3320,"name":3320,"fn":3321,"description":3322,"org":3323,"tags":3324,"stars":3337,"repoUrl":3338,"updatedAt":3339},"prior-auth-packet-builder","build healthcare prior authorization packets","Build a concise prior authorization packet from local case files and payer policy docs.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[3325,3328,3331,3334],{"name":3326,"slug":3327,"type":15},"Documents","documents",{"name":3329,"slug":3330,"type":15},"Healthcare","healthcare",{"name":3332,"slug":3333,"type":15},"Insurance","insurance",{"name":3335,"slug":3336,"type":15},"Regulatory Compliance","regulatory-compliance",28169,"https:\u002F\u002Fgithub.com\u002Fopenai\u002Fopenai-agents-python","2026-04-16T05:11:39.180399",{"slug":3341,"name":3341,"fn":3342,"description":3343,"org":3344,"tags":3345,"stars":3360,"repoUrl":3361,"updatedAt":3362},"aspnet-core","build ASP.NET Core web applications","Build, review, refactor, or architect ASP.NET Core web applications using current official guidance for .NET web development. Use when working on Blazor Web Apps, Razor Pages, MVC, Minimal APIs, controller-based Web APIs, SignalR, gRPC, middleware, dependency injection, configuration, authentication, authorization, testing, performance, deployment, or ASP.NET Core upgrades.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[3346,3349,3351,3354,3357],{"name":3347,"slug":3348,"type":15},".NET","dotnet",{"name":3350,"slug":3341,"type":15},"ASP.NET Core",{"name":3352,"slug":3353,"type":15},"Blazor","blazor",{"name":3355,"slug":3356,"type":15},"C#","csharp",{"name":3358,"slug":3359,"type":15},"Web Development","web-development",23787,"https:\u002F\u002Fgithub.com\u002Fopenai\u002Fskills","2026-04-12T05:07:02.819491",{"slug":3364,"name":3364,"fn":3365,"description":3366,"org":3367,"tags":3368,"stars":3360,"repoUrl":3361,"updatedAt":3379},"chatgpt-apps","build ChatGPT Apps SDK applications","Build, scaffold, refactor, and troubleshoot ChatGPT Apps SDK applications that combine an MCP server and widget UI. Use when Codex needs to design tools, register UI resources, wire the MCP Apps bridge or ChatGPT compatibility APIs, apply Apps SDK metadata or CSP or domain settings, or produce a docs-aligned project scaffold. Prefer a docs-first workflow by invoking the openai-docs skill or OpenAI developer docs MCP tools before generating code.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[3369,3372,3375,3378],{"name":3370,"slug":3371,"type":15},"Apps SDK","apps-sdk",{"name":3373,"slug":3374,"type":15},"ChatGPT","chatgpt",{"name":3376,"slug":3377,"type":15},"MCP","mcp",{"name":9,"slug":8,"type":15},"2026-04-12T05:07:05.468097",{"slug":3381,"name":3381,"fn":3382,"description":3383,"org":3384,"tags":3385,"stars":3360,"repoUrl":3361,"updatedAt":3395},"cli-creator","build CLIs from API docs","Build a composable CLI for Codex from API docs, an OpenAPI spec, existing curl examples, an SDK, a web app, an admin tool, or a local script. Use when the user wants Codex to create a command-line tool that can run from any repo, expose composable read\u002Fwrite commands, return stable JSON, manage auth, and pair with a companion skill.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[3386,3389,3392],{"name":3387,"slug":3388,"type":15},"API Development","api-development",{"name":3390,"slug":3391,"type":15},"CLI","cli",{"name":3393,"slug":3394,"type":15},"Codex","codex","2026-04-12T05:07:04.132762",{"slug":3397,"name":3397,"fn":3398,"description":3399,"org":3400,"tags":3401,"stars":3360,"repoUrl":3361,"updatedAt":3412},"cloudflare-deploy","deploy projects to Cloudflare","Deploy applications and infrastructure to Cloudflare using Workers, Pages, and related platform services. Use when the user asks to deploy, host, publish, or set up a project on Cloudflare.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[3402,3405,3408,3409],{"name":3403,"slug":3404,"type":15},"Cloudflare","cloudflare",{"name":3406,"slug":3407,"type":15},"Cloudflare Pages","cloudflare-pages",{"name":3250,"slug":3251,"type":15},{"name":3410,"slug":3411,"type":15},"Deployment","deployment","2026-04-12T05:07:14.275118",{"slug":3414,"name":3414,"fn":3415,"description":3416,"org":3417,"tags":3418,"stars":3360,"repoUrl":3361,"updatedAt":3431},"define-goal","define and set measurable project goals","Help the user define a concrete, measurable goal before starting work, especially when they ask to use the goal tool, create a goal, set an objective, clarify success criteria, or turn a fuzzy intention into a quantitative outcome. Use this skill for goal creation and goal refinement only; it does not manage durable snapshots, decision logs, or long-running execution artifacts.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[3419,3422,3425,3428],{"name":3420,"slug":3421,"type":15},"Productivity","productivity",{"name":3423,"slug":3424,"type":15},"Project Management","project-management",{"name":3426,"slug":3427,"type":15},"Strategy","strategy",{"name":3429,"slug":3430,"type":15},"Task Management","task-management","2026-05-23T06:17:16.870838",{"slug":3433,"name":3433,"fn":3434,"description":3435,"org":3436,"tags":3437,"stars":3360,"repoUrl":3361,"updatedAt":3443},"figma","translate Figma designs into code","Use the Figma MCP server to fetch design context, screenshots, variables, and assets from Figma, and to translate Figma nodes into production code. Trigger when a task involves Figma URLs, node IDs, design-to-code implementation, or Figma MCP setup and troubleshooting.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[3438,3439,3441,3442],{"name":3216,"slug":3217,"type":15},{"name":3440,"slug":3433,"type":15},"Figma",{"name":3269,"slug":3270,"type":15},{"name":3376,"slug":3377,"type":15},"2026-04-12T05:06:47.939943",{"slug":3445,"name":3445,"fn":3446,"description":3447,"org":3448,"tags":3449,"stars":3360,"repoUrl":3361,"updatedAt":3457},"figma-code-connect-components","connect Figma designs to code components","Connects Figma design components to code components using Code Connect mapping tools. Use when user says \"code connect\", \"connect this component to code\", \"map this component\", \"link component to code\", \"create code connect mapping\", or wants to establish mappings between Figma designs and code implementations. For canvas writes via `use_figma`, use `figma-use`.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[3450,3451,3454,3455,3456],{"name":3216,"slug":3217,"type":15},{"name":3452,"slug":3453,"type":15},"Design System","design-system",{"name":3440,"slug":3433,"type":15},{"name":3269,"slug":3270,"type":15},{"name":3278,"slug":3279,"type":15},"2026-05-10T05:59:52.971881",{"slug":3459,"name":3459,"fn":3460,"description":3461,"org":3462,"tags":3463,"stars":3360,"repoUrl":3361,"updatedAt":3471},"figma-create-design-system-rules","generate design system rules from Figma","Generates custom design system rules for the user's codebase. Use when user says \"create design system rules\", \"generate rules for my project\", \"set up design rules\", \"customize design system guidelines\", or wants to establish project-specific conventions for Figma-to-code workflows. Requires Figma MCP server connection.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[3464,3465,3466,3469,3470],{"name":3216,"slug":3217,"type":15},{"name":3452,"slug":3453,"type":15},{"name":3467,"slug":3468,"type":15},"Documentation","documentation",{"name":3440,"slug":3433,"type":15},{"name":3269,"slug":3270,"type":15},"2026-05-16T06:07:47.821474",{"slug":3473,"name":3473,"fn":3474,"description":3475,"org":3476,"tags":3477,"stars":3360,"repoUrl":3361,"updatedAt":3483},"figma-implement-design","translate Figma designs into application code","Translates Figma designs into production-ready application code with 1:1 visual fidelity. Use when implementing UI code from Figma files, when user mentions \"implement design\", \"generate code\", \"implement component\", provides Figma URLs, or asks to build components matching Figma specs. For Figma canvas writes via `use_figma`, use `figma-use`.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[3478,3479,3480,3481,3482],{"name":3216,"slug":3217,"type":15},{"name":3440,"slug":3433,"type":15},{"name":3269,"slug":3270,"type":15},{"name":3278,"slug":3279,"type":15},{"name":3358,"slug":3359,"type":15},"2026-05-16T06:07:40.583615",{"slug":3485,"name":3485,"fn":3486,"description":3487,"org":3488,"tags":3489,"stars":3360,"repoUrl":3361,"updatedAt":3498},"hatch-pet","create animated pets for Codex","Create, repair, validate, visually QA, and package Codex-compatible animated pets and pet spritesheets from character art, generated images, company or prospect brand cues, or visual references. Use when a user wants a lightweight-worker Codex pet workflow, a non-pixel custom pet style, a prospect or company mascot pet, or a full 8x9 animated pet atlas with transparent unused cells, QA contact sheets, and pet.json packaging. This skill composes the installed $imagegen system skill for visual generation and uses bundled scripts for deterministic spritesheet assembly.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[3490,3493,3494,3497],{"name":3491,"slug":3492,"type":15},"Animation","animation",{"name":3393,"slug":3394,"type":15},{"name":3495,"slug":3496,"type":15},"Creative","creative",{"name":3216,"slug":3217,"type":15},"2026-05-02T05:31:48.48485",{"slug":3500,"name":3500,"fn":3501,"description":3502,"org":3503,"tags":3504,"stars":3360,"repoUrl":3361,"updatedAt":3514},"imagegen","generate and edit raster images","Generate or edit raster images when the task benefits from AI-created bitmap visuals such as photos, illustrations, textures, sprites, mockups, or transparent-background cutouts. Use when Codex should create a brand-new image, transform an existing image, or derive visual variants from references, and the output should be a bitmap asset rather than repo-native code or vector. Do not use when the task is better handled by editing existing SVG\u002Fvector\u002Fcode-native assets, extending an established icon or logo system, or building the visual directly in HTML\u002FCSS\u002Fcanvas.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[3505,3506,3507,3510,3513],{"name":3495,"slug":3496,"type":15},{"name":3216,"slug":3217,"type":15},{"name":3508,"slug":3509,"type":15},"Image Generation","image-generation",{"name":3511,"slug":3512,"type":15},"Images","images",{"name":9,"slug":8,"type":15},"2026-05-15T06:23:24.312127",675]