A Claude Code skill that teaches an agent to close the edit→build→run loop in WebObjects / ng-objects / Wonder projects by driving the Parslips Eclipse plugin's dev server and the running app's own dev endpoints (log, eval, runtime problems). (Parslips is the Eclipse plugin; Parsley is the template language it edits.)
With it, an agent editing files on disk can:
/refreshProject) — and get a build-error report instead of a false ok
when the edit didn't compile/validate)/status)/launch, /stop, /restart) — launch
refuses with a named reason (closed project, compile errors, already running)
instead of pretending to succeed, and waitForPort blocks until the app answers
or provably diedlaunch?open=true opens the project and its workspace dependencies
(pom-resolved, transitive), clean-builds them, launches and waits (or /openProject
to open a project + its dependencies without launching)/console — the Eclipse console over
HTTP, kept after the process dies) and read the running app's log
(…/App.woa/log) instead of asking you to paste either/problems) and hunt forgotten breakpoints
(/breakpoints, with a Skip All toggle)/elementApi) — instead of reading the element's Java source to work it out…/App.woa/eval)…/App.woa/problems)It exists because Eclipse doesn't notice edits made outside its own editor — so
without these hooks, an agent's disk edits silently do nothing. The dev server is
self-describing: GET http://localhost:9485/ returns a JSON index of every
endpoint, and the skill teaches the agent to trust that index over its own docs
(older plugin builds expose a smaller endpoint set; the skill degrades gracefully).
Clone, then symlink the skill folder into your personal skills directory:
git clone https://github.com/undur/parslips-dev-loop-skill.git
ln -s "$PWD/parslips-dev-loop-skill/parslips-dev-loop" ~/.claude/skills/parslips-dev-loop
(A symlink means git pull updates the skill in place. Or just cp -r the
parslips-dev-loop/ folder into ~/.claude/skills/ if you prefer a copy.)
Drop the parslips-dev-loop/ folder into a project's .claude/skills/ and commit
it; anyone (or any agent) working in that repo gets it automatically.
The skill drives the dev server with curl to localhost. To let an agent run the
loop without approving each call, add an allowlist to your settings
(~/.claude/settings.json for personal, or a project's .claude/settings.json).
See settings.snippet.json for a ready-to-merge block —
it allowlists curl to localhost:9485 (the dev server) and the local app port.
Adjust the app port to match yours.
Working in a project with .wo component bundles, <wo:…>/<webobject> template
tags, build.properties with project.base, WOComponent/NGComponent classes,
or wonder-slim/ERExtensions.
https://undur.github.io/parslips/repository/)log, eval, problems) are served by the framework
in dev mode — recent wonder-slim/ERExtensions or ng-objects. eval runs code in
the live JVM and is restricted to loopback clients. An older framework build serves
a smaller set (or just log); the editor-side endpoints (/validate,
/elementApi, …) come from the Parslips plugin and are independent of it.Full details — every endpoint, parameters, runtime differences, and setup — are in
parslips-dev-loop/references/endpoints.md.
MIT — see LICENSE.