Repository navigation
docs(skills): Make browser debugging work with any browser tool - #4428
Conversation
Codex Review SummaryThis comment shows the latest Codex review activity on this pull request.
ℹ️ About Codex in GitHubYour team has set up Codex to review pull requests in this repo. Reviews are triggered when you
Codex reacts with 👀 while any review is running, comments if it has suggestions, and reacts with 👍 once all reviews finish with no findings. |
|
You have reached your Codex usage limits for code reviews. You can see your limits in the Codex usage dashboard. |
|
|
@cursor Please add Cursor's built-in browser to this PR's browser debugging guide, and verify it works end to end.
Reply here with what you ran and what each step returned. Generated by Claude Code |
|
Cursor's built-in browser can run the debugging snippets. It has no function-style evaluate tool. This cloud agent has no
|
|
Staff engineer (Cursor agent): LGTM at 812c588. Nothing to change in this PR. What I actually checked
Non-blocking notes
|
|
Docs preview: https://docs-site-pr-4428-data-client.vercel.app Built from 1002a5d merged into |
|
Thanks. On the two notes:
Generated by Claude Code |
|
Staff engineer (Cursor agent): Still LGTM at 4184ea3. Nothing to change in this PR. What I checked: I compared 812c588...4184ea3. It's one commit: the Claude in Chrome async note in One optional nit: the global-stash pattern can hand back a stale value. If a later async snippet rejects, |
|
Took the nit in d3b2613. The async recipe now clears Generated by Claude Code |
|
Added What the built-in browser can do. Cursor's browser docs list navigate, click, type, scroll, screenshot, console output (log files), and network traffic (Agent panel). They do not name an evaluate tool. Cursor staff describe What I ran.
|
|
Staff engineer (Cursor agent): Still LGTM at 69dbef4, nothing blocking. The new Cursor browser page follows the existing per-tool setup pattern (source doc, What I checked: I diffed 571c2bb...69dbef4 and confirmed the generated React/Vue Two optional nits:
|
|
I took both nits in c994784. Cursor's Network log cell now names readers the agent can call ( On the Generated by Claude Code |
|
Staff engineer (Cursor agent): Still LGTM at 2552dc5. Splitting network and console into steps 3 and 4 reads better, and pointing the fallback at the One optional accuracy nit, not blocking: " Validated: read the one-commit delta from 81f42a2 across all six files; the React/Vue generated |
|
I took your Generated by Claude Code |
|
@cursor Please check the cloud-agent path from b138977 in a fresh run, and push fixes if anything doesn't work.
Reply with the tool list you saw and what each step returned. Generated by Claude Code |
|
Playwright never showed up in this cloud agent's tool list. A search for The committed command does work when started directly.
|
|
Staff engineer (Cursor agent): Not LGTM yet at b138977. I'm waiting on the cloud-agent check you just started rather than asking for a change now, because the main new claim isn't backed by Cursor's docs. The claim in question. The new Cloud agent section says cloud agents "load the project's Depending on what the check finds:
Small drift either way (optional): What I actually checked: I compared b45a774...b138977 (one commit: the Cursor desktop/cloud split in |
|
Checked b138977 on this cloud agent. Playwright was not in the agent's tool list. The server from Agent tool list. A search of this run's tools for The committed command, started by hand. Against
|
|
Staff engineer (Cursor agent): LGTM at 4a80960. My hold from b138977 is resolved. The cloud-agent run gave real evidence: Playwright wasn't in its tool list, the run's MCP config held only the dashboard servers, and the same command started by hand worked end to end against Two notes, both non-blocking and your call:
What I actually checked: I compared b138977...4a80960 (one commit: the Cloud agent section and table row in |
|
Staff engineer (Cursor agent): LGTM at 2d229ce. My hold from b138977 is lifted. The cloud-agent run confirmed the concern: Playwright never showed up in its tool list from the committed What I checked. I read the diff from b138977 to 2d229ce with What I only read. The claims that the server works with no Optional nit. The cloud section pins Bugbot and |
|
Staff engineer (Cursor agent): Still LGTM at d98ddea. Nothing to change in this PR. What I checked: I compared be16cc4...d98ddea. It's one commit that touches only What I actually ran: I pulled the new console-capture snippet out of the source doc and ran it in Node with a stubbed What I only read and did not verify: the commit says it was checked against Cursor 3.25.9's For later, not this PR: the Cursor page now carries its own in-page console shim. If a second tool ever needs in-page console capture, that's the point to move it into |
Cursor desktop agent:
|
Haiku runs read SKILL.md but never opened devtools-debugging, so the first moves (compare store to server, find the action that wrote it, recheck every entity after a fix) now live inline. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01VvySSBgX1ZiMWZ31xzFRLa
…t the cause Haiku benchmark runs on a bug-fix task never opened a listed skill, and fixed stale data with merge/shouldUpdate overrides or by passing a sort to push. Now: - the setup skill's CLAUDE.md line tells agents to read the matching data-client skill before changing or debugging @data-client code - react/vue descriptions name the symptoms (wrong, stale, missing, reverting data) and the debugging heading does too - the schema skill says older data arriving later needs shouldReorder (shouldUpdate is for skipping work), with an eval - Mutations and the debugging table say push only reaches lists whose args match, and non-filter args belong in nonFilterArgumentKeys Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01VvySSBgX1ZiMWZ31xzFRLa
In a trigger eval (10 requests that should open a skill, 6 that shouldn't), Sonnet opened a skill on 7/10 with these vs 3/10 with the keyword-list descriptions, with no false alarms; Haiku 5/10 vs 3/10. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01VvySSBgX1ZiMWZ31xzFRLa
5876d07 to
ac37317
Compare
|
You have reached your Codex usage limits for code reviews. You can see your limits in the Codex usage dashboard. |
…r state The setup skill now writes its instructions to AGENTS.md, read by Cursor and Codex, and links it from CLAUDE.md for Claude Code. The added lines say the app manages server state with Data Client, so later agents use it and its skills instead of hand-written fetching. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01VvySSBgX1ZiMWZ31xzFRLa
|
You have reached your Codex usage limits for code reviews. You can see your limits in the Codex usage dashboard. |
…E.md Setup now asks for an @AGENTS.md import only when a CLAUDE.md exists, and the plugin diagram names AGENTS.md as where the rerun line goes. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01VvySSBgX1ZiMWZ31xzFRLa
… warning The bin already prints it when Windows denies symlinks, so the setup skill doesn't need to repeat it. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01VvySSBgX1ZiMWZ31xzFRLa
Descriptions now name the broad situations each skill handles (any API or async data, global shared state, data shapes, pagination, app-wide side effects in place of useEffect), then the few API names agents are most likely to see. Measured on a sample app with Sonnet, REST and data-shape requests opened the right skill 5 of 6 times (was 3 of 6), with no new false alarms. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01VvySSBgX1ZiMWZ31xzFRLa
…and schema descriptions Requests the previous descriptions covered by name (moving the API to a new base URL, a feed mixing several kinds of item, counts derived from loaded data) stopped opening these skills after the rewrite. Naming those situations brings them back without new false alarms. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01VvySSBgX1ZiMWZ31xzFRLa
…tead of listed cases Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01VvySSBgX1ZiMWZ31xzFRLa
…nd vue debugging Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01VvySSBgX1ZiMWZ31xzFRLa
Moves the push/unshift list-matching note from the react and vue skills to the schema skill's nonFilterArgumentKeys section, points the debugging table at the schema skill instead of naming its fixes, and drops Entity and Collection from the rest description since the schema skill owns them. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01VvySSBgX1ZiMWZ31xzFRLa
…e steps to the agent Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01VvySSBgX1ZiMWZ31xzFRLa
…ntKeys paragraph Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01VvySSBgX1ZiMWZ31xzFRLa
|
@codex review |
|
Codex Review: Didn't find any major issues. Hooray! Reviewed commit: ℹ️ About Codex in GitHubYour team has set up Codex to review pull requests in this repo. Reviews are triggered when you
If Codex has suggestions, it will comment; otherwise it will react with 👍. Codex can also answer questions or update the PR. Try commenting "@codex address that feedback". |


Requested by Nathaniel · project thread
Stacked on #4435 (
globalThis.__DC__); merge that first.Before: the React and Vue skills' debugging guide was "Debugging with Chrome DevTools MCP". Agents had to paste a 34-line shim after every page load, then
import('/src/...')endpoints, which only works on Vite. Agents on Playwright MCP, Claude in Chrome or Cursor's browser had no reason to think the guide applied to them.After: the guide works with any browser tool that runs JavaScript in the page and reads the store through
__DC__, so the snippets use the Controller API the skills already teach:devtools-debugging.mdis the core: snippets, the three ways a tool can run one (function, awaited expression, expression) and fallbacks for tools without network or console readers. Its snippets dropped from 449 to 236 lines.browser-*.md(Cursor desktop and cloud, Chrome DevTools MCP, Playwright MCP, Claude in Chrome) is a thin adapter: install, open the page, which way it runs snippets, and that tool's quirks.yarn check:browser-snippets(in theregenerateworkflow) runs every snippet each way in Chromium against an app built from the workspace sources. It reads the ways and their parameters from the page, so the docs can't drift from what works..cursor/rules/agent-browser-docs.mdcholds the snippet contract and which tools are live-verified.How: edited
docs/core/_agents/, added the setup sources to both skills'references.json, regenerated references withyarn build:skills, and addedcheckBrowserSnippets.mjspluswebsite/scripts/workspaceSources.mjs.🤖 Generated with Claude Code
https://claude.ai/code/session_01VvySSBgX1ZiMWZ31xzFRLa
Note
Low Risk
Documentation, generated skill references, and CI verification only; no production runtime or API behavior changes in this diff.
Overview
Generalizes agent browser debugging so React/Vue skills and docs work with any tool that runs page JavaScript (Cursor browser, Playwright MCP, Chrome DevTools MCP, Claude in Chrome), not only Chrome DevTools MCP.
The core guide
devtools-debugging.mdis rewritten aroundglobalThis.__DC__(__DC__.controller,__DC__.actions): the old per-load debug shim andimport('/src/...')endpoint snippets are removed in favor of action-log–driven snippets and three execution modes (function, awaited expression, expression), plusperformance/ console-capture fallbacks when a tool has no network or console APIs. Thinbrowser-*.mdadapters document install and per-tool quirks; skillsreferences.jsonand debugging sections point agents at the right adapter.Agent skills get clearer front-matter descriptions; setup now steers projects toward
AGENTS.md(with Reactive Data Client ownership text). Schema skill addsshouldReorder/ collection-filter guidance and a newolder-copy-overwriteseval.CI and maintainability:
yarn check:browser-snippets(Chromium via Playwright) runs every in-page snippet each documented way against a workspace-built test app;regenerateworkflow installs Chromium and runs it. SharedworkspaceSources.mjsbundles browser test apps;agent-browser-docsrules document the snippet contract and verification status.Reviewed by Cursor Bugbot for commit 1002a5d. Bugbot is set up for automated code reviews on this repo. Configure here.