Help us improve
Share bugs, ideas, or general feedback.
From flow
Traces execution paths, maps dependencies, follows data flows, and explores unfamiliar code systematically from entry points to build incremental understanding.
npx claudepluginhub cofin/flow --plugin flowHow this skill is triggered — by the user, by Claude, or both
Slash command
/flow:tracerThe summary Claude sees in its skill listing — used to decide when to auto-load this skill
Systematic code exploration that builds understanding incrementally by tracing execution paths and mapping dependencies, rather than randomly reading files. Start at a known entry point and follow connections outward, building a map as you go.
Traces feature, request, or data flows through codebase from entry points (API routes, UI handlers, jobs) to storage, documenting layers, transformations, side effects, and dependencies via graphs or grep.
Traces code execution paths, data flows, and call graphs via /sourceatlas:flow queries. Reveals boundaries, entry points, cycles for understanding features and implementations.
Investigates code by tracing execution paths, mapping data flow, and diagnosing root causes. Outputs an analysis report with architecture overview and findings.
Share bugs, ideas, or general feedback.
Systematic code exploration that builds understanding incrementally by tracing execution paths and mapping dependencies, rather than randomly reading files. Start at a known entry point and follow connections outward, building a map as you go.
What's the starting location? An API endpoint, a function call, a config file, a user action. Be specific — "the auth system" is too vague; POST /api/auth/login is an entry point.
Understand what it does. Note every outgoing call or dependency.
Pick the most relevant outgoing connection to follow. Don't try to trace everything at once — choose the branch most likely to answer the question.
Read the next file/function. Note what it calls. Add to the map. Repeat.
Maintain a running trace: A → B → C → D. Include file paths and line numbers.
What to record at each node:
When enough of the system is traced, describe the overall flow. Connect the nodes into a coherent narrative that answers the original question.
When to stop:
Pick the mode based on the question being asked:
| Mode | Question | Best for |
|---|---|---|
| Execution | "What happens when X is called?" | Request flows, feature behavior |
| Dependency | "What depends on X?" | Impact analysis, refactoring |
| Data | "How does data get from A to B?" | Data pipeline debugging |
For complex investigations, start with execution trace for the happy path, then dependency trace on key components, then data trace on critical structures. See references/trace-modes.md for detailed mode descriptions.
Before presenting the trace, verify:
Trace: "What happens when POST /api/users is called?"
| Node | File | Function | Calls | Data |
|---|---|---|---|---|
| 1 | src/routes/users.ts:14 | createUser | UserService.create() | req.body → {name, email} |
| 2 | src/services/user.ts:42 | create() | validate(), UserRepo.insert() | {name, email} → UserDTO |
| 3 | src/repos/user.ts:28 | insert() | db.query() | UserDTO → SQL INSERT |
| 4 | (leaf) | PostgreSQL | — | INSERT INTO users... |
Path: POST /api/users → createUser → UserService.create → UserRepo.insert → SQL INSERT.