目录

ShipSwift:AI原生SwiftUI组件库,MCP协议让Claude秒级构建iOS应用

“一条命令给 AI 所需的一切——生产级 SwiftUI 组件、全栈配方、以及构建真实应用所需的上下文。无需猜测。"——ShipSwift 官网宣言


学习目标

通过本文,你将掌握以下核心能力:

  • 理解 ShipSwift 的项目定位和设计目标(AI-native SwiftUI 组件库)
  • 掌握 ShipSwift 的三种安装方式(MCP Skills + Recipe Server、本地 Skills、文件复制)
  • 理解 ShipSwift 的依赖规则(金字塔结构)和命名规范(SW 前缀、.sw 修饰符)
  • 学会使用 ShipSwift 的组件(SWAnimation、SWChart、SWComponent、SWModule)
  • 了解 ShipSwift 的商业模式(Free + Pro)和适用场景
  • 知道如何将 ShipSwift 集成到 AI 辅助 iOS 开发工作流中

目录


一句话定位

ShipSwift 是一个AI-native SwiftUI 组件库,通过 MCP 协议让 AI 助手(如 Claude Code)能够按需获取生产级组件代码,说出"添加一个 shimmer 加载动画"或"构建一个认证流程”,AI 就能直接生成可运行的代码。

当前 GitHub ⭐ 2.2k,Swift 实现,MIT 许可证。


解决什么问题

AI 写 SwiftUI 的困境

让 GPT-4/Claude 写 SwiftUI 代码时,常见的问题是:

  1. 组件不完整:LLM 生成的是骨架代码,缺少边界情况处理和状态管理
  2. 第三方依赖不明:LLM 不知道该用什么现成库,自己造轮子容易出错
  3. API 版本问题:SwiftUI API 变化快,LLM 容易写出已废弃的 API
  4. 无法访问真实代码:LLM 的知识有截止日期,最新的 Apple 平台 API 它可能不知道

ShipSwift 的解决思路:不只提供组件列表,而是提供 AI 能直接使用的完整代码 + 上下文


核心架构

三种安装方式

方式说明适用场景
MCP Skills + Recipe Server(推荐)安装 skill 后连接 MCP 服务器,AI 可按需获取 Pro recipes需要完整后端配方时
本地 Skills安装 skill 后 AI 直接读取本地源码离线环境,或只需要免费组件
文件复制克隆仓库后直接拷贝组件文件到项目简单使用,不想装任何依赖

推荐方式:MCP Skills + Recipe Server

# Step 1: 安装 ShipSwift Skills
npx skills add signerlabs/shipswift-skills

# Step 2: 连接 Recipe Server(MCP)
claude mcp add --transport http shipswift https://api.shipswift.app/mcp

# Step 3: 对着 AI 说人话
# "Add a shimmer loading animation"
# "Build an authentication flow with Cognito"
# "Show me all chart components"

本地 Skills(无需 MCP)

npx skills add signerlabs/ShipSwift
# AI 直接读取仓库中的组件源码

依赖规则:金字塔结构

ShipSwift 的组件之间有严格的依赖层级:

        SWModule(业务模块)
           ↑ 依赖
    SWComponent(UI组件)
    ↑         ↑         ↑
依赖     依赖      依赖
SWUtil  SWUtil   SWUtil

SWAnimation   SWChart
    ↑            ↑
    └────────────┘
           ↑
        SWUtil(工具层,无任何依赖)

这个分层设计确保了组件的可复用性:底层的 SWUtil 不依赖任何其他模块,可以被任意组件引用;上层的 SWModule 依赖下层组件,构成业务模块。


组件体系

SWAnimation — 动画组件

组件功能
SWShimmerskeleton 加载时的闪光扫过效果
SWTypewriterText打字机效果,逐字显示文本
SWShakingIcon摇晃图标(错误提示等)
SWGlowSweep发光扫过效果
SWLightSweep光线扫过动画
SWScanningOverlay扫描覆盖层(扫码等场景)
SWAnimatedMeshGradientSpriteKit 驱动的动态网格渐变
SWOrbitingLogos轨道旋转 Logo 动画
SWBeforeAfterSlider图片对比滑块(修图前后对比)

SWShimmer 实现解析

struct SWShimmer<Content: View>: View {
    @State private var animate = false
    var duration: Double = 2.0
    var delay: Double = 1.0

    @ViewBuilder let content: () -> Content

    var body: some View {
        content()
            .overlay {
                GeometryReader { geo in
                    let bandWidth = geo.size.width * 0.5
                    // 白色光带从左扫到右
                    gradient
                        .frame(width: bandWidth)
                        .offset(x: animate ? geo.size.width + bandWidth : -bandWidth * 1.5)
                        .animation(
                            .linear(duration: duration)
                            .delay(delay)
                            .repeatForever(autoreverses: false),
                            value: animate
                        )
                }
                .clipped()
            }
            .task {
                try? await Task.sleep(nanoseconds: 100_000_000)
                animate = true
            }
    }
}

使用方式极其简洁:

// 默认 timing(2s 扫过,1s 暂停)
SWShimmer {
    Text("Upgrade Now")
        .padding()
        .background(.blue)
        .clipShape(.capsule)
}

// 自定义 duration 和 delay
SWShimmer(duration: 1.5, delay: 2.0) {
    myView
}

SWChart — 图表组件

基于 Apple Swift Charts 框架构建:

组件功能
SWLineChart多系列折线图,支持平滑/阶梯插值
SWBarChart柱状图
SWAreaChart面积图
SWDonutChart甜甜圈图
SWRingChart环形图
SWRadarChart雷达图
SWScatterChart散点图
SWActivityHeatmapGitHub 风格的贡献热力图

SWLineChart 实现解析

SWLineChart 是一个泛型组件,类型参数 CategoryType 必须满足 Hashable & Plottable

struct SWLineChart<CategoryType: Hashable & Plottable>: View {
    struct DataPoint: Identifiable {
        let id: UUID
        let date: Date
        let value: Double
        let category: CategoryType
    }

    struct ReferenceLine {
        let value: Double
        let label: String?
        let color: Color
        let style: StrokeStyle
    }

    // 丰富的配置选项
    var referenceLines: [ReferenceLine] = []
    var interpolationMethod: InterpolationMethod = .linear
    var showPointMarkers: Bool = false
    var yDomain: ClosedRange<Double>?
    var scrollableDaysBack: Int = 30
    var scrollableDaysForward: Int = 7
    var visibleDays: Int = 7
    var chartHeight: CGFloat = 200
    // ...
}

使用示例:

let data: [SWLineChart<String>.DataPoint] = [
    .init(date: Date(), value: 72, category: "Revenue"),
    .init(date: Date(), value: 45, category: "Cost"),
]
let colors: [String: Color] = ["Revenue": .blue, "Cost": .red]

SWLineChart(
    dataPoints: data,
    colorMapping: colors,
    referenceLines: [.init(value: 60, label: "Target", color: .orange)],
    interpolationMethod: .catmullRom,
    showPointMarkers: true,
    yDomain: 0...100,
    visibleDays: 14,
    chartHeight: 220,
    title: "Financials"
)

亮点设计:

  • 动画入场:遮罩矩形从左到右展开(easeOut 1.2s),Y 值从 0 渐变到目标值,坐标轴保持稳定
  • 水平滚动:支持配置滚动范围和可见天数
  • 参考线RuleMark 实现水平参考线,支持标签和虚线样式
  • 泛型类别:支持任意 Hashable 类型作为系列标识

SWComponent — UI 组件

分为三类:

Display(展示组件)

  • SWFloatingLabels — 浮动标签
  • SWScrollingFAQ — 滚动 FAQ
  • SWRotatingQuote — 轮播引用
  • SWBulletPointText — 项目符号文本
  • SWGradientDivider — 渐变分割线
  • SWLabel / SWMarkdownText — 文本组件
  • SWOnboardingView — 引导页模板
  • SWOrderView — 订单视图
  • SWRootTabView — 根 Tab 视图
  • SWVideoPlayer — 视频播放器

Feedback(反馈组件)

  • SWAlert — 警告弹窗
  • SWLoading — 加载状态
  • SWThinkingIndicator — AI “思考中"指示器

Input(输入组件)

  • SWTabButton — Tab 按钮
  • SWStepper — 步进器
  • SWAddSheet — 添加表单
  • SWSearchBar — 搜索栏

SWModule — 多文件业务模块

这是 ShipSwift 最实用的部分——提供完整的业务功能模块,而非单个组件:

模块功能技术栈
SWAuth用户认证Amplify SDK (Cognito)、社交登录、邮箱/手机号
SWCamera相机拍摄AVFoundation、Vision 人脸标志点跟踪
SWPaywall订阅付费墙StoreKit 2(iOS 客户端免费,Pro 含后端)
SWChat聊天视图消息列表、语音识别(VolcEngine ASR)
SWSetting设置页面模板多语言切换、分享、法律链接
SWSubjectLifting背景移除VisionKit ImageAnalysis
SWTikTokTrackingTikTok 事件追踪TikTok Events API(iOS 客户端免费,Pro 含后端)

命名规范

ShipSwift 制定了严格的命名规范,保证组件在项目中不会与其他代码冲突:

类型命名

所有类型使用 SW 前缀:

struct SWShimmer<Content: View>
struct SWLineChart<CategoryType: Hashable & Plottable>
class SWAlertManager
class SWStoreManager

View Modifier 命名

视图修饰符使用小写 .sw 前缀:

.view.swAlert()
.view.swPageLoading()
.background.swPrimary()

这种双前缀设计(SW for types, .sw for modifiers)确保了命名空间隔离。


商业模式:Free + Pro

ShipSwift 采用 MIT 开源 + Pro 付费 的混合模式:

Free(开源)Pro Recipe
iOS 客户端代码✅ 完整源码✅ 增强版
后端实现✅ Hono 路由、数据库 schema、Webhooks
集成指南✅ 端到端检查清单
合规模板✅ 隐私清单、App Store 标签
已知陷阱✅ 每个 recipe 10+ 条实战经验

Pro recipes 覆盖的场景:

  • SWPaywall:完整的后端订阅验证、合规指南(ATT 弹窗、订阅协议)
  • SWTikTokTracking:后端事件接收、合规配置
  • 即将推出:Push Notifications、Analytics Dashboard

这种模式的精明之处:开源 iOS 客户端让开发者放心(代码可审查、无锁定),Pro 卖的是"不踩坑"的工程经验


技术栈与实现亮点

Swift Charts 实战

SWLineChart 是学习 Swift Charts 的优秀参考。它展示了:

  • LineMark / PointMark / RuleMark 的组合使用
  • chartForegroundStyleScale 实现类别到颜色的映射
  • chartScrollableAxes 实现水平滚动
  • 泛型设计在 Charts 中的应用
  • 入场动画通过 Y 值乘以 animationProgress 实现

SpriteKit 集成

SWAnimatedMeshGradient 将 SpriteKit 的 SKScene 嵌入 SwiftUI,利用 SpriteKit 的粒子系统和着色器实现复杂的网格渐变动画。

Vision + AVFoundation

SWCamera 集成了:

  • AVCaptureSession 相机捕获
  • VNDetectFaceLandmarksRequest 人脸 76 个标志点跟踪
  • VisionKitImageAnalysis 接口

StoreKit 2

SWPaywall 使用最新的 StoreKit 2 API(Swift Concurrency + AsyncStream),而非已废弃的旧 API。


适用场景

✅ 强项场景:

  • AI 辅助 iOS 开发:让 Claude/Gemini 按需获取组件代码
  • 快速原型:从 Shimmer 到 LineChart 到 Paywall,开源组件覆盖常见需求
  • AI-native 开发工作流:MCP 协议让 AI 有上下文,能生成正确的代码
  • 学习 Swift Charts/SpriteKit/Vision:参考 ShipSwift 的生产级实现

❌ 局限:

  • 主要面向 iOS 18+(SwiftUI Charts 等需要较新 API)
  • Pro recipes 需要付费(但开源代码质量本身已经很高)
  • 组件偏向展示层,复杂业务逻辑仍需自己实现

常见问题与故障排查

问题1:MCP Server 连接失败

现象:配置 MCP Server 后,AI 助手无法获取 ShipSwift 组件。

原因:可能的原因包括:

  1. MCP Server 未启动
  2. 网络连接问题
  3. API 密钥未配置

解决方案

  1. 检查 MCP Server 是否运行:curl https://api.shipswift.app/mcp
  2. 检查 Claude Code 的 MCP 配置是否正确
  3. 尝试本地 Skills 方式(无需 MCP):npx skills add signerlabs/ShipSwift

问题2:组件代码无法编译

现象:AI 生成的代码无法编译,提示类型错误或不兼容的 API。

原因:可能的原因包括:

  1. iOS 版本不匹配(ShipSwift 需要 iOS 18+)
  2. 缺少必要的框架导入
  3. 组件版本更新导致 API 变化

解决方案

  1. 检查项目的 iOS 部署目标(Deployment Target)是否设置为 iOS 18.0+
  2. 确保导入了必要的框架:import SwiftUI, import Charts, 等
  3. 查看 ShipSwift 的 GitHub 仓库,确认使用的是最新版本的组件代码
  4. 使用本地 Skills 方式,让 AI 直接读取源码(保证版本一致)

问题3:Pro Recipe 是否值得购买

现象:正在考虑是否购买 Pro Recipe。

分析:Pro Recipe 的价值在于:

  1. 后端实现:Free 版只提供 iOS 客户端代码,Pro 版提供完整的后端路由、数据库 schema、Webhooks
  2. 集成指南:端到端检查清单,避免集成时的常见坑
  3. 合规模板:隐私清单、App Store 标签等合规文档
  4. 已知陷阱:每个 recipe 10+ 条实战经验,避免踩坑

建议

  • 如果你只需要 iOS 客户端组件,Free 版足够
  • 如果你需要构建完整的后端服务(如 Paywall 的后端验证),Pro 版值得购买
  • 可以先使用 Free 版原型,需要后端时再购买 Pro Recipe

问题4:组件与现有代码冲突

现象:集成 ShipSwift 组件后,与现有代码的命名冲突。

原因:虽然 ShipSwift 使用 SW 前缀,但可能与你现有的类型名冲突。

解决方案

  1. 使用 Swift 的 module 系统,通过 ShipSwift.SWShimmer 方式引用
  2. 如果使用 CocoaPods 或 SPM,确保 module 名称正确
  3. 如果使用文件复制方式,可以全局替换 SW 前缀为其他前缀(如 MyAppSW

自测题

题目1:ShipSwift 的核心价值

问题:ShipSwift 与传统 SwiftUI 组件库(如 SwiftUIX、ASCollectionView)的主要区别是什么?

参考答案

传统组件库

  • 提供预定义的组件代码
  • 开发者手动复制代码或集成框架
  • AI 生成代码时需要猜测组件 API

ShipSwift 的差异化

  1. AI-native:通过 MCP 协议让 AI 助手能够按需获取生产级组件代码
  2. 完整上下文:不只提供组件代码,还提供使用指南、依赖规则、常见陷阱
  3. MCP 集成:AI 可以自动选择正确的组件、生成正确的代码、处理边界情况
  4. Pro Recipe:提供完整的后端实现和集成指南,不只是前端组件

核心价值:让 AI 真正成为"能产出生产级代码"的开发者助手。

题目2:MCP 协议的作用

问题:解释 ShipSwift 如何通过 MCP 协议让 AI 助手生成正确的代码?

参考答案

MCP(Model Context Protocol)的作用

  1. 上下文提供:AI 助手通过 MCP 协议访问 ShipSwift 的组件库,获得完整的组件代码、使用示例、依赖规则
  2. 按需获取:AI 可以根据用户的需求(如"添加一个 shimmer 加载动画”)自动选择正确的组件(SWShimmer)
  3. 代码生成:AI 基于获取到的组件代码,生成符合项目规范的代码(正确的导入、正确的 API 调用、正确的状态管理)
  4. 避免猜测:AI 不需要猜测组件的 API,而是直接读取源码或文档

对比

  • 没有 MCP:AI 生成 SwiftUI 代码时,只能基于训练数据,容易生成已废弃的 API 或不完整的代码
  • 有 MCP:AI 可以读取最新的组件代码,生成正确的、完整的、可运行的代码

题目3:依赖规则(金字塔结构)

问题:解释 ShipSwift 的依赖规则(金字塔结构),为什么这样设计?

参考答案

金字塔结构

        SWModule(业务模块)
           ↑ 依赖
    SWComponent(UI组件)
    ↑         ↑         ↑
依赖     依赖      依赖
SWUtil  SWUtil   SWUtil

SWAnimation   SWChart
    ↑            ↑
    └────────────┘
           ↑
        SWUtil(工具层,无任何依赖)

设计原因

  1. 可复用性:底层的 SWUtil 不依赖任何其他模块,可以被任意组件引用
  2. 避免循环依赖:严格的依赖方向(上层依赖下层)避免了循环依赖
  3. 模块化:每个组件只依赖 SWUtil,可以独立使用
  4. 业务集成:上层的 SWModule 依赖下层组件,构成完整的业务模块(如 SWAuth、SWPaywall)

这种设计确保了组件的可复用性和可维护性。

题目4:Free vs Pro

问题:ShipSwift 的 Free 版和 Pro Recipe 有什么区别?什么场景需要购买 Pro?

参考答案

Free 版

  • iOS 客户端代码完整开源(MIT 许可证)
  • 包含 SWAnimation、SWChart、SWComponent 等前端组件
  • 代码可审计、无锁定

Pro Recipe

  • 后端实现(Hono 路由、数据库 schema、Webhooks)
  • 端到端集成指南
  • 合规模板(隐私清单、App Store 标签)
  • 已知陷阱(每个 recipe 10+ 条实战经验)

需要购买 Pro 的场景

  1. 需要构建完整的后端服务(如 Paywall 的订阅验证、TikTok 事件追踪)
  2. 需要快速上线,不想踩常见坑
  3. 需要合规文档(App Store 审核需要)

不需要购买 Pro 的场景

  1. 只需要 iOS 客户端组件
  2. 有足够时间自己实现后端
  3. 只是学习 SwiftUI,不打算上架应用

题目5:适用场景判断

问题:以下哪些场景适合使用 ShipSwift?哪些不适合?为什么?

  1. 独立开发者,使用 Claude Code 辅助 iOS 开发
  2. 企业团队,有专门的 UI 组件库
  3. 学习 SwiftUI,想参考生产级组件实现
  4. 需要快速原型,验证产品想法
参考答案
  1. 适合:独立开发者使用 Claude Code,ShipSwift 的 MCP 集成可以让 AI 生成正确的代码,大幅提高开发速度
  2. 不适合:企业团队有专门的 UI 组件库,引入 ShipSwift 可能导致维护成本增加(需要同时维护两套组件库)
  3. 适合:ShipSwift 的组件是学习 SwiftUI、Swift Charts、StoreKit 2 等的优秀参考
  4. 适合:ShipSwift 的开源组件覆盖常见需求(Shimmer、LineChart、Paywall 等),可以快速构建原型

关键判断因素

  • 是否使用 AI 辅助开发(Claude Code、Gemini 等)
  • 是否需要快速上线(时间成本)
  • 是否有足够的 iOS 开发经验(避免踩坑)

进阶路径

阶段1:熟练使用 ShipSwift

  • 掌握所有组件的 API(SWShimmer、SWLineChart、SWAlert 等)
  • 学会使用 MCP 协议让 AI 生成正确的代码
  • 理解依赖规则和命名规范,避免集成时的问题

阶段2:自定义组件

  • 参考 ShipSwift 的组件实现,学习生产级 SwiftUI 代码的写法
  • 为自己的项目创建自定义组件,遵循 ShipSwift 的命名规范和依赖规则
  • 将自定义组件贡献给 ShipSwift 社区(提交 PR)

阶段3:构建 AI-native 工作流

  • 深入理解 MCP 协议,构建自己的 MCP Server
  • 将其他开源组件库接入 MCP(让 AI 能够访问更多组件)
  • 探索 AI 辅助 iOS 开发的最佳实践(提示词工程、代码审查、自动化测试)

阶段4:探索 iOS 开发的新范式

  • 学习 SwiftUI 的高级特性(Custom Layout、Advanced Animation、Swift Charts)
  • 探索 AI 生成代码的验证和测试方法
  • 构建自己的 AI-native iOS 开发工具链

总结

ShipSwift 解决的是 AI 时代 iOS 开发的一个核心问题:AI 生成的代码不可信、不完整、难验证。通过 MCP 协议和精心设计的组件库,它让 AI 真正成为"能产出生产级代码"的开发者助手,而非只会生成骨架代码的玩具。

它的开源策略也很聪明:MIT 协议保证了代码的可审计性和无锁定,Pro recipes 卖的是"工程经验"而非"代码本身"。对于想用 AI 加速 iOS 开发的团队,ShipSwift 是一个值得关注的工作流升级。


项目信息