بنقرة واحدة
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 المهني
Internal POSIX runtime helpers for agente-00c/feature-00c orchestrators (state, lock, validation, hashes, secrets filter). NOT user-invocable.
Task status / backlog progress report; identifies tasks ready to start. Triggers: "revisar tarefas", "status das tarefas", "progresso do projeto", "review tasks". Skip for executing (execute-task) or creating tasks (create-tasks).
GLOBAL feature portfolio dashboard — compare progress, suggest archive/abandon/prioritize. Triggers: "status global", "portfolio de features", "dashboard de features", "comparar features". Cross-feature; for single feature deep-dive use review-task.
Convert a natural-language feature description into SDD spec (user stories, FRs, success criteria). Triggers: "specify", "criar spec", "nova feature", "feature spec". Skip for refining an existing spec (clarify).
Audit a GOB Go microservice against all project conventions and patterns
Requirements quality gate ("unit tests for English") by domain (ux/api/security/performance/a11y). Triggers: "checklist", "validar requisitos", "quality gate". Validates REQUIREMENT quality, not code.
| name | go-add-migration |
| description | Create properly named PostgreSQL migration files for GOB microservices |
| allowed-tools | ["Read","Write","Glob","Grep","Bash","Edit"] |
Create properly named PostgreSQL migration files for a GOB microservice following all project conventions.
"add migration", "new migration", "criar migration", "nova migration", "create migration"
$ARGUMENTS 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} up