co-evolve-check
帮助判断哪些并行版本只是冗余,便于保持代码整洁
在 PR diff 中检测不必要的后向兼容并行版本化(并行版本保留)模式
在提交 PR 之前扫描 diff,找出那些把新版本(像 FooV2、getUserNew)并列保留而不必要的改动。常用在你把旧符号在同一个 PR 里都改掉、但作者却同时保留旧接口的场景,帮你判断是否真的有外部消费者需要旧版。特点是自动识别语言与项目元数据(比如 package.json、PyPI、openapi.yaml),只做报告不阻塞,并会提出“为啥留下旧版?”这类追问。
▸ 展开 SKILL.md 英文原文
Detects retention bias in pre-PR diffs where agents add new versions (interface/class/function wrappers like `FooV2` / `getUserNew`) alongside the old ones, when (a) all callers of the old symbol are touched in the same PR and (b) no public consumer markers exist (no public `package.json` exports / no PyPI metadata / no `openapi.yaml` / `*.proto` / `*.graphql` references / no `@deprecated` annotations). Auto-detects language (TS/JS via `package.json`, Python via `pyproject.toml` / `requirements.txt`) and silently skips when detection fails (project-agnostic, requires nothing from the host project). Outputs structured findings with subtractive questions ("なぜ旧版を残したか?"). Non-blocking, report-only. Use when about to create a PR (alongside `/comment-sweep`), or when the user mentions リファクタ後の旧版残置 / 後方互換 shim / 同時更新可能 / co-evolution / dead code from version parallelism / internal API retention bias.
帮我安装这个 skill:https://raw.githubusercontent.com/kanka-jp/coding-agent-playbook-20260707/main/.claude/skills/co-evolve-check/SKILL.mdcurl -fsSL "https://raw.githubusercontent.com/kanka-jp/coding-agent-playbook-20260707/main/.claude/skills/co-evolve-check/SKILL.md"# co-evolve-check 「公開 API でないのに後方互換性を保とうとする」パターンを pre-PR diff から検出する leaf skill ([rules/skills.md](../../../rules/skills.md))。「外部消費者がある = 現状形保持の正当な理由」の**逆ケース** (= 外部消費者なし = 同時更新可能) を機械的に判定する。 `/comment-sweep` と同様、PR 作成前の sweep として動作する。検出のみで PR を block しない (non-blocking report-only)。 ## いつ使うか 主発火点: - `gh pr create` を実行する**前**に `/comment-sweep` と並走で起動 - 既存 PR に追加 push する前 - 「リファクタした」「重複削除した」「型を整理した」等の作業終盤 検出対象となる typical な agent シナリオ: - TypeScript の `interface User` と `interface UserV2` / `UserOld` / `LegacyUser` を並走させる - Python の `class Foo` と `class FooV2` を並走させる - 関数の wrapper 並走 (`getUser` + `getUserNew` / `getUserV2`) - 同一 PR で旧版を消せる場面 (= 全 caller が touched + 外部消費者なし) なのに旧版を温存 検出されない