{
  "schema_version": 1,
  "type": "skill",
  "slug": "adom-panels",
  "title": "Adom Panels",
  "brief": "Use when the user asks \"what panels are available\", wants to know about a specific panel's capabilities, or needs to control a panel beyond basic open/close (e.g.",
  "version": "1.0.0",
  "tags": [],
  "license": "MIT",
  "source_path": "SKILL.md",
  "readme": "# Adom Panel Catalog\n\nThis skill lists all available panels and links to panel-specific skills that provide dedicated APIs for controlling individual panels.\n\nFor **adding/removing tabs, resizing splits, querying the layout, and knowing which owner and repo you are in**, use the `adom-workspace-control` skill (`~/.claude/skills/adom/guides/adom-workspace-control.md`).\n\n## Web View Panel API\n\nThe Web View panel (`adom/a1b2c3d4-0031-4000-a000-000000000031`) supports these actions via `PATCH https://hydrogen.adom.inc/api/panels/webview/{owner}/{repo}`:\n\n| Action | Required Fields | Description |\n|--------|----------------|-------------|\n| `navigate` | `url` (string) | Load a URL in the iframe |\n| `refresh` | — | Reload the current page |\n| `setHeaderHidden` | `hidden` (boolean) | Show/hide the address bar |\n| `setProxyEnabled` | `enabled` (boolean) | Toggle proxy mode (navigation & scroll tracking) |\n\nExample: `curl -s -X PATCH -H \"X-Api-Key: $API_KEY\" -H \"Content-Type: application/json\" -d '{\"panelId\":\"<leaf-id>\",\"action\":\"navigate\",\"url\":\"https://example.com\"}' \"https://hydrogen.adom.inc/api/panels/webview/$OWNER/$REPO\"`\n\nAll actions return `204 No Content`. The `panelId` is the leaf node ID whose active tab is a Web View. Some sites block iframe embedding — proxy mode can help bypass `X-Frame-Options` restrictions.\n\n## Sandbox Panel API\n\nThe Sandbox panel (`adom/a1b2c3d4-5555-4000-a000-000000000050`) executes JavaScript in an isolated `<iframe sandbox=\"allow-scripts\">`. See `sandbox/SKILL.md` for full docs.\n\n| Action | Required Fields | Returns |\n|--------|----------------|---------|\n| `eval` | `code` (string) | `{ status: \"executed\", result? }` or `{ status: \"error\", error }` or `{ status: \"queued\" }` |\n| `reset` | — | `204` |\n| `setHeaderHidden` | `hidden` (boolean) | `204` |\n\n**Endpoint:** `PATCH https://hydrogen.adom.inc/api/panels/sandbox/{owner}/{repo}`\n\n**CLI:** `adom-cli hydrogen sandbox eval|reset|set-header`\n\n## Screenshot API (all panels)\n\nScreenshots are now workspace-level and work on **any panel type**, not just sandbox.\n\n**Endpoint:** `PATCH https://hydrogen.adom.inc/api/workspaces/editor/{owner}/{repo}/current/screenshot`\n\n| Scope | What it captures | Methods |\n|-------|-----------------|---------|\n| `panel` | A single panel | `element-capture` (default) or `html2canvas` (sandbox only) |\n| `workspace` | All panels side by side | `element-capture` only |\n| `screen` | Entire display | `element-capture` only |\n\n**CLI:**\n```bash\nadom-cli hydrogen screenshot panel --panel-id <leaf-id>          # active tab\nadom-cli hydrogen screenshot panel --tab-id <tab-id>             # specific tab (auto-finds pane)\nadom-cli hydrogen screenshot panel --panel-id <id> --tab-id <id> # explicit pane + tab\nadom-cli hydrogen screenshot workspace                           # all panels\nadom-cli hydrogen screenshot screen                              # entire display\n```\n\nUser must enable sharing via the monitor icon in the nav bar. On 504 timeout, the browser **automatically prompts the user** — tell them sharing was requested, retry after a few seconds. `html2canvas` works without sharing but only for sandbox panels.\n\n## Singleton Panels\n\nThese may only appear **once** in the entire workspace. Check the current layout before adding — if already present, tell the user rather than adding a duplicate.\n\n| Full ID | Name |\n|---------|------|\n| `adom/a1b2c3d4-1111-4000-a000-000000000001` | 3D Viewer |\n| `adom/a1b2c3d4-0012-4000-a000-000000000012` | Schematic Editor |\n\n## Full Panel Catalog\n\n### Development\n\n| Full ID | Name | Description |\n|---------|------|-------------|\n| `adom/a1b2c3d4-eeee-4000-a000-00000000000e` | Visual Studio Code | Embedded VS Code editor |\n| `adom/a1b2c3d4-0012-4000-a000-000000000012` | Schematic Editor | Circuit schematic editor *(singleton)* |\n| `adom/a1b2c3d4-0014-4000-a000-000000000014` | Script Runner | Execute automation scripts |\n\n### Control\n\n| Full ID | Name | Description |\n|---------|------|-------------|\n| `adom/a1b2c3d4-3333-4000-a000-000000000003` | Motor Control | XRP robot motor speed/direction |\n| `adom/a1b2c3d4-4444-4000-a000-000000000004` | LED Control | XRP robot LED color/brightness |\n| `adom/a1b2c3d4-5555-4000-a000-000000000005` | Servo Control | XRP robot servo angle |\n| `adom/a1b2c3d4-001b-4000-a000-00000000001b` | Drone Control | Drone flight control and telemetry |\n| `adom/a1b2c3d4-001c-4000-a000-00000000001c` | ESC Control | Electronic Speed Controller |\n| `adom/a1b2c3d4-0010-4000-a000-000000000010` | Lights Control | RGB/white LED strip with color wheel |\n| `adom/a1b2c3d4-0022-4000-a000-000000000022` | Workcell Power | Power supply voltage/current limits |\n| `adom/a1b2c3d4-0023-4000-a000-000000000023` | Basic Control Panel | GPIO pin modes and digital write |\n\n### Visualization\n\n| Full ID | Name | Description |\n|---------|------|-------------|\n| `adom/a1b2c3d4-1111-4000-a000-000000000001` | 3D Viewer | Workcell/robot 3D view *(singleton)* |\n| `adom/a1b2c3d4-001a-4000-a000-00000000001a` | Babylon OTB | Babylon.js 3D viewer with OTB support |\n| `adom/a1b2c3d4-6666-4000-a000-000000000006` | IMU Sensor | Accelerometer, gyroscope, orientation |\n| `adom/a1b2c3d4-8888-4000-a000-000000000008` | Time of Flight Sensor | ToF distance readings |\n| `adom/a1b2c3d4-9999-4000-a000-000000000009` | Ultrasonic Sensor | Ultrasonic distance / obstacle detection |\n| `adom/a1b2c3d4-aaaa-4000-a000-00000000000a` | Line Follower | Line following sensor array |\n| `adom/a1b2c3d4-0015-4000-a000-000000000015` | Temperature Graph | Real-time temperature graphing |\n| `adom/a1b2c3d4-0016-4000-a000-000000000016` | Chip Data | Microchip data monitoring |\n| `adom/a1b2c3d4-0017-4000-a000-000000000017` | Chip Statistics | Microchip performance metrics |\n| `adom/a1b2c3d4-0018-4000-a000-000000000018` | Oven Data | Oven temperature/control monitoring |\n| `adom/a1b2c3d4-0019-4000-a000-000000000019` | ToF Sensor | Time-of-Flight data visualization |\n| `adom/a1b2c3d4-001d-4000-a000-00000000001d` | Bosch Sensors | Bosch sensor suite monitoring |\n| `adom/a1b2c3d4-001e-4000-a000-00000000001e` | BMP Sensor | Bosch BMP pressure/temperature |\n| `adom/a1b2c3d4-0020-4000-a000-000000000020` | BMV Sensor | Bosch BMV sensor visualization |\n| `adom/a1b2c3d4-0021-4000-a000-000000000021` | UWB Sensor | Ultra-Wideband positioning |\n\n### Media\n\n| Full ID | Name | Description |\n|---------|------|-------------|\n| `adom/a1b2c3d4-ffff-4000-a000-00000000000f` | Live Stream | Live camera: static/free-moving or XY zoom |\n| `adom/a1b2c3d4-ffff-4000-a000-000000000100` | WebRTC Player | Single WebRTC video stream |\n| `adom/a1b2c3d4-2660-4a00-a000-000000000266` | XY Zoom Camera | Dual WebRTC streams with minimap |\n\n### Utility\n\n| Full ID | Name | Description |\n|---------|------|-------------|\n| `adom/a1b2c3d4-0011-4000-a000-000000000011` | System Log | Real-time system log with filtering |\n| `adom/a1b2c3d4-bbbb-4000-a000-00000000000b` | Robot Log | XRP robot console output |\n| `adom/a1b2c3d4-7777-4000-a000-000000000007` | Battery Charger | Battery charging status and power |\n| `adom/a1b2c3d4-cccc-4000-a000-00000000000c` | Curriculum | XRP robot educational content |\n| `adom/a1b2c3d4-0031-4000-a000-000000000031` | Web View | Embedded browser — load any URL. **Pass `initialState: { \"url\": \"...\" }` at creation time** to pre-load a URL instead of navigating after. |\n| `adom/a1b2c3d4-5555-4000-a000-000000000050` | Sandbox | Isolated JS execution environment — eval code, take screenshots, reset state. See `sandbox/SKILL.md`. |",
  "author": {
    "id": "695820315b5f1e4db2fcf602",
    "name": "Kyle Bergstedt",
    "email": "[email protected]"
  },
  "visibility": {
    "public": true
  },
  "hero": null,
  "sample_prompts": [],
  "discovery_triggers": [],
  "discovery_pitch": null,
  "metadata": {},
  "created_at": "2026-05-28T05:30:02.132Z",
  "updated_at": "2026-05-28T05:30:02.132Z",
  "sub_skills": [],
  "parent_app": null
}