← All skills
statechart
95 / 100 · Low risk
Fine to try.
By jsartisan/frontend-challenges (GitHub) · design · 90 stars · scanned at commit 630c44b
Draw how any system moves between states, such as a product flow, a protocol, or a service, as a Mermaid statechart from a TLA+ model. Each bug is a numbered path with blue borders to a state that breaks a rule. Use for /statechart, to show a bug as a path through states, or to turn an agreed chart into a TLA+ skeleton.
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.
Found in 17 places.
Show 14 more
- .claude/skills/statechart/scripts/statechart.mjs, line 3
import { spawn, spawnSync } from "node:child_process"; - .claude/skills/statechart/scripts/statechart.mjs, line 114
const r = spawnSync(process.execPath, [path.join(here, name), ...scriptArgs], { - .claude/skills/statechart/scripts/test/statechart.test.mjs, line 3
import { spawn, spawnSync } from "node:child_process"; - .claude/skills/statechart/scripts/test/statechart.test.mjs, line 61
const r = spawnSync(process.execPath, [join(at, script), ...args], { - .claude/skills/statechart/scripts/test/statechart.test.mjs, line 1005
const r = spawnSync(process.execPath, [join(scripts, "tlc-to-chart.mjs"), ...input], { - .claude/skills/statechart/scripts/test/statechart.test.mjs, line 1810
const r = spawnSync( - .claude/skills/statechart/scripts/test/statechart.test.mjs, line 2014
: spawnSync("mise", ["--version"]).error - .claude/skills/statechart/scripts/test/statechart.test.mjs, line 2815
spawnSync("fc-list", [pattern, "file"], { encoding: "utf8" }).stdout?.match(/^(.+): $/m)?.[1]; - .claude/skills/statechart/scripts/test/statechart.test.mjs, line 2885
const run = spawnSync( - .claude/skills/statechart/scripts/test/statechart.test.mjs, line 6033
if (spawnSync(unshare[0], [...unshare.slice(1), "true"]).status !== 0) return null; - .claude/skills/statechart/scripts/test/statechart.test.mjs, line 6037
const cc = spawnSync("cc", ["-shared", "-fPIC", "-o", so, join(dir, "hide.c"), "-ldl"]); - .claude/skills/statechart/scripts/test/statechart.test.mjs, line 6172
const cc = spawnSync("cc", ["-shared", "-fPIC", "-o", so, join(dir, "rename.c"), "-ldl"]); - .claude/skills/statechart/scripts/tlc-tools.mjs, line 1
import { spawnSync } from "node:child_process"; - .claude/skills/statechart/scripts/tlc-tools.mjs, line 26
const run = (...args) => spawnSync("mise", args, { cwd: empty, env, encoding: "utf8" });
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/jsartisan/frontend-challenges' "$d" && git -C "$d" checkout --quiet '630c44b299f1467e789d561da3785cfd99247ed0' -- '.claude/skills/statechart' && mkdir -p ~/.agents/skills && cp -R "$d"/'.claude/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 jsartisan/frontend-challenges shows the score of its lowest-scoring skill.

[](https://zalavijaysinh.github.io/skilltrust/repos/jsartisan/frontend-challenges/)
Score history
| Date | Version | Score |
|---|
| 2026-11-10 | 630c44b | 95 |