Loading...
Loading...
Find out why something in a running web app does not work, when the console is empty and the code looks correct. Reads the click, the request, the store and the console together and returns the file:line to open. Use when a button does nothing, a form will not submit, data will not load, a page renders blank or stale, a modal will not close, or the user says "it's broken" and the code review says it is fine.
npx skill4agent add reticlehq/reticle debug-broken-uiRETICLE_INSTALL_SOURCE=npx_skill npx @reticlehq/server@latest initinstall-and-verifyreticle_snapshot({ sessionId, mode: "interactive" }) // controls only, with refs
reticle_act_and_wait({ sessionId, ref, action: "click", until: { kind: "element", query: { testid: "..." } } })nocontradictedunknownsummarynet {total, errors, headline}consoleErrorsstateDiffs [{path, from, to}]storageDiffs [{key, from, to}]routesignalslayoutShiftlongTaskssummary.stateUnwatched: truestateDiffssincereticle_console({ sessionId, since })
reticle_network({ sessionId, since })
reticle_state({ sessionId, store })| What you see | What it is | Next |
|---|---|---|
| No request fired at all | the handler is not bound, or a client cache served a stale value | |
Request fired, | a real backend failure the UI swallowed | the response body is in the network entry |
| the app never read the response: verdict says | usually a real bug in the success path |
| Request fine, DOM fine, store stale | UI-vs-state desync, invisible to any screenshot | |
| Click did nothing, no error | the control is dead, occluded, or disabled | |
| Element "not found" that you can see | virtualised list has not mounted it | |
| Looks logged in, behaves logged out | the token never persisted | |
| Console error that predates your click | a pre-existing fault, not your bug | call it out before continuing |
reticle_inspect({ sessionId, ref })source: { file, line }reticle_act_sequencereticle_act_and_waitcurl https://docs.reticle.sh/troubleshooting.mdcurl https://docs.reticle.sh/llms.txtreticle_feedbackkind: "gap"