Add pddl-visualizer plugin (pure skill) + worked example#58
Draft
omereliy wants to merge 3 commits into
Draft
Conversation
Introduce a fifth marketplace plugin, pddl-visualizer, that turns a PDDL domain + problem + plan into a single self-contained, animated HTML file. Distilled from the planning-visualizer university project (a React/Node/ Python web app) down to its one novel idea — LLM-generated, domain-specific visualizers — re-implemented as a Tier-1 pure skill, mirroring pddl-author: - No MCP server, no Python deps, no build step. Output is one offline HTML file (inline SVG + JS), no server/CDN/network. - Reuses sibling plugins as soft dependencies: pddl-parser get_trajectory for ground-truth states (never hand-simulated) and pddl-solver to obtain a plan when the user has none. No cross-plugin imports. - Generic graph mode renders any domain; optional themed mode for familiar ones (blocksworld, logistics, gripper). Registers the plugin in both marketplace catalogs (metadata 1.5.0 -> 1.6.0) and lists it in the root CLAUDE.md. Static checks pass. https://claude.ai/code/session_01Q3Gyj9LRouEoSzGzfBy6c4
Add a self-contained demo of the pddl-visualizing skill's output: a tiny logistics instance (domain/problem/plan) and the generated HTML. The per-step states were produced by pddl-parser's get_trajectory (unified-planning backend), not hand-written, matching the skill's ground-truth rule. logistics-plan.html opens offline in any browser: inline SVG + JS, prev/play/next controls, per-step fact diff. The examples README documents provenance and how to regenerate. https://claude.ai/code/session_01Q3Gyj9LRouEoSzGzfBy6c4
…afe embedding - Relabel the worked example as themed mode; note generic mode is the default - Pin parser='unified-planning' in the regenerate snippet for reproducible provenance - Document that the boolean-only frame model does not render numeric fluent values - Add output-spec rule: embed identifiers as text, never via innerHTML
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
Adds a fifth marketplace plugin,
pddl-visualizer— a Tier‑1 pure skill (no MCP server, no Python deps) that turns a PDDL domain + problem + plan into a single self-contained, animated HTML file that opens offline in any browser.This is a clean-room adaptation of the
planning-visualizeruniversity project. That project is a full web app (React + Node/Express + tRPC, Python/Fast Downward, runtime-compiled TypeScript renderers). We keep only its one novel idea — LLM-generated, domain-specific visualizers — and re-express it within this marketplace's model. No upstream code is reused.Design (why a pure skill)
pddl-parserget_trajectory→ ground-truth state at each step (the skill never hand-simulates state).pddl-solverclassic_planner/numeric_planner→ obtain a plan when the user has none.pddl-authorin structure and conventions.Worked example
plugins/pddl-visualizer/examples/contains a tiny logistics instance and the generatedlogistics-plan.html. Its per-step states were produced bypddl-parser'sget_trajectory(unified-planningbackend, 4 steps) — not hand-written — and the README documents how to regenerate.Correctness note
While wiring the skill I verified the real
get_trajectorycontract: it assumes the plan is valid and returns no per-step verdict. The skill reflects this — an invalid plan makes the tool error, at which point it stops and defers topddl-validatorrather than fabricating frames.Footprint
plugins/pddl-visualizer/{.claude-plugin/plugin.json, CLAUDE.md, skills/pddl-visualizing/SKILL.md}+examples/metadata 1.5.0 → 1.6.0), rootCLAUDE.mdlisting.mcp.json/.claude/settings.json/tests/Verification
tests/static_checks.py→ all checks passnode --checkcleansimplifieragent; flagged items (unusedReadperm, missing tool-signatures section, failure-handling framing) all addressed.No license was reused from the upstream repo (it ships none); this is an independent implementation of the concept.
https://claude.ai/code/session_01Q3Gyj9LRouEoSzGzfBy6c4
Generated by Claude Code