← All skills
statechart
95 / 100 · Low risk
Fine to try. Some of what it can do is expected: a coding skill usually runs build and test commands.
By backnotprop/pstack (GitHub) · coding · 4,166 stars · scanned at commit 9cd6939
Check a TLA+ model of a system that moves between states, such as a product flow, a protocol, or a service, and draw it as a Mermaid statechart. The report gives the shortest path to each state that breaks a rule. Use for /statechart, or to show a bug as a path through states.
Works with any agent that supports SKILL.md skills.
What this skill can do
Runs commands on your computer
The author does not mention this. Expected for a coding skill.
Found in 35 places.
Show 17 more
- skills/statechart/scripts/statechart.ts, line 52
const WINDOWS_JANITOR = `Promise.all([import("node:child_process"), import("node:fs")]).then(([cp, fs]) => { - skills/statechart/scripts/statechart.ts, line 55
cp.spawnSync("taskkill", ["/T", "/F", "/PID", pid], { stdio: "ignore", windowsHide: true }); - skills/statechart/scripts/test/cli.test.ts, line 2
import { spawn, spawnSync } from "node:child_process"; - skills/statechart/scripts/test/cli.test.ts, line 38
const r = spawnSync( - skills/statechart/scripts/test/cli.test.ts, line 109
const found = spawnSync("sh", ["-c", `command -v ${tool}`], { encoding: "utf8" }); - skills/statechart/scripts/test/cli.test.ts, line 401
const ps = spawnSync("ps", ["-o", "ppid=", "-p", read(pidFile)], { encoding: "utf8" }); - skills/statechart/scripts/test/cli.test.ts, line 486
import { spawn, spawnSync } from "node:child_process"; - skills/statechart/scripts/test/cli.test.ts, line 489
spawnSync("mkfifo", [dot]); - skills/statechart/scripts/test/cli.test.ts, line 490
const command = spawnSync("ps", ["-o", "ppid=", "-p", String(process.ppid)], { encoding: "utf8" }).stdout.trim(); - skills/statechart/scripts/test/cli.test.ts, line 684
`import childProcess from "node:child_process"; - skills/statechart/scripts/test/config-fuzz.test.ts, line 2
import { spawnSync } from "node:child_process"; - skills/statechart/scripts/test/config-fuzz.test.ts, line 159
const r = spawnSync( - skills/statechart/scripts/test/corpus.test.ts, line 2
import { spawnSync } from "node:child_process"; - skills/statechart/scripts/test/corpus.test.ts, line 23
const r = spawnSync( - skills/statechart/scripts/test/corpus.test.ts, line 63
const r = spawnSync( - skills/statechart/scripts/test/corpus.test.ts, line 82
const r = spawnSync( - skills/statechart/scripts/test/corpus.test.ts, line 121
const r = spawnSync(
and 15 more places
Install
Paste this into your terminal. It downloads exactly the version we scanned, not whatever is newest.
if [ -e ~/.agents/skills/'statechart' ] || [ -L ~/.agents/skills/'statechart' ]; then echo 'A skill folder named statechart already exists — not replacing it' >&2; false; else d=$(mktemp -d) && git clone --quiet --filter=blob:none --no-checkout 'https://github.com/backnotprop/pstack' "$d" && git -C "$d" checkout --quiet '9cd6939b766cb920f1c44970d7c7ee1ec28bd0d6' -- 'skills/statechart' && mkdir -p ~/.agents/skills && cp -R "$d"/'skills/statechart' ~/.agents/skills/'statechart' && rm -rf "$d"; fi
Codex reads ~/.agents/skills directly. For Claude Code, Cursor, Copilot, Gemini CLI, Antigravity or OpenCode, also link it. For Claude Code: ln -s ~/.agents/skills/'statechart' ~/.claude/skills/'statechart' (other agents: ~/.cursor/skills, ~/.copilot/skills, ~/.gemini/skills, ~/.gemini/config/skills, ~/.config/opencode/skills). Or install through the finder skill, which does both.
Badge for your README
The badge for backnotprop/pstack shows the score of its lowest-scoring skill.

[](https://zalavijaysinh.github.io/skilltrust/repos/backnotprop/pstack/)
Score history
| Date | Version | Score |
|---|
| 2026-11-14 | 9cd6939 | 95 |
| 2026-11-10 | 0854796 | 95 |
| 2026-11-08 | a6342de | 95 |
| 2026-11-07 | a6342de | 95 |