hydraflow: Skill for Claude Code

.codex/skills/hf.enforce-migrations/SKILL.md

hf.enforce-migrations is a skill for Claude Code, Codex from T-rav/hydraflow. It costs 11 tokens per session (680 once invoked), scanned A, original, Apache-2.0.

A warning hook that checks Python edits for database structure changes, such as creating or altering tables. Database migrations are the files normally used to record and apply those schema changes.

In plain words
What is it for?
Use it to catch SQL schema changes or database migration operations written outside migration and test files.
Why use it?
It prevents database schema changes from being placed directly in application code, where they may be difficult to track and deploy safely.

Skill for Claude CodeCodex

Written for Claude Code and Codex: PreToolUse hook event, but also installed under .codex/.

This is T-rav/hydraflow's own configuration. It tells Claude Code and Codex how to work on hydraflow itself, so it is not a mod to install elsewhere. Copy it as a starting point and replace the rules that are about this project. Everything hydraflow configures →

Reuse

Borrowing it

Nothing to install: this file belongs to T-rav/hydraflow. Take a copy, put it at the same path in your own repository, and replace the rules that are about this project with yours.

Copy the file
curl -O https://raw.githubusercontent.com/T-rav/hydraflow/staging/.codex/skills/hf.enforce-migrations/SKILL.md
Clone the repo
git clone --depth 1 https://github.com/T-rav/hydraflow

Made for: Claude Code, Codex.

Wrote 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.

agentmods badge for hf.enforce-migrations

README.md
[![agentmods](https://agentmods.dev/badge/skills/t-rav/hydraflow/hf.enforce-migrations/github.svg)](https://agentmods.dev/skills/t-rav/hydraflow/hf.enforce-migrations)
Your own site
<a href="https://agentmods.dev/skills/t-rav/hydraflow/hf.enforce-migrations"><img src="https://agentmods.dev/badge/skills/t-rav/hydraflow/hf.enforce-migrations/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.

agentmods 80×15 button for hf.enforce-migrations

Your own site · 80×15
<a href="https://agentmods.dev/skills/t-rav/hydraflow/hf.enforce-migrations"><img src="https://agentmods.dev/badge/skills/t-rav/hydraflow/hf.enforce-migrations.svg" alt="Reviewed on agentmods" width="80" height="20"></a>
Per session 11 Skills are progressive disclosure: only the name and description are preloaded; the body loads when the skill is used.
When invoked 680 The whole file, excluding the scripts and references it only reads on demand.
Security scan A 0 findings. A grade says what 26 rules found in the file — not that it is safe.
Origin original No closer match found in the catalogue.
Token cost

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.

ModelPer sessionOnce invoked
Fable 5.1 $0.00011 $0.00680
Opus 5 $0.00005 $0.00340
Sonnet 5 $0.00002 $0.00136
Haiku 4.5 $0.00001 $0.00068

Measured 8d ago against content hash d6e8ad5eb6ec, method: parsed. Prices are Anthropic first-party input rates as of 2026-09-08, from the pricing page.

Security

Grade A, and why

hf.enforce-migrations 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 8d 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.

.codex/skills/hf.enforce-migrations/SKILL.md · 71 lines

What it actually says

hf.enforce-migrations

#!/bin/bash
# Hook: Block direct database schema changes outside of migration files.
# Fires on PreToolUse for Edit and Write tools.
# Blocks if SQL DDL or Alembic operations are written in non-migration files.

set -euo pipefail

INPUT=$(cat)
FILE_PATH=$(echo "$INPUT" | jq -r '.tool_input.file_path // empty')

if [ -z "$FILE_PATH" ]; then
  exit 0
fi

# Only check Python files
if ! echo "$FILE_PATH" | grep -qE '\.py$'; then
  exit 0
fi

# Allow migration files (they're SUPPOSED to have DDL)
if echo "$FILE_PATH" | grep -qE '/migrations/|/migrations_data/'; then
  exit 0
fi

# Allow test files (they may use DDL for in-memory test DBs)
if echo "$FILE_PATH" | grep -qE '(test_|_test\.py|conftest\.py|/tests/)'; then
  exit 0
fi

# Check the content being written/edited for DDL patterns
# For Edit: check new_string; for Write: check content
NEW_CONTENT=$(echo "$INPUT" | jq -r '.tool_input.new_string // .tool_input.content // empty')

if [ -z "$NEW_CONTENT" ]; then
  exit 0
fi

# Check for raw SQL DDL statements
if echo "$NEW_CONTENT" | grep -qiE '(CREATE\s+TABLE|ALTER\s+TABLE|DROP\s+TABLE|ADD\s+COLUMN|DROP\s+COLUMN|RENAME\s+TABLE|MODIFY\s+COLUMN|CREATE\s+INDEX|DROP\s+INDEX)'; then
  echo "BLOCKED: Direct SQL DDL detected outside of migration files." >&2
  echo "" >&2
  echo "  File: $FILE_PATH" >&2
  echo "" >&2
  echo "Database schema changes MUST go through Alembic migrations:" >&2
  echo "  - <module>/migrations/versions/" >&2
  echo "" >&2
  echo "Create a new migration:" >&2
  echo "  cd <module> && alembic revision -m 'description_of_change'" >&2
  exit 2
fi

# Check for SQLAlchemy Alembic operations (op.create_table, op.add_column, etc.)
if echo "$NEW_CONTENT" | grep -qE 'op\.(create_table|drop_table|add_column|drop_column|alter_column|create_index|drop_index|rename_table|create_foreign_key|drop_constraint)'; then
  echo "BLOCKED: Alembic operations (op.*) detected outside of migration files." >&2
  echo "" >&2
  echo "  File: $FILE_PATH" >&2
  echo "" >&2
  echo "Alembic operations belong in migration files only:" >&2
  echo "  - <module>/migrations/versions/" >&2
  exit 2
fi
Changes

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.

  1. 8d ago First seen · 71 lines · 11 tokens per session scan A d6e8ad5eb6ec

Subscribe to this mod's changes

hf.enforce-migrations is a skill published in the GitHub repository T-rav/hydraflow (5 stars, last pushed 3d ago), licensed Apache-2.0. It adds 11 tokens to every session and 680 once invoked, about $0.0001 per session on Opus 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.

Related

Other skills, from other repositories

moai-platform-database-cloud

Cloud database platform specialist covering Neon (serverless PostgreSQL), Supabase (PostgreSQL 16 with real-time), and Firebase Firestore (NoSQL with offline sync). Use when choosing or setting up cloud databases.

modu-ai/moai-adk · 51 tokens

chroma-integration

Chroma local vector database setup and operations for development and production.

a5c-ai/babysitter · 17 tokens

milvus-integration

Milvus distributed vector database configuration for large-scale RAG applications.

a5c-ai/babysitter · 17 tokens

sync

Run /sync as the last step after a change is complete, around merge, to keep durable knowledge current. Updates root and nested AGENTS.md, reconciles the scope from repo evidence, and flags specs the change made stale. Surgical edits only: it adds lines, and rewrites single lines it owns. Never a whole section, never…

jsmastery-pro/skills · 73 tokens

debug

Run /debug to find and fix a bug's root cause: a test failing for an unclear reason, /check verify finding a failure, or behavior being wrong. Runs a reproduce, localize, hypothesize, test, fix, verify loop, makes the minimal fix, and hands a regression test to /test. No features, no extra refactors.

jsmastery-pro/skills · 74 tokens

architect

Run /architect when choosing between approaches, designing a feature or page, picking a tech stack, or when /develop says a decision is owed, anytime a load bearing technical decision is unmade. Asks deep questions, recommends an answer, and writes a build spec to docs/specs/. Owns all spec files.

jsmastery-pro/skills · 66 tokens