Communitygithub.com

允许破坏性变更

激活一个会话级策略,允许架构上合理的破坏性变更,并从设计约束中移除与项目自有历史接口的兼容性。仅在用户明确调用 `$allow-breaking-change` 时启用;切勿因通用的重构、简化、架构、兼容性或破坏性变更讨论而隐式触发。在本次对话的其余会话中,该策略跨项目和任务保持生效,除非用户针对某个任务覆盖或禁用它。

允许破坏性变更 是什么?

该技能为 AI 驱动开发环境(如 Cursor 或 Claude Code)提供了一种控制机制,允许会话级策略,优先考虑架构简洁性而非历史兼容性。它仅在用户通过 `$allow-breaking-change` 命令显式调用时激活,确保 AI 不会因通用讨论而自行破坏兼容性。激活后,AI 会忽略与项目自有遗留接口(API、CLI、配置、文件格式等)的向后和向前兼容性约束,从而无需适配器或弃用期即可实现更清晰的架构。该技能包含严格的防护措施:要求提供无损数据迁移、禁止隐式权限范围扩展、保留外部标准,并确保破坏性变更的记录清晰,且不会在无关回复中重复状态提醒。它还能与 KISS 和 Unixify 等补充技能协同工作,在活跃的策略下覆盖其兼容性防护,同时保留其正确性和安全性检查。

兼容平台~Claude Code~Codex CLI~Cursor
npx skills add https://github.com/Jamie-Cui/skills/tree/HEAD/skills/allow-breaking-change

在你喜欢的 AI 中提问

打开一个已预加载此 Agent Skill 的新对话。

文档

允许破坏性变更 是做什么的?

在本次对话的其余会话中,将项目自有历史行为的兼容性视为可选项。优先采用当前需求下最简单合理的架构;切勿仅为追求新颖而破坏行为。

激活与保留策略

  1. 仅在收到明确的 $allow-breaking-change 调用后激活。
  2. 对于裸调用,用一句简洁的话确认激活及其数据保护边界,然后等待任务。对于附带任务的调用,先激活策略,再处理任务。
  3. 将策略应用于所有项目和任务,包括规划、设计、审查、诊断和实施,直到对话结束或用户明确禁用它。
  4. 将明确的任务级指令(例如“此任务保持兼容性”)视为临时覆盖。将明确的指令(例如“禁用允许破坏性变更”)视为对本次对话剩余部分的撤销。
  5. 仅在兼容性影响决策或结果时提及该活跃策略。不要在无关的轮次中重复状态提醒。
  6. 继续遵循更高优先级的指令、仓库要求和明确的当前任务约束。

在无需历史兼容性下做决策

  • 将项目自有遗留 API、CLI、配置、协议和文件格式的向后和向前兼容性排除在决策标准之外。
  • 不要仅为保留历史使用者而添加适配器、弃用期、并行实现、版本桥或遗留解析。
  • 将所有范围内的调用方、测试、文档、示例和生成工件更新到新契约。
  • 按意图对旧测试进行分类。移除或重写仅用于兼容性的断言;保留对正确性、安全性、数据完整性、可访问性和当前行为的要求。
  • 仍需权衡实施工作量、回归风险、验证难度、性能以及运营风险。允许破坏兼容性并不意味着允许扩大任务范围或执行破坏性操作。
  • 继续遵守外部标准、平台 ABI、有效的第三方契约以及当前任务中其他互操作性要求。

以 KISS 和 Unixify 原则判断架构

对于责任边界、接口、数据表示或系统层的重大变更,首先应用已安装的 $kiss 技能去除不必要的概念和机制,然后应用 $unixify 技能塑造剩余的责任、表示和组合接口。对于局部的机械性变更,可跳过此额外流程。

在此策略激活期间,仅覆盖 KISS 和 Unixify 中与兼容性保留相关的护栏。保留其其他护栏,特别是正确性、安全性、数据完整性、清晰性、合理边界以及可观察的失败行为。

保护数据与操作

  • 当存储的数据必须迁移到不兼容的表示形式时,提供并验证一种单向、无损的迁移。迁移后仅支持新的表示形式。
  • 如果无法进行无损迁移,则停止并报告将会丢失的信息或语义。在获得特定任务的决策之前,不得进行有损迁移。
  • 仅当当前的可用性或滚动部署要求导致混合版本操作必要时,才引入临时代码桥。为桥设置明确的移除条件,并在过渡完成后将其移除。

传达破坏性变更

不要仅仅因为所选设计具有破坏性就请求许可。在计划、审查或完成报告中简要说明主要破坏的契约、受影响的调用方或数据、所需的迁移以及已执行的验证。

相关技能