用途:指导从代码库中系统化移除功能开关(feature toggle/feature flag),并通过自动化清理检测确保不遗留孤立代码、未使用组件或被遗忘的文件。
激活时机:用户提到“remove toggle”“delete feature flag”“enable feature toggle permanently”,或编辑 FeatureDescription+Flags.swift 文件,或在完成开关移除后需要识别清理机会时自动激活。
主要能力与工作流:
- 移除前分析:定位开关定义(位于 Modules/AnytypeCore/AnytypeCore/Utils/FeatureFlags/FeatureDescription+Flags.swift),用 rg "static let toggleName" --type swift 查找;根据 defaultValue 决定保留哪个分支(true 保留 TRUE 分支,false 保留 FALSE 分支);用 rg "toggleName" --type swift 搜索全部用法,识别直接、取反、复合、赋值、状态等模式,列出受影响文件供用户审阅。
- 移除开关:简化条件判断(如 if FeatureFlags.toggleName 直接保留分支、三元运算符替换为固定值、取反逻辑删除死代码、@State 变量处理),删除开关定义,运行 make generate 自动更新 FeatureFlags+Flags.swift,再用 rg 验证无残留。
- 自动化清理检测:检查未使用的 @State 变量、未使用的视图组件(如 SpaceCardLabel 仅剩定义文件则删除)、未使用的 ViewModel/服务类及其 DI 注册、未使用的 import(尤其 AnytypeCore)、孤立参数/属性、测试清理(AnyTypeTests/ 与 PreviewMocks/)。
- 最终验证:grep 确认无结果,提醒用户在 Xcode 中验证编译(因缓存原因 Claude 无法验证),生成提交信息如 IOS-XXXX Removed [toggleName] toggle,并输出清理摘要。
适用场景:Swift/iOS 项目中功能开关的移除与重构后清理,配合 code-generation-developer、ios-dev-guidelines、code-review-developer 等技能使用。
限制:编译验证需用户自行在 Xcode 完成;具体命令与路径依赖 Anytype 项目结构;资料未提供其他平台或语言的适配说明。