Agent Skills › NanmiCoder/dsh-agent-teams › generic-migration

generic-migration

GitHub

提供框架无关的插件迁移方法论,指导在升级宿主版本时通过盘点耦合点、分类变更和分层验证来安全迁移插件。

.dsh/skills/generic-migration/SKILL.md NanmiCoder/dsh-agent-teams

Trigger Scenarios

需要跨大版本升级插件或扩展 缺乏特定框架的官方迁移指南

Install

npx skills add NanmiCoder/dsh-agent-teams --skill generic-migration -g -y
More Options

Non-standard path

npx skills add https://github.com/NanmiCoder/dsh-agent-teams/tree/main/.dsh/skills/generic-migration -g -y

Use without installing

npx skills use NanmiCoder/dsh-agent-teams@generic-migration

指定 Agent (Claude Code)

npx skills add NanmiCoder/dsh-agent-teams --skill generic-migration -a claude-code -g -y

安装 repo 全部 skill

npx skills add NanmiCoder/dsh-agent-teams --all -g -y

预览 repo 内 skill

npx skills add NanmiCoder/dsh-agent-teams --list

SKILL.md

Frontmatter
{
    "name": "generic-migration",
    "license": "MIT",
    "description": "Framework-agnostic methodology for migrating a plugin, extension, or integration across a breaking upstream release — inventory coupling points, classify changes, stage the migration, and verify in layers. Use when upgrading any plugin from one host-framework version to another without access to framework-specific migration notes. Not a substitute for vendor release notes; contains no framework-specific facts."
}

Generic Plugin Migration Methodology

A disciplined procedure for moving a plugin across an upstream release that may contain breaking changes. Everything here is framework-agnostic: no product names, no version numbers, no API identifiers. Pair it with the upstream project's own changelog and release notes whenever those exist.

0. Ground rules

  • Never migrate blind. If you have not read the upstream changelog for every version in the corridor (start → target, inclusive), you are guessing.
  • Inventory before edits. A written list of what the plugin touches beats discovering breakage one crash at a time.
  • Change one layer at a time, and keep the old install runnable until the new one is proven (side-by-side installs, separate data directories).

1. Inventory the coupling surface

Before touching code, scan the plugin read-only and record every place it couples to the host. A generic coupling checklist:

  1. Manifest / metadata — declared compatibility ranges, entry points, permissions, capabilities the plugin requests.
  2. Host API imports — every module, symbol, or type imported from the host or its SDK; note which are used at load time vs call time.
  3. Lifecycle & events — activation hooks, event subscriptions, disposal.
  4. Services & RPC — services the plugin consumes or exposes; inter-process or request/response channels and their payload shapes.
  5. UI contributions — commands, views, panels, menus, themes, keybindings.
  6. Persistence — files, databases, or key-value stores the plugin reads or writes, including schema versions and migration code.
  7. Process & I/O seams — spawned subprocesses, sockets, pipes, parsers of host-generated output (logs, CLI text, serialized state).
  8. Configuration — settings keys read/written, defaults the plugin relies on, user-facing documentation of those keys.
  9. Dependencies — packages shared with the host (risk of duplicate instances), peer ranges, runtime version floors.

For each item record: file/line, what exactly is coupled, and how confident you are. "No hit" is only meaningful after you state what you scanned and what you could not rule out.

2. Read the corridor, not just the endpoints

Changes across a release corridor interact. Read every intermediate release's notes and diff, and build a net-state table:

  • A field removed in an intermediate version but restored later has zero net change — do not "migrate" it away.
  • A rename that happened in two steps (A → B → C) is migrated straight A → C.
  • Behavior changes (defaults, ordering, timing) are as breaking as API removals; list them explicitly.

Classify each upstream change as: breaking (must edit), behavioral (must re-verify), additive (optional), or informational.

3. Map, then edit

Map every inventory hit (§1) to a corridor change (§2). Only then edit, in dependency order:

  1. Manifest and compatibility ranges first — the host may refuse to load anything else you fix.
  2. Host API surface: renames, removals, signature changes.
  3. Lifecycle/events/services.
  4. Persistence migrations (never mutate the user's only copy; write-migrate on first run with a backup, or fail closed).
  5. UI and configuration.
  6. Dependency alignment: shared packages must resolve to the host's instance; check for duplicate copies in the installed tree.

4. Verify in layers

Cheap layers first; each layer must pass before the next means anything:

  1. Static: typecheck, lint, the plugin's own unit tests.
  2. Install-time: the host accepts the manifest and loads the plugin without warnings.
  3. Cold start: a real host process boots with the plugin enabled; check logs for deprecation and fallback warnings, not just crashes.
  4. Functional probe: one real end-to-end path per major feature, including the features you did not migrate (silent behavior drift hides there).
  5. Data: migrate a copy of real persisted data; verify round-trip and downgrade behavior.
  6. Rollback rehearsal: prove you can go back — reinstall the old version against the migrated data and confirm it still works or that you have a restore path.

5. Discipline and pitfalls

  • Prefer the host's documented replacement over re-implementing removed behavior yourself.
  • Treat "it typechecks" as the beginning of verification, not the end.
  • Deprecated-but-working is a scheduled failure: record it even if out of scope.
  • If a change's semantics are unclear, read the upstream source at the target tag; do not guess shapes from a one-line changelog entry.
  • Keep a written migration log: what you changed, why, and what you verified. It is the artifact that lets someone else trust the migration.

Version History

  • f60d40d Current 2026-09-27 11:46

Same Skill Collection

.dsh/skills/dsh-plugin-development/SKILL.md
.dsh/skills/plugin-heavy-dep/SKILL.md
.dsh/skills/plugin-runtime-debug/SKILL.md
.dsh/skills/plugin-test/SKILL.md
.dsh/skills/plugin-upgrade/SKILL.md
.dsh/skills/plugin-workflow/SKILL.md
skills/dsh-plugin-development/SKILL.md
skills/generic-migration/SKILL.md
skills/plugin-heavy-dep/SKILL.md
skills/plugin-runtime-debug/SKILL.md
skills/plugin-test/SKILL.md
skills/plugin-upgrade/SKILL.md
skills/plugin-workflow/SKILL.md
.dsh/skills/dsh-benchmark-case/SKILL.md
.dsh/skills/dsh-upgrade-audit/SKILL.md
.dsh/skills/plugin-release/SKILL.md
.dsh/skills/plugin-write/SKILL.md
skills/dsh-benchmark-case/SKILL.md
skills/dsh-upgrade-audit/SKILL.md
skills/plugin-release/SKILL.md
skills/plugin-write/SKILL.md

Metadata

Files
0
Version
f60d40d
Hash
dd983557
Indexed
2026-09-27 11:46

ホーム - Wiki
Copyright © 2011-2026 iteam. Current version is 2.155.2. UTC+08:00, 2026-09-27 22:41
浙ICP备14020137号-1