代码生成开发者Skill code-generation-developer

这个技能是用于智能路由到代码生成工作流的工具,帮助开发者自动化和管理iOS应用中的代码生成任务。主要功能包括使用SwiftGen处理资产和本地化,Sourcery进行模板代码生成,功能标志用于安全功能推出,以及Protobuf中间件绑定。关键词:代码生成、SwiftGen、Sourcery、功能标志、Protobuf、make generate、iOS开发、自动化工具、移动应用开发、软件开发效率。

移动开发 0 次安装 0 次浏览 更新于 3/15/2026

name: 代码生成开发者 description: 上下文感知的路由到代码生成工作流,包括 SwiftGen、Sourcery、功能标志和 Protobuf。用于运行 make generate、添加功能标志或处理生成的文件时。

代码生成开发者(智能路由器)

目的

上下文感知的路由到代码生成工作流:SwiftGen、Sourcery、功能标志和 Protobuf。帮助您导航何时以及如何运行生成器。

自动激活时机

  • 运行或讨论 make generate
  • 添加功能标志
  • 处理生成的文件
  • 关键词:swiftgen、sourcery、功能标志、FeatureFlags、make generate

🚨 关键规则(永不违反)

  1. 永不编辑生成的文件 - 标记为 // Generated using Sourcery/SwiftGen 的文件是自动生成的
  2. 更改后始终运行 make generate - 更新模板、标志、资产或本地化时
  3. 所有新功能使用功能标志 - 包装实验性代码以安全推出
  4. 更新源代码,而非生成代码 - 编辑模板/配置,然后重新生成

📋 基本命令

make generate        # 运行所有生成器(SwiftGen、Sourcery、资产、本地化)
make generate-middle # 重新生成中间件和 protobuf(当依赖项更改时)
make setup-middle    # 初始中间件设置

🚩 功能标志快速工作流

1. 定义标志

文件: /Modules/AnytypeCore/AnytypeCore/Utils/FeatureFlags/FeatureDescription+Flags.swift

extension FeatureDescription {
    static let newChatInterface = FeatureDescription(
        title: "新聊天界面",
        type: .feature(author: "您的名字", releaseVersion: "0.42.0"),
        defaultValue: false,  // 生产中关闭
        debugValue: true      // 调试版本中打开以便测试
    )
}

2. 生成

make generate

这将创建: Modules/AnytypeCore/AnytypeCore/Generated/FeatureFlags.swift

3. 在代码中使用

import AnytypeCore

if FeatureFlags.newChatInterface {
    NewChatView()
} else {
    LegacyChatView()
}

标志类型

  • .debug: 仅限调试(生产中不可用)
  • .feature(author:releaseVersion:): 生产功能,带元数据

最佳实践

  • 未发布功能设置 defaultValue: false
  • 设置 debugValue: true 便于开发者测试
  • 完全推出后移除标志

🎯 何时运行 make generate

您做了这个 运行这个 原因
添加/更新 .xcstrings make generate 重新生成 Loc 常量
添加功能标志 make generate 生成 FeatureFlags 枚举
添加图标到 Assets.xcassets make generate 生成图像资产常量
修改 Sourcery 模板 make generate 从模板重新生成代码
更新中间件版本 make generate-middle 重新生成 protobuf 绑定

🎨 SwiftGen - 资产与本地化

添加图标

  1. 从 Figma 导出 SVG(例如,“32/qr code” → QRCode.svg
  2. 添加到 /Modules/Assets/.../Assets.xcassets/DesignSystem/x32/QRCode.imageset/
  3. 运行 make generate
  4. 使用: Image(asset: .X32.qrCode)

图标尺寸: x18、x24、x32、x40(点)

本地化

SwiftGen 从 .xcstrings 文件生成 Loc 常量。

完整工作流参见 localization-developer 技能。

🔧 Sourcery - 基于模板的生成

Sourcery 基于源代码文件注释从模板生成 Swift 代码。

常见用途:

  • 协议一致性
  • 模拟实现
  • 依赖注入
  • 枚举辅助

工作流:

  1. 添加注释到源文件: // sourcery: AutoEquatable
  2. 运行 make generate
  3. 使用生成代码(不要编辑生成文件!)

🔌 中间件与 Protobuf

何时重新生成

  • 中间件版本更新
  • Dependencies/Middleware/Lib.xcframework 缺失二进制文件
  • 构建错误涉及中间件符号

命令

make setup-middle    # 初始设置
make generate-middle # 重新生成中间件 + protobuf

⚠️ 常见错误

编辑生成文件

// 在 FeatureFlags.swift(生成的)中
static let myFlag: Bool = true  // ❌ 不要这样做
// 您的更改将被覆盖

✅ 正确: 编辑 FeatureDescription+Flags.swift,然后 make generate

忘记生成

// 添加了 FeatureDescription 但未生成
if FeatureFlags.myNewFlag {  // ❌ 错误:未解析标识符
    ...
}

✅ 正确: 先运行 make generate

缺失中间件二进制文件

症状: “Lib.xcframework 缺失二进制文件”

解决方案: make setup-middlemake generate

📚 完整文档

完整指南: Modules/AnytypeCore/CODE_GENERATION_GUIDE.md

涵盖以下内容:

  • 功能标志生命周期(开发 → 测试 → 推出 → 清理)
  • SwiftGen 配置文件和工作流
  • Sourcery 模板和注释
  • Protobuf 分割配置
  • 完整故障排除指南
  • 生成文件位置

✅ 提交前清单

  • [ ] 如果您添加/更新了以下内容,运行了 make generate:
    • [ ] 功能标志
    • [ ] 图标/资产
    • [ ] 本地化字符串
    • [ ] Sourcery 注释
  • [ ] 未手动编辑带有“// Generated using”头的文件
  • [ ] 提交了源文件和生成文件
  • [ ] 已验证构建成功

🔗 相关技能与文档

  • localization-developerLOCALIZATION_GUIDE.md - SwiftGen 生成的本地化键
  • ios-dev-guidelinesIOS_DEVELOPMENT_GUIDE.md - 永不编辑生成文件
  • design-system-developer → SwiftGen 生成的图标

导航: 这是一个智能路由器。有关深入技术细节,请始终参考 CODE_GENERATION_GUIDE.md