关于 swiftdata-pro
swiftdata-pro 面向 Swift 开发者,用于编写和审查 SwiftData 代码。它按项目和系统版本检查常见问题,并只报告确实存在的问题。
主要功能
- 01审查 SwiftData 代码
- 02检查谓词安全性
- 03应用 CloudKit 专属规则
- 04检查 iOS 18+ 索引
- 05检查 iOS 26+ 继承
适用场景
- 01审查 SwiftData 模型改动
- 02检查谓词的运行时风险
- 03评估 CloudKit 模型约束
- 04采用适配系统版本的建议
安装
复制下面的命令,在终端中运行。
$
npx skills add https:/ / github.com/ twostraws/ swiftdata-agent-skill --skill swiftdata-pro安装后在 Claude Code 中输入/swiftdata-pro确认已加载。
包含的文件
除 SKILL.md 外,安装时一起下载的参考资料和脚本。
agents/openai.yamlassets/swiftdata-pro-icon.svgreferences/class-inheritance.mdcloudkit.mdcore-rules.mdindexing.mdpredicates.md详细介绍
编写和审查 SwiftData 代码,确保其正确、使用现代 API,并遵循项目规范。只报告确实存在的问题——不要吹毛求疵或凭空捏造问题。
审查流程:
- 使用
references/core-rules.md检查 SwiftData 的核心问题。 - 使用
references/predicates.md检查谓词是否安全且受支持。 - 如果项目使用 CloudKit,使用
references/cloudkit.md检查 CloudKit 特定的限制。 - 如果项目面向 iOS 18 及以上版本,使用
references/indexing.md检查索引优化机会。 - 如果项目面向 iOS 26 及以上版本,使用
references/class-inheritance.md检查类继承模式。
如果只处理部分内容,只加载相关的参考文件。
核心指令
- 以 Swift 6.2 或更高版本为目标,并使用现代 Swift 并发机制。
- 用户强烈倾向于全面使用 SwiftData。除非某项功能无法通过 SwiftData 实现,否则不要建议使用 Core Data 功能。
- 未经询问,不要引入第三方框架。
- 保持一致的项目结构,根据应用功能确定文件夹布局。
输出格式
如果用户要求审查,请按文件整理发现的问题。对于每个问题:
- 指明文件和相关行号。
- 说明违反的规则。
- 展示简短的修复前后代码。
跳过没有问题的文件。最后按优先级总结最值得优先处理的更改。
如果用户要求编写或改进代码,请遵循以上相同规则,但直接进行更改,而不是返回问题报告。
示例输出:
Destination.swift
第 8 行:为关系添加明确的删除规则。
// Before
var sights: [Sight]
// After
@Relationship(deleteRule: .cascade, inverse: \Sight.destination) var sights: [Sight]
第 22 行:谓词中不要使用 isEmpty == false——这会导致运行时崩溃。请改用 !。
// Before
#Predicate<Destination> { $0.sights.isEmpty == false }
// After
#Predicate<Destination> { !$0.sights.isEmpty }
DestinationListView.swift
第 5 行:@Query 只能在 SwiftUI 视图中使用。
// Before
class DestinationStore {
@Query var destinations: [Destination]
}
// After
class DestinationStore {
var modelContext: ModelContext
func fetchDestinations() throws -> [Destination] {
try modelContext.fetch(FetchDescriptor<Destination>())
}
}
总结
- 数据丢失(高): Destination.swift 第 8 行缺少删除规则,删除 destination 时会导致 sight 成为孤立数据。
- 崩溃(高): 第 22 行的
isEmpty == false会导致运行时崩溃——请改用!isEmpty。 - 行为错误(高): DestinationListView.swift 第 5 行的
@Query只能在 SwiftUI 视图中使用。
示例结束。
参考资料
references/core-rules.md- 自动保存、关系、删除规则、属性限制和 FetchDescriptor 优化。references/predicates.md- 支持的谓词操作、会在运行时导致崩溃的危险模式,以及不受支持的方法。references/cloudkit.md- CloudKit 特定的限制,包括唯一性、可选性和最终一致性。references/indexing.md- iOS 18 及以上版本的数据库索引,包括单属性和复合属性索引。references/class-inheritance.md- iOS 26 及以上版本的模型子类化,包括 @available 要求、架构设置和谓词筛选。
评论
支持 Markdown