关于 axiom-ios-data
面向 iOS 开发者的数据持久化路由指南,帮助确定数据库、迁移、云同步、文件、序列化与安全存储相关的技能。它按具体技术和问题类型提供后续技能及审计 Agent 的入口。
主要功能
- 01按存储技术路由到相关技能
- 02覆盖数据库与模式迁移
- 03涵盖云同步和文件存储
- 04指引 Codable 与 JSON 处理
- 05提供存储安全审计入口
适用场景
- 01选择 SwiftData、Core Data 或 SQLiteData 相关指导
- 02处理数据库模式变更与迁移
- 03排查 CloudKit 或 iCloud 同步问题
- 04检查凭据存储、文件位置或数据模型
安装
复制下面的命令,在终端中运行。
npx skills add https:/ / github.com/ charleswiltgen/ axiom --skill axiom-ios-data安装后在 Claude Code 中输入/axiom-ios-data确认已加载。
详细介绍
iOS 数据与持久化路由器
任何涉及数据持久化、数据库、axiom-storage、CloudKit 或序列化的工作,都必须使用此技能。
适用场景
在处理以下内容时使用此路由器:
- 数据库(SwiftData、Core Data、GRDB、SQLiteData)
- 架构迁移
- CloudKit 同步
- 文件存储(iCloud Drive、本地存储)
- 数据序列化(Codable、JSON)
- 存储策略决策
- Keychain / 安全凭据存储
- 加密、签名、密钥管理(CryptoKit)
路由逻辑
SwiftData
使用 SwiftData → /skill axiom-swiftdata
架构迁移 → /skill axiom-swiftdata-migration
迁移问题 → /skill axiom-swiftdata-migration-diag
从 Realm 迁移 → /skill axiom-realm-migration-ref
SwiftData 与 SQLiteData 的比较 → /skill axiom-sqlitedata-migration
其他数据库
GRDB 查询 → /skill axiom-grdb
SQLiteData → /skill axiom-sqlitedata
高级 SQLiteData → /skill axiom-sqlitedata-ref
Core Data 模式 → /skill axiom-core-data
Core Data 问题 → /skill axiom-core-data-diag
迁移
数据库迁移安全性 → /skill axiom-database-migration(关键:防止数据丢失)
序列化
Codable 问题 → /skill axiom-codable
云存储
云同步模式 → /skill axiom-cloud-sync
CloudKit → /skill axiom-cloudkit-ref
iCloud Drive → /skill axiom-icloud-drive-ref
云同步错误 → /skill axiom-cloud-sync-diag
Keychain 与加密
Keychain / 安全凭据存储 → /skill axiom-keychain
Keychain 错误 → /skill axiom-keychain-diag
Keychain API 参考 → /skill axiom-keychain-ref
加密 / 签名 / 密钥管理 → /skill axiom-cryptokit
CryptoKit API 参考 → /skill axiom-cryptokit-ref
文件存储
存储策略 → /skill axiom-storage
存储问题 → /skill axiom-storage-diag
存储管理 → /skill axiom-storage-management-ref
文件保护 → /skill axiom-file-protection-ref
tvOS 存储
tvOS 数据持久化 → /skill axiom-tvos(关键:tvOS 不支持本地持久化存储)
tvOS + CloudKit → /skill axiom-sqlitedata(推荐:使用 SyncEngine 作为持久化存储)
自动化扫描
Core Data 审计 → 启动 core-data-auditor Agent 或 /axiom:audit core-data(迁移风险、线程隔离、N+1 查询、生产数据丢失)
Codable 审计 → 启动 codable-auditor Agent 或 /axiom:audit codable(try? 吞掉错误、JSONSerialization、日期处理)
iCloud 审计 → 启动 icloud-auditor Agent 或 /axiom:audit icloud(权利检查、文件协调、CloudKit 反模式)
存储审计 → 启动 storage-auditor Agent 或 /axiom:audit storage(文件位置错误、缺少备份排除项、数据丢失风险)
数据库架构审计 → 启动 database-schema-auditor Agent 或 /axiom:audit database-schema(不安全的 ALTER TABLE、DROP 操作、缺少幂等性、外键误用)
SwiftData 审计 → 启动 swiftdata-auditor Agent 或 /axiom:audit swiftdata(结构体模型、缺少 VersionedSchema、关系默认值、后台上下文误用、N+1 模式)
决策树
- SwiftData?→ swiftdata,swiftdata-migration
- Core Data?→ core-data,core-data-diag
- GRDB?→ grdb
- SQLiteData?→ sqlitedata,sqlitedata-ref
- 任何模式迁移?→ database-migration(始终使用 — 防止数据丢失)
- Realm 迁移?→ realm-migration-ref
- SwiftData 与 SQLiteData?→ sqlitedata-migration
- 云同步架构?→ cloud-sync
- CloudKit?→ cloudkit-ref
- iCloud Drive?→ icloud-drive-ref
- 云同步错误?→ cloud-sync-diag
- Codable/JSON 序列化?→ codable
- 文件存储策略?→ storage,storage-diag,storage-management-ref
- 文件保护?→ file-protection-ref
- Keychain / 安全存储令牌、密码、机密信息?→ keychain,keychain-diag,keychain-ref
- SecItem 错误(errSecDuplicateItem、errSecItemNotFound、errSecInteractionNotAllowed)?→ keychain-diag
- 加密、签名、安全隔区、CryptoKit?→ cryptokit,cryptokit-ref
- 抗量子密码学、HPKE、ML-KEM?→ cryptokit
- 想要 Core Data 安全扫描?→ core-data-auditor(Agent)
- 想要 Codable 反模式扫描?→ codable-auditor(Agent)
- 想要 iCloud 同步审计?→ icloud-auditor(Agent)
- 想要存储位置审计?→ storage-auditor(Agent)
- 想要数据库模式/迁移安全扫描?→ database-schema-auditor(Agent)
- 想要 SwiftData 代码审计?→ swiftdata-auditor(Agent)
- tvOS 数据持久化?→ axiom-tvos(关键:没有持久化的本地存储)+ axiom-sqlitedata(CloudKit SyncEngine)
避免自我合理化
| 想法 | 实际情况 |
|---|---|
| “只是添加一列,不需要迁移” | 不进行迁移就更改模式会导致用户的应用崩溃。database-migration 可防止数据丢失。 |
| “我会手动处理迁移” | 手动迁移会遗漏边界情况。database-migration 涵盖回滚和测试。 |
| “只是简单查询,不需要这个技能” | 查询模式可防止 N+1 和线程安全问题。该技能提供可直接复制粘贴的解决方案。 |
| “CloudKit 同步很简单” | CloudKit 有 15 种以上的故障模式。cloud-sync-diag 可系统地诊断这些问题。 |
| “我对 Codable 已经足够熟悉了” | Codable 存在会导致静默数据丢失的陷阱(try? 会吞掉错误)。codable 技能可防止生产环境中的 Bug。 |
| “我会在 tvOS 上使用本地存储” | tvOS 没有持久化的本地存储。系统可随时删除 Caches。axiom-tvos 会介绍以 iCloud 为先的模式。 |
| “用 UserDefaults 存这个令牌没问题” | UserDefaults 未加密、会备份到 iCloud,且对 MDM 配置文件可见。一次审计就能发现这个问题。keychain 可安全存储令牌。 |
| “我会用 CommonCrypto 自己加密” | CryptoKit 用单行 API 取代了 CommonCrypto 那些令人头疼的缓冲区管理。cryptokit 可防止误用。 |
关键模式:迁移
添加/修改数据库列时,始终调用 /skill axiom-database-migration。
这可以防止:
- “FOREIGN KEY constraint failed” 错误
- “no such column” 崩溃
- 不安全迁移导致的数据丢失
调用示例
用户:“我需要为我的 SwiftData 模型添加一列”
→ 调用:/skill axiom-database-migration(关键:可防止数据丢失)
用户:“如何使用复杂筛选条件查询 SwiftData?”
→ 调用:/skill axiom-swiftdata
用户:“CloudKit 同步无法正常工作”
→ 调用:/skill axiom-cloud-sync-diag
用户:“我应该使用 SwiftData 还是 SQLiteData?”
→ 调用:/skill axiom-sqlitedata-migration
用户:“检查我的 Core Data 代码是否存在安全问题”
→ 调用:core-data-auditor Agent
用户:“发布前扫描 Codable 反模式”
→ 调用:codable-auditor Agent
用户:“审查我的 iCloud 同步实现”
→ 调用:icloud-auditor Agent
用户:“检查我的文件是否存储在正确的位置”
→ 调用:storage-auditor Agent
用户:“审查我的数据库迁移是否安全”
→ 调用:database-schema-auditor Agent
用户:“检查我的 SwiftData 模型是否存在问题”
→ 调用:swiftdata-auditor Agent
用户:“如何在 tvOS 上持久化数据?”
→ 调用:/skill axiom-tvos + /skill axiom-sqlitedata
用户:“我的 tvOS 应用在每次启动后都会丢失数据”
→ 调用:/skill axiom-tvos
用户:“如何安全地存储身份验证令牌?”
→ 调用:/skill axiom-keychain
用户:“出现 errSecDuplicateItem,但我确认该项目并不存在”
→ 调用:/skill axiom-keychain-diag
用户:“如何在 Swift 中使用 AES 加密数据?”
→ 调用:/skill axiom-cryptokit
用户:“我需要使用 Secure Enclave 对数据签名”
→ 调用:/skill axiom-cryptokit
用户:“什么是 ML-KEM?我应该使用它吗?”
→ 调用:/skill axiom-cryptokit