Skip to content

Add a discoverable Python skill library - #51

Draft
Jepson2k wants to merge 15 commits into
feat/named-setup-datafrom
feat/python-skill-library
Draft

Jepson2k wants to merge 15 commits into
feat/named-setup-datafrom
feat/python-skill-library

Conversation

@Jepson2k

@Jepson2k Jepson2k commented Sep 7, 2026 •

Copy link
Copy Markdown
Owner

Users can discover installed Python skills, configure their arguments, insert explicit calls, and run them through the normal program controls. The starter library includes retract, approach, named park, tool-axis alignment, and supported gripper open/close operations. Skills remain importable without starting the GUI.

Saved poses and setups become fixed values in inserted calls. Run once opens inspectable Python in a program tab; a successful run adds one semantic call to an active recording, while cancellation or failure leaves it unchanged. Gripper calls confirm tool selection before actuation. Plugin diagnostics and import-aware editor completions support extensions, and long forms scroll while keeping their action buttons visible.

Stacked on #50. Validation includes native preview, UI insertion/execution/recording, duplicate-click and cancellation checks, an async skill launched through FastMCP, PAROL6 simulated valve changes, and native PAR6 TCP/jaw observations. All six affected setup/skill checks passed after verifying mixed-axis transforms against native robot math. The broader 51-check editor/MCP/setup/I/O/browser suite also passed; CI is rerunning on the updated dependencies. The populated browser layout check passed on Raspberry Pi hardware WebGL. Lint and source type checks passed. Full CI remains the final verification across supported platforms.

Gripper completion confirms the command, not a sensed grasp. Approach uses normal collision-checked motion and does not search for a detour. Existing freedrive controls remain available.

Companion PRs: waldoctl #28, PAROL6 #42, PAR6 #68, Commander #51. These use the same feature branch for dependency matching in CI.

Skill forms use readable labels, a shared setup selector with optional overrides, two-column fields, and a collapsed Python preview. Run once reveals Program controls. Preview tool selection returns a valid completion index for generated gripper calls.

Screenshots — revised interface, PAROL6 and PAR6

Captured in Chromium on September 10 from the combined feature stack; shared panels may include later PRs. PAROL6 uses fake serial; PAR6 uses par6d --sim.

PAROL6 — populated Approach skill form with actions visible.

PAROL6 — populated Approach skill form with actions visible.

PAR6 — populated Approach skill form with actions visible.

PAR6 — populated Approach skill form with actions visible.

Jepson2k and others added 11 commits September 10, 2026 07:56
Run once switched the editor to the generated skill program and only
switched back on success, so a failed or stopped run left the skill program
active while the recording program was still recording and could not be
re-selected; the next recorded action landed in the skill program's text.

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
…clock

Three ways the Skills panel misreported what a user had to do. With no
setup saved it loaded the empty name and surfaced the store's name-format
complaint; with a setup that has no poses it resolved None and aborted the
form build half-way with an AttributeError. Both now say what to save or
teach.

Two plugins can each provide a skill whose trailing name is the same --
waldo.retract and acme.retract -- and the dropdown and the editor
completions showed two identical entries, so the user could not tell which
one they were inserting. Labels are qualified where they would collide.

Inserting a call is an action in the recording, so it stamps the action
clock like a captured pose does. Otherwise the next recorded action carried
the time the operator spent composing the call, and the program waited it
out on every run.

SKIP=ty: pre-existing DryRunRobotClient.skill_capabilities diagnostic.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
…hon-skill-library

# Conflicts:
#	waldo_commander/services/path_preview_client.py
Skills declare typed requirements checked against the backend's Robot, so
the library marks a skill unavailable by what that Robot reports, and a
gripper skill checks its tool at run time rather than having a tool
selection prepended to its call.

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01N8zt66KjkzgZLtQuSfJd9r
The panel's program opens a fresh client, and a client knows no tool until
it selects one, so a gripper skill run from the panel refused even with the
right gripper fitted. The run now binds the arm's current tool first;
inserted calls are unchanged.

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01N8zt66KjkzgZLtQuSfJd9r
select_tool is a system command: it answers 1, 0 or a negative code, never
a queue index, so waiting on that answer as a command index fails in the
preview and means nothing on the arm.

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01N8zt66KjkzgZLtQuSfJd9r

This branch has not been deployed

No deployments
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