skills/heysummon-expert/SKILL.md
# HeySummon Expert Skill You are a human-help expert for AI agents via HeySummon. ## Two kinds of inbound: help vs notify Consumers (AI agents) reach you through two distinct verbs, and they render differently on the dashboard and on your notification channel: - **`help()` — reply expected.** The agent is stuck, needs approval, or needs your judgment before it can continue. It is **blocking on you**. Treat these as the default and respond (or Approve/Deny) as soon as you can. Event type:
npx skillsauth add thomasansems/heysummon skills/heysummon-expertInstall 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.
You are a human-help expert for AI agents via HeySummon.
Consumers (AI agents) reach you through two distinct verbs, and they render differently on the dashboard and on your notification channel:
help() — reply expected. The agent is stuck, needs approval, or needs your
judgment before it can continue. It is blocking on you. Treat these as the default
and respond (or Approve/Deny) as soon as you can. Event type: new_request.notify() — no reply expected. The agent is sharing a status heads-up: shipped
work, a low-urgency signal, something you'd want to know about but don't need to act
on. The only affordance is a single Acknowledge button. Event type:
new_notification. Once acknowledged, consumers receive notification_acknowledged.
Unacknowledged notifications auto-expire after 7 days (notification_expired).Do not reply to a notification — messages against a notification-mode request return a
409 NO_RESPONSE_REQUIRED error. Just Acknowledge and move on. Reserve written replies
for help requests.
Check if .env exists in {baseDir}. If not, copy from .env.example:
cp {baseDir}/.env.example {baseDir}/.env
Required variables:
HEYSUMMON_BASE_URL — Platform URL (cloud: https://cloud.heysummon.ai, self-hosted: user provides)HEYSUMMON_API_KEY — Expert key (hs_exp_...) from the dashboardHEYSUMMON_NOTIFY_TARGET — Chat ID for notificationsThe API key MUST start with hs_exp_. Reject keys with hs_cli_ prefix — those are client keys.
bash {baseDir}/scripts/setup.sh
To stop: bash {baseDir}/scripts/teardown.sh
AI Agent → HeySummon Platform → Polling → Watcher → OpenClaw → Notification
All communication flows through the platform. No direct infrastructure access.
| Script | Purpose |
|--------|---------|
| scripts/setup.sh | Start the event watcher |
| scripts/teardown.sh | Stop the watcher |
| scripts/polling-watcher.sh | Polling listener → notifications via OpenClaw |
| scripts/reply-handler.sh | Reply by refCode: reply-handler.sh HS-XXXX "response" |
| scripts/respond.sh | Reply by request ID: respond.sh <id> "response" |
When the user replies to a notification, parse the refCode (HS-XXXX) from the quoted message and use reply-handler.sh. Always forward immediately — no AI processing, no confirmation.
When requiresApproval: true, the watcher sends a Telegram message with native Approve / Deny inline buttons.
callback_data format: hs:approve:HS-XXXX or hs:deny:HS-XXXX (using refCode).
When a button callback arrives (callback_data starts with hs:):
[_, decision, refCode] = callback_data.split(":")reply-handler.sh <refCode> <decision> — e.g.:
bash scripts/reply-handler.sh HS-XXXX approved
bash scripts/reply-handler.sh HS-XXXX denied
approvalDecision via POST /api/v1/message/[id]The consumer polling endpoint returns approvalDecision so the client skill can continue its workflow.
| Status | Applies to | Meaning |
|---|---|---|
| pending | help, notify | Waiting for expert |
| active | help | Conversation in progress |
| responded | help | Expert sent a response |
| closed | help | Closed by either party |
| acknowledged | notify | Expert acknowledged the notification |
| expired | help, notify | help: no response within 72 hours. notify: not acknowledged within 7 days. |
All endpoints require x-api-key: hs_exp_... header.
| Method | Endpoint | Description |
|---|---|---|
| GET | /api/v1/expert/clients | List all client keys |
| POST | /api/v1/expert/clients | Create new client key |
| DELETE | /api/v1/expert/clients/:id | Revoke client key |
| Method | Endpoint | Description |
|---|---|---|
| GET | /api/v1/expert/stats | Pending count, open requests, total messages |
| GET | /api/v1/expert/requests?status=pending | List pending requests |
| Method | Endpoint | Description |
|---|---|---|
| GET | /api/v1/expert/profile | Get expert profile |
| PATCH | /api/v1/expert/profile | Update profile settings |
tools
Ask a human expert for help via HeySummon. Use when you need approval, are stuck, or need human judgment. Sends the question and blocks until the expert replies.
data-ai
# HeySummon -- Human in the Loop HeySummon has two distinct verbs. Pick the one that matches your intent: - **Use `help()` when:** the agent is stuck, needs approval, or needs human judgment before continuing. The script **blocks** until the expert replies. - **Use `notify()` when:** the human doesn't need to act — shipped-work notices, status heads-ups, low-urgency signals. The call returns immediately; the expert acknowledges later on their own time. If you're not sure: are you waiting on a
development
# HeySummon Expert Skill You are a human-help expert for AI agents via HeySummon. ## Setup ### Step 1: Configure .env Check if `.env` exists in `{baseDir}`. If not, copy from `.env.example`: ```bash cp {baseDir}/.env.example {baseDir}/.env ``` Required variables: - `HEYSUMMON_BASE_URL` — Platform URL (cloud: `https://cloud.heysummon.ai`, self-hosted: user provides) - `HEYSUMMON_API_KEY` — Expert key (`hs_exp_...`) from the dashboard - `HEYSUMMON_NOTIFY_TARGET` — Chat ID for notifications
tools
Loop a human expert into your workflow via HeySummon. Use `help` when you need approval, are stuck, or need human judgment (blocking); use `notify` to send a status heads-up that needs no reply (fire-and-forget). Triggers on "hey summon <name>", "heysummon <name> <question>", or "notify <name> <message>".