本文へ移動
cccskills
無料GitHub で公開

click-path-audit

Trace every button, toggle and form submit through the state changes it triggers, to find controls that work in isolation but do nothing or the wrong thing together: a later call undoing an earlier one, async races, stale closures, effects that reset state, dead paths. Audit a page, a store or a whole app.

日本語の概要は準備中です。原文の説明を表示しています。

SebastianLuser/claude-code-arcaneスター 3(GitHub 3 + cccskills 0)
連携ツールPlaywright

実行スコア 未検証

インストール方法を見る

含まれるファイル(1)

  • SKILL.md4.7 KB

SKILL.md(原文)

インストールする前に、エージェントに与えられる指示の中身を確認できます。

Click-Path Audit

Static review checks that a handler exists and does not crash. It does not check that the final state matches what the button promises. A "New email" button that calls setComposeMode(true) and then selectThread(null) looks correct, until you notice that selectThread resets composeMode to false: the button does nothing.

Phase 1: Scope

ModeUse when
page <path>After building a page, or when a user reports a button that does nothing
store <name>After changing a store or context: audit every caller of the changed actions
appBefore a launch or after a big refactor of shared state

An app audit is expensive: map the stores first (Phase 2), then audit page by page.

Phase 2: Map the state

For every store, context or reducer in scope (Zustand, Redux, React context, Pinia, signals), list each action:

STORE emailStore
  setComposeMode(bool)  → sets {composeMode}
  selectThread(t|null)  → sets {selectedThread, messages}  RESETS {composeMode, composeData}
DANGEROUS RESETS: selectThread resets composeMode, which it does not own

Include the effects (useEffect, watch, subscriptions) that react to state and write state: they are hidden calls in every handler that touches their dependencies.

Phase 3: Trace each touchpoint

For each button, toggle, link with a handler and form submit:

  1. Find the handler and list its calls in order, following calls into the store actions and API helpers.
  2. For each call: what state it reads, what it writes, what it resets as a side effect, and what effect it triggers.
  3. Compare the final state with what the label promises ("Save" saves and shows it saved; "Delete" removes the item from the list and the server).
TOUCHPOINT "New email"  ComposeButton.tsx:42
  1. setComposeMode(true)   → composeMode = true
  2. selectThread(null)     → RESETS composeMode = false   ← conflict
  EXPECTED: compose panel opens
  ACTUAL:   nothing changes

Phase 4: Patterns to check

PatternLooks like
Sequential undoA later call (or its side effect) resets what an earlier call set
Async raceTwo requests whose .then write the same state; the slower one wins, not the newer one. Also: a response arriving after the user navigated away or changed the filter
Stale closuresetCount(count + 1) twice in one handler, or a callback memoized with old dependencies; use functional updates
Effect interferenceThe handler sets a value, an effect watching it resets or overwrites it
Missing transition"Save" validates but never calls the API; "Delete" sets a flag nothing reads; the endpoint it calls was removed
Dead pathThe real work sits behind a condition that is always false at that moment
Optimistic without rollbackThe UI updates before the request, and a failure leaves it showing a state the server does not have
Double submitThe control stays enabled during the request, so two clicks create two records

Phase 5: Report

For each finding:

CLICK-PATH-001  [HIGH]  "New email" in ComposeButton.tsx:42
  Pattern: sequential undo
  Trace:   setComposeMode(true) → selectThread(null) resets composeMode
  Expected: compose panel opens   Actual: nothing happens
  Fix: call selectThread(null) first, or stop selectThread from resetting state it does not own

Severity: CRITICAL loses or corrupts data, HIGH the control does not do what it says, MEDIUM it works with a wrong intermediate state or a race that is rare, LOW cosmetic. Where a test runner exists, propose a component or end-to-end test per finding that clicks the control and asserts the final state (/playwright-pro for web).

VerdictWhen
PASSNo HIGH or CRITICAL findings
CONCERNSMEDIUM findings only
FAILAny HIGH or CRITICAL finding

Protocol

  • Read-only: this skill reports; fixes go through the normal workflow after the user picks them.
  • Confirm a suspected bug by running the flow (dev server plus Playwright, or a component test) before reporting it as HIGH or CRITICAL; mark unconfirmed ones as such.

Next steps

  • /playwright-pro to turn findings into regression tests.
  • /ui-polish once the controls work.

レビュー

まだレビューはありません。使ってみた感想をお寄せください。

コメント

ログインなしで書き込めます。使ってみた感想、質問、動かなかった環境などを気軽にどうぞ。

まだコメントはありません。最初のコメントを書いてみませんか。

送信するとすぐに公開されます。メールアドレスや電話番号などの個人情報は書かないでください。URL は 2 つまでです。

0 / 1000 文字

このフォームは reCAPTCHA で保護されており、Google のプライバシーポリシーと利用規約が適用されます。

同じリポジトリのスキル

Plan, design, and implement A/B tests and experiments with statistical rigor. Covers hypothesis frameworks, sample sizing, metrics, and result analysis.

日本語の概要は準備中です。原文の説明を表示しています。

SebastianLuser/claude-code-arcane32026年10月27日 更新

Web/mobile accessibility decision guide: WCAG 2.2 AA, ARIA, keyboard nav, focus management, contrast, testing. Use for: a11y, accessibility, wcag, aria, screen reader, keyboard, contrast.

日本語の概要は準備中です。原文の説明を表示しています。

SebastianLuser/claude-code-arcane32026年10月27日 更新

Generate, iterate, and scale ad creative for paid advertising across Google, Meta, LinkedIn, and X. Covers platform specs, creative frameworks, and quality validation.

日本語の概要は準備中です。原文の説明を表示しています。

SebastianLuser/claude-code-arcane32026年10月27日 更新

Musica interactiva para juegos: layering vertical, re-secuenciacion horizontal, stingers, reglas de transicion con sync points, y mapeo de estados de gameplay a musica. Usar para: musica adaptativa, sistema de musica dinamica, transiciones musicales, combat music.

日本語の概要は準備中です。原文の説明を表示しています。

SebastianLuser/claude-code-arcane32026年10月27日 更新

Design multi-agent systems, create agent architectures, define communication patterns, and build autonomous agent workflows with structured evaluation frameworks.

日本語の概要は準備中です。原文の説明を表示しています。

SebastianLuser/claude-code-arcane32026年10月27日 更新

Inter-agent communication protocol for C-suite agent teams. Defines invocation syntax, loop prevention, isolation rules, response formats, and quality loops.

日本語の概要は準備中です。原文の説明を表示しています。

SebastianLuser/claude-code-arcane32026年10月27日 更新

SebastianLuser のスキルをすべて見る

このスキルの問題を報告する