bloodbank-integration

Installation
SKILL.md

Bloodbank Integration

Route here when a service or harness needs to emit or consume events on the 33GOD bloodbank bus. The bus is the only sanctioned inter-service channel — never bypass it with direct calls.

Operating Principles

  • Bus is canon. All inter-service traffic flows through bloodbank. Direct service-to-service calls are an anti-pattern enforced repo-wide.
  • Schema first. Every event has a JSON Schema under bloodbank/schemas/. Build envelopes through the canonical builder/validator path, and keep manual envelope examples derivable from the schema and naming contract.
  • NATS is the current bus. v3 (Dapr + NATS JetStream + CloudEvents 1.0) is the live target. v2 (RabbitMQ topic exchange) still runs but is migration-only territory.
  • Facts and intent take different lanes. Events are immutable facts on bloodbank.evt.*; commands are targeted intent on bloodbank.cmd.*. Candystore projects events, not commands. A command consumer emits lifecycle events so execution still becomes durable history.
  • Subject convention is load-bearing. CloudEvents type is bloodbank.<domain>.<entity>.<action>. NATS subjects are bloodbank.evt.<domain>.<entity>.<action> for events, bloodbank.cmd.<domain>.<entity>.<action> for commands, and bloodbank.rpy.<domain>.<entity>.<action> for replies. The catch-all event-toaster listens on bloodbank.evt.>.
  • Plane enters through one provenance boundary. Both self-hosted Plane workspaces post over HTTPS to the active Plane → Bloodbank n8n workflow. The custom node selects the 1Password secret by payload webhook_id, verifies X-Plane-Signature over the raw body, resolves the board through the Hermes registry, normalizes the provider action, and publishes NATS-direct. Port 8477 and Bloodbank HTTP /event are not active Plane paths.
  • Agent hooks use one publisher. All CLI lifecycle hooks call ~/.agents/hooks/bloodbank/publish.py --client <agent> --hook <native-event>. Client-specific prep lives in services/agent-hooks/clients/<agent>.py; per-client publish.py files are wrappers.
  • Fail open at the boundary. Hooks must never block the host agent. Producer libs should swallow publish failures by default.

Triage Table

Match the user's intent against the signals on the left; load the cited file first.

Installs
1
Repository
delorenj/skills
GitHub Stars
15
First Seen
Sep 4, 2026
bloodbank-integration — delorenj/skills