Source profileQuality 93/100

event4u-app/agent-config/src/skills/laravel-migration/SKILL.md

laravel-migration

Use when creating a Laravel migration — table prefixes, column naming, multi-tenant awareness, php artisan make:migration. Other stacks: use stack-native migration tooling.

Source repository stars
9
Declared platforms
0
Static risk flags
0
Last source update
2026-08-28
Source checked
2026-08-28

Decision brief

What it does: where it fits

Other stacks: use stack-native migration tooling.

Best for

  • Use this skill when the user asks to create a database migration, add a column, create a table, or modify the schema.

Not for

  • Tasks that require unconfirmed production actions or broad system permissions.
  • Environments where the pinned source and install steps cannot be inspected.

Compatibility matrix

Platform support, with evidence labels

PlatformStatusEvidenceWhat to check
CodexNot declaredNo explicit evidencePortability before use
Claude CodeNot declaredNo explicit evidencePortability before use
CursorNot declaredNo explicit evidencePortability before use
Gemini CLINot declaredNo explicit evidencePortability before use
Open the compatibility checker

Installation

Inspect first. Install second.

The source command is displayed only when detected. A safe inspection prompt is always available so your agent can explain every action before execution.

Source-detected install commandSource
npx skills add https://github.com/event4u-app/agent-config --skill "src/skills/laravel-migration"
Safe inspection promptEditorial

Inspect the Agent Skill "laravel-migration" from https://github.com/event4u-app/agent-config/blob/6a5670b7881a676c0da90d2afb950298087c4ccb/src/skills/laravel-migration/SKILL.md at commit 6a5670b7881a676c0da90d2afb950298087c4ccb. List every install step, command, network request, credential, file read/write, external action, and rollback step. Explain whether it fits my task. Do not install or execute anything until I approve.

Workflow

What the source asks the agent to do

  1. 01

    Procedure: Create a migration

    1. Read conventions — Check ./agents/ and AGENTS.md for table prefixes, column naming, multi-tenant setup. 2. Generate migration — php artisan make:migration createxyztable (or addcolumn, etc.). 3. Write schema — Follow naming conventions, add indexes for WHERE/JOIN columns, use…

    Read conventions — Check ./agents/ and AGENTS.md for table prefixes, column naming, multi-tenant setup.Generate migration — php artisan make:migration createxyztable (or addcolumn, etc.).Write schema — Follow naming conventions, add indexes for WHERE/JOIN columns, use decimal for money.
  2. 02

    Adversarial review

    Before finalizing a migration, run the adversarial-review skill. Focus on the "Database migrations" attack questions: Can this destroy data? Is rollback possible?

    Before finalizing a migration, run the adversarial-review skill. Focus on the "Database migrations" attack questions: Can this destroy data? Is rollback possible?
  3. 03

    When to use

    Use this skill when the user asks to create a database migration, add a column, create a table, or modify the schema.

    Use this skill when the user asks to create a database migration, add a column, create a table, or modify the schema.
  4. 04

    All projects

    Use decimal for money — never float.

    Use decimal for money — never float.Add indexes for columns used in WHERE clauses and JOINs.Match existing column naming patterns in the same table or domain.
  5. 05

    Laravel projects

    Some projects use multiple database connections. Check config/database.php for connections.

    Some projects use multiple database connections. Check config/database.php for connections.Always determine which database the table belongs to before creating a migration.Customer database tables use the cl prefix (e.g. cluser, cllvweather).

Permission review

Static risk signals and limitations

No configured static risk pattern was detected

This is not proof of safety. Runtime behavior, indirect dependencies, and hidden external systems are outside the static scan.

Evidence record

Why each signal appears

EvidenceSourceComputedTestedEditorial
SignalValueEvidence typeMeaning
Quality score93/100ComputedDocumentation, specificity, maintenance, and trust rules
Repository stars9SourceRepository attention, not individual Skill quality
Compatibility0 platformsSourceDeclared in the catalog source record
Usage guideautomated source guideEditorialGenerated or reviewed according to the visible evidence level

Pinned source

Provenance and original SKILL.md

Repository
event4u-app/agent-config
Skill path
src/skills/laravel-migration/SKILL.md
Commit
6a5670b7881a676c0da90d2afb950298087c4ccb
License
MIT
Collected
2026-08-28
Default branch
main
View the original SKILL.md

laravel-migration

When to use

Use this skill when the user asks to create a database migration, add a column, create a table, or modify the schema.

Procedure: Create a migration

  1. Read conventions — Check ./agents/ and AGENTS.md for table prefixes, column naming, multi-tenant setup.
  2. Generate migrationphp artisan make:migration create_xyz_table (or add_column, etc.).
  3. Write schema — Follow naming conventions, add indexes for WHERE/JOIN columns, use decimal for money.
  4. Verify — Run migration (php artisan migrate), then rollback (php artisan migrate:rollback) to confirm reversibility.

All projects

  • Use decimal for money — never float.
  • Add indexes for columns used in WHERE clauses and JOINs.
  • Match existing column naming patterns in the same table or domain.
  • Declare recovery: a reversible down(), or a roll-forward plan in the file (see § The recovery contract below). Silence is the violation.

Laravel projects

Multi-database architecture

Some projects use multiple database connections. Check config/database.php for connections.

CheckHow
Available connectionsconfig/database.php'connections' array
Migration directoriesdatabase/migrations/ (default), check for additional directories
Custom migrate commandsphp artisan list migrate — look for project-specific commands

Always determine which database the table belongs to before creating a migration.

API database migration

php artisan make:migration create_example_table
return new class extends Migration {
    public function up(): void
    {
        Schema::connection('api_database')->create('example_table', function (Blueprint $table): void {
            $table->id();
            $table->unsignedBigInteger('customer_id');
            $table->string('name');
            $table->boolean('is_active')->default(true);
            $table->timestamps();
            $table->softDeletes();

            $table->foreign('customer_id')
                ->references('id')
                ->on('customers')
                // Choose the referential action; never inherit it from a
                // template. See "Referential action is a decision" below.
                ->onDelete('cascade'); // cascade: rows here are expendable
                                       // WITHOUT their customer

            $table->index('is_active');
        });
    }

    public function down(): void
    {
        Schema::connection('api_database')->dropIfExists('example_table');
    }
};

Customer database migration

php artisan make:migration:customer AddWeatherColumn --table=cl_lv_weather

Customer database tables use the cl_ prefix (e.g. cl_user, cl_lv_weather).

Adding a column (with explicit connection)

return new class extends Migration {
    public function up(): void
    {
        Schema::connection('my_connection')->table('example', function (Blueprint $table): void {
            $table->unsignedInteger('new_column')->after('existing_column');
        });
    }

    public function down(): void
    {
        Schema::connection('my_connection')->table('example', function (Blueprint $table): void {
            $table->dropColumn('new_column');
        });
    }
};

Running migrations

# Default connection
php artisan migrate                           # development
php artisan migrate --env=testing             # testing

# Multi-tenant / custom — check AGENTS.md or module docs for project-specific commands
# Example: php artisan migrate:tenants, php artisan migrate --database=tenant

Composer / legacy projects

  • Check where existing migrations live (e.g. core/migrations/).
  • Use the existing migration format and naming conventions in the project.

Column conventions

  • Foreign keys: {entity}_id (e.g. customer_id, user_id)
  • Booleans: is_ prefix (e.g. is_active, is_default)
  • Dates: descriptive suffix (e.g. upload_date, deleted_at)
  • Always use unsignedBigInteger for foreign keys referencing id() columns
  • Use ->after('column') to place new columns logically

Output format

  1. Migration file with up() and down() methods
  2. Model updates if columns or relationships changed

The recovery contract — one obligation, two branches

Every migration declares one of these, and silence is the violation:

  1. a down() that restores the prior state; or
  2. a roll-forward recovery plan, written in the migration file itself, for the cases where restoration is genuinely impossible — a completed destructive backfill, a dropped column whose data is gone.

The second branch is not a lighter obligation. A migration taking it records, in its own file comments, all three of:

  1. why restoration is impossible, with the evidence — the data was checked and is unrecoverable, not assumed to be;
  2. the ordered recovery procedure — the steps, the inputs each needs, and the criteria that say recovery succeeded;
  3. the responsible recovery owner.

Vague intent or missing detail is the violation. The plan lives in the migration file and lands in the same diff, because a plan documented "later" somewhere else is a plan nobody can review at the moment it matters.

Referential action is a decision

The template above labels its onDelete('cascade') as one branch, not a default. Copying it unchanged is how a delete of one customer silently removes records that had independent value.

The child row, without its parent, isActionWhat happens
expendable — it only means something as part of the parentcascadedeleted with the parent
self-valued — it is a record in its own right (an invoice, an audit row, a payment)restrict (or no action)the parent delete FAILS until the child is dealt with
survivable — it outlives the parent with the link removedset nullthe column is nulled; requires a nullable column

Two consequences worth stating because they are the ones missed:

  • restrict is the safe default for anything a finance, audit, or legal reader would expect to still exist. A failed delete is a conversation; a cascaded delete is a recovery.
  • set null needs the foreign-key column to be nullable, and it needs the application to handle the orphan state. Choosing it without both is choosing a constraint error later.

Soft deletes do not interact with this: onDelete fires on a real DELETE, so a soft-deleting parent never triggers it. If the model soft-deletes, the referential action describes what happens on a force-delete or a purge, and that is the case to decide against.

Gotcha

  • Always check if the table/column already exists before creating the migration — the model doesn't always check.
  • Multi-tenant migrations need special handling — customer tables use different prefixes.
  • Don't modify existing migrations that have been deployed — create a new migration instead.
  • The model forgets ->after('column') for column ordering — MariaDB respects it, and it matters for readability.

Do NOT

  • Do NOT create migrations without specifying the correct connection when multiple databases exist.
  • Do NOT create tables without checking the project's naming conventions (prefixes, casing).
  • Do NOT use raw SQL in migrations when Schema builder works.
  • Do NOT leave recovery undeclared — ship a down() that restores the prior state, or the three-part roll-forward plan in the migration file. Neither is optional; choosing between them is.
  • Do NOT use float for money — use decimal.
  • Do NOT forget indexes on foreign keys and frequently filtered columns.

Adversarial review

Before finalizing a migration, run the adversarial-review skill. Focus on the "Database migrations" attack questions: Can this destroy data? Is rollback possible?

Auto-trigger keywords

  • database migration
  • create migration
  • table prefix
  • column naming
  • add column
  • create table

Frequently asked questions

What to verify before installation and use

What does the laravel-migration source document cover?

Other stacks: use stack-native migration tooling.

How do I install laravel-migration?

The source record exposes this install command: npx skills add https://github.com/event4u-app/agent-config --skill "src/skills/laravel-migration". Inspect the command and pinned source before running it.

Alternatives

Compare before choosing

Computed 10045,960

coreyhaines31/marketingskills

ab-testing

When the user wants to plan, design, or implement an A/B test or experiment, or build a growth experimentation program. Also use when the user mentions "A/B test," "split test," "experiment," "test this change," "variant copy," "multivariate test," "hypothesis," "should I test this," "which version is better," "test two versions," "statistical significance," "how long should I run this test," "growth experiments," "experiment velocity," "experiment backlog," "ICE score," "experimentation program

Computed 10029,236

garrytan/gbrain

bulk-ingestion

End-to-end discipline for turning any large data source (audio libraries, email takeouts, document corpora, chat exports, API dumps) into brain pages at scale. The lifecycle spine: SCHEMA → ACCESS → TRIAL → EVALUATE → IMPROVE → CODIFY → TEST → SKILLIFY → BULK → MONITOR. State is tracked in a durable JSON manifest (see MANIFEST-PATTERN.md) so any crash, session boundary, or subagent fan-out resumes from ground truth instead of memory.

Computed 10025,136

alirezarezvani/claude-skills

app-store-optimization

App Store Optimization (ASO) toolkit for researching keywords, analyzing competitor rankings, generating metadata suggestions, and improving app visibility on Apple App Store and Google Play Store. Use when the user asks about ASO, app store rankings, app metadata, app titles and descriptions, app store listings, app visibility, or mobile app marketing on iOS or Android. Supports keyword research and scoring, competitor keyword analysis, metadata optimization, A/B test planning, launch checklist

Computed 1005,277

dotnet/skills

migrate-vstest-to-mtp

Migrates .NET test projects from VSTest to Microsoft.Testing.Platform (MTP). Use when user asks to "migrate to MTP", "switch from VSTest", "enable Microsoft.Testing.Platform", "use MTP runner", set OutputType=Exe only for test projects in Directory.Build.props, or mentions EnableMSTestRunner, EnableNUnitRunner, or UseMicrosoftTestingPlatformRunner. USE FOR: MTP behavioral differences vs VSTest (exit code 8, zero tests discovered, --ignore-exit-code, TESTINGPLATFORM_EXITCODE_IGNORE); centralizing