Agent skill

learn-from-repo

用于深度理解研究型代码仓库的方法论 skill。当用户想要学习一个新的 ML/AI repo、理解其实现与论文的对应关系、或为后续修改做准备时使用。结合对话式学习风格,逐组件拆解模型实现。

Stars 163
Forks 31

Install this agent skill to your Project

npx add-skill https://github.com/majiayu000/claude-skill-registry/tree/main/skills/other/other/learn-from-repo

SKILL.md

Learn From Repo & Paper

用于深度阅读研究型 repo 的完整方法论,核心是代码-论文双向对应,目标是理解到"可以修改"的程度。


默认学习偏好(可按需调整)

  • 对话式推进:不要一次输出所有内容,每个组件讲完后停下来,等用户确认或提问
  • 零基础假设:不跳过前置知识,包括引用论文中涉及的前序工作
  • Paper-Code 对应:每个模块标注对应的论文章节/公式
  • 穿插方法论:在讲具体代码时,穿插"如何读 repo"的通用技巧
  • 格式偏好:表格、ASCII 图、代码块,结构清晰
  • 代码定位:讲解每个概念时,明确标注对应的文件路径和行号(如 model.py:48-80),让用户能直接跳转查看
  • 每节结尾:提示"下一步可以看什么",引导对话继续

如有不同偏好,在激活 skill 时告知即可(如"不用对话式,直接给完整讲解")。


Phase 0:激活前准备

在开始讲解前,先完成以下两项:

0a. 用 claude-paper:study 处理论文

如果用户提供了论文 PDF 或 arXiv 链接,先调用: /claude-paper:study <paper_url_or_path>

这会生成结构化学习材料,后续讲解可引用。

0b. 快速扫描 repo 骨架

bash
# 查看文件树(2层)
find . -maxdepth 2 -not -path '*/.git/*' | sort | head -60

# 统计核心文件大小(找"重心"文件)
wc -l **/*.py 2>/dev/null | sort -rn | head -20

# 看 git log,了解开发脉络
git log --oneline -20

目的:30秒内找到核心文件,不要盲目遍历。


Phase 1:四步阅读法(每个 Repo 通用)

Step 1: 看骨架(文件树)
         问:核心文件是哪个?依赖什么外部库?
         ↓
Step 2: 找入口(forward / main / __call__)
         问:数据从哪里进来,从哪里出去?
         ↓
Step 3: 识别核心数据结构
         问:数据长什么样?有哪些字段?如何在模块间传递?
         ↓
Step 4: 逐组件拆解
         问:每个模块的输入、处理、输出是什么?对应论文哪里?

核心原则:先看"数据流",再看"算法"。搞清楚数据格式,代码自然就懂了。


Phase 2:逐组件讲解模板

对每个核心组件,按以下结构讲解:

  1. 动机(为什么需要这个组件?解决什么问题?) → 对应论文:Sec X.X / Figure X

  2. 接口(输入输出是什么?) → 输入:shape, dtype, 语义 → 输出:shape, dtype, 语义

  3. 实现细节(代码逐行解读) → 关键行:file.py:L123-L145 → 重要变量命名含义

  4. 设计精妙处 / 易错点

  5. 与其他组件的关系

讲解顺序建议(ML repo): 数据结构 → 序列化/预处理 → 嵌入层 → 核心注意力/算子 → 层次结构 → 整体组装


Phase 3:Paper-Code 对应检查表

检查项 说明
论文公式 → 代码行 每个关键公式能找到对应的实现
论文 Figure → 代码结构 架构图能映射到 init 中的模块
论文 Table(消融)→ 超参 消融实验对应 init 参数
论文贡献 → 代码创新点 每条 contribution 都有对应实现

Phase 4:为"可修改"做准备

关键问题清单: □ 如何替换核心算子(attention / convolution)? □ 如何添加新的特征输入?(找 Embedding 层) □ 如何修改层次结构?(找 depth/stride 参数) □ 如何添加新的损失函数?(找 forward 输出) □ 数据预处理在哪里? □ 哪些参数是超参,哪些是结构参数?

绘制"修改地图": 对每个想修改的地方,记录文件路径+行号、影响的其他组件、需要同步修改的地方


Phase 5:对话式 Deep Dive

每个组件讲完后提问用户: "这个组件还有什么不清楚的?常见深挖方向: A. 数学推导(为什么这样设计) B. 与其他方法对比 C. 实现细节(某几行代码含义) D. 修改思路(如果我要改 X,应该动哪里)"


通用读代码技巧

技巧 场景
从 forward() 开始,顺数据流走 任何 nn.Module
先看 init 参数,了解设计空间 理解超参含义
用 wc -l 找"重心"文件 快速定位核心代码
看 import,了解依赖关系 判断外部依赖的作用
搜索 assert,找隐含约束 理解数据格式要求
搜索 # TODO,找已知缺陷 了解作者的遗留问题
看 git log,了解演化脉络 理解为什么这样设计
消融实验 Table → 找对应参数 从论文反推代码

Expand your agent's capabilities with these related and highly-rated skills.

Didn't find tool you were looking for?

Be as detailed as possible for better results