用途
project 技能用于克隆和跟踪外部仓库,适合以下情况:用户分享一个 GitHub URL 想要研读或基于其开发、用户提到想从某个代码库学习、用户想在外部仓库上开始开发,或需要查找之前克隆的项目位于何处。
项目分为两类:Learn(学习,只读参考)与 Incubate(开发)。当用户提出开发需求或使用 /project incubate 时,该操作会重定向到独立技能 /incubate,由后者执行,本技能不重复实现 incubate 逻辑。
核心原则
Golden Rule:ghq 负责克隆,ψ/ 负责符号链接。
- 永不复制,始终使用符号链接,保持单一数据源。
- 所有克隆都通过 ghq 完成,不手动在 ghq 之外克隆。
- 目录采用 org/repo 结构,例如 ψ/learn/owner/repo,而非扁平命名。
主要能力
- learn [url|slug]:以只读参考的方式克隆仓库用于研读。通过 ghq 获取仓库,并在 ψ/learn/owner 下创建指向 ghq 根目录副本的符号链接,最后输出绝对路径。
- incubate:重定向至 /incubate 技能。用户执行
/project incubate [args]时,应改为运行/incubate [args],不在本技能内执行 incubate 逻辑。 - find [query]:在所有位置搜索项目,包括用
ghq list | grep搜索 ghq 仓库,以及在 ψ/learn、ψ/incubate 的符号链接中查找,输出匹配项及其 ghq 路径。 - list:展示所有被跟踪项目及其元数据,收集 learn 与 incubate 的符号链接,通过 GitHub API 获取 Star 数、许可证、类型与描述(每个会话缓存),并输出总数。
使用方式
首先进行锚定步骤(Step 0),通过命令获取日期时间戳与 oracle 根目录:使用 git rev-parse --show-toplevel 定位包含 CLAUDE.md 与 ψ/ 的 git 顶层目录;若当前不在 oracle 仓库中,则提示并写入当前工作目录。
常用命令示例:
- 添加学习仓库:
ghq get -u URL && mkdir -p "$PSI/learn/owner" && ln -sf "$(ghq root)/github.com/owner/repo" "$PSI/learn/owner/repo" - 转入开发:
/incubate URL [--flash | --contribute | --status | --offload] - 更新源:
ghq get -u URL - 查找仓库:
ghq list | grep name
目录结构:
ψ/
├── learn/owner/repo → ~/Code/github.com/owner/repo (symlink)
└── incubate/owner/repo → ~/Code/github.com/owner/repo (symlink)
~/Code/ ← ghq root (source of truth)
└── github.com/owner/repo/ (actual clone)
适用场景
- 用户分享 GitHub URL,希望从中学习或克隆参考。
- 用户想在外部仓库基础上开始开发(此时转向 /incubate)。
- 用户需要找回此前克隆的项目所在位置。
- 用户需要一览所有已跟踪仓库及其 Star、许可证等元数据。
限制与注意事项
- 需要在带有 CLAUDE.md 与 ψ/ 的 oracle 仓库结构中运行;若不在该结构中会提示并写入当前目录。
- 依赖 ghq(管理克隆)与 gh CLI(获取 GitHub 元数据)。
- 提供健康检查:使用
find "$PSI/learn" "$PSI/incubate" -type l ! -exec test -e {} \; -print检测失效符号链接,如失效可用ghq get -u [url]恢复源。 - 反模式:直接
git clone到 ψ/、扁平命名、复制文件、在 ghq 之外手动克隆均属错误做法。 - 关于收费、价格、平台或具体效果,资料中暂未提供。