swift-private-bundle
在处理 github.com/hocgin 旗下的私有 Swift 依赖时,先把自己当成“带知识库检索能力的 SPM 集成助手”,而不是通用依赖搜索器。
触发条件
以下场景应使用本 skill:
- 用户要接入、排查、升级、替换
github.com/hocgin/*的私有 Swift Package - 用户给出了
github.com/hocgin/...的仓库地址、包名、模块名或 import 名称 - 你在
Package.swift、Package.resolved、.pbxproj、README 中看到了hocgin私有仓库 - 用户想知道某个私有包怎么用、支持什么平台、应该依赖哪个版本
以下场景不要优先使用本 skill:
- 依赖不属于
github.com/hocgin - 用户只是做通用 Swift / SPM 问题排查,且与
hocgin私有仓库无关
核心规则
- 如果本地存在
~/GitHub/knowledge/,必须先尝试更新后再使用 - 优先检索本地
~/GitHub/knowledge/,再回退到gh检索github.com/hocgin/knowledge - 只有知识库信息不足时,才继续查看目标私有仓库
- 优先确认这是一个可用的 Swift Package,再讨论如何集成
- 优先使用稳定 tag 或明确版本,不默认使用
main/master - 输出使用中文
标准流程
1. 先识别用户到底在找什么
先从用户输入或当前项目中提取这些线索:
- 仓库名
- Package 名
- target / product 名
import Xxx- 功能关键词,例如“网络层”“蓝牙”“埋点”“知识库”
如果项目已存在依赖配置,优先检查:
Package.swiftPackage.resolved*.xcodeproj/project.pbxproj
2. 第一优先级:检索 hocgin/knowledge
先看本地是否已有 ~/GitHub/knowledge/,如果有,先尝试更新;更新成功或失败都要根据实际结果继续,不要因为更新失败就直接放弃本地副本。
推荐顺序:
- 本地存在
~/GitHub/knowledge/时,先尝试更新 - 使用本地知识库检索
- 本地不存在,或本地检索不到,再用
gh检索远端hocgin/knowledge - 知识库仍然不足时,再查看目标私有仓库
优先检索的内容:
- 包名 / 仓库名
- 模块名 / import 名
- 功能关键词
- SPM 片段,例如
.package(、product(name:、Package.swift
可用命令示例:
# 中文注释:如果本地知识库存在,先尝试更新
git -C ~/GitHub/knowledge pull --ff-only
# 中文注释:本地优先检索知识库
rg -n "SomePackage|SomeModule|github.com/hocgin/some-repo|\\.package\\(|product\\(name:" ~/GitHub/knowledge
# 中文注释:本地没有命中时,再看远端知识库仓库是否可访问
gh repo view hocgin/knowledge
# 中文注释:按关键词在远端知识库代码中检索
gh search code "Package.swift repo:hocgin/knowledge hocgin"
gh search code "\"SomePackage\" repo:hocgin/knowledge"
gh search code "\"import SomeModule\" repo:hocgin/knowledge"
gh search code "\"github.com/hocgin/some-repo\" repo:hocgin/knowledge"
# 中文注释:如果知识库有文档目录,可继续按主题搜
gh search code "network repo:hocgin/knowledge"
gh search code "swift package repo:hocgin/knowledge"
如果知识库里命中了文档、示例、接入说明、版本约束或模块名映射,优先基于这些信息回答。
回答时要明确说明信息来源:
- 来自本地
~/GitHub/knowledge/ - 来自远端
github.com/hocgin/knowledge - 或来自目标仓库结构推断
3. 第二优先级:查看目标仓库本身
只有当知识库缺少足够信息时,才查看目标仓库。
重点检查:
- 是否存在
Package.swift - package / product / target 名称
- 支持的平台和 Swift tools version
- 最近可用 tag
- README 中的接入方式
可用命令示例:
# 中文注释:查看仓库基础信息
gh repo view hocgin/some-repo
# 中文注释:查看标签,优先选稳定版本
gh release list -R hocgin/some-repo
gh api repos/hocgin/some-repo/tags
# 中文注释:读取 Package.swift 内容确认可作为 SPM 使用
gh api repos/hocgin/some-repo/contents/Package.swift
如果需要进一步确认文件内容,可以在有权限时用 gh repo clone 到本地再检查。
4. 评估是否能接入当前项目
至少确认以下几点:
- 当前项目使用的是 SPM 还是 Xcode UI 添加包
- 依赖地址是否应该使用 HTTPS 或 SSH
- 目标 package 暴露了哪些 products
- 平台版本是否兼容当前项目
- 是否需要额外的私有依赖链
5. 给出可执行的集成方案
默认优先给 SPM 方案,并明确版本。
示例:
dependencies: [
// 中文注释:优先使用明确 tag,避免直接跟踪不稳定分支
.package(url: "git@github.com:hocgin/some-repo.git", exact: "1.2.3")
]
如果还需要声明 product,补充:
.target(
name: "App",
dependencies: [
// 中文注释:这里要写 product 名,而不是仓库名
.product(name: "SomeProduct", package: "some-repo")
]
)
回答时的输出顺序
按这个顺序组织答案:
- 你识别到的包线索
- 本地或远端
hocgin/knowledge的命中结果 - 若有必要,目标仓库的补充信息
- 推荐使用的仓库 / product / 版本
- 应如何修改
Package.swift或 Xcode - 如何验证集成成功
验证检查
如果当前目录是 Swift 项目,可优先使用这些命令:
# 中文注释:解析依赖,确认私有仓库能被拉取
swift package resolve
# 中文注释:查看最终依赖图,确认目标包已进入图中
swift package show-dependencies
# 中文注释:必要时查看 manifest 解析结果
swift package dump-package
如果是 Xcode 工程,则说明需要在 Xcode 中重新 resolve package,或执行对应构建命令验证。
失败与回退策略
gh 未登录或无权限
先检查:
gh auth status
然后明确告诉用户:当前无法访问 hocgin/knowledge 或目标私有仓库,因此不能把猜测当成结论。
本地知识库存在但更新失败
先说明更新失败,再决定是否继续使用当前本地副本:
- 如果本地副本仍可读,继续检索,但明确标注“本地副本未成功更新,结果可能不是最新”
- 如果本地副本损坏或不可读,再回退到
gh检索远端知识库
本地知识库不存在,或知识库没有命中
可以继续:
- 用
gh检索远端hocgin/knowledge - 直接查看目标 repo
- 在当前项目中搜索已有引用
- 根据
Package.swift/Package.resolved推断真实包名和 product 名
但要明确说明“这是基于仓库结构推断,不是来自最新知识库文档”。
本地知识库是 git 仓库但工作区不干净
不要擅自丢弃本地改动。
可以这样处理:
- 先执行只读检查,例如
git -C ~/GitHub/knowledge status --short - 如果工作区不干净,明确说明无法安全执行
pull --ff-only - 在这种情况下,优先读取当前本地副本,并标注“本地知识库未更新”
- 如有必要,再回退到
gh检索远端
仓库存在但不是标准 Swift Package
明确指出:
- 缺少
Package.swift - 或没有可消费的 product
- 或平台 / tools version 不兼容
不要把这类仓库当成可直接 SPM 集成的候选项。
禁止事项
- 不要跳过本地
~/GitHub/knowledge/与hocgin/knowledge直接开始猜 - 不要在本地知识库存在时,未尝试更新就把它当成最新来源
- 不要把仓库名直接当成 product 名
- 不要默认推荐开发分支
- 不要在没有权限验证的情况下声称“这个私有包可用”
- 不要泄露 token、私钥或其他敏感凭据
More from hocgin/agent-skills
swift-composable-architecture
Use when building, refactoring, debugging, or testing iOS/macOS features using The Composable Architecture (TCA). Covers feature structure, effects, dependencies, navigation patterns, and testing with TestStore.
15swift-sqlite-data
Use when working with SQLiteData library (@Table, @FetchAll, @FetchOne macros) for SQLite persistence, queries, writes, migrations, or CloudKit private database sync.
6article-writer
AI驱动的智能写作系统,专注于创作高质量、低AI检测率的文章内容
5swift-localization
Best practices for internationalizing Swift/SwiftUI applications using LocalizedStringResource, String Catalogs (.xcstrings), and type-safe localization patterns. Use when implementing multi-language support, adding new UI strings, or refactoring hardcoded text in Swift apps.
5wrangler
Cloudflare Workers CLI for deploying, developing, and managing Workers, KV, R2, D1, Vectorize, Hyperdrive, Workers AI, Containers, Queues, Workflows, Pipelines, and Secrets Store. Load before running wrangler commands to ensure correct syntax and best practices.
4xlsx
Use this skill any time a spreadsheet file is the primary input or output. This means any task where the user wants to: open, read, edit, or fix an existing .xlsx, .xlsm, .csv, or .tsv file (e.g., adding columns, computing formulas, formatting, charting, cleaning messy data); create a new spreadsheet from scratch or from other data sources; or convert between tabular file formats. Trigger especially when the user references a spreadsheet file by name or path — even casually (like \"the xlsx in my downloads\") — and wants something done to it or produced from it. Also trigger for cleaning or restructuring messy tabular data files (malformed rows, misplaced headers, junk data) into proper spreadsheets. The deliverable must be a spreadsheet file. Do NOT trigger when the primary deliverable is a Word document, HTML report, standalone Python script, database pipeline, or Google Sheets API integration, even if tabular data is involved.
4