locales/zh-TW/skills/migration-assistant/SKILL.md
[UDS] 引導程式碼遷移、框架升級與技術現代化
npx skillsauth add asiaostrich/universal-dev-standards migration-assistantInstall this skill globally with one command. Works with Claude Code, Cursor, and Windsurf.
3 of 9 scanners reported clean
Some scanners were skipped, did not run, or reported a non-clean status. Review each row below.
語言: English | 繁體中文
引導系統性程式碼遷移、框架升級與技術現代化。
| 命令 | 用途 |
|------|------|
| /migrate | 啟動互動式遷移引導 |
| /migrate --assess | 僅風險評估 |
| /migrate "Vue 2 to 3" | 引導特定遷移 |
| /migrate --deps | 相依升級分析 |
| /migrate --rollback | 規劃回滾策略 |
| 類型 | 範例 | 風險 | |------|------|------| | 框架升級 | React 17→18, Vue 2→3, Angular 15→17 | 中高 | | 語言遷移 | JS→TS, Python 2→3, Java 8→17 | 高 | | API 版本 | REST v1→v2, GraphQL schema 更新 | 中 | | 資料庫遷移 | MySQL→PostgreSQL, SQL→NoSQL | 極高 | | 建構工具 | Webpack→Vite, Grunt→ESBuild | 低中 | | 套件管理器 | npm→pnpm, pip→poetry | 低 |
| | 低影響 | 中影響 | 高影響 | |---|--------|--------|--------| | 低複雜度 | 安全(直接進行) | 謹慎 | 仔細規劃 | | 中複雜度 | 謹慎 | 規劃 + 測試 | 分階段發布 | | 高複雜度 | 規劃 + 測試 | 分階段發布 | 完整 SDD 規格 |
當 API endpoint 從一個技術棧遷至另一個(PHP → .NET、Express → Spring、Python → Go),對新實作的單元測試只驗證新 DTO——無法捕捉「舊版有但新版漏掉的欄位」。欄位缺漏、欄位 rename、型別漂移,以及頂層 vs nested 層級漂移等問題會靜默流入生產,導致仍預期舊版 shape 的既有前端失靈。
僅靠單元測試、整合測試或 code review 無法防止。2026-05-24 真實 PROD 事故:67/67 測試全綠流入正式環境,由客戶發現缺漏。
每個被遷移的 API endpoint 必須至少有一份 contract test,比對新實作的 response 與從 legacy 實作捕獲的 fixture。驗證的是結構性等價(keys、type、層級位置),而非值等價。
Legacy 仍運行(典型遷移窗口):
# 1. Capture ≥3 representative inputs (happy path, edge case, empty result)
curl -X POST $LEGACY_BASE/endpoint -d @input1.json \
> tests/fixtures/migration/endpoint/scenario1.json
curl -X POST $LEGACY_BASE/endpoint -d @input2_empty.json \
> tests/fixtures/migration/endpoint/scenario2_empty.json
curl -X POST $LEGACY_BASE/endpoint -d @input3_edge.json \
> tests/fixtures/migration/endpoint/scenario3_edge.json
# 2. Scrub PII and volatile values (timestamps, generated IDs)
jq 'walk(if type == "string" and test("@") then "[email protected]" else . end)' \
tests/fixtures/migration/endpoint/scenario1.json > tmp && mv tmp ...
# 3. Commit fixtures
git add tests/fixtures/migration/endpoint/
Legacy 已退役但 source 可讀:
.notes.md 檔案C# / xUnit:
[Theory]
[InlineData("scenario1")]
[InlineData("scenario2_empty")]
[InlineData("scenario3_edge")]
public async Task Endpoint_ResponseShape_MatchesLegacyFixture(string scenario)
{
var fixture = LoadFixture($"migration/endpoint/{scenario}");
var response = await CallNewImpl(fixture.Input);
// StructuralEquivalence checks keys + types + placement, ignores values
StructuralEquivalence.Assert(response, fixture.ExpectedShape);
}
TypeScript / Jest:
import { structuralEquivalence } from "./test-utils/structural-equivalence";
describe.each([
["scenario1"],
["scenario2_empty"],
["scenario3_edge"],
])("Endpoint response shape vs legacy fixture (%s)", (scenario) => {
test("matches", async () => {
const fixture = loadFixture(`migration/endpoint/${scenario}.json`);
const response = await callNewImpl(fixture.input);
structuralEquivalence(response, fixture.expectedShape);
});
});
structuralEquivalence / StructuralEquivalence.Assert 規則:每一層具備相同的 key 集合(不可缺漏、不可多出,除非明確 opt in)、每個 key 具相同的基本型別、相同的層級位置(頂層 vs nested)。值可以不同(timestamps、IDs);型別與結構不可不同。
合併任何被遷移的 endpoint 前:
TotalX rename 而丟失「per-member」語意)509 而非 506;404 而非 400)tests/fixtures/migration/| 方式 | 使用時機 | |------|---------| | Git revert | 小型、原子性變更 | | 功能旗標 | 需要逐步發布 | | 雙運行 | 關鍵系統、零停機 | | 分支凍結 | 一次性完整遷移 |
User: /migrate "Vue 2 to 3"
AI: Migration Assessment: Vue 2 → Vue 3
Breaking changes found: 12
- Options API → Composition API (47 components)
- Filters removed (8 usages)
- Event bus removed (3 usages)
Risk: Medium-High
Estimated effort: 2-3 weeks
Recommended: Staged migration with @vue/compat
/migrate 完成後,AI 助手應建議:
遷移分析完成。建議下一步:
- 執行
/reverse深入理解現有程式碼- 執行
/testing確保遷移後測試通過 ⭐ 推薦- 執行
/commit提交遷移變更
| 版本 | 日期 | 變更 | |------|------|------| | 1.1.0 | 2026-05-26 | 新增:API 遷移合約測試章節——強制 fixture 捕獲協議、C#/TS 範本、逐欄位稽核清單(XSPEC-233 / closes #112) | | 1.0.0 | 2026-03-24 | 初始版本 |
完整的 AI 行為定義請參閱對應的命令文件:
/migrate
CC BY 4.0
development
[UDS] 扫描代码库的调试残留与代码质量问题;可自动修正安全模式。 Use when: before committing, during PR review, or periodic codebase cleanup. Keywords: sweep, debug cleanup, console.log, debugger, TODO, ts-any, code quality, 扫描, 清理.
tools
[UDS] 从规格衍生 BDD 场景、TDD 骨架或 ATDD 表格
development
[UDS] 识别重复流程并以正确的开发深度构建 Skill
tools
[UDS] AI 辅助 git push 安全层:质量门禁 + 协作护栏。 Use when: pushing commits, force pushing, pushing to protected branches, pushing feature branches. Keywords: git push, force push, protected branch, quality gate, push receipt, PR automation, 推送, 保护分支, 质量门禁.