path-solvelisted
Install: claude install-skill allsmog/kuzushi-security-plugin
# Path solve
Get past the guards that left a sink unreachable.
1. Run `node "${CLAUDE_PLUGIN_ROOT}/scripts/cmd/path-solve-prepare.mjs" --target "<repo root>"`
(optionally `--input '{"fingerprints":["<fp>"]}'` to target specific findings). If it reports
`no-candidates`, tell the user to run `/verify` first (it surfaces the `inconclusive` findings
worth solving) and stop.
2. Read the prep's `prepPath`. For **each** candidate, extract the path predicate between the source
and sink (`tree_sitter:node_at` parent chain + `tree_sitter:query` for branch conditions across
the functions on the path, using `graphContext`), then solve it: `concolic:z3_solve` for
numeric/string predicates, `concolic:crosshair` for Python, else reason the input out (LLM).
Decide `reachable` + a concrete `solvedInput`, or list the blocking guard in `unsolvedGuards`.
3. Write the `{ candidates: [...] }` bundle to the prep's `draftPath`, then run the `assembleCommand`
— it validates and attaches a `pathSolution` block onto each finding (no verdict change).
4. Report, per finding: guards extracted, backend used, reachable?, the solved input (or blocking
guard). Note `/verify` can turn a reachable solution into a confirmed trigger and `/fuzz` can seed
the corpus from it.
## When NOT to use
- Before `/verify` has produced `inconclusive` / needs-trace findings (nothing hard-to-reach) — unless
you pass explicit `fingerprints`.
- To render the exploitability verdict — that's `/ve