Skip to content

Add pddl-visualizer plugin (pure skill) + worked example#58

Draft
omereliy wants to merge 3 commits into
mainfrom
claude/planning-visualizer-review-uc2p1h
Draft

Add pddl-visualizer plugin (pure skill) + worked example#58
omereliy wants to merge 3 commits into
mainfrom
claude/planning-visualizer-review-uc2p1h

Conversation

@omereliy

Copy link
Copy Markdown
Collaborator

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-visualizer university 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)

  • No backend, no server, no build. The agent generates the HTML directly; output is one offline file (inline SVG + JS). This is the deliberate simplification of the source app's multi-service stack.
  • Reuses sibling plugins as soft dependencies, no cross-plugin imports:
    • pddl-parser get_trajectory → ground-truth state at each step (the skill never hand-simulates state).
    • pddl-solver classic_planner / numeric_planner → obtain a plan when the user has none.
  • Generic graph mode renders any domain (objects → nodes, binary predicates → edges, unary → badges, per-step fact diff); optional themed mode for familiar domains (blocksworld, logistics, gripper).
  • Mirrors the existing pure-skill plugin pddl-author in structure and conventions.

Worked example

plugins/pddl-visualizer/examples/ contains a tiny logistics instance and the generated logistics-plan.html. Its per-step states were produced by pddl-parser's get_trajectory (unified-planning backend, 4 steps) — not hand-written — and the README documents how to regenerate.

Correctness note

While wiring the skill I verified the real get_trajectory contract: 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 to pddl-validator rather than fabricating frames.

Footprint

  • New: plugins/pddl-visualizer/{.claude-plugin/plugin.json, CLAUDE.md, skills/pddl-visualizing/SKILL.md} + examples/
  • Edited: both marketplace catalogs (entry + metadata 1.5.0 → 1.6.0), root CLAUDE.md listing
  • Skills-only plugin → correctly omits .mcp.json / .claude/settings.json / tests/

Verification

  • tests/static_checks.pyall checks pass
  • Embedded JS in the example → node --check clean
  • Reviewed by the repo's simplifier agent; flagged items (unused Read perm, 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

claude and others added 3 commits June 14, 2026 16:05
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
@omereliy omereliy marked this pull request as draft June 15, 2026 07:23
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants