GB-Power-Market-JJ hookaido
install
source · Clone the upstream repo
git clone https://github.com/GeorgeDoors888/GB-Power-Market-JJ
Claude Code · Install into ~/.claude/skills/
T=$(mktemp -d) && git clone --depth=1 https://github.com/GeorgeDoors888/GB-Power-Market-JJ "$T" && mkdir -p ~/.claude/skills && cp -r "$T/openclaw-skills/skills/7schmiede/hookaido" ~/.claude/skills/georgedoors888-gb-power-market-jj-hookaido && rm -rf "$T"
OpenClaw · Install into ~/.openclaw/skills/
T=$(mktemp -d) && git clone --depth=1 https://github.com/GeorgeDoors888/GB-Power-Market-JJ "$T" && mkdir -p ~/.openclaw/skills && cp -r "$T/openclaw-skills/skills/7schmiede/hookaido" ~/.openclaw/skills/georgedoors888-gb-power-market-jj-hookaido && rm -rf "$T"
manifest:
openclaw-skills/skills/7schmiede/hookaido/SKILL.mdsource content
Hookaido
Overview
Implement and troubleshoot Hookaido with a config-first workflow: edit
Hookaidofile, validate, run, exercise ingress/pull/exec flows, then diagnose queue health and DLQ behavior.
Treat Hookaido v2.2.1's modular architecture as additive in this skill: keep the existing workflow intact by default, and opt into modules such as postgres, gRPC workers, subprocess delivery (deliver exec), or release verification only when they materially help the task.
Use conservative, reversible changes and validate before runtime operations.
Workflow
- Confirm target topology: inbound+pull (HTTP or gRPC), push outbound, subprocess exec, or internal queue, plus the queue backend (
,sqlite
, ormemory
).postgres - Choose runtime mode and ensure
exists where tools execute.hookaido- Host-binary mode: use the install action from
.metadata.openclaw.install - Host fallback: run
(pinnedbash {baseDir}/scripts/install_hookaido.sh
, SHA256-verified).v2.2.1 - Public repo/source mode: use the public upstream repo
viagithub.com/nuetzliches/hookaido
when a source-based install is preferred.go install github.com/nuetzliches/hookaido/cmd/hookaido@v2.2.1 - Docker-sandbox mode: use a sandbox image that already includes
(preferred), or install inside sandbox viahookaido
.agents.defaults.sandbox.docker.setupCommand - Keep host install actions available as fallback and to satisfy
.metadata.openclaw.requires.bins
- Host-binary mode: use the install action from
- Inspect and update
minimally.Hookaidofile - Run format and validation before starting or reloading:
hookaido config fmt --config ./Hookaidofilehookaido config validate --config ./Hookaidofile
when secret refs or Vault-backed config are involved.hookaido config validate --config ./Hookaidofile --strict-secrets
- Start runtime and verify health:
hookaido run --config ./Hookaidofile --db ./.data/hookaido.db
whenhookaido run --config ./Hookaidofile --postgres-dsn "$HOOKAIDO_POSTGRES_DSN"
is selected.queue postgrescurl http://127.0.0.1:2019/healthz?details=1
- Validate end-to-end behavior:
- ingress request accepted and queued
- consumer
/dequeue
/ack
/nack
path works (HTTP pull, batchextend
/ack
, plus gRPC pull when enabled)nack
- For incidents, inspect backlog and DLQ first, then mutate.
Task Playbooks
Configure Ingress and Pull Consumption
- Define a route with explicit auth and pull path (HTTP pull, optional gRPC pull worker listener).
- Keep secrets in env/file refs, never inline.
- Verify route and global pull auth are consistent.
- Test with a real webhook payload and a dequeue/ack cycle, using batch
/ack
when worker throughput matters.nack
Prefer this baseline:
ingress { listen :8080 } pull_api { listen :9443 grpc_listen :9943 # optional gRPC pull-worker listener auth token env:HOOKAIDO_PULL_TOKEN } /webhooks/github { auth hmac env:HOOKAIDO_INGRESS_SECRET pull { path /pull/github } }
Configure Push Delivery
- Use push delivery only when inbound connectivity to the service is acceptable.
- Set timeout and retry policy explicitly.
- Validate downstream idempotency since delivery is at-least-once.
/webhooks/stripe { auth hmac env:STRIPE_SIGNING_SECRET deliver "https://billing.internal/stripe" { retry exponential max 8 base 2s cap 2m jitter 0.2 timeout 10s } }
Configure Subprocess Delivery (deliver exec
)
deliver exec- Use exec delivery when the target is a local script or binary, not an HTTP service.
- Payload is piped to stdin; metadata arrives as env vars (
,HOOKAIDO_ROUTE
,HOOKAIDO_EVENT_ID
, etc.).HOOKAIDO_ATTEMPT - Exit code determines retry behavior:
= ack,0
= retry,1-125
/126
= immediate DLQ.127
directives are not supported with exec (compile error).sign
/webhooks/github { auth hmac { provider github secret env:GITHUB_WEBHOOK_SECRET } deliver exec "/opt/hooks/deploy.sh" { timeout 30s retry exponential max 3 base 1s cap 30s jitter 0.2 env DEPLOY_ENV production env NOTIFY_URL {env.SLACK_WEBHOOK_URL} } }
Configure Provider-Compatible HMAC
- Use
orprovider github
for webhook providers that use their own signature format.provider gitea - Provider mode disables timestamp/nonce replay protection (providers do not send those headers).
,signature_header
,timestamp_header
, andnonce_header
are forbidden in provider mode (compile error).tolerance
/webhooks/github { auth hmac { provider github secret env:GITHUB_WEBHOOK_SECRET } pull { path /pull/github } } /webhooks/gitea { auth hmac { provider gitea secret env:GITEA_WEBHOOK_SECRET } pull { path /pull/gitea } }
Configure Queue Backends
- Default to
unless the task explicitly needs ephemeral dev mode or shared Postgres storage.sqlite - Treat
andmemory
as additive v2 modules, not replacements for existing sqlite workflows.postgres - When using
, document the DSN source and validate health plus backlog endpoints after startup.postgres
Prefer these patterns:
queue sqlite queue memory queue postgres
Operate Queue and DLQ
- Start with health details and backlog endpoints.
- Inspect DLQ before requeue or delete.
- If requeueing many items, explain expected impact and rollback path.
- Require clear operator reason strings for mutating admin calls.
Use:
GET /healthz?details=1GET /backlog/trendsGET /dlqPOST /dlq/requeuePOST /dlq/delete
Use MCP Mode for AI Operations
- Default to
for diagnostics.--role read - Enable mutations only with explicit operator intent:
--enable-mutations --role operate --principal <identity>
- Enable runtime control only for admin workflows:
--enable-runtime-control --role admin --pid-file <path>
- Include
for mutation calls and keep it specific.reason
Verify Public Releases
- Prefer official release assets from the public Hookaido repo.
- When supply-chain assurance matters, validate checksums, signature material, and provenance before rollout.
- Keep verification optional by default so existing skill flows do not become heavier unless the task requires it.
Use:
hookaido verify-release --checksums ./hookaido_v2.2.1_checksums.txt --require-provenance
Validation Checklist
returns success before runtime start/reload.hookaido config validate
is used when secret refs, Vault, or public-release rollout validation matters.hookaido config validate --strict-secrets- Health endpoint is reachable and reports expected queue/backend state.
- Pull consumer can
,dequeue
,ack
, andnack
with valid token (HTTP and optional gRPC transport), including batchextend
/ack
when enabled.nack - For push mode, retry/timeout behavior is explicitly configured.
- For exec mode, handler script is executable, reads stdin, and uses exit codes correctly (0=ack, non-zero=retry, 126/127=DLQ).
- For
, runtime is started withqueue postgres
or--postgres-dsn
.HOOKAIDO_POSTGRES_DSN - Any DLQ mutation is scoped, justified, and logged.
Safety Rules
- Do not disable auth to "make tests pass."
- Do not suggest direct mutations before read-only diagnostics.
- Treat queue operations as at-least-once; require idempotent handlers.
- Keep secrets in
orenv:
refs.file:
References
- Read
for command snippets and API payload templates.references/operations.md