new-migration

star 6.5k

Create a new Fleet database migration with timestamp naming, Up function, init registration, and test file.

fleetdm By fleetdm schedule Updated 4/6/2026

name: new-migration description: Create a new Fleet database migration with timestamp naming, Up function, init registration, and test file. allowed-tools: Bash(date *), Bash(make migration *), Bash(go build *), Bash(go test ), Bash(MYSQL_TEST), Read, Write, Grep, Glob model: sonnet effort: medium

Create a New Database Migration

Create a migration for: $ARGUMENTS

Process

1. Generate Timestamp and Name

Use make migration name=CamelCaseName if available, or generate manually:

date +%Y%m%d%H%M%S

The migration name should be descriptive CamelCase (e.g., AddRecoveryLockAutoRotateAt, CreateTableSoftwareInstallers).

2. Create Migration File

Location: server/datastore/mysql/migrations/tables/{TIMESTAMP}_{Name}.go

package tables

import "database/sql"

func init() {
    MigrationClient.AddMigration(Up_{TIMESTAMP}, Down_{TIMESTAMP})
}

func Up_{TIMESTAMP}(tx *sql.Tx) error {
    _, err := tx.Exec(`
        -- SQL statement here
    `)
    return err
}

func Down_{TIMESTAMP}(tx *sql.Tx) error {
    return nil
}

3. Create Test File

Location: server/datastore/mysql/migrations/tables/{TIMESTAMP}_{Name}_test.go

package tables

import (
    "testing"

    "github.com/stretchr/testify/require"
)

func TestUp_{TIMESTAMP}(t *testing.T) {
    db := applyUpToPrev(t)

    // Set up test data before migration if needed

    applyNext(t, db)

    // Verify migration applied correctly
    // e.g., check table exists, columns added, data migrated
}

4. Verify

  • Run go build ./server/datastore/mysql/migrations/... to check compilation
  • Run MYSQL_TEST=1 go test -run TestUp_{TIMESTAMP} ./server/datastore/mysql/migrations/tables/ to test the migration

Rules

  • Every migration MUST have a test file
  • Down migrations are always no-ops (return nil) — Fleet doesn't use rollback migrations
  • Never modify existing migration files — create new ones
  • Data migrations go in the data/ subdirectory
Install via CLI
npx skills add https://github.com/fleetdm/fleet --skill new-migration
Repository Details
star Stars 6,489
call_split Forks 914
navigation Branch main
article Path SKILL.md
More from Creator