Skill Hub Gateway
Unified gateway skill for async execute/poll, portal user closure, and telemetry feedback workflows.
Description
name: skill-hub-gateway description: Unified gateway skill for async execute/poll, portal user closure, and telemetry feedback workflows. version: 2.4.2 metadata: openclaw: skillKey: skill-hub-gateway emoji: "🧩" homepage: https://gateway.binaryworks.app requires: bins: - node
Skill Hub Gateway
Default API base URL: https://gateway-api.binaryworks.app
Default site base URL (for upload route): https://gateway.binaryworks.app
Chinese documentation: SKILL.zh-CN.md
Version Check Protocol (Agent)
- Official latest version source:
GET /skills/manifest.json->data.version. - Local current version source: this installed
SKILL.mdfrontmatterversion. - Compare versions using semantic version order (
major.minor.patch). - Check timing: once at session start, then at most once every 24 hours within the same session.
- If version check fails (network/timeout/parse error), do not block runtime execution. Continue current workflow and retry at the next allowed check window.
Agent Decision Flow
- If
latest_version > current_version, read the matching section underRelease Notesin this document to buildupdate_summary. - Agent should show the user:
current_versionlatest_versionupdate_summary
- User decision options:
Update nowRemind me later in this session
- If user chooses
Remind me later in this session, suppress repeated prompts for the same target version until a new session starts.
First-Time Onboarding (install_code)
Scripts auto-complete onboarding by default:
POST /agent/install-code/issuewith{"channel":"local"}or{"channel":"clawhub"}.- Read
data.install_code. POST /agent/bootstrapwith{"agent_uid":"<agent_uid>","install_code":"<install_code>"}.- Read
data.api_key, then call runtime APIs withX-API-KeyorAuthorization: Bearer <api_key>.
Manual override:
- You can still provide
api_keyexplicitly. - If
agent_uidandowner_uid_hintare omitted, scripts derive stable local defaults from the current workspace path.
Legacy Runtime Contract (Compatibility)
- Execute:
POST /skill/execute - Poll:
GET /skill/runs/:run_id
Portal Actions (User Closure)
Action catalog (single default path per action):
portal.me->GET /user/meportal.balance->GET /user/points/balanceportal.ledger.query->GET /user/points/ledgerportal.usage.query->GET /user/usageportal.skill.execute->POST /user/skills/executeportal.skill.poll->GET /user/skills/runs/:runIdportal.skill.presentation->GET /user/skills/runs/:runId/presentationportal.voucher.redeem->POST /user/vouchers/redeem(write)portal.recharge.create->POST /user/recharge/orders(write)portal.recharge.get->GET /user/recharge/orders/:orderId
Write safety gate:
portal.voucher.redeemandportal.recharge.createrequirepayload.confirm === true.- If
confirmis missing or nottrue, action runner rejects the call locally and does not send write traffic.
Payload Contract
Default payload conventions:
payload.inputis the primary input object forportal.skill.execute.payload.request_idis optional and passed through as-is.- Query actions use
payloadfields directly as query params (date_from,date_to,service_id,channel).
Media normalization conventions:
- Prefer explicit URL fields already present in input:
image_url,audio_url,file_url. - If
attachment.urlexists, map it to the capability target URL field. - If
file_pathexists, auto-upload through{site_base}/api/blob/upload, with fallback to{site_base}/api/blob/upload-filewhen@vercel/blob/clientis unavailable, then backfill URL into input before execution. - For agent runtimes that do not include
@vercel/blob/client, you can also pre-upload media via your backend (for example Vercel Blob) and passattachment.urlor explicit URL fields. site_base_urlis a guarded field: runtime only accepts the trusted configured site base URL (defaulthttps://gateway.binaryworks.appor envSKILL_SITE_BASE_URL).- Users should not need to manually paste media URLs in normal product flows.
Presentation files:
portal.skill.presentationaccepts optionalinclude_files=trueto returnvisual.files.assetswith rendered file URLs.portal-action.mjsdefaultsinclude_files=trueforportal.skill.presentationunless explicitly disabled.- Image runs return
overlay(boxed image), plusmask/cutoutassets when available. - Audio runs normalize data URLs to
output.media_files.assetswith uploaded file URLs when blob storage is configured.
Runtime Auth Bridge
User-scoped actions use a fixed auth bridge:
- Resolve runtime API key context (
api_key,agent_uid,owner_uid_hint,base_url). GET /agent/mewithX-API-Key+x-agent-uidto resolveuser_id.POST /user/api-key-loginwithuser_id + api_keyto obtainuserToken.- Execute Portal Action with
Authorization: Bearer <userToken>.
Insufficient Points Recovery
For POINTS_INSUFFICIENT responses:
- Keep
error.codeanderror.messageunchanged. - Preserve and surface
error.details.recharge_urlwhen available. - Diagnostic logs should recommend
portal.recharge.createor direct open ofrecharge_url.
Bundled Files
scripts/execute.mjs(CLI args:[api_key] [capability] [input_payload] [base_url] [agent_uid] [owner_uid_hint])scripts/poll.mjs(CLI args:[api_key] <run_id> [base_url] [agent_uid] [owner_uid_hint])scripts/feedback.mjs(CLI args:[api_key] [payload_json] [base_url] [agent_uid] [owner_uid_hint])scripts/telemetry.mjs(shared best-effort telemetry helper)scripts/runtime-auth.mjs(shared auto-bootstrap helper)scripts/portal-auth.mjs(api-key -> user session bridge)scripts/portal-action.mjs(CLI args:[api_key] <action> <payload_json> [base_url] [agent_uid] [owner_uid_hint])scripts/attachment-normalize.mjs(attachment URL/path normalization + upload)references/capabilities.jsonreferences/openapi.jsonSKILL.zh-CN.md
Telemetry and Feedback
- Bundled scripts now support best-effort telemetry emit for auth/execute/poll/feedback flows.
- Telemetry is non-blocking and does not change runtime exit semantics if telemetry delivery fails.
- Optional environment variables:
SKILL_TELEMETRY_ENABLED(trueby default)SKILL_TELEMETRY_BASE_URL(defaults to runtimebase_url)SKILL_TELEMETRY_TIMEOUT_MS(2000by default)
- Feedback script posts to
POST /feedback/submitwith runtime auth (X-API-Key) and attachesagent_uid+owner_uid_hintin metadata.
Capability IDs
human_detectimage_taggingtts_reportembeddingsrerankerasrtts_low_costmarkdown_convertface-detectperson-detecthand-detectbody-keypoints-2dbody-contour-63ptface-keypoints-106pthead-poseface-feature-classificationface-action-classificationface-image-qualityface-emotion-recognitionface-physical-attributesface-social-attributespolitical-figure-recognitiondesignated-person-recognitionexhibit-image-recognitionperson-instance-segmentationperson-semantic-segmentationconcert-cutoutfull-body-mattinghead-mattingproduct-cutout
Release Notes
When publishing a new version, add a new section here. Agent update summaries must be generated from this block.
2.4.2 (2026-03-12)
What's New
- Added
/api/blob/upload-filedirect-upload fallback forfile_pathflows when@vercel/blob/clientis unavailable. - Added
portal.skill.presentationfile rendering (visual.files.assets) for overlay/mask/cutout URLs. - Added audio output normalization to return
output.media_files.assetswith uploaded file URLs when blob storage is configured.
Breaking/Behavior Changes
- None.
Migration Notes
- For agent runtimes without
@vercel/blob/client, sendfile_pathas before; the runtime now falls back to direct upload. - To receive rendered files, call
portal.skill.presentationwithinclude_files=trueor rely on the portal default.
2.4.1 (2026-03-12)
What's New
- Added server-side
portal.skill.executeinput normalization forattachment.url(bothinput.attachment.urland top-levelattachment.url). - Added explicit media URL precedence guard (
image_url/audio_url/file_urltake priority overattachment.urlwhen both are present). - Added end-to-end tests for upload-first execution payload compatibility and precedence behavior.
- Clarified fallback guidance for runtimes missing
@vercel/blob/clientto use backend pre-upload URLs.
Breaking/Behavior Changes
- None.
Migration Notes
- Existing
portal-action.mjsworkflows remain compatible. - For local file workflows in constrained agent runtimes, prefer backend pre-upload then pass
attachment.urlor explicit media URL.
2.4.0 (2026-03-12)
What's New
- Added Portal Actions contract for single-skill user closure flows (
portal.me, balance/ledger/usage, execute/poll/presentation, voucher and recharge actions). - Added local double-confirm write gate:
portal.voucher.redeemandportal.recharge.createrequireconfirm=true. - Added runtime auth bridge script (
portal-auth.mjs) forapi_key -> user session. - Added action runner (
portal-action.mjs) and attachment normalization script (attachment-normalize.mjs) withattachment.urlandfile_pathsupport. - Standardized insufficient-points diagnostics to preserve
recharge_urlin passthrough envelopes.
Breaking/Behavior Changes
- Write actions now fail fast locally when
confirm=trueis absent.
Migration Notes
- Existing
execute.mjsandpoll.mjsworkflows remain available. - Portal users should call
portal-action.mjsfor user closure actions.
2.3.4 (2026-03-11)
What's New
- Added best-effort telemetry emit in runtime scripts for auth/execute/poll flows.
- Added
scripts/feedback.mjsto submit structured feedback via runtime auth (X-API-Key). - Added shared telemetry helper with optional env controls (
SKILL_TELEMETRY_*).
Breaking/Behavior Changes
- None.
Migration Notes
- Existing execute/poll calls remain unchanged.
- If you run scripts in constrained environments, allow optional telemetry calls to
/agent/telemetry/ingestand/telemetry/ingest.
2.3.3 (2026-03-11)
What's New
- Standardized user-facing guidance around upload-based flows: do not expose manual URL/JSON fields for media/document inputs.
- Updated capability reference examples and wording to match upload-first product UX.
- Renamed CLI argument label from
input_jsontoinput_payloadfor consistency with structured payload semantics.
Breaking/Behavior Changes
- None.
Migration Notes
- Existing runtime API calls remain unchanged.
- If your integration shows custom input forms, prefer file/attachment inputs instead of manual URL/JSON text fields.
Reviews (0)
No reviews yet. Be the first to review!
Comments (0)
No comments yet. Be the first to share your thoughts!