figure-helper — independently scanned and version-tracked by SaferSkills.
SaferSkills independently audited figure-helper (Agent Skill) and scored it 100/100 (green). The audit ran 55 deterministic rules across Security, Supply Chain, Maintenance, Transparency, and Community; it found 0 high-severity and 0 lower-severity findings. The full rule-by-rule trace and per-finding evidence are below. Free, methodology-open.
Findings & checks · 0 flagged
Every scanned point with the score it earned and what moved between them.
First recorded scan — no prior version to compare against.
The primary manifest — the file an agent reads to learn what this artifact does.
\usepackage{tikz}
\usetikzlibrary{arrows.meta, positioning, calc, shapes.geometric, decorations.pathreplacing, fit, backgrounds}
\usepackage{pgfplots}
\pgfplotsset{compat=newest} % or compat=1.18 to pin
\usepgfplotslibrary{groupplots, fillbetween, statistics, dateplot}
% For caching long compiles:
% \usetikzlibrary{external}
% \tikzexternalize[prefix=tikz-cache/]\pgfplotsset{compat=newest} is required — without it, every minor pgfplots update can shift output. Pin to a specific version (compat=1.18) when reproducibility matters.
Sources: https://ctan.org/pkg/pgfplots, https://tikz.dev/pgfplots.
\begin{tikzpicture}[
node distance=12mm,
block/.style={rectangle, draw, rounded corners, minimum width=22mm, minimum height=8mm, align=center},
arrow/.style={-{Latex[length=2mm]}, thick}
]
\node[block] (in) {Input};
\node[block, right=of in] (proc) {Process};
\node[block, right=of proc] (out) {Output};
\draw[arrow] (in) -- (proc);
\draw[arrow] (proc) -- (out);
\end{tikzpicture}For more nodes, swap right=of for below=of, above=of, etc. (from positioning lib).
\begin{tikzpicture}
\begin{axis}[
width=0.8\linewidth, height=6cm,
xlabel={Epoch}, ylabel={Loss},
xmin=1, xmax=10,
grid=major, grid style={dashed,gray!30},
legend pos=north east,
legend cell align=left,
]
\addplot[thick, blue, mark=*] table {
1 0.95
2 0.62
3 0.41
4 0.28
5 0.21
6 0.18
7 0.16
8 0.15
9 0.14
10 0.13
};
\addlegendentry{train}
\addplot[thick, red, mark=square*] table {
1 1.10
2 0.78
3 0.55
4 0.40
5 0.30
6 0.26
7 0.24
8 0.23
9 0.22
10 0.22
};
\addlegendentry{val}
\end{axis}
\end{tikzpicture}Mark options: * (filled circle), o (open circle), square*, triangle*, diamond*, +, x, star, none.
\begin{tikzpicture}
\begin{axis}[
ybar, ymin=0,
width=0.8\linewidth, height=6cm,
xlabel={Method}, ylabel={Accuracy (\%)},
symbolic x coords={Baseline, Method A, Method B, Method C},
xtick=data,
nodes near coords,
nodes near coords align={vertical},
enlarge x limits=0.15,
]
\addplot coordinates {
(Baseline, 71.2) (Method A, 78.9) (Method B, 84.1) (Method C, 86.4)
};
\end{axis}
\end{tikzpicture}For grouped bars: \addplot more series; pgfplots handles offset.
% Data in data.csv:
% epoch,train,val
% 1,0.95,1.10
% ...
\begin{tikzpicture}
\begin{axis}[xlabel={Epoch}, ylabel={Loss}, legend pos=north east]
\addplot table[x=epoch, y=train, col sep=comma] {data.csv}; \addlegendentry{train}
\addplot table[x=epoch, y=val, col sep=comma] {data.csv}; \addlegendentry{val}
\end{axis}
\end{tikzpicture}\begin{tikzpicture}[
node distance=18mm, on grid, auto,
state/.style={circle, draw, minimum size=9mm},
every edge/.append style={-{Latex[length=2mm]}}
]
\node[state, initial] (q0) {$q_0$};
\node[state, right=of q0] (q1) {$q_1$};
\node[state, accepting, right=of q1] (q2) {$q_2$};
\path[->]
(q0) edge node {a} (q1)
(q1) edge node {b} (q2)
(q1) edge[loop above] node {c} (q1);
\end{tikzpicture}Required library: \usetikzlibrary{automata}.
\begin{tikzpicture}
\begin{axis}[
domain=-3:3, samples=200,
xlabel={$x$}, ylabel={$f(x)$},
axis lines=middle, grid=major,
]
\addplot[thick, blue] {sin(deg(x))}; \addlegendentry{$\sin x$}
\addplot[thick, red] {cos(deg(x))}; \addlegendentry{$\cos x$}
\end{axis}
\end{tikzpicture}Note PGFPlots uses degrees by default — wrap radians input as sin(deg(x)).
\usetikzlibrary{external}
\tikzexternalize[prefix=tikz-cache/]Each TikZ figure becomes a separate compile, cached as a PDF. First build is slow; subsequent builds skip unchanged figures. Useful when a thesis has 30+ TikZ figures.
\documentclass[tikz, border=4pt]{standalone}
\usepackage{tikz}
\begin{document}
\begin{tikzpicture}
\node[draw] {Just this figure};
\end{tikzpicture}
\end{document}Useful when iterating on a single figure without recompiling the whole paper.
\pgfplotsset{compat=newest} → silent layout drift across versions.pgfplots with siunitx — load siunitx first.\includegraphics.$...$: xlabel={$\theta$ (rad)}, not xlabel={\theta (rad)}.For non-trivial TikZ libraries or pgfplots options, delegate to /academic-latex:docs-lookup. The pgfplots manual is dense (https://pgfplots.sourceforge.net/pgfplots.pdf) and has the canonical answer.
2026-05-09 — pgfplots manual; TikZ documentation at https://tikz.dev/.
~30 seconds. Free. No account. Every finding cites a rule and a line of evidence.