[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"skill:01M6HZ2ZPX3T8651QCMG4Y68WN":3,"skill-same:01M6HZ2ZPX3T8651QCMG4Y68WN":95},{"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":18,"publishedAt":39,"linkOnly":40,"markdownContent":41,"markdownBody":42,"frontMatter":43,"refName":44,"commitSha":45,"skillDirectory":46,"forksCount":47,"repositoryHtmlUrl":48,"repositoryHomepageUrl":6,"ownerHtmlUrl":49,"ownerBlogUrl":6,"ownerDescription":6,"updatedAt":50,"install":51,"resources":64},"01M6HZ2ZPX3T8651QCMG4Y68WN","db-migration-review",null,"review database migrations for safety, compatibility windows, backfills, reversibility, and rollout risk. use when migration files, schema diffs, orm model changes, indexes, constraints, or data backfills change.","ldilov\u002Fharness-forge","ldilov","https:\u002F\u002Favatars.githubusercontent.com\u002Fu\u002F25016670?v=4","01M6HYXAEJP0KYT2DF86WYN8QK","Lazar Dilov","01M6HYXAJETHAW5DD5TAAFEQ7D",6,"GPL-3.0","https:\u002F\u002Fgithub.com\u002Fldilov\u002Fharness-forge\u002Fblob\u002Fmain\u002Fskills\u002Fdb-migration-review\u002FSKILL.md",[],[19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38],"db migration","db","migration review","db migration review","migration","review","rollout","reversibility","compatibility","files","database migrations","orm","model","Safety","risk","data","database","windows","change","diffs","2026-11-10 10:12:30",false,"---\nname: db-migration-review\ndescription: review database migrations for safety, compatibility windows, backfills, reversibility, and rollout risk. use when migration files, schema diffs, orm model changes, indexes, constraints, or data backfills change.\n---\n\n# DB Migration Review\n\n## Trigger Signals\n\n- the task adds or edits migrations, DDL, backfills, seed data, or schema-affecting ORM changes\n- the change touches EF Core, Flyway, Liquibase, Prisma, Atlas, handcrafted SQL, or online migration tooling\n- rollout safety matters because the database is large, hot, replicated, or shared by multiple services\n\n## Inspect First\n\n- migration files, generated SQL, and schema model diffs\n- the application code that reads or writes the changed tables or columns\n- deployment order, backfill jobs, feature flags, and rollback expectations\n- table size, hot paths, index usage, and engine-specific lock sensitivity when evidence exists\n\n## Workflow\n\n1. classify the change as additive, destructive, rewrite-heavy, data-moving, or operationally sensitive\n2. determine the compatibility window between old code, new code, and intermediate schema states\n3. inspect lock, rewrite, replication, and backfill risk with the engine and tool in mind\n4. verify reversibility, forward-fix options, and post-deploy validation steps\n5. emit a risk-ranked review with concrete rollout guidance, not generic warnings\n\n## Output Contract\n\n- migration summary grouped by schema change, data change, and rollout shape\n- risk level with the exact reasons it is safe, risky, or blocked\n- expand-and-contract verdict, rollback or forward-fix plan, and validation queries or checks\n- follow-up tasks for app changes, monitoring, throttling, or staged deployment\n\n## Failure Modes\n\n- engine, table size, or traffic profile is unknown and materially changes risk\n- the migration file exists without the surrounding application rollout plan\n- generated SQL is unavailable for toolchains that hide the real DDL\n\n## Escalation\n\n- escalate when a migration can drop data, rewrite a large table, block hot paths, or break mixed-version application deployments\n- escalate when backfills are non-idempotent, unthrottled, or lack checkpointing\n- escalate when rollback is impossible and no forward-fix path or validation telemetry exists\n\n## References\n\n- `skills\u002Fdb-migration-review\u002Freferences\u002Frisk-taxonomy.md`\n- `skills\u002Fdb-migration-review\u002Freferences\u002Fexpand-contract.md`\n- `skills\u002Fdb-migration-review\u002Freferences\u002Fengine-specific-hotspots.md`\n- `skills\u002Fdb-migration-review\u002Freferences\u002Ftooling-signals.md`\n- `skills\u002Fdb-migration-review\u002Freferences\u002Frollout-and-backfill.md`\n- `skills\u002Fdb-migration-review\u002Freferences\u002Freview-template.md`\n- `skills\u002Fdb-migration-review\u002Freferences\u002Fexamples.md`\n","# DB Migration Review\n\n## Trigger Signals\n\n- the task adds or edits migrations, DDL, backfills, seed data, or schema-affecting ORM changes\n- the change touches EF Core, Flyway, Liquibase, Prisma, Atlas, handcrafted SQL, or online migration tooling\n- rollout safety matters because the database is large, hot, replicated, or shared by multiple services\n\n## Inspect First\n\n- migration files, generated SQL, and schema model diffs\n- the application code that reads or writes the changed tables or columns\n- deployment order, backfill jobs, feature flags, and rollback expectations\n- table size, hot paths, index usage, and engine-specific lock sensitivity when evidence exists\n\n## Workflow\n\n1. classify the change as additive, destructive, rewrite-heavy, data-moving, or operationally sensitive\n2. determine the compatibility window between old code, new code, and intermediate schema states\n3. inspect lock, rewrite, replication, and backfill risk with the engine and tool in mind\n4. verify reversibility, forward-fix options, and post-deploy validation steps\n5. emit a risk-ranked review with concrete rollout guidance, not generic warnings\n\n## Output Contract\n\n- migration summary grouped by schema change, data change, and rollout shape\n- risk level with the exact reasons it is safe, risky, or blocked\n- expand-and-contract verdict, rollback or forward-fix plan, and validation queries or checks\n- follow-up tasks for app changes, monitoring, throttling, or staged deployment\n\n## Failure Modes\n\n- engine, table size, or traffic profile is unknown and materially changes risk\n- the migration file exists without the surrounding application rollout plan\n- generated SQL is unavailable for toolchains that hide the real DDL\n\n## Escalation\n\n- escalate when a migration can drop data, rewrite a large table, block hot paths, or break mixed-version application deployments\n- escalate when backfills are non-idempotent, unthrottled, or lack checkpointing\n- escalate when rollback is impossible and no forward-fix path or validation telemetry exists\n\n## References\n\n- `skills\u002Fdb-migration-review\u002Freferences\u002Frisk-taxonomy.md`\n- `skills\u002Fdb-migration-review\u002Freferences\u002Fexpand-contract.md`\n- `skills\u002Fdb-migration-review\u002Freferences\u002Fengine-specific-hotspots.md`\n- `skills\u002Fdb-migration-review\u002Freferences\u002Ftooling-signals.md`\n- `skills\u002Fdb-migration-review\u002Freferences\u002Frollout-and-backfill.md`\n- `skills\u002Fdb-migration-review\u002Freferences\u002Freview-template.md`\n- `skills\u002Fdb-migration-review\u002Freferences\u002Fexamples.md`\n",{"name":5,"description":7},"main","27337828f396bcf279d7c4353a4a4f0cdc97659f","skills\u002Fdb-migration-review",1,"https:\u002F\u002Fgithub.com\u002Fldilov\u002Fharness-forge","https:\u002F\u002Fgithub.com\u002Fldilov","2026-05-19 21:48:38",{"source":8,"skillName":5,"commands":52,"prompt":62,"zipAvailable":63},[53,56,59],{"tool":54,"command":55},"npx","npx skills add ldilov\u002Fharness-forge --skill db-migration-review",{"tool":57,"command":58},"bunx","bunx skills add ldilov\u002Fharness-forge --skill db-migration-review",{"tool":60,"command":61},"pnpm","pnpm dlx skills add ldilov\u002Fharness-forge --skill db-migration-review","安装技能，技能地址：https:\u002F\u002Fgithub.com\u002Fldilov\u002Fharness-forge\u002Fblob\u002Fmain\u002Fskills\u002Fdb-migration-review\u002FSKILL.md",true,[65,71,75,79,83,87,91],{"path":66,"resourceType":67,"resourceTypeDesc":68,"sizeBytes":69,"sourceHtmlUrl":70},"references\u002Fengine-specific-hotspots.md","REFERENCE","参考文档",937,"https:\u002F\u002Fgithub.com\u002Fldilov\u002Fharness-forge\u002Fblob\u002Fmain\u002Fskills\u002Fdb-migration-review\u002Freferences\u002Fengine-specific-hotspots.md",{"path":72,"resourceType":67,"resourceTypeDesc":68,"sizeBytes":73,"sourceHtmlUrl":74},"references\u002Fexamples.md",482,"https:\u002F\u002Fgithub.com\u002Fldilov\u002Fharness-forge\u002Fblob\u002Fmain\u002Fskills\u002Fdb-migration-review\u002Freferences\u002Fexamples.md",{"path":76,"resourceType":67,"resourceTypeDesc":68,"sizeBytes":77,"sourceHtmlUrl":78},"references\u002Fexpand-contract.md",876,"https:\u002F\u002Fgithub.com\u002Fldilov\u002Fharness-forge\u002Fblob\u002Fmain\u002Fskills\u002Fdb-migration-review\u002Freferences\u002Fexpand-contract.md",{"path":80,"resourceType":67,"resourceTypeDesc":68,"sizeBytes":81,"sourceHtmlUrl":82},"references\u002Freview-template.md",446,"https:\u002F\u002Fgithub.com\u002Fldilov\u002Fharness-forge\u002Fblob\u002Fmain\u002Fskills\u002Fdb-migration-review\u002Freferences\u002Freview-template.md",{"path":84,"resourceType":67,"resourceTypeDesc":68,"sizeBytes":85,"sourceHtmlUrl":86},"references\u002Frisk-taxonomy.md",1106,"https:\u002F\u002Fgithub.com\u002Fldilov\u002Fharness-forge\u002Fblob\u002Fmain\u002Fskills\u002Fdb-migration-review\u002Freferences\u002Frisk-taxonomy.md",{"path":88,"resourceType":67,"resourceTypeDesc":68,"sizeBytes":89,"sourceHtmlUrl":90},"references\u002Frollout-and-backfill.md",804,"https:\u002F\u002Fgithub.com\u002Fldilov\u002Fharness-forge\u002Fblob\u002Fmain\u002Fskills\u002Fdb-migration-review\u002Freferences\u002Frollout-and-backfill.md",{"path":92,"resourceType":67,"resourceTypeDesc":68,"sizeBytes":93,"sourceHtmlUrl":94},"references\u002Ftooling-signals.md",1001,"https:\u002F\u002Fgithub.com\u002Fldilov\u002Fharness-forge\u002Fblob\u002Fmain\u002Fskills\u002Fdb-migration-review\u002Freferences\u002Ftooling-signals.md",[96,128,160,179,203,215],{"skillNo":97,"name":98,"nameZh":6,"description":99,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":100,"categories":101,"keywords":107,"publishedAt":39},"01M6HZ7WE4DSYWPX0W2JX9BD8K","typescript-engineering","typescript and javascript engineering guidance seeded from the harness forge knowledge base. use when the repo or task is dominated by .ts, .tsx, package.json, tsconfig, node.js services, react, next.js, frontend tooling, or multi-package workspaces where type boundaries matter.","https:\u002F\u002Fgithub.com\u002Fldilov\u002Fharness-forge\u002Fblob\u002Fmain\u002Fskills\u002Ftypescript-engineering\u002FSKILL.md",[102],{"categoryNo":103,"categoryName":104,"taxonomyType":105,"taxonomyTypeDesc":106},"01JBSEEDCAT000000000000009","前端开发","SCENARIO","使用场景",[108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,123,124,125,126,127],"typescript","engineering","typescript engineering","frontend","javascript","react","harness","package","forge","Next.js","knowledge","node","repo","use","workspaces","tsx","task","next","knowledge base","type",{"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":142,"publishedAt":39},"01M6HZ7QRWHQP72E7DPB6W5S6C","token-budget-optimizer","compact context, reuse existing runtime artifacts, and choose the smallest authoritative surface before expanding prompt history. use when the task is growing large, when earlier repo intelligence already exists, or when repeated rescans would waste tokens without adding new evidence.","https:\u002F\u002Fgithub.com\u002Fldilov\u002Fharness-forge\u002Fblob\u002Fmain\u002Fskills\u002Ftoken-budget-optimizer\u002FSKILL.md",[134,137],{"categoryNo":135,"categoryName":136,"taxonomyType":105,"taxonomyTypeDesc":106},"01JBSEEDCAT000000000000023","Skill与智能体开发",{"categoryNo":138,"categoryName":139,"taxonomyType":140,"taxonomyTypeDesc":141},"01JBSEEDCAT000000000000040","财务","PROFESSION","适用职业",[143,144,145,146,147,148,149,150,120,151,152,121,153,124,154,155,156,157,158,159],"Budget","optimizer","token","token budget","token budget optimizer","artifacts","choose","history","prompt","context","evidence","intelligence","compact","tokens","runtime","reuse","Existing",{"skillNo":161,"name":162,"nameZh":6,"description":163,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":164,"categories":165,"keywords":169,"publishedAt":39},"01M6HZ7MMX3ZZP4KF2FVC2EHP0","test-strategy-and-coverage","Define right-sized test layers and coverage priorities for a change.","https:\u002F\u002Fgithub.com\u002Fldilov\u002Fharness-forge\u002Fblob\u002Fmain\u002Fskills\u002Ftest-strategy-and-coverage\u002FSKILL.md",[166],{"categoryNo":167,"categoryName":168,"taxonomyType":105,"taxonomyTypeDesc":106},"01JBSEEDCAT000000000000008","测试与质量",[170,171,172,173,174,37,175,176,177,178],"test","strategy","coverage","test strategy","test strategy and coverage","priorities","define","layers","for",{"skillNo":180,"name":181,"nameZh":6,"description":182,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":183,"categories":184,"keywords":185,"publishedAt":39},"01M6HZ7HE9C6MGWT9JG17Z3Y3M","speckit-taskstoissues","Convert existing tasks into actionable, dependency-ordered GitHub issues for the feature based on available design artifacts.","https:\u002F\u002Fgithub.com\u002Fldilov\u002Fharness-forge\u002Fblob\u002Fmain\u002Fskills\u002Fspeckit-taskstoissues\u002FSKILL.md",[],[186,187,188,189,190,191,192,148,193,194,195,196,197,198,199,200,201,202,178,159],"speckit taskstoissues","speckit","design","directory","project structure","tasks","github issues","issues","specify","convert","dependency","structure","project","commands","feature","actionable","kit",{"skillNo":204,"name":205,"nameZh":6,"description":206,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":207,"categories":208,"keywords":209,"publishedAt":39},"01M6HZ7E2NMYB9N2GKYVRF09AK","speckit-tasks","Generate an actionable, dependency-ordered tasks.md for the feature based on available design artifacts.","https:\u002F\u002Fgithub.com\u002Fldilov\u002Fharness-forge\u002Fblob\u002Fmain\u002Fskills\u002Fspeckit-tasks\u002FSKILL.md",[],[191,210,187,188,189,211,190,212,148,194,196,197,198,199,200,201,213,214,202,178],"speckit tasks","github","generate","spec-kit","with",{"skillNo":216,"name":217,"nameZh":6,"description":218,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":219,"categories":220,"keywords":221,"publishedAt":39},"01M6HZ7AS0E880YSZN4FEFF6QF","speckit-specify","Create or update the feature specification from a natural language feature description.","https:\u002F\u002Fgithub.com\u002Fldilov\u002Fharness-forge\u002Fblob\u002Fmain\u002Fskills\u002Fspeckit-specify\u002FSKILL.md",[],[194,222,187,189,223,211,190,224,225,226,227,228,197,198,199,200,213,214,229,202],"speckit specify","spec","create","update","templates","specification","natural language","feature specification"]