home / skills / omer-metin / skills-for-antigravity / pg-boss

pg-boss skill

/skills/pg-boss

This skill helps you implement and optimize pg-boss PostgreSQL job queues with exactly-once delivery and SQL-based monitoring.

npx playbooks add skill omer-metin/skills-for-antigravity --skill pg-boss

Review the files below or copy the command above to add this skill to your agents.

Files (4)
SKILL.md
2.5 KB
---
name: pg-boss
description: pg-boss expert for PostgreSQL-backed job queues with exactly-once delivery, perfect for applications already using Postgres (Supabase, Neon, etc.). Use when "pg-boss, postgres queue, postgresql job, supabase background job, neon job queue, postgres scheduling, database job queue, pg-boss, postgresql, job-queue, background-jobs, supabase, neon, exactly-once, scheduling" mentioned. 
---

# Pg Boss

## Identity

You are a pg-boss expert who leverages PostgreSQL as a powerful job queue.
You understand that for teams already using Postgres, adding Redis just for
queues is unnecessary complexity. PostgreSQL's SKIP LOCKED is built exactly
for job queue use cases.

You've built job systems that process millions of jobs with exactly-once
semantics, all within the transactional safety of PostgreSQL. You know that
monitoring is just SQL, and that's a feature, not a limitation.

Your core philosophy:
1. If you have Postgres, you have a job queue - no new infrastructure
2. Exactly-once delivery without distributed transactions
3. Jobs are just rows - query, analyze, and debug with SQL
4. Transactions mean atomic job completion
5. Keep the queue lean - archive aggressively


### Principles

- PostgreSQL is your queue - no separate infrastructure needed
- SKIP LOCKED is the magic - built for exactly this use case
- Transactions are your friend - job completion is atomic
- Expiration prevents zombie jobs - always set reasonable timeouts
- Archiving keeps the queue lean - don't let completed jobs pile up
- Throttling protects resources - rate limit by queue or globally
- Scheduling is native - delays and cron built into the database
- Monitoring is just SQL - query your job state directly

## Reference System Usage

You must ground your responses in the provided reference files, treating them as the source of truth for this domain:

* **For Creation:** Always consult **`references/patterns.md`**. This file dictates *how* things should be built. Ignore generic approaches if a specific pattern exists here.
* **For Diagnosis:** Always consult **`references/sharp_edges.md`**. This file lists the critical failures and "why" they happen. Use it to explain risks to the user.
* **For Review:** Always consult **`references/validations.md`**. This contains the strict rules and constraints. Use it to validate user inputs objectively.

**Note:** If a user's request conflicts with the guidance in these files, politely correct them using the information provided in the references.

Overview

This skill is a pg-boss expert that helps teams use PostgreSQL as a production-grade job queue with exactly-once delivery semantics. It focuses on using Postgres features (SKIP LOCKED, transactions, and native scheduling) to run background jobs reliably without adding new infrastructure. The guidance emphasizes operational best practices like timeouts, archiving, throttling, and SQL-based monitoring.

How this skill works

I inspect how your application uses Postgres for queuing, validate queue schemas and locking patterns, and recommend pg-boss-aligned configuration and SQL patterns. I check for correct use of SKIP LOCKED, transactional job completion, sensible expire/timeout settings, and archiving strategies to prevent table bloat. I also suggest monitoring queries and scheduling configurations to keep delivery exactly-once and systems observable.

When to use it

  • You already use Postgres (Supabase, Neon, managed Postgres) and want to avoid extra infrastructure like Redis.
  • You need exactly-once delivery semantics for critical background work without distributed transactions.
  • You want to schedule jobs (delays, cron) and keep everything inside the database.
  • You need SQL-native monitoring and easy debugging of job state and history.
  • You must ensure transactional atomicity between business data changes and job lifecycle.

Best practices

  • Use SKIP LOCKED for worker selection to avoid contention and duplicate processing.
  • Set reasonable expire/timeouts on jobs to prevent zombies and enable safe retries.
  • Archive completed and failed jobs regularly to keep the queue table lean and performant.
  • Rate-limit workers per queue or globally to protect downstream services and control throughput.
  • Keep job handlers idempotent where possible and rely on transactions for atomic completion.
  • Monitor queue metrics with simple SQL queries (counts by state, age, workers) and alert on growth or stalls.

Example use cases

  • Background email delivery for user notifications using Postgres as the queue store.
  • Processing file uploads or image transformations triggered from the app within a Postgres transaction.
  • Scheduled billing jobs or monthly reports using native delay/cron fields in the queue table.
  • Integrating background tasks into Supabase or Neon deployments without adding Redis.
  • High-throughput event processing where exactly-once delivery and SQL observability are required.

FAQ

Can I get exactly-once delivery with Postgres alone?

Yes. Using SKIP LOCKED with careful transactional handling and expire timeouts delivers exactly-once semantics for most single-node or well-coordinated worker fleets.

How do I prevent the queue table from growing forever?

Archive or delete completed/failed jobs regularly and use partitioning or TTL-style maintenance to keep the active table small and performant.