openclaw_configs/workspace/skills/solveit-tools/SKILL.md
Read, edit, and execute SolveIt dialogs (notebooks) via CLI. Add code/note/prompt cells, run them, and inspect outputs.
npx skillsauth add algal/sparky solveitInstall this skill globally with one command. Works with Claude Code, Cursor, and Windsurf.
3 of 9 scanners reported clean
Some scanners were skipped, did not run, or reported a non-clean status. Review each row below.
Manipulate SolveIt dialogs (similar to Jupyter notebooks) via CLI. A dialog contains messages (cells) of type code, note (markdown), prompt (AI prompt/response), or raw.
Every command takes a dialog URL as its first argument and returns JSON to stdout.
uv run {baseDir}/solveit_tools.py <command> [args...]
uv run {baseDir}/solveit_tools.py read_dialog "<url>"
Returns:
{
"url": "...",
"name": "my-project/experiment",
"mode": "learning",
"messages": [
{"id": "_ea386899", "type": "note", "index": 0, "content": "# Title"},
{"id": "_f70704ce", "type": "code", "index": 1, "content": "1+1", "output": "2"},
{"id": "_b3796dd8", "type": "prompt", "index": 2, "content": "explain this", "output": "Sure..."}
]
}
Use id values to reference messages in other commands. The output field is omitted when empty.
# Append a code cell at the end (default)
uv run {baseDir}/solveit_tools.py add_message "<url>" "print('hello')"
# Add a note before a specific message
uv run {baseDir}/solveit_tools.py add_message "<url>" "# Section 2" --type note --placement before --ref-id "_f70704ce"
# Add a prompt after a specific message
uv run {baseDir}/solveit_tools.py add_message "<url>" "explain the error above" --type prompt --placement after --ref-id "_f70704ce"
| Flag | Values | Default | Notes |
|------|--------|---------|-------|
| --type | code, note, prompt, raw | code | |
| --placement | at_end, at_start, after, before | at_end | |
| --ref-id | message ID | — | Required when placement is after or before |
Returns the new message: {"id": "_abc123", "type": "code", "content": "print('hello')"}.
uv run {baseDir}/solveit_tools.py exec_message "<url>" "_f70704ce"
uv run {baseDir}/solveit_tools.py exec_message "<url>" "_f70704ce" --timeout 120
Executes the message and waits for the result (default timeout: 60s). Returns the message with its output:
{"id": "_f70704ce", "type": "code", "content": "1+1", "output": "2"}
uv run {baseDir}/solveit_tools.py update_message "<url>" "_f70704ce" --content "2+2"
uv run {baseDir}/solveit_tools.py update_message "<url>" "_f70704ce" --type note
Provide --content, --type, or both. Returns the updated message.
uv run {baseDir}/solveit_tools.py delete_message "<url>" "_ea386899"
Returns {"id": "_ea386899", "deleted": true}.
uv run {baseDir}/solveit_tools.py run_dialog "<url>"
uv run {baseDir}/solveit_tools.py run_dialog "<url>" --timeout 300
Runs all cells front-to-back using SolveIt's intelligent defaults: code cells are executed, prompt cells and cells with existing output are skipped. Default timeout: 120s.
Returns a summary:
{"executed": 3, "skipped": 5, "errors": 0}
Use read_dialog afterward to inspect the full results.
exec_message, or run everything with run_dialog| Type | Content | Output | Execution |
|------|---------|--------|-----------|
| code | Python source | Execution result | Runs in SolveIt kernel |
| note | Markdown text | — (never has output) | Not executable |
| prompt | Natural language prompt | AI-generated response | Sends to SolveIt AI |
| raw | Raw text/HTML | — | Not executable |
?, &, %)._ea386899 (underscore + 8 hex chars). Always use the exact ID from read_dialog.run_dialog, check results with read_dialog — the summary only shows counts.{"error": "..."}.tools
Create, read, and open SolveIt notebooks (.ipynb) using local wrappers.
documentation
Rotate one interest in INTERESTS.md using a random Wikipedia article.
tools
Capture and automate macOS UI with Peekaboo on the "arrow" node.
tools
Read-only Gmail access for OpenClaw (unread + search) via gogcli.