npx skillsauth add laststance/skills dndInstall this skill globally with one command. Works with Claude Code, Cursor, and Windsurf.
3 of 9 scanners reported clean
Some scanners were skipped, did not run, or reported a non-clean status. Review each row below.
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.
Agent browser tools often report ref-based drag as successful even when custom
DnD libraries (dnd-kit, react-dnd, native HTML5 DnD wrappers) drop on the
wrong target. Treat any drag <sourceRef> <targetRef> success as unverified
unless the rendered state proves the move landed.
playwright-cli only)This protocol is valid only when the browser operation is driven by
playwright-cli. The coordinate DnD sequence, video recording, chapter markers,
fresh bounding-box measurement, snapshots, request checks, console checks, and
Drop+10 frame extraction must all be run through playwright-cli.
Do not substitute chrome-devtools MCP, computer-use, AppleScript, cliclick,
or ref-based browser drag for this procedure. If playwright-cli cannot run or
cannot perform the requested interaction, stop and report that blocker; do not
continue this verification protocol with another browser-control tool.
Load this protocol whenever browser-driven verification touches drag-and-drop:
dnd-kit DragOverlay / SortableContext flowsIf a browser-using skill cannot rule out DnD ahead of time, load this skill preemptively before opening the browser.
kill-port <port> first
when a fixed port is used.mousedown → at least one
intermediate move → move to target center → mouseup.playwright-cli)playwright-cli --raw eval "el => JSON.stringify(el.getBoundingClientRect())" eSource
playwright-cli --raw eval "el => JSON.stringify(el.getBoundingClientRect())" eTarget
playwright-cli mousemove 250 426
playwright-cli mousedown
playwright-cli mousemove 360 426
playwright-cli mousemove 640 426
playwright-cli mouseup
playwright-cli snapshot
playwright-cli console error
Use video evidence whenever the bug involves motion that a final snapshot cannot prove, especially:
dnd-kit DragOverlay returning to the source position after dropplaywright-cli)drag.EVIDENCE_DIR=".claude/tasks/assets/<task>/qa_evidence/<scenario>"
VIDEO="$EVIDENCE_DIR/<scenario>.webm"
mkdir -p "$EVIDENCE_DIR"
playwright-cli video-start "$VIDEO"
playwright-cli video-chapter "measure fresh boxes"
playwright-cli --raw eval "el => JSON.stringify(el.getBoundingClientRect())" eSource
playwright-cli --raw eval "el => JSON.stringify(el.getBoundingClientRect())" eTarget
playwright-cli video-chapter "coordinate dnd"
playwright-cli mousemove 250 426
playwright-cli mousedown
playwright-cli mousemove 360 426
playwright-cli mousemove 640 426
playwright-cli mouseup
playwright-cli video-chapter "post-drop verification"
playwright-cli snapshot
playwright-cli requests
playwright-cli console error
playwright-cli video-stop
For overlay / ghost regressions, preserve the 10 frames starting at the drop moment so the before/after behavior can be reviewed without replaying the whole video.
If the exact drop frame is unknown, extract all frames first and identify the
frame where mouseup / drop occurs by visual inspection:
VIDEO=".claude/tasks/assets/<task>/qa_evidence/<scenario>.webm"
ALL_FRAMES=".claude/tasks/assets/<task>/qa_evidence/<scenario>_frames"
DROP_FRAMES=".claude/tasks/assets/<task>/qa_evidence/<scenario>_drop_plus_10"
mkdir -p "$ALL_FRAMES" "$DROP_FRAMES"
ffmpeg -y -i "$VIDEO" -vf fps=25 "$ALL_FRAMES/frame_%04d.png"
# Replace 0194..0203 with the 10 frame numbers starting at the observed drop.
cp "$ALL_FRAMES"/frame_{0194..0203}.png "$DROP_FRAMES"/
ffmpeg -y \
-framerate 1 \
-pattern_type glob \
-i "$DROP_FRAMES/frame_*.png" \
-vf "scale=320:-1,tile=5x2" \
-frames:v 1 \
"$DROP_FRAMES/contact_sheet.png"
If the drop timestamp is easier to identify than the frame number, extract 10 frames from that timestamp:
DROP_AT="00:00:07.760"
ffmpeg -y -ss "$DROP_AT" -i "$VIDEO" -frames:v 10 "$DROP_FRAMES/frame_%04d.png"
Video verification is not a replacement for state or network verification. A valid DnD result with motion-sensitive behavior should record all of these:
Coordinates must come from the current viewport and current layout. Recalculate bounding boxes before another drag attempt whenever any of the following has happened since the last measurement:
dnd-kit-specific success criteriaA valid verification confirms a textual mutation that corresponds to the move:
Backlog 3 -> 2, Doing 2 -> 3group: doingposition: 2A snapshot that "looks moved" without a matching text change usually means the drop landed on a parent container rather than the sortable item — and the store never updated.
tools
Inspect video frame-by-frame and capture-then-verify UI motion. Extract frames from any clip (handed to you, screen-recorded, or self-captured) with ffmpeg and read them as images; record an interaction (Playwright / computer-use / iOS simulator) and verify animations, transitions, and motion that static screenshots and getComputedStyle cannot reveal. Use when verifying animations/transitions/motion, analyzing a video or .webm/.mp4, extracting frames, checking how something "looks" in motion, or recording a UI flow to inspect.
testing
Cited research briefs
development
Daily coding habit prompts JP
development
React core deep-dive JP