원클릭으로
locate-ui-from-code
Code to screen — locate UI, reach logic branches, explain how to trigger debugger/effect/handler paths
Codex 또는 Claude로 설치 이 Prompt를 복사해 Codex, Claude 또는 다른 어시스턴트에 붙여 넣으면 Skill 페이지를 검토하고 설치를 진행할 수 있습니다.
메뉴
Code to screen — locate UI, reach logic branches, explain how to trigger debugger/effect/handler paths
Codex 또는 Claude로 설치 이 Prompt를 복사해 Codex, Claude 또는 다른 어시스턴트에 붙여 넣으면 Skill 페이지를 검토하고 설치를 진행할 수 있습니다.
SOC 직업 분류 기준
Create a GitHub PR for completed work, then run coderabbit-resolver through review, CI, merge, and cleanup. Use when: the user asks for PR creation followed by CodeRabbit resolution. Keywords: create PR, CodeRabbit, merge.
Secure pnpm GitHub Actions CI
Live onboarding tour of newly implemented code. Combines /deep-trace, the vscode-debug-mcp bridge, and playwright-cli to run the target app in a debug session, drive the UI, pause at curated breakpoints inside the new code, and narrate "this modal is the newly created one" — mapping every UI moment to the exact file:line. Use when the user wants to understand where and how AI-written feature code executes in the running application ("どの UI / どのロジックで動くのか分からない", "オンボーディングして", "/feature-tour").
Screenshot UI defect lint
Debug Claude Code plugins
Record a web or Electron-renderer flow as an annotated video with playwright-cli, then extract frames to confirm how it actually looks. Use when the user points at a flow to capture — "record that part", "あそこの部分", "この一連の動作", "動作確認して録画して", QA-ing a screen's motion/behavior, or proving a web / Electron-renderer interaction works on video. For analyzing a clip you were handed or generic cross-surface motion verification, use the `video` skill; for native macOS chrome (menu / tray / dock / traffic-lights) use computer-use — playwright cannot see those.
| name | locate-ui-from-code |
| description | Code to screen — locate UI, reach logic branches, explain how to trigger debugger/effect/handler paths |
When running this skill in Codex, translate Claude Code-only primitives before acting: AskUserQuestion -> chat/request_user_input, TodoWrite -> update_plan, Task/TaskCreate/TeamCreate/SendMessage -> spawn_agent/send_input/wait_agent when available and allowed, and EnterPlanMode/ExitPlanMode -> a concise chat plan plus explicit approval.
Resolve Read/Write/Edit/Bash/WebSearch/WebFetch to Codex file/shell/web tools, and map ~/.claude/... paths to ~/.agents/... or ~/.codex/... unless the task explicitly targets Claude Code.
When running this skill in Cursor Agent, translate Claude Code-only primitives before acting: AskUserQuestion -> AskQuestion; TodoWrite -> Cursor TodoWrite or an equivalent checklist; Task/TaskCreate/TeamCreate/SendMessage/multi-agent flows -> Cursor Task (subagents), parallel Tasks, or run_in_background when allowed (TeamCreate/SendMessage may have no exact match); EnterPlanMode/ExitPlanMode -> Plan mode (SwitchMode / CreatePlan) plus explicit user approval.
Resolve Read/Write/Edit/StrReplace/Bash/web/search/MCP via Cursor Composer or Agent equivalents. MCP names written as mcp__server__tool typically map to call_mcp_tool with configured server identifiers. Map ~/.claude/... to ~/.cursor/skills/, .cursor/skills/, and .cursor/rules/ unless the task explicitly targets Claude Code.
Resolve two related questions in one workflow:
debugger, an if branch, a useEffect, or an event handler actually run)The agent must execute the reach operations itself (not only describe them) and explain the recipe so the user can reproduce or attach DevTools at the right moment.
<ComponentName> って画面上のどれ?" / "Where does <X> render?"file.tsx:139 の debugger にどう到達する?" / "What clicks get me into this branch?"useEffectOnAny の else ブロックを踏みたい" / "How do I trigger this handler?"Required (at least one):
@src/.../Foo.tsx:139) — preferred when user pins a lineFolderHeader)data-insp-path or similar source-attribution attributeImplicit: read surrounding code (±30 lines) to classify the target and derive preconditions.
| Kind | Code signals | Skill output focus |
|---|---|---|
| Render target | JSX return, styled component, className, visible t.* label | DOM locator + screenshot of that element |
| Logic target | debugger, useEffect*, if/else, early return, event handler body, mutation onSuccess | Reach recipe (operations agent ran) + screen state when branch fires + nearest UI anchor |
If the pinned line is logic (e.g. debugger inside useEffect), do not stop at "this component renders on tab X". You must derive and run the operations that satisfy the branch guard.
isChanged === true, modal open, API refetch completed).Example guard → action mapping:
| Guard in code | User operation |
|---|---|
isChanged === true | Drag an item between columns or reorder within a list without saving |
orderItemSettings updates while isChanged | Complete "新規項目追加" (or any action that invalidates the query) after step above |
isOpen && step === 2 | Open modal → pick type on step 1 → advance |
role !== 'admin' | Log in as the non-admin test account from project docs |
aria-*, data-testid, data-insp-path).grep -rn "FolderHeader" --include="*.tsx" -l
# definition + usages -> trace to the page route
If the project ships data-insp-path="<file>:<line>:<col>:<Component>", prefer it for render targets.
Default: headed / visible. The user must be able to follow along and attach DevTools.
| Environment | Primary | Notes |
|---|---|---|
| Claude Code (chrome-devtools MCP) | chrome-devtools MCP | --headed equivalent via MCP |
Cursor (zumen-fe and repos with cursor-specific.mdc) | cursor-ide-browser MCP | playwright-cli unless user explicitly requests it |
| Cursor (generic) | cursor-ide-browser if available, else playwright-cli --headed | |
| Codex CLI / shell | playwright-cli --headed |
# playwright-cli (when allowed)
playwright-cli open https://local.zume-n.com/ --headed
playwright-cli state-load .auth.json # after one-time login + state-save
Cursor IDE browser flow:
kill-port 8080 → start dev server if needed (pnpm dev -p 8080).browser_tabs (list) → browser_navigate to landing / login URL.browser_lock → operate → leave open (see Phase 6).Respect project rules. If the repo forbids URL direct navigation after login (正規動線のみ), navigate by clicking nav / sidebar / tabs — not goto to deep paths.
Use project auth: .agent_browser, test_accounts_and_permissions, or Serena memory.
Follow 正規動線 to the page that hosts the component:
Snapshot after arrival; confirm URL and key labels match expectations.
For logic targets, this phase is not optional. Perform each step in the reach recipe:
drag success. Use coordinate pointer ops (browser_get_bounding_box → move → mousedown → move → mouseup) per project browser-dnd-coordinate-qa rules. Verify list order / column changed in snapshot text.debugger: leave the browser on that screen state and tell the user "DevTools open + resume once — next refetch/render will pause here." Do not remove the user's breakpoint.For render targets only: skip to Phase 5 once the element is visible (tabs expanded, scrolled into view).
playwright-cli snapshot
# or browser_snapshot in Cursor
When multiple candidates exist, enumerate with eval / CDP:
playwright-cli --raw eval "() => Array.from(
document.querySelectorAll('[data-insp-path*=\"FolderHeader\"]')
).map((el, i) => ({ i, text: el.textContent.slice(0, 40), rect: el.getBoundingClientRect().toJSON() }))"
Capture in parallel:
outerHTML (~600 chars), rect, key computed styles, a11y attrs, 1-level children.browser_highlight / playwright element screenshot).Save path priority:
.claude/tasks/assets/<task>/spec_reference/docs/screenshots/ or docs/images/<repo-root>/screenshots/<name>_visual.pngNaming: <component-or-branch-purpose>_visual.png — never screenshot.png.
Always present (logic targets):
debugger / breakpoint) — when execution pauses relative to the last user action.Also present when applicable:
outerHTMLdata-insp-pathEnd with the browser on the state where the branch is reachable (logic) or on the located element (render):
playwright-cli close / browser_close as cleanup.useEffect is not "the whole tab"; explain and run the trigger sequence.isChanged may never enter the else branch you want.state-save / state-load or project login URL (https://local.zume-n.com, not raw localhost:8080 when Auth0 callback requires it).outerHTML; full dumps go to files.cursor-ide-browser by default.references/tool-equivalents.md — MCP / playwright-cli command translationreferences/example-walkthrough.md — render target example (FolderHeader)references/example-logic-branch-reach.md — logic target example (debugger in useEffect else branch)