[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"skill:01M6EZFJPM23P1NAK8N5RC36VB":3,"skill-same:01M6EZFJPM23P1NAK8N5RC36VB":100},{"skillNo":4,"name":5,"nameZh":6,"description":7,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":16,"categories":17,"keywords":31,"publishedAt":52,"linkOnly":53,"markdownContent":54,"markdownBody":55,"frontMatter":56,"refName":78,"commitSha":79,"skillDirectory":80,"forksCount":81,"repositoryHtmlUrl":82,"repositoryHomepageUrl":6,"ownerHtmlUrl":83,"ownerBlogUrl":6,"ownerDescription":84,"updatedAt":85,"install":86,"resources":99},"01M6EZFJPM23P1NAK8N5RC36VB","database-migration-patterns",null,"Manage database schema changes safely with migration tools, zero-downtime strategies, and rollback procedures. Covers Alembic, SQL migrations, data migrations, and testing strategies. Triggers on database migration, schema changes, or Alembic configuration requests.","luokai0\u002Fai-agent-skills-by-luo-kai","luokai0","https:\u002F\u002Favatars.githubusercontent.com\u002Fu\u002F266954973?v=4","01M6E16VNT42JB8B3X3254QWJ7","luo kai","01M6E16VTFVP6S5XJF1V1MPV90",14,"MIT","https:\u002F\u002Fgithub.com\u002Fluokai0\u002Fai-agent-skills-by-luo-kai\u002Fblob\u002Fmain\u002Fai-agent-skills\u002F21-external-registries\u002F18-organvm-skills\u002Fdevelopment\u002Fdatabase-migration-patterns\u002FSKILL.md",[18,23,26],{"categoryNo":19,"categoryName":20,"taxonomyType":21,"taxonomyTypeDesc":22},"01JBSEEDCAT000000000000008","测试与质量","SCENARIO","使用场景",{"categoryNo":24,"categoryName":25,"taxonomyType":21,"taxonomyTypeDesc":22},"01JBSEEDCAT000000000000010","后端与接口",{"categoryNo":27,"categoryName":28,"taxonomyType":29,"taxonomyTypeDesc":30},"01JBSEEDCAT000000000000033","数据分析师","PROFESSION","适用职业",[32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51],"database migration patterns","database","database migration","migration","patterns","manage","advanced","testing strategies","database schema","triggers","project","zero-downtime","postgres","testing","schema","packaging","fastapi","Meta","ZeRO","python","2026-11-10 10:12:30",false,"---\nname: database-migration-patterns\ndescription: Manage database schema changes safely with migration tools, zero-downtime strategies, and rollback procedures. Covers Alembic, SQL migrations, data migrations, and testing strategies. Triggers on database migration, schema changes, or Alembic configuration requests.\nlicense: MIT\ncomplexity: intermediate\ntime_to_learn: 30min\ntags:\n  - database\n  - migrations\n  - alembic\n  - schema\n  - zero-downtime\ngovernance_phases: [build, prove]\norgan_affinity: [organ-iii, organ-vi, meta]\ntriggers: [user-asks-about-migrations, context:database-schema, context:alembic, project-has-alembic-ini]\ncomplements: [python-packaging-patterns, postgres-advanced-patterns, fastapi-patterns]\n---\n\n# Database Migration Patterns\n\nEvolve database schemas safely with versioned, reversible, tested migrations.\n\n## Alembic Setup\n\n```bash\n# Initialize\nalembic init alembic\n\n# Create migration\nalembic revision --autogenerate -m \"add skills table\"\n\n# Run migrations\nalembic upgrade head\n\n# Rollback one step\nalembic downgrade -1\n\n# Show current state\nalembic current\nalembic history\n```\n\n### Configuration\n\n```python\n# alembic\u002Fenv.py\nfrom app.models import Base\nfrom app.config import settings\n\ntarget_metadata = Base.metadata\n\ndef run_migrations_online():\n    connectable = create_async_engine(settings.database_url)\n    async with connectable.connect() as connection:\n        await connection.run_sync(do_run_migrations)\n\ndef do_run_migrations(connection):\n    context.configure(connection=connection, target_metadata=target_metadata)\n    with context.begin_transaction():\n        context.run_migrations()\n```\n\n## Migration Structure\n\n```python\n\"\"\"add skills table\n\nRevision ID: abc123\nRevises: def456\nCreate Date: 2026-03-20 10:00:00\n\"\"\"\nfrom alembic import op\nimport sqlalchemy as sa\n\nrevision = \"abc123\"\ndown_revision = \"def456\"\n\ndef upgrade():\n    op.create_table(\n        \"skills\",\n        sa.Column(\"id\", sa.String(64), primary_key=True),\n        sa.Column(\"name\", sa.String(64), nullable=False, unique=True),\n        sa.Column(\"description\", sa.Text, nullable=False),\n        sa.Column(\"category\", sa.String(32), nullable=False),\n        sa.Column(\"created_at\", sa.DateTime(timezone=True), server_default=sa.func.now()),\n    )\n    op.create_index(\"ix_skills_category\", \"skills\", [\"category\"])\n\ndef downgrade():\n    op.drop_index(\"ix_skills_category\")\n    op.drop_table(\"skills\")\n```\n\n## Zero-Downtime Migration Strategies\n\n### Adding a Column\n\n```python\n# Safe: add nullable column first\ndef upgrade():\n    op.add_column(\"skills\", sa.Column(\"tier\", sa.String(20), nullable=True))\n\n# Later migration: backfill then add constraint\ndef upgrade():\n    op.execute(\"UPDATE skills SET tier = 'community' WHERE tier IS NULL\")\n    op.alter_column(\"skills\", \"tier\", nullable=False, server_default=\"community\")\n```\n\n### Renaming a Column\n\n```python\n# Phase 1: Add new column\ndef upgrade():\n    op.add_column(\"skills\", sa.Column(\"skill_category\", sa.String(32)))\n    op.execute(\"UPDATE skills SET skill_category = category\")\n\n# Phase 2: (after app updated to use new column)\ndef upgrade():\n    op.drop_column(\"skills\", \"category\")\n```\n\n### Removing a Column\n\n```python\n# Phase 1: Stop writing to column (app change)\n# Phase 2: Remove column\ndef upgrade():\n    op.drop_column(\"skills\", \"deprecated_field\")\n```\n\n### Adding an Index\n\n```python\n# Use CONCURRENTLY for zero-downtime\ndef upgrade():\n    op.execute(\"CREATE INDEX CONCURRENTLY ix_skills_name ON skills (name)\")\n\ndef downgrade():\n    op.drop_index(\"ix_skills_name\")\n```\n\n## Data Migrations\n\n```python\n\"\"\"backfill governance metadata\n\nRevision ID: ghi789\n\"\"\"\nfrom alembic import op\nimport sqlalchemy as sa\n\ndef upgrade():\n    # Use raw SQL for large table updates\n    conn = op.get_bind()\n    conn.execute(sa.text(\"\"\"\n        UPDATE skills\n        SET governance_phases = ARRAY['build']\n        WHERE governance_phases IS NULL\n        AND category IN ('development', 'data')\n    \"\"\"))\n    conn.execute(sa.text(\"\"\"\n        UPDATE skills\n        SET governance_phases = ARRAY['prove']\n        WHERE governance_phases IS NULL\n        AND category IN ('security', 'documentation')\n    \"\"\"))\n\ndef downgrade():\n    conn = op.get_bind()\n    conn.execute(sa.text(\"UPDATE skills SET governance_phases = NULL\"))\n```\n\n## Testing Migrations\n\n```python\nimport pytest\nfrom alembic.config import Config\nfrom alembic import command\n\n@pytest.fixture\ndef alembic_config():\n    config = Config(\"alembic.ini\")\n    config.set_main_option(\"sqlalchemy.url\", test_database_url)\n    return config\n\ndef test_upgrade_downgrade(alembic_config):\n    # Full upgrade\n    command.upgrade(alembic_config, \"head\")\n    # Full downgrade\n    command.downgrade(alembic_config, \"base\")\n    # Back to head\n    command.upgrade(alembic_config, \"head\")\n\ndef test_migration_data_integrity(alembic_config, db_session):\n    command.upgrade(alembic_config, \"head\")\n    # Insert test data\n    db_session.execute(sa.text(\"INSERT INTO skills (id, name, description, category) VALUES ('t1', 'test', 'Test skill', 'dev')\"))\n    db_session.commit()\n    # Verify data survives next migration\n    command.upgrade(alembic_config, \"head\")\n    result = db_session.execute(sa.text(\"SELECT name FROM skills WHERE id = 't1'\"))\n    assert result.scalar() == \"test\"\n```\n\n## Migration Checklist\n\n### Before Creating\n\n- [ ] Schema change designed for zero-downtime\n- [ ] Both upgrade and downgrade paths defined\n- [ ] Large table changes use batching\u002FCONCURRENTLY\n\n### Before Deploying\n\n- [ ] Migration tested against staging database\n- [ ] Rollback tested (downgrade works)\n- [ ] Data backup taken\n- [ ] Estimated execution time for large tables\n- [ ] Application compatible with both old and new schema\n\n### After Deploying\n\n- [ ] Migration completed successfully\n- [ ] Application functioning correctly\n- [ ] No performance regressions\n- [ ] Cleanup migration scheduled (if multi-phase)\n\n## Anti-Patterns\n\n- **No downgrade** — Every migration must be reversible\n- **Destructive changes in one step** — Use multi-phase for column renames\u002Fremovals\n- **Mixing schema and data migrations** — Separate into distinct revisions\n- **Manual SQL in production** — All changes through versioned migrations\n- **Testing only upgrade** — Test downgrade paths too\n- **Large table ALTER without CONCURRENTLY** — Locks the table for the duration\n","# Database Migration Patterns\n\nEvolve database schemas safely with versioned, reversible, tested migrations.\n\n## Alembic Setup\n\n```bash\n# Initialize\nalembic init alembic\n\n# Create migration\nalembic revision --autogenerate -m \"add skills table\"\n\n# Run migrations\nalembic upgrade head\n\n# Rollback one step\nalembic downgrade -1\n\n# Show current state\nalembic current\nalembic history\n```\n\n### Configuration\n\n```python\n# alembic\u002Fenv.py\nfrom app.models import Base\nfrom app.config import settings\n\ntarget_metadata = Base.metadata\n\ndef run_migrations_online():\n    connectable = create_async_engine(settings.database_url)\n    async with connectable.connect() as connection:\n        await connection.run_sync(do_run_migrations)\n\ndef do_run_migrations(connection):\n    context.configure(connection=connection, target_metadata=target_metadata)\n    with context.begin_transaction():\n        context.run_migrations()\n```\n\n## Migration Structure\n\n```python\n\"\"\"add skills table\n\nRevision ID: abc123\nRevises: def456\nCreate Date: 2026-03-20 10:00:00\n\"\"\"\nfrom alembic import op\nimport sqlalchemy as sa\n\nrevision = \"abc123\"\ndown_revision = \"def456\"\n\ndef upgrade():\n    op.create_table(\n        \"skills\",\n        sa.Column(\"id\", sa.String(64), primary_key=True),\n        sa.Column(\"name\", sa.String(64), nullable=False, unique=True),\n        sa.Column(\"description\", sa.Text, nullable=False),\n        sa.Column(\"category\", sa.String(32), nullable=False),\n        sa.Column(\"created_at\", sa.DateTime(timezone=True), server_default=sa.func.now()),\n    )\n    op.create_index(\"ix_skills_category\", \"skills\", [\"category\"])\n\ndef downgrade():\n    op.drop_index(\"ix_skills_category\")\n    op.drop_table(\"skills\")\n```\n\n## Zero-Downtime Migration Strategies\n\n### Adding a Column\n\n```python\n# Safe: add nullable column first\ndef upgrade():\n    op.add_column(\"skills\", sa.Column(\"tier\", sa.String(20), nullable=True))\n\n# Later migration: backfill then add constraint\ndef upgrade():\n    op.execute(\"UPDATE skills SET tier = 'community' WHERE tier IS NULL\")\n    op.alter_column(\"skills\", \"tier\", nullable=False, server_default=\"community\")\n```\n\n### Renaming a Column\n\n```python\n# Phase 1: Add new column\ndef upgrade():\n    op.add_column(\"skills\", sa.Column(\"skill_category\", sa.String(32)))\n    op.execute(\"UPDATE skills SET skill_category = category\")\n\n# Phase 2: (after app updated to use new column)\ndef upgrade():\n    op.drop_column(\"skills\", \"category\")\n```\n\n### Removing a Column\n\n```python\n# Phase 1: Stop writing to column (app change)\n# Phase 2: Remove column\ndef upgrade():\n    op.drop_column(\"skills\", \"deprecated_field\")\n```\n\n### Adding an Index\n\n```python\n# Use CONCURRENTLY for zero-downtime\ndef upgrade():\n    op.execute(\"CREATE INDEX CONCURRENTLY ix_skills_name ON skills (name)\")\n\ndef downgrade():\n    op.drop_index(\"ix_skills_name\")\n```\n\n## Data Migrations\n\n```python\n\"\"\"backfill governance metadata\n\nRevision ID: ghi789\n\"\"\"\nfrom alembic import op\nimport sqlalchemy as sa\n\ndef upgrade():\n    # Use raw SQL for large table updates\n    conn = op.get_bind()\n    conn.execute(sa.text(\"\"\"\n        UPDATE skills\n        SET governance_phases = ARRAY['build']\n        WHERE governance_phases IS NULL\n        AND category IN ('development', 'data')\n    \"\"\"))\n    conn.execute(sa.text(\"\"\"\n        UPDATE skills\n        SET governance_phases = ARRAY['prove']\n        WHERE governance_phases IS NULL\n        AND category IN ('security', 'documentation')\n    \"\"\"))\n\ndef downgrade():\n    conn = op.get_bind()\n    conn.execute(sa.text(\"UPDATE skills SET governance_phases = NULL\"))\n```\n\n## Testing Migrations\n\n```python\nimport pytest\nfrom alembic.config import Config\nfrom alembic import command\n\n@pytest.fixture\ndef alembic_config():\n    config = Config(\"alembic.ini\")\n    config.set_main_option(\"sqlalchemy.url\", test_database_url)\n    return config\n\ndef test_upgrade_downgrade(alembic_config):\n    # Full upgrade\n    command.upgrade(alembic_config, \"head\")\n    # Full downgrade\n    command.downgrade(alembic_config, \"base\")\n    # Back to head\n    command.upgrade(alembic_config, \"head\")\n\ndef test_migration_data_integrity(alembic_config, db_session):\n    command.upgrade(alembic_config, \"head\")\n    # Insert test data\n    db_session.execute(sa.text(\"INSERT INTO skills (id, name, description, category) VALUES ('t1', 'test', 'Test skill', 'dev')\"))\n    db_session.commit()\n    # Verify data survives next migration\n    command.upgrade(alembic_config, \"head\")\n    result = db_session.execute(sa.text(\"SELECT name FROM skills WHERE id = 't1'\"))\n    assert result.scalar() == \"test\"\n```\n\n## Migration Checklist\n\n### Before Creating\n\n- [ ] Schema change designed for zero-downtime\n- [ ] Both upgrade and downgrade paths defined\n- [ ] Large table changes use batching\u002FCONCURRENTLY\n\n### Before Deploying\n\n- [ ] Migration tested against staging database\n- [ ] Rollback tested (downgrade works)\n- [ ] Data backup taken\n- [ ] Estimated execution time for large tables\n- [ ] Application compatible with both old and new schema\n\n### After Deploying\n\n- [ ] Migration completed successfully\n- [ ] Application functioning correctly\n- [ ] No performance regressions\n- [ ] Cleanup migration scheduled (if multi-phase)\n\n## Anti-Patterns\n\n- **No downgrade** — Every migration must be reversible\n- **Destructive changes in one step** — Use multi-phase for column renames\u002Fremovals\n- **Mixing schema and data migrations** — Separate into distinct revisions\n- **Manual SQL in production** — All changes through versioned migrations\n- **Testing only upgrade** — Test downgrade paths too\n- **Large table ALTER without CONCURRENTLY** — Locks the table for the duration\n",{"name":5,"tags":57,"license":15,"triggers":60,"complexity":65,"complements":66,"description":7,"time_to_learn":70,"organ_affinity":71,"governance_phases":75},[33,58,59,46,43],"migrations","alembic",[61,62,63,64],"user-asks-about-migrations","context:database-schema","context:alembic","project-has-alembic-ini","intermediate",[67,68,69],"python-packaging-patterns","postgres-advanced-patterns","fastapi-patterns","30min",[72,73,74],"organ-iii","organ-vi","meta",[76,77],"build","prove","main","4d2fb89cdfb75f3f6fd3c6c5ec9ad90ea129eb3c","ai-agent-skills\u002F21-external-registries\u002F18-organvm-skills\u002Fdevelopment\u002Fdatabase-migration-patterns",2,"https:\u002F\u002Fgithub.com\u002Fluokai0\u002Fai-agent-skills-by-luo-kai","https:\u002F\u002Fgithub.com\u002Fluokai0","a solo builder.","2026-05-06 04:29:04",{"source":8,"skillName":5,"commands":87,"prompt":97,"zipAvailable":98},[88,91,94],{"tool":89,"command":90},"npx","npx skills add luokai0\u002Fai-agent-skills-by-luo-kai --skill database-migration-patterns",{"tool":92,"command":93},"bunx","bunx skills add luokai0\u002Fai-agent-skills-by-luo-kai --skill database-migration-patterns",{"tool":95,"command":96},"pnpm","pnpm dlx skills add luokai0\u002Fai-agent-skills-by-luo-kai --skill database-migration-patterns","安装技能，技能地址：https:\u002F\u002Fgithub.com\u002Fluokai0\u002Fai-agent-skills-by-luo-kai\u002Fblob\u002Fmain\u002Fai-agent-skills\u002F21-external-registries\u002F18-organvm-skills\u002Fdevelopment\u002Fdatabase-migration-patterns\u002FSKILL.md",true,[],[101,128,145,171,204,234],{"skillNo":102,"name":103,"nameZh":6,"description":104,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":105,"categories":106,"keywords":107,"publishedAt":52},"01M6F2SKTE208174C7S7JJCZC7","write-contracts","Generates secure Aptos Move V2 smart contracts with Object model, Digital Asset integration, security patterns, and storage type guidance. Includes comprehensive storage decision framework for optimal data structure selection. Triggers on: 'write contract', 'create NFT collection', 'build marketplace', 'implement minting', 'generate Move module', 'create token contract', 'build DAO', 'implement staking'. Ask storage questions when: 'store', 'track', 'registry', 'mapping', 'list', 'collection'.","https:\u002F\u002Fgithub.com\u002Fluokai0\u002Fai-agent-skills-by-luo-kai\u002Fblob\u002Fmain\u002Fai-agent-skills\u002F22-clawhub-skills\u002Fwrite-contracts\u002FSKILL.md",[],[108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,123,124,125,126,127],"write","contracts","write contracts","storage","secure","create","generate","collection","model","decision","ask","smart-contracts","selection","objects","structure","nft","token","aptos","critical","move",{"skillNo":129,"name":130,"nameZh":6,"description":131,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":132,"categories":133,"keywords":134,"publishedAt":52},"01M6F2RFXJ6T9MKW0A7N7GM45B","web-search","通用网络搜索技能，支持多引擎搜索（百度、必应、DuckDuckGo），无需API密钥即可获取实时信息","https:\u002F\u002Fgithub.com\u002Fluokai0\u002Fai-agent-skills-by-luo-kai\u002Fblob\u002Fmain\u002Fai-agent-skills\u002F22-clawhub-skills\u002Fweb-search-ex-skill\u002FSKILL.md",[],[135,136,137,138,139,140,141,142,143,144],"web","search","web search","搜索","baidu","bing","duckduckgo","百度","多引擎","internet",{"skillNo":146,"name":147,"nameZh":6,"description":148,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":149,"categories":150,"keywords":154,"publishedAt":52},"01M6F2K968G1FZEZFPW2E6B222","solo-build","Execute implementation plan tasks with TDD workflow, auto-commit, and phase gates. Use when user says \"build it\", \"start building\", \"execute plan\", \"implement tasks\", \"ship it\", or references a track ID. Do NOT use for planning (use \u002Fplan) or scaffolding (use \u002Fscaffold).","https:\u002F\u002Fgithub.com\u002Fluokai0\u002Fai-agent-skills-by-luo-kai\u002Fblob\u002Fmain\u002Fai-agent-skills\u002F22-clawhub-skills\u002Fsolo-build\u002FSKILL.md",[151],{"categoryNo":152,"categoryName":153,"taxonomyType":21,"taxonomyTypeDesc":22},"01JBSEEDCAT000000000000023","Skill与智能体开发",[76,155,156,157,158,159,160,161,136,162,163,164,108,165,166,167,168,169,170,42],"solo","solo build","MCP","workflow","commit","tasks","code","Bash","plan","read","auto","references","context7","query","scaffolding","ship it",{"skillNo":172,"name":173,"nameZh":6,"description":174,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":175,"categories":176,"keywords":183,"publishedAt":52},"01M6F2GKN39SGHSPWYB3662YC8","react-email","Use when building HTML email templates with React components, adding a visual email editor to an application using the React Email visual editor, rendering emails to HTML, or sending emails with Resend. Covers welcome emails, password resets, notifications, order confirmations, newsletters, transactional emails, and the embeddable email editor component.","https:\u002F\u002Fgithub.com\u002Fluokai0\u002Fai-agent-skills-by-luo-kai\u002Fblob\u002Fmain\u002Fai-agent-skills\u002F22-clawhub-skills\u002Freact-email-skills\u002FSKILL.md",[177,180],{"categoryNo":178,"categoryName":179,"taxonomyType":21,"taxonomyTypeDesc":22},"01JBSEEDCAT000000000000005","邮件与沟通",{"categoryNo":181,"categoryName":182,"taxonomyType":21,"taxonomyTypeDesc":22},"01JBSEEDCAT000000000000009","前端开发",[184,185,186,187,188,189,190,191,192,193,194,195,196,197,198,199,200,201,202,203],"react","email","react email","github","editor","components","react components","component","welcome","https","notifications","password","node","use","html","resend","visual","emails","rendering","with",{"skillNo":205,"name":206,"nameZh":6,"description":207,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":208,"categories":209,"keywords":216,"publishedAt":52},"01M6F2FBVGVDFSG8SSFJGXA40C","APITester Agent-Driven API Testing","Test API endpoints and document responses. Define tests in plain English, run them, get formatted results. Agent-driven Postman alternative.","https:\u002F\u002Fgithub.com\u002Fluokai0\u002Fai-agent-skills-by-luo-kai\u002Fblob\u002Fmain\u002Fai-agent-skills\u002F22-clawhub-skills\u002Fopenclaw-api-tester\u002FSKILL.md",[210,211,212,213],{"categoryNo":19,"categoryName":20,"taxonomyType":21,"taxonomyTypeDesc":22},{"categoryNo":24,"categoryName":25,"taxonomyType":21,"taxonomyTypeDesc":22},{"categoryNo":152,"categoryName":153,"taxonomyType":21,"taxonomyTypeDesc":22},{"categoryNo":214,"categoryName":215,"taxonomyType":29,"taxonomyTypeDesc":30},"01JBSEEDCAT000000000000030","开发工程师",[45,217,218,219,220,221,222,223,224,225,226,227,228,229,230,231,232,233],"api","api testing","driven","APITester Agent Driven API Testing","test","run","postman","results","plain english","tester","endpoints","document","get","define","tests","english","api-tester",{"skillNo":235,"name":236,"nameZh":6,"description":237,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":238,"categories":239,"keywords":240,"publishedAt":52},"01M6F273Y3NGAPVJZ608BC0G9G","hubspot-implementation-plan","Generate a phased implementation plan from a HubSpot audit report. Creates prioritized, sequenced cleanup processes with effort estimates, dependencies, and automation feasibility. Use after running \u002Fhubspot-audit.","https:\u002F\u002Fgithub.com\u002Fluokai0\u002Fai-agent-skills-by-luo-kai\u002Fblob\u002Fmain\u002Fai-agent-skills\u002F22-clawhub-skills\u002Fhubspot-implementation-plan\u002FSKILL.md",[],[163,241,242,243,244,245,246,114,247,248,249,250,251,197,252,253,203,254],"implementation","hubspot","hubspot implementation plan","automation","feasibility","cleanup","planning","report","audit","audit report","phased implementation","dependencies","processes","hubspot audit"]