From gateflow
Renders GateFlow codebase maps as interactive terminal ASCII/Unicode diagrams: module hierarchies, FSM states, detail cards, and overview dashboard with stats/health. Use after /gf-map.
npx claudepluginhub codejunkie99/gateflow-plugin --plugin gateflowThis skill is limited to using the following tools:
Renders `.gateflow/map/` data as interactive ASCII/Unicode diagrams in the terminal.
Generates design tokens/docs from CSS/Tailwind/styled-components codebases, audits visual consistency across 10 dimensions, detects AI slop in UI.
Records polished WebM UI demo videos of web apps using Playwright with cursor overlay, natural pacing, and three-phase scripting. Activates for demo, walkthrough, screen recording, or tutorial requests.
Delivers idiomatic Kotlin patterns for null safety, immutability, sealed classes, coroutines, Flows, extensions, DSL builders, and Gradle DSL. Use when writing, reviewing, refactoring, or designing Kotlin code.
Renders .gateflow/map/ data as interactive ASCII/Unicode diagrams in the terminal.
Check for codebase map:
ls .gateflow/map/CODEBASE.md 2>/dev/null
/gf-map first to generate one."When invoked, render the Overview Dashboard and present the navigation menu.
If invoked with an argument (e.g., /gf-viz uart_tx), jump directly to the Module Detail Card for that module.
Data sources: CODEBASE.md (stats, module index), hierarchy.md (tree), fsm.md (FSM list), clock-domains.md (clocks/CDC)
Read these files, extract the data, and render:
╔══ CODEBASE: <project_name> ═══════════════════════════════╗
║ ║
║ ● N modules ● N packages ● N FSMs ● N interfaces ║
║ ● N clocks ● N CDC ● N ports ● N warnings ║
║ ║
╠══ HIERARCHY (compact) ════════════════════════════════════╣
║ ║
║ ◆ <top> ──┬── <child1> ──┬── <grandchild1> ║
║ │ └── <grandchild2> ║
║ └── <child2> ── <grandchild3> ║
║ ║
╠══ FSMs ═══════════════════════════════════════════════════╣
║ ↻ <fsm_name> (<module>) N states: S1→S2→S3→S4 ║
║ ↻ <fsm_name> (<module>) N states: S1→S2→S3 ║
║ ║
╠══ HEALTH ═════════════════════════════════════════════════╣
║ <✓ or ⚠> lint status <✓ or ⚠> undriven <✓ or ⚠> CDC ║
║ ║
╠═══════════════════════════════════════════════════════════╣
║ [1] Hierarchy [2] FSMs [3] Module detail ║
║ Or ask anything: "show uart_tx", "trace data path" ║
╚═══════════════════════════════════════════════════════════╝
Rules:
Data sources: hierarchy.md, modules/*.md
══ MODULE HIERARCHY ════════════════════════════════════════
◆ <top_module> TOP
├── ■ <inst> : <module> [PARAM=VAL] MID
│ ├── ■ <inst> : <module> MID
│ │ ├── □ <inst> : <module> LEAF
│ │ └── □ <inst> : <module> LEAF
│ └── □ <inst> : <module> [W=32, D=16] LEAF
└── ■ <inst> : <module> MID
└── □ <inst> : <module> LEAF
── STATS ──────────────────────────────────────────────
Total: N modules │ Max depth: N │ Leaf count: N
── INSTANCE TABLE ─────────────────────────────────────
┃ Parent │ Instance │ Module │ Params ┃
┃ ... │ ... │ ... │ ... ┃
═══════════════════════════════════════════════════════════
[H] Home [2] FSMs [3] Module detail: <name>
Or: "show <module>", "which modules use <module>?"
Module type badges:
◆ TOP - bold, top-level module (never instantiated by others)■ MID - standard weight, has children□ LEAF - lighter weight, no childrenDepth cues: Deeper modules rendered with lighter visual weight. Top pops, leaves fade.
Behaviors:
[PARAM=VAL]Data sources: fsm.md, per-module pages
When multiple FSMs exist, show picker first:
══ STATE MACHINES ══════════════════════════════════════════
[1] ↻ <fsm_name> (<module>) N states
[2] ↻ <fsm_name> (<module>) N states
[3] ↻ <fsm_name> (<module>) N states
Pick a number, or: "show <fsm_name>"
Single FSM rendering:
══ FSM: <fsm_name> ═════════════════════════════════════════
Module: <module> │ Encoding: N-bit │ Reset: → <reset_state>
<condition>
┌──────┐ ─────────────► ┌───────┐
│ │ │ │
│ S1 │ │ S2 │
│ ◉ │ │ │
└──────┘ └───┬───┘
▲ │ <condition>
│ ▼
┌──────┐ ┌───────┐
│ │ ◄─────────── │ │──┐
│ S4 │ <condition> │ S3 │ │ <self-loop cond>
│ │ │ │◄─┘
└──────┘ └───────┘
── TRANSITIONS ────────────────────────────────────────────
┃ From │ To │ Condition │ Output ┃
┃ S1 │ S2 │ ... │ ... ┃
┃ S2 │ S3 │ ... │ ... ┃
┃ ... │ ... │ ... │ ... ┃
── STATE DETAILS ──────────────────────────────────────────
◉ S1 Reset state. <description>
S2 <description>
S3 <description>
S4 <description>
═══════════════════════════════════════════════════════════
[H] Home [1] Hierarchy [3] Module: <parent_module>
Or: "show another FSM", "explain the S2→S3 transition"
Layout rules for FSM box diagrams:
◉──┐ / ◄─┘ back to same box──► with condition labelsBehaviors:
Data sources: modules/<module_name>.md (primary), hierarchy.md, fsm.md, signals.md
╔══════════════════════════════════════════════════════════╗
║ <module_name> <TYPE_BADGE> ║
║ <file_path>:<line_range> ║
╠══ PARAMETERS ════════════════════════════════════════════╣
║ ┃ Name │ Type │ Default │ Description ┃ ║
║ ┃ ... │ ... │ ... │ ... ┃ ║
╠══ PORTS ═════════════════════════════════════════════════╣
║ → <name> input <width> <description> ║
║ → <name> input <width> <description> ║
║ ← <name> output <width> <description> ║
║ ← <name> output <width> <description> ║
╠══ INTERNALS ═════════════════════════════════════════════╣
║ ║
║ Clock : <clock_name> (<domain info>) ║
║ Reset : <reset_name> (<type>) ║
║ FSM : ↻ <fsm_name> → <state_list> ║
║ Inst : <instance_count> (<list or "none (leaf)")> ║
║ ║
╠══ CONNECTIONS ═══════════════════════════════════════════╣
║ ║
║ Instantiated by: ║
║ ■ <parent_module> as <instance_name> ║
║ .<port>(<signal>) .<port>(<signal>) ║
║ .<port>(<signal>) .<port>(<signal>) ║
║ ║
╠══ HEALTH ════════════════════════════════════════════════╣
║ <✓ or ⚠> port connection status ║
║ <✓ or ⚠> lint status ║
║ <✓ or ⚠> assertion coverage ║
║ ║
╚══════════════════════════════════════════════════════════╝
[H] Home [1] Hierarchy [2] FSM: <fsm_name>
[↑] Parent: <parent_module>
Or: "show ports", "explain the handshake", "add assertions"
Port direction symbols:
→ inputs← outputs↔ bidirectional (inout)Type badges: TOP, MID, LEAF
Behaviors:
sv-verification agentApply these consistently across all views:
| Element | Symbol | Style |
|---|---|---|
| Top module | ◆ | Bold |
| Mid module | ■ | Standard |
| Leaf module | □ | Light |
| Input port | → | Green emphasis |
| Output port | ← | Yellow emphasis |
| Bidir port | ↔ | Cyan emphasis |
| FSM indicator | ↻ | Standard |
| Reset state | ◉ | Bold/highlighted |
| Clean/pass | ✓ | Green |
| Warning | ⚠ | Yellow/amber |
| Info/stat | ● | Standard |
| Transition | ──► | Standard |
Depth cues in hierarchy: Top-level bold, mid standard, leaf dimmed.
After every render, show a navigation footer with numbered options:
[H] Home - return to dashboard[1] [2] [3] - switch between views[↑] Parent - navigate up in hierarchy (detail card only)Always accept natural language alongside menus:
For queries that go beyond visualization:
sv-understanding agent via Task toolsv-verification agent via Task toolsv-refactor agent via Task toolWhen handing off, pass the current visualization context (which module, which view) so the agent has full context.
When used as a final step in gf-architect, render ONLY the Overview Dashboard (View 1) as a compact summary. Do not show the full interactive menu - just the dashboard with a note:
Run /gf-viz to explore interactively.
Extract from frontmatter:
total_files, total_tokens, commit, last_mappedExtract from Module Index table:
Extract from Warnings section:
Extract from Mermaid flowchart:
Extract from Instance Table:
Extract for each FSM:
Extract per module:
/gf-map first."