Getting it into your agent
One page per mod, every tool's command on it. A separate URL per tool would split the same page into five that compete with each other.
npx skills add Benja-Pauls/SerpentStack --skill db-migrategit clone --depth 1 https://github.com/Benja-Pauls/SerpentStackWrote this? Show the measurements
A badge with what this costs and how it scanned, read live from this page, so it follows the numbers instead of freezing them. Markdown for a README, HTML for a documentation site or a project page.
[](https://agentmods.dev/skills/benja-pauls/serpentstack/db-migrate)<a href="https://agentmods.dev/skills/benja-pauls/serpentstack/db-migrate"><img src="https://agentmods.dev/badge/skills/benja-pauls/serpentstack/db-migrate/github.svg" alt="Measured on agentmods" height="20"></a>Or the 80×15 button, for a site that already has a row of RSS and ATOM ones. Only the verdict fits; the numbers stay here.
<a href="https://agentmods.dev/skills/benja-pauls/serpentstack/db-migrate"><img src="https://agentmods.dev/badge/skills/benja-pauls/serpentstack/db-migrate.svg" alt="Reviewed on agentmods" width="80" height="20"></a>What it costs to keep this loaded
Counted locally with the o200k_base tokenizer, which is exact for GPT models; Claude uses its own tokenizer and its counts differ. Treat this as one consistent yardstick across the catalogue rather than a bill. Prices are per million input tokens.
| Model | Per session | Once invoked |
|---|---|---|
| Fable 5.1 | $0.00037 | $0.00855 |
| Opus 5.5 | $0.00015 | $0.00342 |
| Sonnet 5.5 | $0.00007 | $0.00171 |
| Haiku 4.5 | $0.00004 | $0.00085 |
Grade A, and why
db-migrate scanned grade A with 0 findings against 26 rules in 11 categories — prompt injection, anti-refusal, data exfiltration, privilege escalation, supply chain, agent snooping, system-prompt leakage, SSRF and excessive agency — measured 1mo ago.
A static scan of the body, not an audit. Every finding is printed with the line that produced it so you can judge whether it matters here. A mod is markdown that instructs an agent; that is exactly why what it instructs is worth reading.
Nothing flagged
None of the 26 patterns this scan looks for appear in this file: no shell pipes, no recursive deletes, no credential paths, no hidden text, no instruction-override or anti-refusal phrasing, no agent-config snooping. That is not a guarantee, it is the absence of the things that are checkable.
How it starts
The opening of the file, as written. The whole thing — 112 lines — stays where its author put it; the contents beside it link to each section on GitHub.
Database Migrations
Manage database schema changes with Alembic in SerpentStack.
Prerequisites
- Postgres running:
docker compose up -d postgres - Backend dependencies installed:
cd backend && uv sync
Creating a New Migration
After modifying or adding a SQLAlchemy model:
cd backend && uv run alembic revision --autogenerate -m "describe the change"
The migration description should be concise and specific, e.g., "add projects table", "add email column to users", "create index on tasks.status".
Review the generated file in backend/migrations/versions/. Verify:
- The
upgrade()function contains the expectedop.create_table,op.add_column, orop.create_indexcalls. - The
downgrade()function is the inverse of upgrade. - No unintended changes are included (Alembic sometimes detects phantom diffs).
Running Migrations
Apply all pending migrations:
cd backend && uv run alembic upgrade head
Apply only the next migration:
cd backend && uv run alembic upgrade +1
Checking Migration Status
See the current revision:
cd backend && uv run alembic current
See full migration history:
cd backend && uv run alembic history --verbose
Downgrading
Roll back the last migration:
cd backend && uv run alembic downgrade -1
Roll back to a specific revision:
cd backend && uv run alembic downgrade <revision_id>
Adding a New Table
Full workflow:
- Create the model file at
backend/app/models/{name}.py— inherit fromBase(providesid,created_at,updated_at). - Import the model in
backend/app/models/__init__.pyso Alembic detects it. - Generate the migration:
cd backend && uv run alembic revision --autogenerate -m "add {name}s table". - Review the generated migration file.
- Apply:
cd backend && uv run alembic upgrade head. - Verify: connect to the database and confirm the table exists.
Adding a Column to an Existing Table
- Edit the model in
backend/app/models/{name}.py-- add the new column. - Generate:
cd backend && uv run alembic revision --autogenerate -m "add {column} to {name}s". - Review: ensure only the expected
op.add_columnis present. - Apply:
cd backend && uv run alembic upgrade head.
What this file has done since we first saw it
Hashed on every crawl. A supply-chain change to an agent config is a question of when, not whether, so the history is kept rather than the latest state alone.
- 1mo ago First seen · 112 lines · 37 tokens per session scan A c1ba270c652a
db-migrate is a skill published in the GitHub repository Benja-Pauls/SerpentStack (2 stars, last pushed 6mo ago), licensed MIT. It adds 37 tokens to every session and 855 once invoked, about $0.0001 per session on Opus 5.5. A static security scan graded it A with 0 findings. No closer match exists in the catalogue, so it is treated as the original; first seen 2026-08-31.
Other skills, from other repositories
obsidian-bases
Create and edit Obsidian Bases (.base files) with views, filters, formulas, and summaries. Use when working with .base files, creating database-like views of notes, or when the user mentions Bases, table views, card views, filters, or formulas in Obsidian.
x-osv
CLI for Google OSV database. Query vulnerabilities for packages, scan local projects for vulnerable dependencies. Dependency: This is an x-cmd module. Install x-cmd first (see x-cmd skill). Required Tool: Install osv-scanner for project scanning (see https://github.com/google/osv-scanner).
building-agents
Use when building or restructuring an LLM agent — provider adapter, tool calling, structured output, RAG, agent loop, eval gate, cost routing, tracing, MCP server — model-agnostic across OpenAI/Anthropic/Gemini/OSS so a model swap is a config change. NOT vector-store SQL alone (that is postgresdb) or service…
postgresdb
Use when PostgreSQL engine behaviour decides the answer — schema and type design, index choice, reading EXPLAIN on a slow query, zero-downtime DDL and backfills, or ops (roles, RLS, pooling, vacuum, partitioning, PITR). PG16, ORM-agnostic. NOT portable query logic (that is sql), NOT a managed provider's platform…
db-migrations
Use when a schema change must ship without downtime — NOT NULL, rename, type change, or backfilling millions of live rows — for the expand-contract sequence and the lock/batching discipline that keeps each step from freezing prod. NOT lock internals or EXPLAIN (that is postgresdb), NOT drizzle-kit mechanics (that is…
firebase
Use when building on Firebase — Firestore data modeling, Security Rules, Auth and custom claims, Cloud Functions, Storage, modular Web/Admin SDK imports — including symptoms like a database open to the internet, a query rejected by rules, or a doc stuck at 1 write/sec. NOT managed-Postgres BaaS with SQL and RLS (that…