원클릭으로
repo-study
研究 GitHub 仓库的特定技术实现。触发词:调研下、研究下、学习下、看看 xxx 仓库、分析开源项目、repo-study
Codex 또는 Claude로 설치 이 Prompt를 복사해 Codex, Claude 또는 다른 어시스턴트에 붙여 넣으면 Skill 페이지를 검토하고 설치를 진행할 수 있습니다.
메뉴
研究 GitHub 仓库的特定技术实现。触发词:调研下、研究下、学习下、看看 xxx 仓库、分析开源项目、repo-study
Codex 또는 Claude로 설치 이 Prompt를 복사해 Codex, Claude 또는 다른 어시스턴트에 붙여 넣으면 Skill 페이지를 검토하고 설치를 진행할 수 있습니다.
SOC 직업 분류 기준
| name | repo-study |
| description | 研究 GitHub 仓库的特定技术实现。触发词:调研下、研究下、学习下、看看 xxx 仓库、分析开源项目、repo-study |
项目研究分为两种模式,产出分别放在不同文件夹:
| 模式 | 触发条件 | 产出目录 | 内容特征 |
|---|---|---|---|
| Survey(系统调研) | 首次研究,surveyState != "completed" | explorer/ | 成体系、有阅读路径、笔记间有因果链 |
| Incremental(增量问答) | survey 完成后,用户针对特定话题提问 | notes/ | 零散、不成体系、随问随记 |
explorer/ 中的成体系笔记最终目标是打磨成可发布的教程notes/ 中的零散笔记是知识积累,供参考但不形成叙事链路| 目录 | 命名规则 | 内容定位 | 何时生成 |
|---|---|---|---|
explorer/ | NN-xxx.md(带 2 位编号) | 成体系教程、导读指南、架构分析 | Survey 模式 |
notes/ | xxx.md(不带编号) | 零散研究笔记、增量问答 | Incremental 模式 |
practices/ | xxx-practice.md(按主题命名) | 实操手册:每步验证通过、输入输出完整可复现 | 增量问答中用户要求实操验证时 |
demos/ | {demo-name}/(目录工程) | 独立可运行的代码 demo | Phase 9 distill |
practices/ 与其他目录的区别:
explorer/(概念理解为主)— practices 重在跑通命令,每个步骤都有真实输出notes/(知识积累)— practices 是操作手册,面向"拿来就能用"demos/(代码工程)— practices 是文档,不是独立代码项目explorer/ 目录下的笔记文件必须带 2 位索引前缀,按阅读顺序编号:
explorer/
├── 00-xxx-environment-setup.md ← 环境准备(安装、配置、前置依赖)
├── 01-xxx-how-to-use-guide.md ← 第一篇(入口:快速上手)
├── 02-xxx-guide.md ← 第二篇(导读 / 架构概览)
├── 03-architecture-deep-dive.md ← 第三篇(核心深入)
├── ...
└── README.md ← 索引文件,不需要编号
规则:
{NN}-{原始文件名}.md,NN 为两位数字(00, 01, 02, 03...)00- 固定保留给环境准备章节(安装、配置、账号、网络等前置条件)。如果项目无需环境准备(纯代码分析),可跳过 00- 直接从 01- 开始explorer/ 中已有的编号文件,取最大编号 +1(00- 位置仅用于环境准备,不参与自动递增)README.md 和非 .md 文件不需要编号notes/ 目录不使用编号(零散笔记,无固定阅读顺序)核心原则:价值 = 认知落差
知识点的价值不取决于技术通用性,而取决于「知道之前」和「知道之后」的理解差距。落差越大,越值得写。
| 层级 | 识别信号 | 典型表现 |
|---|---|---|
| 认知颠覆 | 范式转变、跨领域迁移 | "我完全没想到还能这样做" |
| 模式提炼 | 反复出现的结构、通用解法 | "原来这个就是 XXX 模式" |
| 工具积木 | 具体代码片段、配置模板 | "拿来就能用" |
问题驱动螺旋 — 每篇笔记存在是因为上一篇留下了问题,不是"接下来讲 X"
遗留问题 → 尝试解决 → 新问题浮现 → 下一篇笔记
对比驱动 — 痛点展示 → 方案揭示 → 原理解释 → 举一反三。不要先给答案。
实操优先 — 小白如果不知道怎么用,就不会去思考原理。阅读顺序:环境准备(00) → 先用起来(01) → 再理解为什么(02+) → 最后深入细节
每篇笔记声明定位 — 给谁看?解决什么问题?与相邻笔记的因果关系是什么?
每篇研究笔记的 frontmatter 必须包含唯一的 article_id:
article_id: OBA-{8位随机小写字母数字}需要核对完整阶段图、条件分支、checkpoint 或工具依赖时,读取 references/workflow-contract.md。执行时仍以本文件的入口路由为起点,并在进入具体模式后按链接读取对应 reference。
参数格式:[子命令 | URL [问题]];子命令为 list|status|update|sync|translate|distill|answer|continue。
解析用户输入的 args,决定进入哪个 Phase:
子命令检测优先级: 先检查 args 是否匹配已知子命令,再按 URL/问题解析。
| args 匹配 | 进入 Phase | 说明 |
|---|---|---|
空值 / help / --help | 显示帮助 | 输出命令速查表 |
list | Phase 0 | 列出所有 study 项目 |
status | Phase 1 | 检测当前项目状态并输出 |
update | Phase 1 → Phase 3 | 强制更新源码 |
sync | Phase 8 | 同步到 Obsidian |
translate | Phase 8b | 并行翻译文档 |
distill | Phase 9 | 蒸馏为 demo/设计文档 |
answer | Phase 10 | 回答 Question.md 中的问题 |
continue | Phase 7 | 恢复交互学习 |
| 含 URL 或仓库名 | Phase 1 → 自动流转 | 研究模式(默认) |
参数为空、为 help 或 --help 时,读取并使用 references/help-output.md 的输出模板,不进入研究流程。
当用户使用 /repo-study list 时:
GitHub 项目目录 配置或 $GITHUB_PROJECTS_DIR(默认可为 $HOME/jacky-github)*-study 的子目录.study-meta.json 获取元数据| 项目名 | 来源仓库 | Topics 数 | 最后更新 |
|---|---|---|---|
| xxx-study | owner/repo | N | YYYY-MM-DD |
.study-meta.json 的目录,标记为"手动创建"读取当前会话加载的 CLAUDE.md 配置(已自动加载),获取:
GitHub 项目目录 配置值注意:不要硬编码路径,始终从 CLAUDE.md 配置中读取。
从用户输入中提取仓库 URL、仓库名、研究问题、目标目录。
URL 解析规则:
git@github.com:user/repo.git → 仓库名: repo, owner: user
https://github.com/user/repo → 仓库名: repo, owner: user
核心逻辑(不扫描子目录,不递归):
*-study.study-meta.json📝 详细检测流程和命令 →
references/state-templates.md
在检测项目状态后,扫描源码中的文档资源(docs/、README.md、CONTRIBUTING.md、根目录 *.md),识别文档站类型(VitePress / Docsify / Docusaurus),并将结果传递给后续 Phase 用于产品认知建立和导读指南生成。
在文档资源扫描后,检测源码中是否包含 SKILL.md 文件:
{源码目录}/SKILL.md 是否存在skill-typename 和 descriptionscripts/ 目录下的文件)scripts/repo-study-status.sh --json --check-remote
注意:该脚本现在位于 skill 自身目录中,无需在每个 study 项目中生成副本。
脚本输出包含:项目来源、topics 列表、进度统计、skill 封装状态、远程版本状态。
📝 脚本输出格式 →
references/state-templates.md§5
⚠️ Checkpoint - Decision
当
remoteCheck.status == "outdated"时,必须提示用户选择更新或继续使用当前版本。
{repo-name}-study 目录(路径从 CLAUDE.md 读取)git clone --single-branch --depth 1 "$REPO_URL" "$REPO_NAME".git 目录explorer/ 和 notes/ 目录CLAUDE.md、.study-meta.json(v2,含 surveyState: "pending")Question.md — 启动快速 subagent 扫描源码,生成 5-8 个 AI 预设研究问题(格式见 references/question-template.md)⚠️ Checkpoint - Human-Verify — 确保文件结构完整后初始化 Git 仓库。 📝 元数据结构 →
references/state-templates.md§4 📝 Question.md 模板 →references/question-template.md
temp_clone.study-meta.json 中的 commit SHA⚠️ 安全检查: 更新前确认 explorer/ 和 notes/ 目录不会被删除。
读取 .study-meta.json 的 surveyState 字段,决定进入哪种模式:
| surveyState | 模式 | 产出目录 | 说明 |
|---|---|---|---|
null / pending | Survey | explorer/ | 首次系统调研,生成成体系笔记 |
completed | Incremental | notes/ | 已有调研基础,按需回答特定问题 |
in-progress | 询问用户 | — | 之前的调研未完成,确认是继续还是切换 |
向后兼容:对缺少
surveyState字段的存量项目,如果explorer/或notes/中已有笔记,自动补充为"completed"。
分支逻辑:
⚠️ Checkpoint - Decision
询问用户选择研究模式:
- Yolo 模式(快速)— 直接输出完整研究发现
- 交互模式(教学)— 分步骤渐进式教学,每步确认理解
用户选择 Survey + Yolo 后,必须依次读取:
不得跳过 Capability Discovery;首次系统调研结束后按规则生成环境准备、导读与 Cheat Sheet。
📖 详细文档 →
references/interactive-mode-guide.md
核心流程:文档感知 subagent + 代码分析 subagent → 概念拆解 → 逐步讲解 → 实时归档。
.study-session.json 和概念列表explorer/,支持 /repo-study continue 恢复中断surveyState = "completed"⚠️ Checkpoint - Human-Verify — 调研完成后确认概念列表再开始讲解。
适用场景:survey 完成后,用户针对特定话题/文章提问。 产出目录:
notes/(零散笔记,不成体系)
从用户输入中提取具体的研究问题,确定需要分析的代码区域。
启动 subagent(蓝色标识,Explore 类型),只分析相关代码区域,不重复 survey 已覆盖的内容。
📝 subagent prompt 模板 →
references/yolo-mode-guide.md§4
将研究结果写入 notes/{topic-slug}.md,命名简洁直接(如 skill-prompt-engineering.md)。
写入时立即生成 article_id 并写入 frontmatter(格式:OBA-{8位随机小写字母数字},全局唯一性校验)。
笔记结构:
# {话题标题}
> 关联教程:explorer/{related-tutorial-note}.md(如有)
## 问题
// 用户原始问题
## 分析
// 针对性分析内容
## 关键发现
// 核心洞察,1-3 点
更新 .study-meta.json:
topics[] 中新增条目,标记 location: "notes"lastUpdated 时间戳更新 Question.md:对本次新建的笔记,检查其 article_id 是否已在 Question.md 中有对应 section,若没有则在末尾追加:
## {article_id}
<!-- {笔记相对路径} -->
(8 行空白用于用户后续编辑。格式参考 references/question-template.md)
触发时机:Phase 5a(Yolo)、5b(交互)、5c(增量)完成后自动执行。 目的:减少用户手动同步的心智负担,让笔记自动流入 Obsidian 知识库。
从 CLAUDE.md 配置中检测 OBSIDIAN_REPO 是否存在且路径有效:
# 检查 Obsidian 仓库路径是否配置且存在
test -d "$OBSIDIAN_REPO" && echo "ob_available" || echo "ob_unavailable"
OBSIDIAN_REPO 未配置或路径不存在 → 跳过,不提示用户使用 AskUserQuestion 询问用户:
问题:检测到 Obsidian 仓库已配置,是否将本次新生成/更新的笔记同步到 Obsidian?
选项 说明 是,同步到 Obsidian 执行 Phase 8 的同步流程(仅当前项目) 否,稍后手动同步 跳过,用户可通过 /repo-study sync手动触发本次会话不再询问 标记会话状态,后续增量问答时不再提示
用户选择"是"时,执行 当前项目 的同步(不等同于 /repo-study sync 的全量同步):
article_id(OBA-xxx)wiki/open-source/{project}/explorer → {study项目}/explorerwiki/open-source/{project}/notes → {study项目}/noteswiki/open-source/{project}/practices → {study项目}/practices(如存在)wiki/open-source/{project}/Question.md → {study项目}/Question.md(如存在)wiki/open-source/{project}/index.md 概述页wiki/open-source/index.md 总索引用户选择"本次会话不再询问"时,在会话上下文中标记 skip_ob_sync = true,后续 Phase 5c 增量问答完成时不再触发自动同步提示。
⚠️ 注意:此标记仅在当前 Claude Code 会话中有效,新会话会重新检测。
.study-session.json 是否存在⚠️ Checkpoint - Decision
研究完成后询问用户:
- 继续深入研究 → 返回 Phase 5
- 生成实操指南 →
explorer/NN-{主题}-guide.md(成体系,带编号)- 生成教程 → 进入 Phase 6b(教程两阶段工作流,产出到
explorer/,带编号)- 生成 Skill 模板 →
notes/{主题}-skill.md(零散笔记)- 生成 Cheat Sheet → 进入 Phase 6d(专属 subagent,产出到
explorer/cheatsheet/)- 生成小白指南 →
explorer/NN-{repo-name}-beginner-guide.md(成体系,带编号)- 生成技术展示文章 → 进入 Phase 6c(产出到
notes/)- 生成 Skill 映射 →
notes/{repo-name}-skill-to-script-mapping.md(零散笔记)- 生成实操手册 → 进入 Phase 6e(产出到
practices/,每步实测验证)- 全部生成
最后更新研究日志 explorer/RESEARCH-LOG.md 并同步 topics[].progress。
产出路径规则:
explorer/00-{repo-name}-environment-setup.md(00- 固定前缀,工具/CLI/库项目必须生成)explorer/(文件名带 2 位索引前缀,从 01- 起)explorer/cheatsheet/(不带编号,每维度一份)notes/(不带编号)practices/(不带编号,按主题命名,如 {topic}-practice.md)进入以下阶段前,必须读取 references/advanced-modes-and-checks.md 的对应章节:
只加载当前任务需要的章节;各模式进一步引用的专属 reference 也必须按章节要求读取。
| 阶段 | 交互点 | 类型 | 用户操作 |
|---|---|---|---|
| Phase 1 | 🛑 版本落后提示 | Decision | 选择是否更新源码 |
| Phase 3.5 | 🔄 模式检测 | Auto | 根据 surveyState 自动判断 |
| Phase 3.5 | 🔄 调研中断确认 | Decision | 仅 surveyState="in-progress" 时,继续/切换 |
| Phase 2 | ✅ 文件结构验证 | Human-Verify | 确认文件结构完整(含 explorer/ 和 notes/) |
| Phase 4 | 🔄 研究风格选择 | Decision | 选择 Yolo/交互模式(仅 Survey 模式) |
| Phase 5b | ✅ 调研完成确认 | Human-Verify | 确认概念列表 |
| Phase 5b | 🔄 理解确认 | Decision | 继续/暂停/更多解释/提问 |
| Phase 5.5 | 🔄 自动同步提示 | Decision | 检测到 Obsidian 时自动询问是否同步(仅当前项目)/跳过/不再询问 |
| Phase 5d | 🔄 实操验证 | Decision | 用户要求实操验证时进入 Phase 5d/6e |
| Phase 6 | 🔄 产出选择 | Decision | 继续研究/指南/教程/模板/Cheat Sheet/小白指南/技术展示文章/Skill 映射/实操手册/全部 |
| Phase 6b-T1 | ✅ 配置完成确认 | Human-Verify | 用户完成所有配置步骤,检查清单全通过 |
| Phase 6b-T2 | 🔄 实测结果审核 | Human-Verify | 确认实测数据,处理失败的命令 |
| Phase 7 | 🔄 恢复确认 | Decision | 继续/重新开始 |
| Phase 10 | 🔄 问题选择 | Decision | 全部回答/选择部分回答/取消 |
在需要打包、签名、OTA、APK/IPA、GitHub Release、商店提交、部署、回滚或验活时使用;支持独立窄任务,也支持作为 app-flow 的当前行动。它核对具体渠道授权,可复用用户明确记录的项目级 preview OTA 持续授权并在验证通过后自动发布;未获授权只做预检。
把自然语言 App 需求、模块说明和参考截图一路推进到经验证的代码与当次授权交付;用于需要长时间自主开发、持续排障和跨上下文恢复的移动端或跨端 App 任务。它不固定技术栈、阶段或交付形式,也不会把无人值守理解为远端发布授权。
在需要与生产者分离的独立评审、复核、验收,或对 App 方案、UI、代码、体验或交付准备度做质量判断时使用;支持独立窄任务,也支持作为 app-flow 的当前行动。它只做只读评判并绑定真实证据,不创建或修改产物,也不做第一方定位根因或直接改代码。
在设计、开发或交付 App 时按需参考 Happy/Paws 经验,包括移动端架构、React Native/Expo 取舍、验证、OTA、安装包与 Release 边界。用于用户明确要求参考 Happy/Paws,或当前问题与这些真实工程经验高度匹配时;它只提供上下文,不是 App Workflow,也不强制复制 Happy 的技术栈。
在需要创建、修改、重构、修复 App 代码,或只读诊断崩溃、定位根因、给出候选补丁时使用;支持独立窄任务,也支持作为 app-flow 的当前行动。它不做产品调研、原型/设计、独立评审或打包发布,除非当前行动本身就是改代码。
作为 self-learning 的 HyperFrames 产出能力,自主学习本地教学音视频或公开视频链接,把教程讲授的方法、可观察动效和屏幕代码转成有证据、可恢复、可渲染的 HyperFrames Demo,并记录实际使用的内容、Skills、工具与可复用经验。仅在 self-learning 调用,或用户明确要求从教学素材制作 HyperFrames Demo 时使用;普通学习任务不要单独触发。