apple-notes
Manage Apple Notes via the memo CLI on macOS (create, view, search, edit).
Create and manage webhook subscriptions for event-driven agent activation. Use when the user wants external services to trigger agent runs automatically.
$ npx -y skills add braxtonROSE4/zorro-agent --skill webhook-subscriptions --agent claude-codeHow it fires
How this skill gets triggered: by you, by Claude, or both.
/webhook-subscriptionsContext preview
The summary Claude sees to decide when to auto-load this skill.
Create and manage webhook subscriptions for event-driven agent activation. Use when the user wants external services to trigger agent runs automatically.
name: webhook-subscriptions
description: Create and manage webhook subscriptions for event-driven agent activation. Use when the user wants external services to trigger agent runs automatically.
version: 1.0.0
metadata:
zorro:
tags: [webhook, events, automation, integrations]Create dynamic webhook subscriptions so external services (GitHub, GitLab, Stripe, CI/CD, IoT sensors, monitoring tools) can trigger Zorro Agent runs by POSTing events to a URL.
The webhook platform must be enabled before subscriptions can be created. Check with:
zorro webhook list
If it says "Webhook platform is not enabled", set it up:
zorro gateway setup
Follow the prompts to enable webhooks, set the port, and set a global HMAC secret.
Add to `~/.zorro/config.yaml`:
platforms:
webhook:
enabled: true
extra:
host: "0.0.0.0"
port: 8644
secret: "generate-a-strong-secret-here"Add to `~/.zorro/.env`:
WEBHOOK_ENABLED=true WEBHOOK_PORT=8644 WEBHOOK_SECRET=generate-a-strong-secret-here
After configuration, start (or restart) the gateway:
zorro gateway run # Or if using systemd: systemctl --user restart zorro-gateway
Verify it's running:
curl http://localhost:8644/health
All management is via the `zorro webhook` CLI command:
zorro webhook subscribe <name> \
--prompt "Prompt template with {payload.fields}" \
--events "event1,event2" \
--description "What this does" \
--skills "skill1,skill2" \
--deliver telegram \
--deliver-chat-id "12345" \
--secret "optional-custom-secret"Returns the webhook URL and HMAC secret. The user configures their service to POST to that URL.
zorro webhook list
zorro webhook remove <name>
zorro webhook test <name>
zorro webhook test <name> --payload '{"key": "value"}'Prompts support `{dot.notation}` for accessing nested payload fields:
If no prompt is specified, the full JSON payload is dumped into the agent prompt.
zorro webhook subscribe github-issues \
--events "issues" \
--prompt "New GitHub issue #{issue.number}: {issue.title}\n\nAction: {action}\nAuthor: {issue.user.login}\nBody:\n{issue.body}\n\nPlease triage this issue." \
--deliver telegram \
--deliver-chat-id "-100123456789"Then in GitHub repo Settings → Webhooks → Add webhook:
zorro webhook subscribe github-prs \
--events "pull_request" \
--prompt "PR #{pull_request.number} {action}: {pull_request.title}\nBy: {pull_request.user.login}\nBranch: {pull_request.head.ref}\n\n{pull_request.body}" \
--skills "github-code-review" \
--deliver github_commentzorro webhook subscribe stripe-payments \
--events "payment_intent.succeeded,payment_intent.payment_failed" \
--prompt "Payment {data.object.status}: {data.object.amount} cents from {data.object.receipt_email}" \
--deliver telegram \
--deliver-chat-id "-100123456789"zorro webhook subscribe ci-builds \
--events "pipeline" \
--prompt "Build {object_attributes.status} on {project.name} branch {object_attributes.ref}\nCommit: {commit.message}" \
--deliver discord \
--deliver-chat-id "1234567890"zorro webhook subscribe alerts \
--prompt "Alert: {alert.name}\nSeverity: {alert.severity}\nMessage: {alert.message}\n\nPlease investigate and suggest remediation." \
--deliver origin1. `zorro webhook subscribe` writes to `~/.zorro/webhook_subscriptions.json` 2. The webhook adapter hot-reloads this file on each incoming request (mtime-gated, negligible overhead) 3. When a POST arrives matching a route, the adapter formats the prompt and triggers an agent run 4. The agent's response is delivered to the configured target (Telegram, Discord, GitHub comment, etc.)
If webhooks aren't working:
1. **Is the gateway running?** Check with `systemctl --user status zorro-gateway` or `ps aux | grep gateway` 2. **Is the webhook server listening?** `curl http://localhost:8644/health` should return `{"status": "ok"}` 3. **Check gateway logs:** `grep webhook ~/.zorro/logs/gateway.log | tail -20` 4. **Signature mismatch?** Verify the secret in your service matches the one from `zorro webhook list`. GitHub sends `X-Hub-Signature-256`, GitLab sends `X-Gitlab-Token`. 5. **Firewall/NAT?** The webhook URL must be reachable from the service. For local development, use a tunnel (ngrok, cloudflared). 6. **Wrong event type?** Check `--events` filter matches what the service sends. Use `zorro webhook test <name>` to verify the route works.
A self-evolving CLI agent. Most agents treat memory as an afterthought — a flat text file that grows until it's useless.
Manage Apple Notes via the memo CLI on macOS (create, view, search, edit).
Manage Apple Reminders via remindctl CLI (list, add, complete, delete).
Track Apple devices and AirTags via FindMy.app on macOS using AppleScript and screen capture.
Delegate coding tasks to Claude Code (Anthropic's CLI agent). Use for building features, refactoring, PR reviews, and iterative coding. Requires the claude CLI…
Delegate coding tasks to OpenAI Codex CLI agent. Use for building features, refactoring, PR reviews, and batch issue fixing. Requires the codex CLI and a git…