# Tikz Flowchart

> Creates professional TikZ flowcharts with a standardized style (Google Material-like colors, node shapes, and layout).

- Skill: `tools-only/tikz-flowchart` (Agent Skill, multi-file: 3 files)
- Install (CLI): `npx skillmds@latest add tools-only/tikz-flowchart`
- Raw SKILL.md: https://api.skillmd.com/api/skills/tools-only/tikz-flowchart/raw
- Safety review: pending
- Works with: Claude Code, Claude.ai, OpenAI Codex
- Category: Coding & Dev Tools
- Author: tools-only (https://skillmd.com/u/tools-only)
- Updated: 2026-09-09
- Page: https://skillmd.com/skills/tools-only/tikz-flowchart

---


# TikZ Flowchart Skill

This skill provides a standardized template/style for establishing professional technical diagrams using LaTeX TikZ. It is designed for creating flowcharts, architecture diagrams, and process flows.

## Usage

When asked to "create a flowchart" or "draw a diagram" in this project, use the template below as a starting point. Adjust styles (`dataNode`, `opNode`, etc.) as needed for the specific content.

## Style Guide

### Colors
The template uses a Google Material-like palette:
-   **Green (`greenFill`/`greenStroke`)**: Data, Inputs, Outputs, Tensors.
-   **Orange/Memory (`memFill`/`memStroke`)**: Memory, Weights, Checkpoints.
-   **Blue/Core (`coreFill`/`coreStroke`)**: Operations, Compute Kernels, Processes.
-   **Pink/Optimization (`optFill`/`optStroke`)**: Optimizations, Special Steps.
-   **Yellow/Process (`procFill`/`procStroke`)**: General Processing Steps.

### Standard Nodes
-   `dataNode`: Rectangles for data flow (green).
-   `memNode`: Cylinders for storage/weights (orange).
-   `opNode`: Rectangles for operations (blue).
-   `kernelBox`: Dashed containers for grouping internal kernel logic.
-   `group`: Dashed background containers for logical grouping of phases/stages.

## Template

Use this template as your base:

```latex
\documentclass[tikz,border=10pt]{standalone}
\usepackage{tikz}
\usepackage{amssymb}
\usetikzlibrary{shapes.geometric, arrows.meta, positioning, fit, backgrounds, calc, shadows.blur, decorations.pathreplacing}

% --- Color Definitions ---
\definecolor{greenFill}{HTML}{E8F5E9}
\definecolor{greenStroke}{HTML}{43A047}
\definecolor{memFill}{HTML}{FFF3E0}
\definecolor{memStroke}{HTML}{FFB74D}
\definecolor{coreFill}{HTML}{E1F5FE}
\definecolor{coreStroke}{HTML}{0277BD}
\definecolor{optFill}{HTML}{FCE4EC}
\definecolor{optStroke}{HTML}{E91E63}
\definecolor{procFill}{HTML}{FFF9C4}
\definecolor{procStroke}{HTML}{FBC02D}

\begin{document}

\begin{tikzpicture}[
    node distance=1.2cm and 1.8cm, % Vertical and Horizontal spacing
    font=\sffamily\footnotesize,
    >=Stealth,
    % --- Styles ---
    dataNode/.style={
        rectangle, rounded corners=3pt,
        draw=greenStroke, thick,
        fill=greenFill,
        minimum width=2.4cm, minimum height=1.2cm,
        align=center,
        drop shadow
    },
    memNode/.style={
        cylinder, cylinder uses custom fill,
        cylinder body fill=memFill, cylinder end fill=memFill!90!gray,
        shape border rotate=90,
        aspect=0.25,
        draw=memStroke, thick,
        minimum width=1.8cm, minimum height=1.3cm,
        align=center
    },
    opNode/.style={
        rectangle, rounded corners=3pt,
        draw=coreStroke, thick,
        fill=coreFill,
        minimum width=2.6cm, minimum height=1.2cm,
        align=center,
        drop shadow
    },
    kernelBox/.style={
        rectangle, rounded corners=8pt,
        draw=coreStroke, thick, dashed,
        fill=coreFill!20,
        inner sep=12pt,
        align=center
    },
    group/.style={
        draw=gray!30, dashed, rounded corners=8pt, inner sep=12pt, fill=gray!5
    },
    edgeLabel/.style={
        font=\scriptsize,
        text=black!80,
        align=center,
        inner sep=1pt
    }
]

    % --- Nodes ---
    % Example:
    % \node[dataNode] (Input) {Input Data};
    % \node[opNode, right=of Input] (Process) {Process};

    % --- Layout Containers (Optional) ---
    % \begin{scope}[on background layer]
    %    \node[group, fit=(Input)(Process)] (MainGroup) {};
    % \end{scope}

    % --- Connections ---
    % \draw[->, thick, color=gray!80] (Input) -- (Process);

\end{tikzpicture}
\end{document}
```

## Best Practices

1.  **Relative Positioning**: Use `right=of Node`, `below=of Node` for layout stability. Adjust distances via `node distance` in the `tikzpicture` options.
2.  **Grouping**: Use the `fit` library and `group` style to draw background boxes around related nodes. Always place these in a `\begin{scope}[on background layer]` block.
3.  **Orthogonal Edges**: Use `-|` and `|-` path operations for clean, orthogonal lines (e.g., `(A) -| (B)`).
4.  **Conciseness**: Keep node text short. Use `\\` for line breaks and `\scriptsize` for secondary details.

