Agent Skillsrmyndharis/antigravity-skills › database-migration

database-migration

GitHub

用于跨ORM(Sequelize, TypeORM, Prisma)执行数据库迁移、架构转换及数据模型重构。支持零停机部署策略、数据转换、版本升级及回滚操作,提供具体实施步骤与验证方法。

skills/database-migration/SKILL.md rmyndharis/antigravity-skills

Trigger Scenarios

需要迁移数据库或更改架构 在不同ORM间切换 执行零停机部署 进行数据转换或回滚

Install

npx skills add rmyndharis/antigravity-skills --skill database-migration -g -y
More Options

Use without installing

npx skills use rmyndharis/antigravity-skills@database-migration

指定 Agent (Claude Code)

npx skills add rmyndharis/antigravity-skills --skill database-migration -a claude-code -g -y

安装 repo 全部 skill

npx skills add rmyndharis/antigravity-skills --all -g -y

预览 repo 内 skill

npx skills add rmyndharis/antigravity-skills --list

SKILL.md

Frontmatter
{
    "name": "database-migration",
    "description": "Execute database migrations across ORMs and platforms with zero-downtime strategies, data transformation, and rollback procedures. Use when migrating databases, changing schemas, performing data transformations, or implementing zero-downtime deployment strategies."
}

Database Migration

Master database schema and data migrations across ORMs (Sequelize, TypeORM, Prisma), including rollback strategies and zero-downtime deployments.

Do not use this skill when

  • The task is unrelated to database migration
  • You need a different domain or tool outside this scope

Instructions

  • Clarify goals, constraints, and required inputs.
  • Apply relevant best practices and validate outcomes.
  • Provide actionable steps and verification.

Use this skill when

  • Migrating between different ORMs
  • Performing schema transformations
  • Moving data between databases
  • Implementing rollback procedures
  • Zero-downtime deployments
  • Database version upgrades
  • Data model refactoring

ORM Migrations

Sequelize Migrations

// migrations/20231201-create-users.js
module.exports = {
  up: async (queryInterface, Sequelize) => {
    await queryInterface.createTable('users', {
      id: {
        type: Sequelize.INTEGER,
        primaryKey: true,
        autoIncrement: true
      },
      email: {
        type: Sequelize.STRING,
        unique: true,
        allowNull: false
      },
      createdAt: Sequelize.DATE,
      updatedAt: Sequelize.DATE
    });
  },

  down: async (queryInterface, Sequelize) => {
    await queryInterface.dropTable('users');
  }
};

// Run: npx sequelize-cli db:migrate
// Rollback: npx sequelize-cli db:migrate:undo

TypeORM Migrations

// migrations/1701234567-CreateUsers.ts
import { MigrationInterface, QueryRunner, Table } from 'typeorm';

export class CreateUsers1701234567 implements MigrationInterface {
  public async up(queryRunner: QueryRunner): Promise<void> {
    await queryRunner.createTable(
      new Table({
        name: 'users',
        columns: [
          {
            name: 'id',
            type: 'int',
            isPrimary: true,
            isGenerated: true,
            generationStrategy: 'increment'
          },
          {
            name: 'email',
            type: 'varchar',
            isUnique: true
          },
          {
            name: 'created_at',
            type: 'timestamp',
            default: 'CURRENT_TIMESTAMP'
          }
        ]
      })
    );
  }

  public async down(queryRunner: QueryRunner): Promise<void> {
    await queryRunner.dropTable('users');
  }
}

// Run: npm run typeorm migration:run
// Rollback: npm run typeorm migration:revert

Prisma Migrations

// schema.prisma
model User {
  id        Int      @id @default(autoincrement())
  email     String   @unique
  createdAt DateTime @default(now())
}

// Generate migration: npx prisma migrate dev --name create_users
// Apply: npx prisma migrate deploy

Schema Transformations

Adding Columns with Defaults

// Safe migration: add column with default
module.exports = {
  up: async (queryInterface, Sequelize) => {
    await queryInterface.addColumn('users', 'status', {
      type: Sequelize.STRING,
      defaultValue: 'active',
      allowNull: false
    });
  },

  down: async (queryInterface) => {
    await queryInterface.removeColumn('users', 'status');
  }
};

Renaming Columns (Zero Downtime)

// Step 1: Add new column
module.exports = {
  up: async (queryInterface, Sequelize) => {
    await queryInterface.addColumn('users', 'full_name', {
      type: Sequelize.STRING
    });

    // Copy data from old column
    await queryInterface.sequelize.query(
      'UPDATE users SET full_name = name'
    );
  },

  down: async (queryInterface) => {
    await queryInterface.removeColumn('users', 'full_name');
  }
};

// Step 2: Update application to use new column

// Step 3: Remove old column
module.exports = {
  up: async (queryInterface) => {
    await queryInterface.removeColumn('users', 'name');
  },

  down: async (queryInterface, Sequelize) => {
    await queryInterface.addColumn('users', 'name', {
      type: Sequelize.STRING
    });
  }
};

Changing Column Types

module.exports = {
  up: async (queryInterface, Sequelize) => {
    // For large tables, use multi-step approach

    // 1. Add new column
    await queryInterface.addColumn('users', 'age_new', {
      type: Sequelize.INTEGER
    });

    // 2. Copy and transform data
    await queryInterface.sequelize.query(`
      UPDATE users
      SET age_new = CAST(age AS INTEGER)
      WHERE age IS NOT NULL
    `);

    // 3. Drop old column
    await queryInterface.removeColumn('users', 'age');

    // 4. Rename new column
    await queryInterface.renameColumn('users', 'age_new', 'age');
  },

  down: async (queryInterface, Sequelize) => {
    await queryInterface.changeColumn('users', 'age', {
      type: Sequelize.STRING
    });
  }
};

Data Transformations

Complex Data Migration

module.exports = {
  up: async (queryInterface, Sequelize) => {
    // Get all records
    const [users] = await queryInterface.sequelize.query(
      'SELECT id, address_string FROM users'
    );

    // Transform each record
    for (const user of users) {
      const addressParts = user.address_string.split(',');

      await queryInterface.sequelize.query(
        `UPDATE users
         SET street = :street,
             city = :city,
             state = :state
         WHERE id = :id`,
        {
          replacements: {
            id: user.id,
            street: addressParts[0]?.trim(),
            city: addressParts[1]?.trim(),
            state: addressParts[2]?.trim()
          }
        }
      );
    }

    // Drop old column
    await queryInterface.removeColumn('users', 'address_string');
  },

  down: async (queryInterface, Sequelize) => {
    // Reconstruct original column
    await queryInterface.addColumn('users', 'address_string', {
      type: Sequelize.STRING
    });

    await queryInterface.sequelize.query(`
      UPDATE users
      SET address_string = CONCAT(street, ', ', city, ', ', state)
    `);

    await queryInterface.removeColumn('users', 'street');
    await queryInterface.removeColumn('users', 'city');
    await queryInterface.removeColumn('users', 'state');
  }
};

Rollback Strategies

Transaction-Based Migrations

module.exports = {
  up: async (queryInterface, Sequelize) => {
    const transaction = await queryInterface.sequelize.transaction();

    try {
      await queryInterface.addColumn(
        'users',
        'verified',
        { type: Sequelize.BOOLEAN, defaultValue: false },
        { transaction }
      );

      await queryInterface.sequelize.query(
        'UPDATE users SET verified = true WHERE email_verified_at IS NOT NULL',
        { transaction }
      );

      await transaction.commit();
    } catch (error) {
      await transaction.rollback();
      throw error;
    }
  },

  down: async (queryInterface) => {
    await queryInterface.removeColumn('users', 'verified');
  }
};

Checkpoint-Based Rollback

module.exports = {
  up: async (queryInterface, Sequelize) => {
    // Create backup table
    await queryInterface.sequelize.query(
      'CREATE TABLE users_backup AS SELECT * FROM users'
    );

    try {
      // Perform migration
      await queryInterface.addColumn('users', 'new_field', {
        type: Sequelize.STRING
      });

      // Verify migration
      const [result] = await queryInterface.sequelize.query(
        "SELECT COUNT(*) as count FROM users WHERE new_field IS NULL"
      );

      if (result[0].count > 0) {
        throw new Error('Migration verification failed');
      }

      // Drop backup
      await queryInterface.dropTable('users_backup');
    } catch (error) {
      // Restore from backup
      await queryInterface.sequelize.query('DROP TABLE users');
      await queryInterface.sequelize.query(
        'CREATE TABLE users AS SELECT * FROM users_backup'
      );
      await queryInterface.dropTable('users_backup');
      throw error;
    }
  }
};

Zero-Downtime Migrations

Blue-Green Deployment Strategy

// Phase 1: Make changes backward compatible
module.exports = {
  up: async (queryInterface, Sequelize) => {
    // Add new column (both old and new code can work)
    await queryInterface.addColumn('users', 'email_new', {
      type: Sequelize.STRING
    });
  }
};

// Phase 2: Deploy code that writes to both columns

// Phase 3: Backfill data
module.exports = {
  up: async (queryInterface) => {
    await queryInterface.sequelize.query(`
      UPDATE users
      SET email_new = email
      WHERE email_new IS NULL
    `);
  }
};

// Phase 4: Deploy code that reads from new column

// Phase 5: Remove old column
module.exports = {
  up: async (queryInterface) => {
    await queryInterface.removeColumn('users', 'email');
  }
};

Cross-Database Migrations

PostgreSQL to MySQL

// Handle differences
module.exports = {
  up: async (queryInterface, Sequelize) => {
    const dialectName = queryInterface.sequelize.getDialect();

    if (dialectName === 'mysql') {
      await queryInterface.createTable('users', {
        id: {
          type: Sequelize.INTEGER,
          primaryKey: true,
          autoIncrement: true
        },
        data: {
          type: Sequelize.JSON  // MySQL JSON type
        }
      });
    } else if (dialectName === 'postgres') {
      await queryInterface.createTable('users', {
        id: {
          type: Sequelize.INTEGER,
          primaryKey: true,
          autoIncrement: true
        },
        data: {
          type: Sequelize.JSONB  // PostgreSQL JSONB type
        }
      });
    }
  }
};

Resources

  • references/orm-switching.md: ORM migration guides
  • references/schema-migration.md: Schema transformation patterns
  • references/data-transformation.md: Data migration scripts
  • references/rollback-strategies.md: Rollback procedures
  • assets/schema-migration-template.sql: SQL migration templates
  • assets/data-migration-script.py: Data migration utilities
  • scripts/test-migration.sh: Migration testing script

Best Practices

  1. Always Provide Rollback: Every up() needs a down()
  2. Test Migrations: Test on staging first
  3. Use Transactions: Atomic migrations when possible
  4. Backup First: Always backup before migration
  5. Small Changes: Break into small, incremental steps
  6. Monitor: Watch for errors during deployment
  7. Document: Explain why and how
  8. Idempotent: Migrations should be rerunnable

Common Pitfalls

  • Not testing rollback procedures
  • Making breaking changes without downtime strategy
  • Forgetting to handle NULL values
  • Not considering index performance
  • Ignoring foreign key constraints
  • Migrating too much data at once

Version History

  • e63f7dd Current 2026-07-05 09:30

Same Skill Collection

skills/accessibility-compliance-accessibility-audit/SKILL.md
skills/agent-orchestration-improve-agent/SKILL.md
skills/agent-orchestration-multi-agent-optimize/SKILL.md
skills/ai-engineer/SKILL.md
skills/airflow-dag-patterns/SKILL.md
skills/angular-migration/SKILL.md
skills/anti-reversing-techniques/SKILL.md
skills/api-design-principles/SKILL.md
skills/api-documenter/SKILL.md
skills/api-testing-observability-api-mock/SKILL.md
skills/application-performance-performance-optimization/SKILL.md
skills/architect-review/SKILL.md
skills/architecture-decision-records/SKILL.md
skills/architecture-patterns/SKILL.md
skills/arm-cortex-expert/SKILL.md
skills/article-illustrations/SKILL.md
skills/async-python-patterns/SKILL.md
skills/attack-tree-construction/SKILL.md
skills/auth-implementation-patterns/SKILL.md
skills/backend-architect/SKILL.md
skills/backend-development-feature-development/SKILL.md
skills/backend-security-coder/SKILL.md
skills/backtesting-frameworks/SKILL.md
skills/bash-defensive-patterns/SKILL.md
skills/bash-pro/SKILL.md
skills/bats-testing-patterns/SKILL.md
skills/bazel-build-optimization/SKILL.md
skills/billing-automation/SKILL.md
skills/binary-analysis-patterns/SKILL.md
skills/blockchain-developer/SKILL.md
skills/business-analyst/SKILL.md
skills/c-pro/SKILL.md
skills/c4-architecture-c4-architecture/SKILL.md
skills/c4-code/SKILL.md
skills/c4-component/SKILL.md
skills/c4-container/SKILL.md
skills/c4-context/SKILL.md
skills/changelog-automation/SKILL.md
skills/cicd-automation-workflow-automate/SKILL.md
skills/cloud-architect/SKILL.md
skills/code-documentation-code-explain/SKILL.md
skills/code-documentation-doc-generate/SKILL.md
skills/code-refactoring-context-restore/SKILL.md
skills/code-refactoring-refactor-clean/SKILL.md
skills/code-refactoring-tech-debt/SKILL.md
skills/code-review-ai-ai-review/SKILL.md
skills/code-review-excellence/SKILL.md
skills/code-reviewer/SKILL.md
skills/codebase-cleanup-deps-audit/SKILL.md
skills/codebase-cleanup-refactor-clean/SKILL.md
skills/codebase-cleanup-tech-debt/SKILL.md
skills/competitive-landscape/SKILL.md
skills/comprehensive-review-full-review/SKILL.md
skills/comprehensive-review-pr-enhance/SKILL.md
skills/conductor-implement/SKILL.md
skills/conductor-manage/SKILL.md
skills/conductor-new-track/SKILL.md
skills/conductor-revert/SKILL.md
skills/conductor-setup/SKILL.md
skills/conductor-status/SKILL.md
skills/conductor-validator/SKILL.md
skills/content-marketer/SKILL.md
skills/context-driven-development/SKILL.md
skills/context-management-context-restore/SKILL.md
skills/context-management-context-save/SKILL.md
skills/context-manager/SKILL.md
skills/cost-optimization/SKILL.md
skills/cpp-pro/SKILL.md
skills/cqrs-implementation/SKILL.md
skills/csharp-pro/SKILL.md
skills/customer-support/SKILL.md
skills/data-engineer/SKILL.md
skills/data-engineering-data-driven-feature/SKILL.md
skills/data-engineering-data-pipeline/SKILL.md
skills/data-quality-frameworks/SKILL.md
skills/data-scientist/SKILL.md
skills/data-storytelling/SKILL.md
skills/database-admin/SKILL.md
skills/database-architect/SKILL.md
skills/database-cloud-optimization-cost-optimize/SKILL.md
skills/database-migrations-migration-observability/SKILL.md
skills/database-migrations-sql-migrations/SKILL.md
skills/database-optimizer/SKILL.md
skills/dbt-transformation-patterns/SKILL.md
skills/debugger/SKILL.md
skills/debugging-strategies/SKILL.md
skills/debugging-toolkit-smart-debug/SKILL.md
skills/defi-protocol-templates/SKILL.md
skills/dependency-management-deps-audit/SKILL.md
skills/dependency-upgrade/SKILL.md
skills/deployment-engineer/SKILL.md
skills/deployment-pipeline-design/SKILL.md
skills/deployment-validation-config-validate/SKILL.md
skills/devops-troubleshooter/SKILL.md
skills/distributed-debugging-debug-trace/SKILL.md
skills/distributed-tracing/SKILL.md
skills/django-pro/SKILL.md
skills/docs-architect/SKILL.md
skills/documentation-generation-doc-generate/SKILL.md
skills/dotnet-architect/SKILL.md
skills/dotnet-backend-patterns/SKILL.md
skills/dx-optimizer/SKILL.md
skills/e2e-testing-patterns/SKILL.md
skills/elixir-pro/SKILL.md
skills/embedding-strategies/SKILL.md
skills/employment-contract-templates/SKILL.md
skills/error-debugging-error-analysis/SKILL.md
skills/error-debugging-error-trace/SKILL.md
skills/error-debugging-multi-agent-review/SKILL.md
skills/error-detective/SKILL.md
skills/error-diagnostics-error-analysis/SKILL.md
skills/error-diagnostics-error-trace/SKILL.md
skills/error-diagnostics-smart-debug/SKILL.md
skills/error-handling-patterns/SKILL.md
skills/event-sourcing-architect/SKILL.md
skills/event-store-design/SKILL.md
skills/fastapi-pro/SKILL.md
skills/fastapi-templates/SKILL.md
skills/firmware-analyst/SKILL.md
skills/flutter-expert/SKILL.md
skills/framework-migration-code-migrate/SKILL.md
skills/framework-migration-deps-upgrade/SKILL.md
skills/framework-migration-legacy-modernize/SKILL.md
skills/frontend-developer/SKILL.md
skills/frontend-mobile-development-component-scaffold/SKILL.md
skills/frontend-mobile-security-xss-scan/SKILL.md
skills/frontend-security-coder/SKILL.md
skills/full-stack-orchestration-full-stack-feature/SKILL.md
skills/gdpr-data-handling/SKILL.md
skills/git-advanced-workflows/SKILL.md
skills/git-pr-workflows-git-workflow/SKILL.md
skills/git-pr-workflows-onboard/SKILL.md
skills/git-pr-workflows-pr-enhance/SKILL.md
skills/github-actions-templates/SKILL.md
skills/gitlab-ci-patterns/SKILL.md
skills/gitops-workflow/SKILL.md
skills/go-concurrency-patterns/SKILL.md
skills/godot-gdscript-patterns/SKILL.md
skills/golang-pro/SKILL.md
skills/grafana-dashboards/SKILL.md
skills/graphql-architect/SKILL.md
skills/haskell-pro/SKILL.md
skills/helm-chart-scaffolding/SKILL.md
skills/hr-pro/SKILL.md
skills/hybrid-cloud-architect/SKILL.md
skills/hybrid-cloud-networking/SKILL.md
skills/hybrid-search-implementation/SKILL.md
skills/incident-responder/SKILL.md
skills/incident-response-incident-response/SKILL.md
skills/incident-response-smart-fix/SKILL.md
skills/incident-runbook-templates/SKILL.md
skills/ios-developer/SKILL.md
skills/istio-traffic-management/SKILL.md
skills/java-pro/SKILL.md
skills/javascript-pro/SKILL.md
skills/javascript-testing-patterns/SKILL.md
skills/javascript-typescript-typescript-scaffold/SKILL.md
skills/julia-pro/SKILL.md
skills/k8s-manifest-generator/SKILL.md
skills/k8s-security-policies/SKILL.md
skills/kpi-dashboard-design/SKILL.md
skills/kubernetes-architect/SKILL.md
skills/langchain-architecture/SKILL.md
skills/legacy-modernizer/SKILL.md
skills/legal-advisor/SKILL.md
skills/linkerd-patterns/SKILL.md
skills/llm-application-dev-ai-assistant/SKILL.md
skills/llm-application-dev-langchain-agent/SKILL.md
skills/llm-application-dev-prompt-optimize/SKILL.md
skills/llm-evaluation/SKILL.md
skills/machine-learning-ops-ml-pipeline/SKILL.md
skills/malware-analyst/SKILL.md
skills/market-sizing-analysis/SKILL.md
skills/memory-forensics/SKILL.md
skills/memory-safety-patterns/SKILL.md
skills/mermaid-expert/SKILL.md
skills/microservices-patterns/SKILL.md
skills/minecraft-bukkit-pro/SKILL.md
skills/ml-engineer/SKILL.md
skills/ml-pipeline-workflow/SKILL.md
skills/mlops-engineer/SKILL.md
skills/mobile-developer/SKILL.md
skills/mobile-security-coder/SKILL.md
skills/modern-javascript-patterns/SKILL.md
skills/monorepo-architect/SKILL.md
skills/monorepo-management/SKILL.md
skills/mtls-configuration/SKILL.md
skills/multi-cloud-architecture/SKILL.md
skills/multi-platform-apps-multi-platform/SKILL.md
skills/network-engineer/SKILL.md
skills/nextjs-app-router-patterns/SKILL.md
skills/nft-standards/SKILL.md
skills/nodejs-backend-patterns/SKILL.md
skills/nx-workspace-patterns/SKILL.md
skills/observability-engineer/SKILL.md
skills/observability-monitoring-monitor-setup/SKILL.md
skills/observability-monitoring-slo-implement/SKILL.md
skills/on-call-handoff-patterns/SKILL.md
skills/openapi-spec-generation/SKILL.md
skills/payment-integration/SKILL.md
skills/paypal-integration/SKILL.md
skills/pci-compliance/SKILL.md
skills/performance-engineer/SKILL.md
skills/performance-testing-review-ai-review/SKILL.md
skills/performance-testing-review-multi-agent-review/SKILL.md
skills/php-pro/SKILL.md
skills/posix-shell-pro/SKILL.md
skills/postgresql/SKILL.md
skills/postmortem-writing/SKILL.md
skills/projection-patterns/SKILL.md
skills/prometheus-configuration/SKILL.md
skills/prompt-engineer/SKILL.md
skills/prompt-engineering-patterns/SKILL.md
skills/protocol-reverse-engineering/SKILL.md
skills/python-packaging/SKILL.md
skills/python-performance-optimization/SKILL.md
skills/python-pro/SKILL.md
skills/python-testing-patterns/SKILL.md
skills/quant-analyst/SKILL.md
skills/rag-implementation/SKILL.md
skills/react-modernization/SKILL.md
skills/react-native-architecture/SKILL.md
skills/react-state-management/SKILL.md
skills/reference-builder/SKILL.md
skills/reverse-engineer/SKILL.md
skills/risk-manager/SKILL.md
skills/risk-metrics-calculation/SKILL.md
skills/ruby-pro/SKILL.md
skills/rust-async-patterns/SKILL.md
skills/rust-pro/SKILL.md
skills/saga-orchestration/SKILL.md
skills/sales-automator/SKILL.md
skills/sast-configuration/SKILL.md
skills/scala-pro/SKILL.md
skills/screen-reader-testing/SKILL.md
skills/search-specialist/SKILL.md
skills/secrets-management/SKILL.md
skills/security-auditor/SKILL.md
skills/security-compliance-compliance-check/SKILL.md
skills/security-requirement-extraction/SKILL.md
skills/security-scanning-security-dependencies/SKILL.md
skills/security-scanning-security-hardening/SKILL.md
skills/security-scanning-security-sast/SKILL.md
skills/seo-authority-builder/SKILL.md
skills/seo-cannibalization-detector/SKILL.md
skills/seo-content-auditor/SKILL.md
skills/seo-content-planner/SKILL.md
skills/seo-content-refresher/SKILL.md
skills/seo-content-writer/SKILL.md
skills/seo-keyword-strategist/SKILL.md
skills/seo-meta-optimizer/SKILL.md
skills/seo-snippet-hunter/SKILL.md
skills/seo-structure-architect/SKILL.md
skills/service-mesh-expert/SKILL.md
skills/service-mesh-observability/SKILL.md
skills/shellcheck-configuration/SKILL.md
skills/similarity-search-patterns/SKILL.md
skills/slo-implementation/SKILL.md
skills/solidity-security/SKILL.md
skills/spark-optimization/SKILL.md
skills/sql-optimization-patterns/SKILL.md
skills/sql-pro/SKILL.md
skills/startup-analyst/SKILL.md
skills/startup-business-analyst-business-case/SKILL.md
skills/startup-business-analyst-financial-projections/SKILL.md
skills/startup-business-analyst-market-opportunity/SKILL.md
skills/startup-financial-modeling/SKILL.md
skills/startup-metrics-framework/SKILL.md
skills/stride-analysis-patterns/SKILL.md
skills/stripe-integration/SKILL.md
skills/systems-programming-rust-project/SKILL.md
skills/tailwind-design-system/SKILL.md
skills/tdd-orchestrator/SKILL.md
skills/tdd-workflows-tdd-green/SKILL.md
skills/tdd-workflows-tdd-red/SKILL.md
skills/team-collaboration-issue/SKILL.md
skills/team-collaboration-standup-notes/SKILL.md
skills/team-composition-analysis/SKILL.md
skills/temporal-python-pro/SKILL.md
skills/temporal-python-testing/SKILL.md
skills/terraform-module-library/SKILL.md
skills/terraform-specialist/SKILL.md
skills/test-automator/SKILL.md
skills/threat-mitigation-mapping/SKILL.md
skills/threat-modeling-expert/SKILL.md
skills/track-management/SKILL.md
skills/turborepo-caching/SKILL.md
skills/tutorial-engineer/SKILL.md
skills/typescript-advanced-types/SKILL.md
skills/typescript-pro/SKILL.md
skills/ui-ux-designer/SKILL.md
skills/ui-visual-validator/SKILL.md
skills/unit-testing-test-generate/SKILL.md
skills/unity-developer/SKILL.md
skills/unity-ecs-patterns/SKILL.md
skills/uv-package-manager/SKILL.md
skills/vector-database-engineer/SKILL.md
skills/vector-index-tuning/SKILL.md
skills/wcag-audit-patterns/SKILL.md
skills/web3-testing/SKILL.md
skills/workflow-orchestration-patterns/SKILL.md
skills/workflow-patterns/SKILL.md
skills/tdd-workflows-tdd-cycle/SKILL.md
skills/tdd-workflows-tdd-refactor/SKILL.md

Metadata

Files
0
Version
e63f7dd
Hash
8ee75b08
Indexed
2026-07-05 09:30

Accueil - Wiki
Copyright © 2011-2026 iteam. Current version is 2.155.2. UTC+08:00, 2026-07-11 23:36
浙ICP备14020137号-1 $Carte des visiteurs$