cd /news/ai-tools/flowchart-for-claude-code · home › topics › ai-tools › article
[ARTICLE · art-163017] src=github.com ↗ pub= topic=ai-tools verified=true sentiment=↑ positive

Flowchart for Claude Code

A local tool called fcc, at version 0.3.0, now generates a plain-language record after each Claude Code task that touches files, writing one Markdown file per task plus a JSON sidecar to docs/flow/ in the repository for the developer to commit alongside the code. Each record includes a headline, the reasoning behind the task, before-and-after behavior, a done/partial/missing checklist of requests, a verification list, and a runtime flowchart in domain language with added, changed and removed steps highlighted; every flowchart step is anchored to the functions that implement it, and links the call graph cannot support are drawn dashed and labeled "inferred." The tool was developed on macOS, is expected to work on Linux, is untested on Windows, and sends only changed-symbol diffs, changed file names and the originating conversation to the model through the existing Claude Code login.

read7 min views2 publishedNov 3, 2026
Flowchart for Claude Code
Image: Michielbdejong (auto-discovered)

Read less code, still know what changed. After every Claude Code task that touches files, fcc prints a link to a local page that explains the work in plain language, shows the behavior it changed, and keeps that explanation in your repository as the project's development history.

Early days: version 0.3.0, written for its author's daily use and developed on macOS. It should work on Linux; Windows is untested.

A headline, the why behind the task (goal, decisions, alternatives that were dropped), the behavior before and after, each thing you asked for marked done / partial / missing, and a short list of what to verify: unhandled errors, changes nobody asked for, files changed outside Claude's edit tools, missing tests. In the screenshot it caught that discount codes were implemented in the backend but never wired into the checkout UI.

The text follows the language you write in.

Each task also gets a flowchart of what happens at runtime, in domain language, with new, changed and removed steps highlighted. This is a real one, as GitHub renders it from the record fcc wrote:

flowchart TD
  s1(["Utente apre il checkout"])
  s2["Utente digita codice sconto"]:::added
  s3["Calcolo totale scontato"]:::added
  s4[("Mostra subtotale e totale scontato")]:::added
  s5["Utente clicca Paga"]
  s6["Invio ordine con codice sconto"]:::modified
  s7{"Ordine creato con successo?"}:::added
  s8(["Ordine completato"])
  s9(["Errore codice non valido mostrato"]):::added
  s1 --> s2
  s2 --> s3
  s3 --> s4
  s4 --> s5
  s5 --> s6
  s6 --> s7
  s7 -->|"successo"| s8
  s7 -->|"codice non valido"| s9
  classDef added fill:#e3f3e7,stroke:#2f8a4c,color:#1f1e1c
  classDef modified fill:#fbf0dc,stroke:#b7791f,color:#1f1e1c
  classDef removed fill:#fbe4e2,stroke:#c2413a,color:#1f1e1c,stroke-dasharray:5 3

Every step is anchored to the functions that implement it: click one in the page and you get their diff. A link the call graph cannot back is drawn dashed and labelled "inferred", so you always know what is grounded and what is the model talking.

Functions, methods and classes added, modified or removed, the calls between them, and their unchanged callers as grey context — grouped by file and package. One more click gives you the diff of a single symbol and a link that opens it in your editor.

Every task is also written to docs/flow/ in your repo. The History tab shows them as a timeline grouped by feature or by commit, tells you which tasks were committed, partly committed or discarded, and searches stories, decisions and file names.

One Markdown file per task (plus a JSON sidecar that fcc reads), which you commit together with the code it explains:

---
fcc: 1
task: "20260922-190815-6478"
date: "2026-09-22T17:08:15.759Z"
feature: "Codici sconto"
model: "sonnet"
---


## Why

Nel checkout, far vedere all'utente quanto sconto ottiene con il codice
inserito e informarlo chiaramente se il codice non è valido…

**Decisions**

- Mostrare sia il totale scontato che il subtotale originale nel checkout
- Gli errori di codice non valido vengono mostrati con role="alert" invece
  di fallire silenziosamente

## Asks

- ✓ Mostrare l'importo scontato nel checkout — Il componente calcola e mostra
  'Totale: X (invece di Y)' usando Cart.total() e Cart.subtotal()…

That "why" comes from the whole conversation that led to the task, not from the last message: after a long discussion that ends in "ok, go", the decisions you agreed on are still there.

Don't want one? /flow drop, or the Remove from repo button in the page. Don't want any? /flow private for a session, or point FCC_HISTORY_DIR at a gitignored directory.

fcc is a local tool with one outbound path: writing the story.

  • Sent to the model : the diffs of the changed symbols, the changed file names, and the conversation that led to the task. They go through the Claude Code login you already use (claude -p , with a minimal context), or through the Anthropic API if you pick that engine.
  • Never sent : the rest of your repository — and nothing at all leaves if you run/flow model off , which keeps the structure, the diffs and the history working without a model.
  • Never stored : what you type. The conversation is read from the Claude Code transcript, used to write the story, then dropped; it reaches neither the repo nor fcc's cache, and tasks are listed by their headline.
  • No telemetry , no account, no server of ours. The viewer listens on 127.0.0.1 only, behind a random per-run token, and shuts down when idle. Everything else stays in~/.claude/flow/ .

Requires Claude Code, git and Node ≥ 18. No npm install: the plugin ships its own bundle.

claude plugin marketplace add alexabbi/fcc
claude plugin install fcc@fcc

Pick the user scope so it is available everywhere, or local for one project. To try it without installing: claude --plugin-dir /path/to/fcc. Later: claude plugin update fcc@fcc, claude plugin uninstall fcc@fcc.

Installing it does not start it. fcc stays asleep until you turn it on in a project, and it says so once, the first time you work in a new one:

/flow on

From then on, in that project only, each task that changes files gets a story. If you would rather decide task by task, /flow mode manual keeps the snapshots (they are free and silent) but analyzes nothing and calls no model until you ask, with /flow last or the Explain this task button in the page. That way you choose after seeing the result, not before. /flow on project writes the choice into the repository instead, turning it on for everyone who has it. /flow off stops, /flow forget also deletes everything fcc kept about that project.

Command Effect
/flow on ·/flow off start or stop recording tasks in this project (add project to decide for everyone)
/flow mode manual capture tasks but explain them only when asked ( auto is the default)
/flow last explain the last task
/flow skip throw the last task away entirely
/flow forget stop recording and delete what fcc kept about this project
/flow open the history of the current project
/flow model haiku choose the model that writes the stories ( sonnet by default, oropus , aclaude-… id, oroff ); addproject for this repository only
/flow start "Discount codes" group the next tasks under a feature
/flow end stop grouping
/flow drop delete the last task's report so it is never committed
/flow private ·/flow public keep this session's tasks out of the repo, or put them back

The hooks add about 0.1 s per turn. The structure is ready in seconds and the story in about a minute, both in the background: Claude Code is never blocked. With the default Sonnet a task cost about $0.06 in our tests, charged to the Claude Code plan you already have. Haiku is cheaper, but in the same comparison it missed an unimplemented request and an unrequested change.

  • Symbol-level graphs are TypeScript and JavaScript only. Other languages still get the story, the behavior flow, the history and file-level diffs.
  • Calls made through dependency injection, events or dynamic dispatch are not linked, and only the root tsconfig is read.
  • A task is matched to commits on the current branch only: work committed on a branch that is not merged yet reads as "not committed".
  • Tasks from before you installed fcc are not reconstructed.
  • Outside a git repository fcc stays silent.

UserPromptSubmit snapshots the work tree as a git tree object (without touching your index), PostToolUse records which files Claude edited, and Stop snapshots again, then analyzes the two trees with ts-morph and asks the model for the story, validating every reference it makes against the graph. Tasks are matched to commits by content, so the link survives squash and rebase. docs/DESIGN.md walks through each step, maps the modules, and lists what fcc cannot do.

npm install
npm test          # fixture repos + end-to-end hook tests
npm run typecheck
npm run build     # bundles dist/ (commit it: plugins install without npm)

While changing fcc, load it in place with claude --plugin-dir /path/to/fcc (plus npm run build and /reload-plugins). An installed copy is a git clone of the marketplace source pinned to a version, so updating it means: commit and push, bump the version in .claude-plugin/plugin.json, then claude plugin marketplace update fcc && claude plugin update fcc@fcc.

Sources run directly on Node ≥ 22.18 (node bin/fcc.ts …); the bundle runs on Node ≥ 18. Environment variables, which override the config files: FCC_LLM (claude default, api, off), FCC_MODEL, FCC_HOME (state dir), FCC_HISTORY_DIR (default docs/flow), FCC_PORT, FCC_IDLE_MINUTES (viewer auto-shutdown, default 30), FCC_SYNC=1 (analyze inside the Stop hook), FCC_NO_SERVER=1.

Errors from hooks and background processes go to ~/.claude/flow/fcc.log; hooks never fail the Claude Code session.

MIT — see LICENSE.

── more in #ai-tools 4 stories · sorted by recency
── more on @fcc 3 stories trending now
sponsored brought to you by zahid.host 4,200+ EU-deployed projects
reading about agents? ship yours in a single git push.

Run your AI side-project on zahid.host

EU-based hosting, git-push deploys, automatic HTTPS, no cold starts. Free tier with a custom domain — perfect for shipping the agent you just read about.

$git push zahid main
→ Live at https://your-agent.zahid.host ✓
Get free account → Pricing
from €0/mo · no card required
LIVE [news/flowchart-for-claude…] indexed:0 read:7min 2026-11-03 · —