plugins/spec-plugin/skills/trace-flow/SKILL.md
Walk one value or action end-to-end across every layer/hop — go-to-definition by go-to-definition, or with a debugger breakpoint — and report the real state transitions and where the contract/shape diverges. The workhorse for architecture sketches and cross-layer debugging.
npx skillsauth add jaisonerick/spec-plugin trace-flowInstall 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.
Run this to follow one thing — a value, an event, a request — through every hop of the real code and report exactly what happens to it and where it breaks. This is the move that, done properly during architecture, eliminated fix cycles in past runs (an emit symbol silently tr("_",".")-converted before hitting a contract; a token field renamed mid-chain). Do it the way an engineer does at their desk: click go-to-definition through each call, or set a breakpoint and read the real stack — not by reading files and guessing.
This skill runs in an isolated forked Explore child and returns only its tight conclusion — so the caller's context stays clean.
find ~/.claude/plugins -type f -path '*spec-plugin/references/<lang>.md' 2>/dev/null | head -1
Read the matching card (ruby.md / typescript.md / python.md) for the exact navigate + execute + debugger commands.type, rendered response, another service's input).source_location); find-references to see who feeds/consumes a hop.tr/gsub/JSON.parse), serialization, defaulting, truncation. Silent conversions are where contracts break.For a big surface, use Bash (rg/find) to map candidate hops first, then trace the real path. Tool versions resolve via asdf automatically.
TRACE: <start> → <end>
PATH:
1. <file:line> <what happens to the value here>
2. <file:line> <transformation — e.g. "tr('_','.') → 'customer.kyc.updated'">
...
N. <sink> <final shape/value>
OBSERVED VIA: <go-to-def reading | REPL eval | debugger breakpoint> at the hops that needed it
DIVERGENCES: <every place real behavior differs from the contract/spec/types — or "none">
Trace and report; don't fix. Be precise about each transformation — a vague trace is worthless. If a hop can't be resolved statically, run it before reporting.
tools
Assess how the LATEST spec-plugin version is performing across every previous session that invoked it — aggregate run efficiency (thinking%, compactions, exploration-vs-skills, preload firing, fresh-per-story), process adherence, and recurring spec-quality issues — then propose concrete, evidence-backed improvements for the NEXT version (plugin skills/agents/hooks, and spec/process patterns). Read-only: proposes, never self-modifies. Not tied to a single run.
development
Confirm whether a code symbol (method/class/field/endpoint/flag) actually exists and return its REAL signature + definition location — or the nearest match. Uses LSP/introspection, never grep-spelunking. Cheap and fast.
testing
Bring a fresh worktree/checkout to a runnable state — verify base HEAD, copy gitignored files (.env), allocate per-agent DB/test env, install deps, run the smoke gate. Deterministic, mechanical. Reports a single ready/blocked verdict.
development
Find out how code ACTUALLY behaves by executing the real classes in a REPL — the real request/response shape, the real return value — without relying on a live staging environment. Beats writing a test for 'how does this behave?'.