بنقرة واحدة
go-add-migration
Create properly named PostgreSQL migration files for GOB microservices
التثبيت باستخدام Codex أو Claude انسخ هذا Prompt والصقه في Codex أو Claude أو مساعد آخر ليراجع صفحة Skill ويثبّتها لك.
القائمة
Create properly named PostgreSQL migration files for GOB microservices
التثبيت باستخدام Codex أو Claude انسخ هذا Prompt والصقه في Codex أو Claude أو مساعد آخر ليراجع صفحة Skill ويثبّتها لك.
استنادا إلى تصنيف SOC المهني
| name | go-add-migration |
| description | Create properly named PostgreSQL migration files for GOB microservices |
Adapted from JotJunior/cstk skill go-add-migration at commit 35922cf.
Use this as a Codex skill; follow local repository instructions and Codex tool names when source text mentions Claude-specific commands or slash commands.
Create properly named PostgreSQL migration files for a GOB microservice following all project conventions.
"add migration", "new migration", "criar migration", "nova migration", "create migration"
the user's request should specify:
gob-member-service) — requiredBefore generating files, read:
ls services/{service}/migrations/ to determine the next 3-digit sequence numberservices/{service}/go.mod to confirm the service exists and get module path| Service | Schema |
|---|---|
| gob-auth-service | auth |
| gob-member-service | member |
| gob-lodge-service | lodge |
| gob-session-service | session |
| gob-process-service | process |
| gob-election-service | election |
| gob-bulletin-service | bulletin |
| gob-partnership-service | partnership |
| gob-audit-service | audit |
| gob-report-service | report |
| gob-notification-service | notification |
| gob-financial-service | financial |
| gob-assistance-service | assistance |
| gob-whatsapp-service | |
| gob-migration-service | migration |
If the service is not listed, extract the schema name from the service name by removing the gob- prefix and -service suffix.
services/{service}/migrations/012_xxx.up.sql → 12)highest + 1, zero-padded to 3 digits (e.g., 013).up.sql and .down.sql filesFile naming: {NNN}_{description_in_snake_case}.up.sql and {NNN}_{description_in_snake_case}.down.sql
Up migration:
-- {NNN}: Create {table_name} table
CREATE TABLE IF NOT EXISTS {schema}.{table_name} (
id UUID PRIMARY KEY DEFAULT gen_random_uuid(),
-- entity-specific columns here --
created_at TIMESTAMP NOT NULL DEFAULT NOW(),
updated_at TIMESTAMP
);
-- Indexes
CREATE INDEX IF NOT EXISTS idx_{table_name}_{column} ON {schema}.{table_name}({column});
-- Comments
COMMENT ON TABLE {schema}.{table_name} IS '{description}';
Down migration:
DROP TABLE IF EXISTS {schema}.{table_name} CASCADE;
Up migration:
-- {NNN}: Add {column_name} to {table_name}
ALTER TABLE {schema}.{table_name}
ADD COLUMN IF NOT EXISTS {column_name} {type} {constraints};
Down migration:
ALTER TABLE {schema}.{table_name}
DROP COLUMN IF EXISTS {column_name};
Up migration:
-- {NNN}: Create index on {table_name}.{column}
CREATE INDEX IF NOT EXISTS idx_{table_name}_{column} ON {schema}.{table_name}({column});
Down migration:
DROP INDEX IF EXISTS {schema}.idx_{table_name}_{column};
Up migration:
-- {NNN}: Seed {table_name} with default data
INSERT INTO {schema}.{table_name} (col1, col2, ...)
VALUES
('value1', 'value2'),
('value3', 'value4')
ON CONFLICT DO NOTHING;
Down migration:
-- Remove seeded data
DELETE FROM {schema}.{table_name}
WHERE col1 IN ('value1', 'value3');
Up migration:
-- {NNN}: {description}
ALTER TABLE {schema}.{table_name}
{alterations};
Down migration:
-- Revert: {description}
ALTER TABLE {schema}.{table_name}
{reverse_alterations};
Schema prefix: ALWAYS use {schema}.{table_name} (e.g., member.members, process.process_definitions). Never use unqualified table names.
CIMs: When inserting CIM values, always use 7-digit zero-padded format. Use LPAD(cim::text, 7, '0') for JOINs with legacy data.
Portuguese accents: Always use proper accents in seed data text (e.g., "Administracao" is WRONG, "Administracao" is WRONG, "Administracao" -> use "Administrativo" etc.). Example correct values: "Iniciacao", "Elevacao", "Exaltacao", "Filiacao".
Down migrations must be idempotent: Always use IF EXISTS, CASCADE where appropriate. Running down twice must not error.
Timestamps: Use TIMESTAMP NOT NULL DEFAULT NOW() for created_at. Use TIMESTAMP (nullable) for updated_at.
UUIDs: Use UUID PRIMARY KEY DEFAULT gen_random_uuid() for primary keys.
Enums: Prefer VARCHAR or TEXT with CHECK constraints over PostgreSQL ENUM types. This avoids migration complexity when adding new values.
Foreign keys: Include ON DELETE behavior explicitly (CASCADE, SET NULL, or RESTRICT).
Boolean defaults: Always specify DEFAULT false or DEFAULT true for boolean columns.
Naming conventions:
snake_case, plural (e.g., members, process_definitions)snake_case (e.g., lodge_id, created_at)idx_{table}_{column} (e.g., idx_members_lodge_id)uniq_{table}_{column} (e.g., uniq_members_cim)fk_{table}_{referenced_table} (e.g., fk_members_lodges)After creating both files:
make migrate-up SERVICE={service-name} (for local dev)./scripts/migrate.sh --service={service-name} upThis skill includes material adapted from JotJunior/cstk, licensed under MIT. The copyright and permission notice are included in references/cstk-license.md.
Strategic critique of an idea/plan/decision. Triggers: "me aconselhe", "critique meu plano", "avalie minha ideia", "feedback estrategico", "advisor". Skip for technical tasks (use bugfix/execute-task).
Internal POSIX runtime helpers for agente-00c/feature-00c orchestrators (state, lock, validation, hashes, secrets filter). NOT user-invocable.
Cross-artifact SDD consistency analysis (spec/plan/tasks/constitution) — read-only. Triggers: "analyze", "cross-check", "auditar artefatos", "validar spec vs tasks". Skip for single-document validation (use validate-documentation).
Apply Codex usage insights to current project — improve AGENTS.md, hooks, workflows. Triggers: "aplicar insights", "otimizar fluxo", "melhorar agents.md". This is the APPLY step that consumes the insights/usage-analysis output, not the insights generation step itself.
Structured project discovery interview (vision, users, constraints, stack). Triggers: "briefing", "discovery", "iniciar projeto", "kickoff". Skip if briefing already complete and user did not ask for update.
Multi-layer bug investigation and fix (traces across services before patching). Triggers: "bugfix", "fix bug", "corrigir bug", "debug", "investigar bug". Skip for new feature work (use execute-task/specify).