Scaffold a new TikZ diagram from the snippet gallery with prevention rules pre-applied (explicit node dimensions, coordinate map, directional edge labels). Compiles standalone, invokes tikz-reviewer with citations from tikz-measurement.md, and loops on revisions until APPROVED.
npx skills add https://github.com/pedrohcgs/claude-code-my-workflow --skill new-diagram
Scaffold a diagram from templates/tikz-snippets/, check it against the prevention rules, compile standalone, run the reviewer with measurement citations, and loop until the diagram passes. Use this instead of writing TikZ from scratch; the snippets embed the invariants that tikz-prevention.md requires.
$0 (optional) — snippet name (without .tex). One of the filenames in templates/tikz-snippets/. If omitted, list the gallery and ask the user to pick.$1 (optional) — output path. Defaults to Figures/new_diagram.tex — ask the user if this target exists so we don't clobber.ls -1 templates/tikz-snippets/*.tex
Current gallery (see templates/tikz-snippets/README.md for descriptions):
dag-basic — 3-node causal DAG (X → Y with confounder U)dag-mediation — X → M → Y with direct pathdid-two-period — two-period difference-in-differencesevent-study — event-time coefficients with 95% CIstimeline — horizontal timeline with staggered eventsregression-scatter — scatter + OLS fit + confidence bandflowchart-3step — vertical flow with decision diamondsupply-demand — supply/demand with shifted demandIf $0 is not one of these, or is omitted, ask the user which to use.
SRC="templates/tikz-snippets/$0.tex"
DST="${1:-Figures/new_diagram.tex}"
# Confirm before overwriting
if [ -f "$DST" ]; then
echo "Output path already exists: $DST"
# Ask the user whether to overwrite. Do NOT clobber silently.
fi
mkdir -p "$(dirname "$DST")"
cp "$SRC" "$DST"
Ask the user what the diagram should show. Edit $DST with the Edit tool:
dag-node, flow-node, etc.) unless the meaning actually changes.scale=X to the tikzpicture options. Coordinates shrink, text does not — collisions follow. Allowed forms: scale=X, every node/.style={scale=X} or scale=X, transform shape. See tikz-prevention.md P3 for the full rule and tikz-visual-quality.md for the scale=1.1 convention.above, below, left, right, above left, etc.). midway alone is a path position, not a direction — P4 violation.Run the same shared Python checker /extract-tikz uses — this is the one tool that enforces both P3 and P4 consistently across the two skills:
python3 scripts/check-tikz-prevention.py "$DST"
0 → passed, continue.1 → violations (stderr reports line, rule, snippet). Fix $DST and re-run until zero.2 → usage error (missing file etc.).Do NOT re-implement the grep inline. The Python checker correctly handles multi-line \begin{tikzpicture}[...] options and multi-line \draw ... node {...} spans that a line-oriented grep cannot see.
All snippets are \documentclass[border=4pt]{standalone} so they compile without a Beamer frame and without Preambles/header.tex:
cd "$(dirname "$DST")"
xelatex -interaction=nonstopmode "$(basename "$DST")" > /tmp/tikz-compile.log 2>&1
Check exit code and *.pdf file size. If compile fails, read /tmp/tikz-compile.log and fix the .tex source.
Spawn the tikz-reviewer agent with Task (subagent_type=tikz-reviewer). Pass the .tex source and the compiled .pdf path. The reviewer is now required to cite the pass and formula from tikz-measurement.md for every CRITICAL/MAJOR finding — vague reports are rejected.
Loop:
APPROVED → go to Step 7.NEEDS REVISION or REJECTED → apply fixes to $DST, re-run Step 4 (prevention pre-check), re-compile (Step 5), re-invoke reviewer.Max 5 rounds. If after 5 rounds the reviewer is still reporting CRITICAL issues, surface the situation to the user — the snippet or the requested content may need redesign, not just tweaking.
If the user plans to use the diagram in Quarto slides (not just Beamer), convert the compiled PDF to SVG:
pdf2svg "${DST%.tex}.pdf" "${DST%.tex}.svg" 1
Snippet-based diagrams are single-page, so a single .svg with the same basename as .tex is correct here. This differs from /extract-tikz, which produces a multi-page PDF from a Figures/LectureN/extract_tikz.tex master and names outputs tikz_exact_00.svg, tikz_exact_01.svg, ... (0-based filenames over 1-indexed PDF pages). If you need multi-page output for slide-by-slide reveals, use /extract-tikz instead.
cd "$(dirname "$DST")"
rm -f *.aux *.log *.out *.synctex.gz
Leave the .pdf and .svg (if generated). They're what downstream tools use.
Print a summary:
.pdf size and page count.svg path if generated\input or \includegraphics the diagram in the target Beamer/Quarto fileWriting TikZ from scratch reliably produces collisions because the author cannot visually estimate where curves and labels will land. The snippets embed the invariants that tikz-prevention.md requires — coordinate maps, explicit node dimensions, directional edge labels — so the diagram passes the prevention pre-check by construction. You can always deviate from the snippet; the rules still apply.
.claude/rules/tikz-prevention.md — the P1–P6 authoring rules..claude/rules/tikz-measurement.md — the six-pass protocol with formulas the reviewer cites..claude/rules/tikz-visual-quality.md — general visual standards..claude/skills/extract-tikz/SKILL.md — for pulling TikZ out of an existing Beamer deck instead of creating new.templates/tikz-snippets/README.md — gallery inventory and adaptation guide.Comprehensive toolkit for creating, analyzing, and visualizing complex networks and graphs in Python. Use when working with network/graph data structures, analyzing relationships between entities, computing graph algorithms (shortest paths, centrality, clustering), detecting communities, generating synthetic networks, or visualizing network topologies. Applicable to social networks, biological networks, transportation systems, citation networks, and any domain involving pairwise relationships.
Interact with Zotero reference management libraries using the pyzotero Python client. Retrieve, create, update, and delete items, collections, tags, and attachments via the Zotero Web API v3. Use this skill when working with Zotero libraries programmatically, managing bibliographic references, exporting citations, searching library contents, uploading PDF attachments, or building research automation workflows that integrate with Zotero.
Comprehensive toolkit for creating, analyzing, and visualizing complex networks and graphs in Python. Use when working with network/graph data structures, analyzing relationships between entities, computing graph algorithms (shortest paths, centrality, clustering), detecting communities, generating synthetic networks, or visualizing network topologies. Applicable to social networks, biological networks, transportation systems, citation networks, and any domain involving pairwise relationships.
Create, analyze, and visualize complex networks and graphs in Python with NetworkX. Use when working with network/graph data structures, computing graph algorithms (shortest paths, centrality, clustering), detecting communities, generating synthetic networks (random, scale-free, small-world), reading/writing graph file formats, or drawing network topologies. Common applications include social, biological, transportation, and citation networks.
Use NeuroKit2 to build or audit reproducible research workflows for physiological time-series preprocessing, event/interval analysis, multimodal alignment, variability, and complexity. Trigger when code imports neurokit2 or needs its current APIs, schemas, and method-aware validation—not for diagnosis or device validation.
Interact with Zotero reference management libraries using the pyzotero Python client. Retrieve, create, update, and delete items, collections, tags, and attachments via the Zotero Web API v3. Use this skill when working with Zotero libraries programmatically, managing bibliographic references, exporting citations, searching library contents, uploading PDF attachments, or building research automation workflows that integrate with Zotero.
Comprehensive toolkit for creating, analyzing, and visualizing complex networks and graphs in Python. Use when working with network/graph data structures, analyzing relationships between entities, computing graph algorithms (shortest paths, centrality, clustering), detecting communities, generating synthetic networks, or visualizing network topologies. Applicable to social networks, biological networks, transportation systems, citation networks, and any domain involving pairwise relationships.
A practical, jargon-free guide to fp-ts functional programming - the 80/20 approach that gets results without the academic overhead. Use when writing TypeScript with fp-ts library.
Take pedrohcgs/new-diagram from the repository into ~/.claude/skills for personal
use, or into .claude/skills inside a project.
The agent identifies a skill by the name field in its header. Two skills with the
same name cannot sit side by side — one of them will be ignored.