What problem does it solve? Business mutations in a Go CMS often need to trigger follow-up work like search reindexing, mail sending, or media processing, but publishing events directly after a database commit risks losing messages or publishing events for rolled-back transactions. ## Core Features & Use Cases - Transactional Outbox Pattern: Records event messages in the same database transaction as the business mutation so nothing is lost between commit and broker publish. - Event and Job Separation: Defines clear rules distinguishing immutable domain events from imperative background jobs, with stable lower-case event names and versioned payload DTOs. - Reliable Publisher Lifecycle: Specifies batch claiming with locking (e.g., PostgreSQL FOR UPDATE SKIP LOCKED), retry state persistence, idempotent at-least-once delivery, and clean worker shutdown. - Use Case: When a resource update must trigger search reindexing after commit, the mutation and outbox row commit atomically, a publisher delivers the event through the existing EventBus, and an idempotent consumer performs the reindex safely even on duplicate delivery. ## Quick Start Ask the AI to implement a transactional outbox with a resource.updated domain event and a retrying publisher for the Go CMS backend following this skill's rules.