debug-async-ui

debug-async-ui is a skill for Claude Code, Codex from JinNing6/Noosphere. It costs 41 tokens per session (2,462 once invoked), scanned A, original, Apache-2.0.

A debugging workflow for frontend interactions whose state or returned content disappears, flashes, rolls back, or behaves differently in a real browser than in tests.

In plain words
What is it for?
Use it to reproduce delayed requests, add regression tests, and trace clicks, loading states, selected items, returned data, component mounting, and final rendering.
Why use it?
It helps locate whether the failure is in the event handler, state update, data refresh, component lifecycle, or rendering instead of changing the visual code blindly.

Skill for Claude CodeCodex

Written for no agent in particular: nothing here depends on one.

Good fit Use it to reproduce delayed requests, add regression tests, and trace clicks, loading states, selected items, returned data, component mounting, and final rendering.

Compare 6 skills from other repositories ↓
Install with agentmods
npx agentmods add skills/jinning6/noosphere/debug-async-ui
Install

Getting it into your agent

One page per mod, every tool's command on it. A separate URL per tool would split the same page into five that compete with each other.

Any agent
npx skills add JinNing6/Noosphere --skill debug-async-ui
Clone the repo
git clone --depth 1 https://github.com/JinNing6/Noosphere

Made for: Claude Code, Codex.

Wrote this? Show the measurements

A badge with what this costs and how it scanned, read live from this page, so it follows the numbers instead of freezing them. Markdown for a README, HTML for a documentation site or a project page.

agentmods badge for debug-async-ui

README.md
[![agentmods](https://agentmods.dev/badge/skills/jinning6/noosphere/debug-async-ui/github.svg)](https://agentmods.dev/skills/jinning6/noosphere/debug-async-ui)
Your own site
<a href="https://agentmods.dev/skills/jinning6/noosphere/debug-async-ui"><img src="https://agentmods.dev/badge/skills/jinning6/noosphere/debug-async-ui/github.svg" alt="Measured on agentmods" height="20"></a>

Or the 80×15 button, for a site that already has a row of RSS and ATOM ones. Only the verdict fits; the numbers stay here.

agentmods 80×15 button for debug-async-ui

Your own site · 80×15
<a href="https://agentmods.dev/skills/jinning6/noosphere/debug-async-ui"><img src="https://agentmods.dev/badge/skills/jinning6/noosphere/debug-async-ui.svg" alt="Reviewed on agentmods" width="80" height="20"></a>
Per session 41 Skills are progressive disclosure: only the name and description are preloaded; the body loads when the skill is used.
When invoked 2,462 The whole file, excluding the scripts and references it only reads on demand.
Security scan A 0 findings. A grade says what 26 rules found in the file — not that it is safe.
Origin original No closer match found in the catalogue.
Token cost

What it costs to keep this loaded

Counted locally with the o200k_base tokenizer, which is exact for GPT models; Claude uses its own tokenizer and its counts differ. Treat this as one consistent yardstick across the catalogue rather than a bill. Prices are per million input tokens.

ModelPer sessionOnce invoked
Fable 5.1 $0.00041 $0.02462
Opus 5.5 $0.00016 $0.00985
Sonnet 5.5 $0.00008 $0.00492
Haiku 4.5 $0.00004 $0.00246

Measured 1mo ago against content hash 906641c2d24d, method: parsed. Prices are Anthropic first-party input rates as of 2026-10-07, from the pricing page.

Security

Grade A, and why

debug-async-ui scanned grade A with 0 findings against 26 rules in 11 categories — prompt injection, anti-refusal, data exfiltration, privilege escalation, supply chain, agent snooping, system-prompt leakage, SSRF and excessive agency — measured 1mo ago.

A static scan of the body, not an audit. Every finding is printed with the line that produced it so you can judge whether it matters here. A mod is markdown that instructs an agent; that is exactly why what it instructs is worth reading.

Nothing flagged

None of the 26 patterns this scan looks for appear in this file: no shell pipes, no recursive deletes, no credential paths, no hidden text, no instruction-override or anti-refusal phrasing, no agent-config snooping. That is not a guarantee, it is the absence of the things that are checkable.

shared_skills/active/debug-async-ui/SKILL.md · 86 lines

How it starts

The opening of the file, as written. The whole thing — 86 lines — stays where its author put it; the contents beside it link to each section on GitHub.

Debug Async UI

Use this skill before changing visuals for async interaction bugs. Prove which layer owns the failure: event, state, data, lifecycle, or render.

Workflow

  1. Reproduce the original symptom first. Capture the user action, the immediate UI state, and the final UI state after async work completes.
  2. Add a slow-request regression test before the fix. Simulate 200-500 ms API, database, provider, or store delay. Assert:
    • the immediate intermediate state is visible after the action;
    • the final returned state/content is visible after resolution;
    • the target component was not incorrectly unmounted;
    • global loading did not replace a local interaction surface. For startup or splash gates, also add a regression where the readiness future never completes. The app must leave the splash/loading route through a bounded timeout or an explicit fallback instead of waiting forever.
  3. Trace the layers in order:
    • Event: click, hover, keyboard, wheel, or submit handler fires exactly once.
    • State: selectedId, detailId, expandedId, edit state, pending state, and result state are written where expected.
    • Data: API/database/provider/store refreshes do not overwrite the target state.
    • Lifecycle: route changes, keys, conditional rendering, AnimatedSwitcher-like components, and loading branches do not unmount the owner of interaction state.
    • Render: UI actually binds to the correct state after the previous layers are proven.
  4. Fix the root cause, not the symptom. Move durable interaction state to a stable parent/controller/store when a child can be replaced by loading, routing, or conditional rendering. Use local loading for detail open, local refresh, save title/color/sort, and similar narrow operations. Reserve global loading for initial load or broad data-source switches.
  5. Check the trigger boundary. If the user expects generation for the current entity, trigger from stable entity selection/page context, not only from narrow record-kind flags such as "external candidate". Manual buttons should remain as retry controls, not the only path to generation.
  6. If the operation affects the currently viewed entity, surface status and returned content on every stable context where the user may remain while waiting, including the active tab, default overview, and relevant side panel. Do not leave the only evidence in an off-screen tab, transient child panel, hidden side panel, or default page the user is not currently viewing.
  7. For aggregate responses, distinguish "request finished" from "required sub-result returned". If a key source, model, provider, or structured field is missing from the returned payload, show an explicit missing/failed diagnostic on the same stable contexts; do not let a broad "ready" status imply the missing sub-result succeeded.
  8. For AI/model synthesis that supplements several factual modules, centralize extraction from the real response in a stable parent and render module-specific supplement panels. Each panel must label loading, failure, missing sub-result, or completion; completed AI content must be marked as AI-generated and must not be merged into authoritative facts unless the normal source-gating path approves it.
  9. For slow search/detail generation, never leave the previous selected entity visible while the new query is pending. After a short threshold, render a query-scoped pending placeholder in the stable parent, label it as generating, and suppress duplicate detail verification for that placeholder. When the aggregate search resolves, replace the placeholder with the real returned candidate or an explicit empty/error state.
  10. For launch Aha screens, onboarding tours, permission primers, marketing modals, or other delayed overlays, gate later overlays on the dismissal/completion state of the current primary surface. A timer-driven tour must not appear on top of an undismissed launch panel, auth gate, consent gate, or blocking first-run task. Add a delayed regression that waits longer than the overlay timer while the primary surface remains open.
  11. For mobile floating action clusters, measure the actual bounding rectangles of every simultaneously visible trigger. Assert all triggers are inside the viewport and pairwise non-overlapping. Treat the cluster as one layout system rather than moving one button at a time. When an opened sheet/panel should cover those triggers, assert the panel is in the viewport and has an overlay layer above persistent top/bottom controls.
  12. For mobile overlays containing text inputs, check whether opening the overlay auto-focuses an input. On Android and other touch-first contexts, auto-focus can cause the first hardware/back gesture to clear input focus or keyboard state instead of closing the overlay. Prefer no mobile auto-focus unless text entry is the sole immediate task, and add a regression that the expected back/overlay history path closes on the first action.
  13. For external OAuth/device-code flows, separate "browser-side approval" from "app-side token/profile completion." The app must keep the device code and waiting state visible while polling, and transient DNS/connection/timeouts from token or profile endpoints should update a retrying status rather than switch to terminal failure. Add a regression where the first token poll or profile request fails with a network error and the next retry succeeds; assert no error UI appears and the signed-in state eventually renders.
  14. For auth-bound forms with quick-fill presets, templates, or shortcuts, assert that applying the preset does not clear authenticated identity, creator, token, tenant, workspace, or attribution fields. Re-read the stable auth/session store at the submit boundary as a fallback, because the visible form field may have been cleared by a preset, locale switch, or overlay remount.
  15. If one part of an authenticated flow uses native/mobile-safe retry semantics, adjacent authenticated actions such as submit, publish, save, or create-record should use the same retry class for DNS, connection, timeout, HTTP 0, and 5xx/429 states. Add a regression where the first submit/publish request fails transiently and the next retry succeeds.
  16. Verify with the slow regression plus relevant static checks, build, and browser checks that switch every affected tab/module.
  17. For file-backed or local-database UI state, inspect write ordering as well as restore ordering. Two unawaited saves can race even when each save is individually correct: an older snapshot may finish last and overwrite a newer terminal/error/result state. Serialize complete snapshot writes (or use an atomic transaction), establish restored terminal guards before publishing restored content, and gate entitlement/lifecycle auto-retries until hydration completes. Run the restart regression repeatedly and add a 200-500 ms delayed hydration case where entitlement becomes active before the persisted state arrives.

Read the full file on GitHub · 86 lines

Changes

What this file has done since we first saw it

Hashed on every crawl. A supply-chain change to an agent config is a question of when, not whether, so the history is kept rather than the latest state alone.

  1. 1mo ago First seen · 86 lines · 41 tokens per session scan A 906641c2d24d

Subscribe to this mod's changes

debug-async-ui is a skill published in the GitHub repository JinNing6/Noosphere (18 stars, last pushed 4d ago), licensed Apache-2.0. It adds 41 tokens to every session and 2,462 once invoked, about $0.0002 per session on Opus 5.5. A static security scan graded it A with 0 findings. No closer match exists in the catalogue, so it is treated as the original; first seen 2026-08-30.

Related

Other skills, from other repositories

error-recovery

A guide to detecting and recovering from failures in long-running AI agents. It covers API outages, bad tool calls, broken conversation state, stalled streams, repeated loops, retries, fallback models, and circuit breakers that stop repeated failure.

bojieli/ai-agent-book · 111 tokens

pre-action-interceptors

Use when a tool error begins with "INTERCEPTOR:", a sent message was silently hedged or rewritten, or the user asks about active guards or blocked actions. Not for ordinary tool errors.

Bitterbot-AI/bitterbot-desktop · 44 tokens

observability

Periodic health sweep of the running system via the debug pipeline (cloud logs / k8s / daemon / DB slices). On a real anomaly, open a bug task (--kind workitem) carrying the evidence refs so it re-enters the bugfix loop. A healthy sweep opens NO task — never fabricate a bug.

Prismer-AI/PrismerCloud · 67 tokens

prismer-python-debugpy

Debug Python: pdb REPL + debugpy remote (DAP).

Prismer-AI/PrismerCloud · 19 tokens

impact-trace

For a change point (function / type / endpoint / SQL column), enumerate its real blast radius across six dimensions with a grep citation per row, then derive the regression test scope. Every impact-table row must trace to a real search hit — never a self-asserted claim.

Prismer-AI/PrismerCloud · 60 tokens

webapp-qa

Perform scoped exploratory QA of a web application, reproduce defects, collect screenshots and console evidence, and deliver a prioritized report.

Prismer-AI/PrismerCloud · 29 tokens