Skip to content

Add SDK skills, Hubble agents, and correct the cloud-api reference#4

Open
heemanshoe wants to merge 4 commits into
mainfrom
feat/bringup-skills
Open

Add SDK skills, Hubble agents, and correct the cloud-api reference#4
heemanshoe wants to merge 4 commits into
mainfrom
feat/bringup-skills

Conversation

@heemanshoe

@heemanshoe heemanshoe commented Jul 10, 2026

Copy link
Copy Markdown

New skill plugins

Each SKILL.md is a lean router: when-to-use, prerequisites checklist, links to hosted docs, reference files for the heavy detail, and a definition-of-done. The skills cross-reference each other so an agent that lands on the wrong SDK gets routed.

  • hubble-device-sdk: firmware integration for BLE 5.0+ chips (Zephyr, FreeRTOS/TI, ESP-IDF, bare metal), device onboarding and master keys, encryption mode selection, radio-to-cloud verification
  • hubble-mobile-sdk: the Gateway SDK for iOS and Android; permission flows, background task registration, scan listeners, privacy controls, App Store gotchas
  • hubble-gateway-sdk: Linux/Raspberry Pi gateways; the one-line gateway-service install plus the hubble_gateway Python library for custom builds

New agents plugin

  • hubble-firmware-engineer: takes a user from BLE chip to beaconing device, or from Pi to scanning gateway; debugs layer by layer with pyhubblenetwork
  • hubble-api-engineer: platform onboarding and data in/out via the Cloud API only; carries the corrected API facts in its prompt

hubble-cloud-api skill regrounded in the real spec

The old reference drifted from the actual API. This rewrites it against cloud/platform-api/openapi.yaml (the api.hubble.com surface). Highlights:

  • Scope names are read-devices/write-devices style, not devices:read
  • Full v2 registration body: eid_rotation, names/tags arrays, install_locations, key_format=hex, AES-128-EAX
  • Update endpoints use set_-prefixed fields; batch responses return device objects, not per-item statuses
  • Packets: start/end in unix seconds, platform-tag-only filter_tags, TERRESTRIAL/SATELLITE network types, continuation-token semantics, 30-day retention
  • Webhook secrets are generated by Hubble and shown once, not supplied by the caller
  • Removed invented fields: dev_eui, device status, X-RateLimit-* headers, 207 responses
  • Bundled OpenAPI spec replaced with the real one

pyhubblenetwork is now a prerequisite/verification tool across all four skills.

Verification

Drove the real surface end to end with the claude CLI: plugin validate passes on the marketplace and all 5 plugins, local marketplace add + install registers every component (Skills (1) each, Agents (2) for hubble-agents), and uninstall/remove restores cleanly. That run caught the agent-discovery bug fixed in the third commit: an explicit agents key in plugin.json suppressed discovery, so the plugin installed with zero agents.

🤖 Generated with Claude Code

https://claude.ai/code/session_01AfsFXKAz1H8cbELwMmapp3

heemanshoe and others added 3 commits July 10, 2026 14:20
New plugins modeled on Plaud's embedded-skills pattern (when-to-use,
prerequisites, hosted-doc links, reference files, definition-of-done):

- hubble-device-sdk: firmware integration for BLE 5.0+ chips (Zephyr,
  FreeRTOS/TI, ESP-IDF, bare metal), onboarding, encryption modes,
  radio-to-cloud verification
- hubble-mobile-sdk: Gateway SDK for iOS/Android background BLE
  gateways (permissions, background tasks, privacy controls)
- hubble-gateway-sdk: Linux/Raspberry Pi gateway service and the
  hubble_gateway Python library

hubble-cloud-api skill regrounded in cloud/platform-api/openapi.yaml
(the api.hubble.com spec): real scope names (read-devices style),
full v2 registration body (eid_rotation, names/tags, key_format),
set_-prefixed PATCH fields, Hubble-generated webhook secrets,
start/end packet params with platform-tag-only filtering, days/
time_interval metrics params, new billing endpoints, and removal of
fabricated fields (dev_eui, X-RateLimit headers, per-item batch
statuses). Bundled OpenAPI spec replaced with the real one.

pyhubblenetwork added as a prerequisite/verification tool across the
device, gateway, mobile, and cloud-api skills.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01AfsFXKAz1H8cbELwMmapp3
- hubble-firmware-engineer: device flashing (Zephyr/FreeRTOS/ESP-IDF)
  through beaconing, or gateway bring-up (Linux service, Python
  library, mobile SDK), with layer-by-layer pyhubblenetwork debugging
- hubble-api-engineer: Cloud API onboarding and data in/out (scoped
  keys, v2 registration, webhooks, packet streaming, metrics)

Both route through the marketplace skills for authoritative steps.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01AfsFXKAz1H8cbELwMmapp3
The explicit "agents" array in plugin.json suppressed component
discovery: the plugin installed with Agents (0). Removing the key
lets the loader auto-discover agents/ (verified: Agents (2)).

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01AfsFXKAz1H8cbELwMmapp3
@heemanshoe heemanshoe requested a review from a team as a code owner July 10, 2026 22:01
@cursor

cursor Bot commented Jul 10, 2026

Copy link
Copy Markdown

PR Summary

Medium Risk
Large changes to Cloud API reference material agents and developers will treat as authoritative; inaccuracies could mislead integrations, though the intent is to correct drift from the real spec rather than change runtime behavior.

Overview
Expands the hubble-agent-plugins marketplace from a single Cloud API skill to a full Hubble stack: device, mobile, and gateway SDK skill plugins plus a hubble-agents plugin with hubble-firmware-engineer and hubble-api-engineer prompts that route work across those skills (and pyhubblenetwork for bench verification).

hubble-cloud-api documentation is rewritten to match the Platform API/OpenAPI: read-devices/write-devices scopes, v2 registration (encryption, eid_rotation, batch names/tags), set_* PATCH semantics, packet streaming with start/end in unix seconds and continuation-token polling, platform-only filter_tags, nested packet shape and TERRESTRIAL/SATELLITE, Hubble-generated webhook secrets, and removal of outdated concepts (e.g. client-supplied dev_eui, invented rate-limit headers). Examples and troubleshooting are updated in the same direction.

Root README and marketplace.json document and register all five plugins.

Reviewed by Cursor Bugbot for commit c5fd617. Configure here.

@heemanshoe heemanshoe requested a review from buckleypaul July 10, 2026 22:02

@cursor cursor Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Cursor Bugbot has reviewed your changes using high effort and found 1 potential issue.

Fix All in Cursor

❌ Bugbot Autofix is OFF. To automatically fix reported issues with cloud agents, enable autofix in the Cursor dashboard.

Want fixes drafted automatically? Bugbot Autofix can create code changes for findings. A team admin can enable Autofix in the Cursor dashboard.

Comment @cursor review or bugbot run to trigger another review on this PR

Reviewed by Cursor Bugbot for commit c5fd617. Configure here.

Comment thread hubble-cloud-api-skill/skills/hubble-cloud-api/references/api-reference.md Outdated
An empty Continuation-Token only means "done" for bounded queries.
On an open /packets stream it means "caught up": keep the last
non-empty token, honor Retry-After, and poll again. The reference
snippet and examples broke on empty, which would silently stop live
ingestion (PR #4 review).

- api-reference.md: split the pattern into fetch_bounded and
  tail_stream
- SKILL.md: pagination steps now distinguish bounded vs open
- examples.md: stream_packets is explicitly bounded (end defaults to
  now); PacketMonitor pins its start timestamp so a caught-up first
  poll can't advance the window and skip packets

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01AfsFXKAz1H8cbELwMmapp3
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.

1 participant