| name | setup-tooling |
| description | Install or verify TOON ecosystem tooling — the JS reference CLI (@toon-format/toon), Python implementations (xaviviro/python-toon, ScrapeGraphAI/toonify), the Java port (toon-format/toon-java), and adjacent JSON libraries like jdereg/json-io. Picks the right tool for the user's runtime and records what's installed in plugin config. |
Setup TOON Tooling
Bootstrap the local environment with one or more TOON implementations so other skills in this plugin (and the user's own scripts) can call them.
Registered implementations
Inputs
Ask the user (or accept from arguments) which targets to set up. Sensible default: just install the JS CLI on demand via npx, no global state. Options:
--js — confirm Node available; cache the package via npx -y @toon-format/toon --version.
--python — install python-toon (and optionally toonify) into the user's preferred Python env.
--java — fetch the latest toon-java JAR (and optionally json-io) into the plugin's tooling dir.
--dotnet — add ToonSharp to a .NET project via dotnet add package (or fetch as a tool — depends on how the upstream ships).
--php — install helgesverre/toon-php via Composer; for Laravel projects, also pull mischasigtermans/laravel-toon and register the service provider.
--rust — add toon-rs to a Rust project via cargo add toon (confirm crate name from the repo before running) or install adjacent CLIs like error-toon via cargo install.
--all — set up everything available for runtimes detected on this machine.
Vidscriber is an application, not a library — set it up only if the user is doing video-transcript work; otherwise skip.
Workflow
JS (default)
node --version || { echo "Node not found — install it first"; exit 1; }
npx -y @toon-format/toon --version
That's it — npx will cache it. Suggest npm i -g @toon-format/toon only if the user explicitly asks for a persistent CLI.
Python
Ask the user which environment manager they prefer (uv, pipx, system pip, project venv). Default for one-off CLI use: pipx.
pipx install python-toon
python-toon --version
pipx install toonify
For project-local use, install into the project's venv with uv add / pip install instead of pipx.
Java
Tooling lives under the plugin data dir to avoid polluting ~/.m2 or the project:
TOOL_DIR="${CLAUDE_USER_DATA:-${XDG_DATA_HOME:-$HOME/.local/share}/claude-plugins}/get-toony/tooling/jvm"
mkdir -p "$TOOL_DIR"
Fetch the latest release JAR for toon-format/toon-java (and jdereg/json-io if requested) via gh release download or curl against the GitHub releases API. Don't guess version numbers — query the releases endpoint:
gh release list --repo toon-format/toon-java --limit 1
gh release download --repo toon-format/toon-java --pattern '*.jar' --dir "$TOOL_DIR"
Verify with java -jar <jar> --help (or whatever the project's invocation is — check the repo README first).
Record what's installed
After setup, write a small inventory so other skills can pick the right backend without re-detecting every time:
${CLAUDE_USER_DATA:-${XDG_DATA_HOME:-$HOME/.local/share}/claude-plugins}/get-toony/config.json
Schema:
{
"backends": {
"js": {"available": true, "version": "x.y.z", "invocation": "npx -y @toon-format/toon"},
"python": {"available": true, "version": "x.y.z", "invocation": "python-toon"},
"toonify": {"available": false},
"java": {"available": true, "version": "x.y.z", "jar_path"
Other skills (json-to-toon, csv-to-toon, batch-to-toon) should read default_backend and fall back gracefully if their preferred backend isn't installed.
Verification
Run a tiny round-trip on each installed backend with a fixture:
{"hikes":[{"id":1,"name":"Blue Lake"},{"id":2,"name":"Ridge"}]}
Encode → decode → compare. If any backend's round-trip differs from the source, mark it available: false in config.json and tell the user which one failed.