repo-research

GitHub 仓库深度研究与整合分析工具。支持单个/多个仓库研究、与本地项目对比分析、启发式整合建议。支持主题驱动搜索模式:自动搜索相关仓库、克隆、分析并生成报告。克隆远程仓库到本地 research/ 目录,进行深度代码分析、架构评估、依赖解析,并生成结构化研究报告。触发条件:用户提供 GitHub URL 请求研究/分析/整合/对比时,或提供主题关键词请求搜索并研究相关仓库时。

Safety Notice

This listing is imported from skills.sh public index metadata. Review upstream SKILL.md and repository scripts before running.

Copy this and send it to your AI assistant to learn

Install skill "repo-research" with this command: npx skills add cat-xierluo/legal-skills/cat-xierluo-legal-skills-repo-research

Repo Research

GitHub 仓库深度研究工具,核心目标是从外部项目中获取启发,为用户自己的项目提供可操作的改进建议。

适用范围:本技能适用于研究任何类型的 GitHub 仓库,不仅限于 Claude Skills。可用于研究开源项目、库、框架、工具等。

依赖管理

本技能的核心功能(单仓库/多仓库研究)不需要任何前置技能。

只有使用主题驱动搜索模式时,才需要以下可选依赖:

依赖技能用途安装源必需性
find-skills按主题搜索 GitHub 上的相关仓库https://skills.sh/vercel-labs/skills/find-skills可选

使用说明

  • 如果您直接提供 GitHub URL,本技能会直接使用现有的单/多仓库研究模式
  • 如果您提供主题关键词(如"研究 OCR 相关项目"),本技能会:
    1. 首先检测 find-skills 是否已安装
    2. 如未安装,会提示您安装后再继续
    3. 安装后自动调用 find-skills 进行搜索

配置

本技能支持通过配置文件自定义输出目录和其他设置。

配置文件位置

skills/repo-research/assets/config.yaml

快速配置

  1. 复制示例配置:
cp skills/repo-research/assets/config.example.yaml skills/repo-research/assets/config.yaml
  1. 编辑 config.yaml,设置你的输出目录:
research:
  output_dir: "~/Documents/研究笔记"  # 支持绝对路径、相对路径、~ 展开

配置项说明

配置项说明默认值
research.output_dir研究报告输出目录./research
research.report_format报告格式markdown
research.shallow_clone使用浅克隆true
security.enabled启用安全分析true
security.prompt_analysis提示词安全检测true

配置读取逻辑

1. 检查 skills/repo-research/assets/config.yaml 是否存在
2. 如果存在,读取配置
3. 如果 output_dir 为空或不存在,使用默认值 ./research
4. 支持路径展开:
   - `~` 展开为用户目录
   - 相对路径基于当前工作目录

默认行为(无配置文件)

如果没有配置文件或 output_dir 为空,将使用默认行为:

  • 输出目录./research(当前工作目录下的 research 文件夹)
  • 报告格式:Markdown
  • 安全分析:启用

快速开始

# 单个仓库研究
/repo-research https://github.com/user/repo

# 多仓库对比研究
/repo-research https://github.com/user/repo-a https://github.com/user/repo-b

# 指定分析重点
/repo-research https://github.com/user/repo --focus=architecture

# 与现有技能整合
/repo-research https://github.com/user/repo --integrate-with=de-ai-polish

对话中触发:当用户提到"研究一下这个仓库"、"对比分析这些项目"、"对我项目有什么启发"等类似表述时自动激活。


配置

配置文件

本技能支持通过配置文件自定义输出目录等设置。

配置文件位置

~/.openclaw/skills/repo-research/assets/config.yaml

配置示例

# 研究报告输出目录
# 支持绝对路径、相对路径和 ~ 展开
output_dir: "/Users/yourname/Desktop/Clawd/99 - 🦐 大虾研究/09 - 📋 研究报告"

# 报告格式:markdown 或 json
report_format: markdown

# 是否自动打开报告(生成后)
auto_open_report: false

# 克隆深度:1 = 浅克隆(更快),0 = 完整克隆
clone_depth: 1

环境变量覆盖

配置也可通过环境变量设置(优先级高于配置文件):

环境变量说明
REPO_RESEARCH_OUTPUT_DIR输出目录
REPO_RESEARCH_FORMAT报告格式
REPO_RESEARCH_AUTO_OPEN是否自动打开
REPO_RESEARCH_CLONE_DEPTH克隆深度

输出目录结构

output_dir/
└── research/
    └── YYYYMMDD-topic-slug/
        ├── repo-name/                    # 克隆的仓库
        ├── repo-name-2/                  # 多仓库时有多个
        └── topic-slug-report.md          # 研究报告(如:twitter-skills-report.md)

工作流程

模式选择

根据输入自动选择研究模式:

输入类型研究模式输出
单个 GitHub URL单仓库深度研究单仓库分析报告 + 启发建议
多个 GitHub URL多仓库对比研究对比分析报告 + 共性启发
GitHub URL + 本地路径对比启发模式差异分析 + 改进建议
主题/关键词主题驱动搜索研究搜索结果 + 多仓库综合分析报告

主题驱动搜索研究模式

当用户提供主题关键词而非具体 GitHub URL 时,使用此模式。

触发条件

用户表达以下需求时自动激活:

  • "帮我找关于 X 的相关项目"
  • "搜索研究一下主题 X"
  • "找一些关于 X 的开源项目"
  • "主题 X 有什么值得研究的仓库"

工作流程

Step 0: 依赖检查

# 检查 find-skills 是否已安装
if ! /find-skills --help >/dev/null 2>&1; then
    echo "⚠️  主题驱动搜索模式需要 find-skills 技能"
    echo "正在为您安装..."
    /skill-manager install https://skills.sh/vercel-labs/skills/find-skills
fi

对话提示

"检测到您需要使用主题搜索功能。正在检查依赖..."

Step 1: 使用 find-skills 搜索相关仓库

调用 find-skills 技能进行搜索:

/find-skills <主题关键词>

示例:

  • /find-skills pdf converter - 搜索 PDF 转换相关技能
  • /find-skills video transcription - 搜索视频转录相关技能
  • /find-skills ocr - 搜索 OCR 相关技能

Step 2: 整理搜索结果

从 find-skills 的返回中提取:

  1. 仓库名称
  2. GitHub URL
  3. 简要描述
  4. 相关度评分

搜索结果整理格式

#仓库名URL描述相关度
1[name][url][描述]⭐⭐⭐⭐⭐
2[name][url][描述]⭐⭐⭐⭐☆

Step 3: 用户确认筛选

对话询问

"找到 [N] 个相关仓库。请选择要深入研究的项目:" "1. 研究全部 [N] 个仓库" "2. 选择特定编号(如:1,3,5)" "3. 只研究前 [K] 个最相关的" "4. 自定义选择"

根据用户选择确定最终研究列表。

Step 4: 批量克隆与并行分析

4.1 创建研究目录

⚠️ 重要:优先使用配置文件中的 output_dir,如果未配置则使用当前工作目录。

Python 方式(推荐)

from scripts.config import get_research_dir

# 自动读取配置文件,返回研究目录路径
RESEARCH_DIR = get_research_dir(topic_slug)

Bash 方式(向后兼容)

# 优先使用配置文件中的 output_dir,否则使用当前目录
SKILL_DIR="$HOME/.openclaw/skills/repo-research"
CONFIG_FILE="$SKILL_DIR/assets/config.yaml"

# 尝试从配置文件读取 output_dir
if [ -f "$CONFIG_FILE" ] && command -v python3 &> /dev/null; then
    OUTPUT_DIR=$(python3 -c "
from pathlib import Path
import sys
sys.path.insert(0, '$SKILL_DIR/scripts')
from config import get_output_dir
print(get_output_dir())
" 2>/dev/null)
else
    OUTPUT_DIR="${PWD}"
fi

RESEARCH_DATE=$(date +%Y%m%d)
# 将主题转换为 slug 格式(小写、空格替换为连字符)
TOPIC_SLUG=$(echo "$TOPIC" | tr '[:upper:]' '[:lower:]' | tr ' ' '-')

# 使用绝对路径确保在正确位置
RESEARCH_DIR="${OUTPUT_DIR}/research/${RESEARCH_DATE}-${TOPIC_SLUG}"
mkdir -p "${RESEARCH_DIR}"
cd "${RESEARCH_DIR}"
4.2 批量克隆
for url in "${SELECTED_URLS[@]}"; do
    repo_name=$(basename "$url" .git)
    echo "正在克隆: $repo_name"
    git clone --depth 1 "$url" "$repo_name"
done
4.3 并行分析

对每个克隆的仓库执行基础分析(参见"Step 2: 基础分析")。

Step 5: 生成主题综合报告

使用 assets/topic-research-template.md 作为模板。

报告结构
# [主题] 综合研究报告

> **研究日期**:YYYY-MM-DD
> **搜索主题**:[主题关键词]
> **研究仓库数**:[N] 个
> **报告路径**:`./research/YYYYMMDD-[topic-slug]/[topic-slug]-report.md`

---

## 执行摘要

### 研究概述

[用一段话概括:基于主题搜索了哪些类型的仓库,主要发现了什么]

### 一句话总结

[用一句话概括最关键的发现]

### 核心指标

| 指标 | 数值 |
|:-----|:-----|
| 搜索结果总数 | [N] 个仓库 |
| 深度研究数量 | [M] 个仓库 |
| 相关技术栈 | [列举主要技术] |
| 活跃项目占比 | [X%] |

---

## 搜索结果概览

### 仓库清单

| # | 仓库名 | 描述 | 语言 | Stars | 活跃度 |
|:-|:-------|:-----|:-----|:-----|:-------|
| 1 | [name] | [描述] | [lang] | [★] | 🟢 活跃 |
| 2 | [name] | [描述] | [lang] | [★] | 🟡 中等 |

### 分类汇总

**按技术类型**:
- [技术1]: [数量] 个项目
- [技术2]: [数量] 个项目

**按功能类型**:
- [功能1]: [数量] 个项目
- [功能2]: [数量] 个项目

---

## 技术栈分析

### 主流技术选择

| 技术 | 使用项目数 | 占比 | 代表项目 |
|:-----|-----------|:-----|:---------|
| [技术1] | [N] | [X%] | [项目A, 项目B] |
| [技术2] | [N] | [X%] | [项目C] |

### 技术趋势洞察

- **趋势1**:[描述观察到的技术趋势]
- **趋势2**:[描述观察到的技术趋势]

---

## 共性模式识别

### 架构共性

多个项目共同采用的架构模式:
1. **[模式名称]**:[描述]
   - 采用项目:[列举]
   - 优势分析:[分析]

### 功能共性

多个项目都实现的核心功能:
1. **[功能名称]**:[描述]
   - 实现方式差异:[对比]

### 文档共性

文档编写的共同特点:
- [观察到的文档模式]

---

## 项目对比分析

### 功能对比矩阵

| 功能 | 项目1 | 项目2 | 项目3 | 最优实现 |
|:-----|:-----|:-----|:-----|:---------|
| [功能1] | ✅ | ✅ | ❌ | [分析] |
| [功能2] | ✅ | ❌ | ✅ | [分析] |

### 架构对比

| 维度 | 项目1 | 项目2 | 项目3 | 值得学习 |
|:-----|:-----|:-----|:-----|:---------|
| 目录结构 | [描述] | [描述] | [描述] | [推荐] |
| 模块化 | [描述] | [描述] | [描述] | [推荐] |

### 代码质量对比

| 项目 | 代码组织 | 文档 | 测试 | 综合评分 |
|:-----|:---------|:-----|:-----|:---------|
| 项目1 | ⭐⭐⭐⭐☆ | ⭐⭐⭐☆☆ | ⭐⭐☆☆☆ | B+ |
| 项目2 | ⭐⭐⭐☆☆ | ⭐⭐⭐⭐☆ | ⭐⭐⭐☆☆ | B |

---

## 深度剖析(精选项目)

### 项目 A: [仓库名]

#### 为什么值得深入研究

[说明选择这个项目进行深度剖析的原因]

#### 架构亮点

- [亮点1]
- [亮点2]

#### 可借鉴的设计

1. **[设计点1]**:[描述可借鉴之处]
2. **[设计点2]**:[描述可借鉴之处]

### 项目 B: [仓库名]

[同上结构]

---

## 启发与建议

### 对本地项目的启发

#### 可直接借鉴

1. **[方面1]**
   - **来源**:[项目A/项目B]
   - **做法**:[描述具体做法]
   - **本地应用**:[如何应用到本地项目]
   - **优先级**:🔴 高 / 🟡 中 / 🟢 低
   - **预计工作量**:[X 小时]

#### 需要进一步探索

1. **[技术/模式]**
   - **为什么**:[说明价值]
   - **调研方式**:[如何调研]
   - **预期收益**:[说明]

### 最佳实践总结

从多个项目中提炼的最佳实践:
1. **[实践1]**:[描述]
2. **[实践2]**:[描述]

---

## 项目推荐

### 不同场景推荐

| 场景 | 推荐项目 | 理由 |
|:-----|:---------|:-----|
| 学习参考 | [项目名] | [理由] |
| 生产使用 | [项目名] | [理由] |
| 二次开发 | [项目名] | [理由] |
| 特定需求 | [项目名] | [理由] |

### 快速决策指南

- **如果你需要 X** → 推荐 [项目A]
- **如果你需要 Y** → 推荐 [项目B]
- **如果你需要 Z** → 推荐 [项目C]

---

## 附录

### 完整仓库列表

#### 深度研究的项目

1. **[项目名]** - [GitHub URL]
   - 描述:[描述]
   - 技术栈:[列举]
   - 最后更新:[日期]

#### 仅浏览的项目

1. **[项目名]** - [GitHub URL]
   - 相关度:⭐⭐☆☆☆

### 参考资源

- [相关文档链接]
- [相关文章链接]

---

**报告生成时间**:YYYY-MM-DD HH:MM
**研究者**:Claude Code + repo-research skill
**搜索工具**:find-skills skill

Step 6: 会话汇报

## 主题研究完成

**搜索主题**:[主题关键词]

**搜索结果**:找到 [N] 个相关仓库,深度分析了 [M] 个

**核心发现**:
1. [发现1]
2. [发现2]
3. [发现3]

**推荐项目**:
- 学习参考:[项目A]
- 生产使用:[项目B]

**详细报告已保存至**:`./research/YYYYMMDD-[topic-slug]/[topic-slug]-report.md`

原有研究模式

(以下保持原有内容不变...)

Step 1: 准备研究环境

1.0 读取配置文件

⚠️ 重要:首先读取配置文件确定输出目录。

# 读取配置文件逻辑(在开始研究前执行)
import yaml
from pathlib import Path

def get_output_dir():
    """获取输出目录,优先使用配置文件中的设置"""

    # 默认输出目录
    default_output = "./research"

    # 配置文件路径
    skill_dir = Path(__file__).parent  # skill 所在目录
    config_path = skill_dir / "assets" / "config.yaml"

    if not config_path.exists():
        return default_output

    try:
        with open(config_path, 'r', encoding='utf-8') as f:
            config = yaml.safe_load(f)

        output_dir = config.get('research', {}).get('output_dir', '')

        if not output_dir or output_dir.strip() == '':
            return default_output

        # 展开 ~ 和环境变量
        output_dir = Path(output_dir).expanduser()

        # 如果是相对路径,基于当前工作目录
        if not output_dir.is_absolute():
            output_dir = Path.cwd() / output_dir

        return str(output_dir)

    except Exception:
        return default_output

1.1 创建研究目录

统一目录结构

research/
└── YYYYMMDD-[topic]/    # 日期+主题目录
    ├── repo-name/       # 研究的仓库(即使是单个仓库也在子目录中)
    ├── repo-b/          # 多仓库时会有多个子目录
    └── [topic-slug]-report.md        # 研究报告

# 单仓库示例:
# ~/Documents/研究笔记/20260213-vibe-working-tutorial/
#     └── vibe-working-tutorial/   <- 仓库内容
#     └── [topic-slug]-report.md

# 多仓库示例:
# ./research/20260213-pdf-tools-comparison/
#     ├── pdf-lib/
#     └── pdfkit/
#     └── [topic-slug]-report.md

设计原则:无论研究多少个仓库,都保持 ${OUTPUT_DIR}/日期-主题/仓库名/ 的统一结构,便于后续管理和扩展。

命名格式YYYYMMDD-[topic-slug]

  • topic-slug:主题关键词,用连字符连接,小写
  • 示例:20260211-pdf-ocr-comparison20260212-transcription-study

主题来源(优先级从高到低):

  1. 用户指定:调用时通过 --topic 参数提供
  2. 对话询问:自动询问用户输入简短的主题描述
  3. 自动推断:从仓库名称或研究内容推断(备选)

使用 Bash 工具执行:

⚠️ 重要

  1. 首先读取 skills/repo-research/assets/config.yaml 获取 output_dir
  2. 如果配置文件不存在或 output_dir 为空,使用默认值 ./research
  3. 路径支持 ~ 展开和相对路径
# Step 1: 读取配置文件获取输出目录
# 默认输出目录
OUTPUT_DIR="./research"

# 检查配置文件是否存在
CONFIG_FILE="skills/repo-research/assets/config.yaml"
if [ -f "$CONFIG_FILE" ]; then
    # 使用 grep 简单提取 output_dir(避免依赖 Python/yaml)
    CONFIG_OUTPUT=$(grep -E "^\s*output_dir:" "$CONFIG_FILE" | head -1 | sed 's/.*output_dir:[[:space:]]*//')
    # 移除引号
    CONFIG_OUTPUT=$(echo "$CONFIG_OUTPUT" | tr -d "\"'")
    # 如果非空,使用配置值
    if [ -n "$CONFIG_OUTPUT" ] && [ "$CONFIG_OUTPUT" != '""' ]; then
        # 展开 ~ 为用户目录
        OUTPUT_DIR="${CONFIG_OUTPUT/#\~/$HOME}"
    fi
fi

# Step 2: 如果是相对路径,基于当前工作目录
if [[ "$OUTPUT_DIR" != /* ]]; then
    OUTPUT_DIR="${PWD}/${OUTPUT_DIR}"
fi

# Step 3: 创建研究目录
REPO_DATE=$(date +%Y%m%d)
TOPIC_SLUG=$(echo "$TOPIC" | tr '[:upper:]' '[:lower:]' | tr ' ' '-')

RESEARCH_DIR="${OUTPUT_DIR}/${REPO_DATE}-${TOPIC_SLUG}"
mkdir -p "${RESEARCH_DIR}"
cd "${RESEARCH_DIR}"

echo "研究目录已创建: ${RESEARCH_DIR}"

对话询问主题

"请为本次研究提供一个简短的主题描述(用于目录命名,如 pdf-ocragent-framework):"

1.2 克隆仓库

⚠️ 重要:无论是单仓库还是多仓库,都统一克隆到子目录中,保持目录结构一致。

# 统一方式:所有仓库都克隆到子目录
# 这样可以保持 research/日期-主题/ 目录结构的一致性
# 单仓库和多仓库的区别只在于克隆的次数

for url in "${URLS[@]}"; do
    repo_name=$(basename "$url" .git)
    git clone --depth 1 "$url" "$repo_name"
done

# 单仓库示例(实际也是克隆到子目录):
# research/20260213-vibe-working-tutorial/
#     └── vibe-working-tutorial/   <- 仓库内容
#     └── [topic-slug]-report.md                <- 研究报告

# 多仓库示例:
# research/20260213-pdf-tools-comparison/
#     └── pdf-lib/                 <- 仓库A
#     └── pdfkit/                  <- 仓库B
#     └── [topic-slug]-report.md                <- 研究报告

Step 2: 基础分析(对每个仓库)

2.1 识别项目类型

特征项目类型分析重点
package.jsonNode.js/前端依赖、脚本、构建配置
requirements.txt/pyproject.tomlPython虚拟环境、依赖管理
go.modGo模块结构、依赖
Cargo.tomlRustEdition、特性、依赖
SKILL.mdClaude Skill技能定义、frontmatter

2.2 核心文件优先阅读

# 必读文件(按优先级)
README.md          # 项目说明、快速开始
LICENSE            # 许可证
package.json/pyproject.toml/go.mod  # 依赖元数据

2.3 项目结构分析

使用 Glob 工具探索:

glob "**/*"           # 所有文件
glob "**/*.md"        # 文档
glob "src/**/*.ts"    # 源代码
glob "tests/**/*"     # 测试

2.4 技术栈识别

  • 前端:React/Vue/Svelte/Next.js/Nuxt + 状态管理 + 样式方案
  • 后端:Node.js/Python/Go/Rust + 框架 + ORM
  • 工具链:Vite/Webpack + Jest/Pytest + ESLint/Prettier

Step 3: 多仓库对比分析(多仓库模式)

3.1 对比维度

维度对比内容启发点
架构设计目录结构、模块划分有哪些组织方式值得借鉴
功能实现核心功能、API 设计同类功能的不同实现方式
技术选型框架、依赖、工具链为什么选择这些技术
文档质量README、注释、API 文档文档写法的差异
代码风格命名、结构、模式哪种风格更清晰

3.2 共性提取

识别多个仓库的共同点:

  • 共同的技术选择(如都用 Markdown 作为格式)
  • 共同的设计模式(如都用插件架构)
  • 共同的问题解决方式

3.3 差异分析

识别关键差异及其原因:

  • 为什么 A 用 Markdown 而 B 用 JSON
  • 为什么 A 有测试而 B 没有
  • 不同实现方式的优劣

Step 4: 本地项目对比(启发模式)

4.1 识别本地项目

对话中询问

"是否需要与本地项目进行对比?如果有,请提供项目路径(相对或绝对)。"

常见本地项目类型:

  • ./test/de-ai-polish - 本地技能
  • ./skills/xxx - 现有技能
  • ./test/yyy - 测试项目

4.2 差异分析框架

分析项外部仓库本地项目差异启发
目录结构[描述][描述][差异点][可借鉴之处]
核心功能[描述][描述][差异点][可补充之处]
文档方式[描述][描述][差异点][可改进之处]
检测规则[列举][列举][差异点][可学习之处]

4.3 启发式问题

在对比时回答以下问题:

  1. 功能方面

    • 外部仓库有哪些功能是我没有的?
    • 我有哪些功能是外部仓库没有的?
    • 哪些功能可以整合进来?
  2. 架构方面

    • 外部仓库的目录结构是否更清晰?
    • 模块划分方式是否值得借鉴?
    • 配置方式是否更灵活?
  3. 实现方面

    • 检测规则的组织方式有什么不同?
    • 报告生成的格式有什么优劣?
    • 用户交互方式有什么可学习之处?
  4. 文档方面

    • README 的结构是否更易理解?
    • 示例是否更丰富?
    • API 文档是否更完整?

Step 5: 生成报告

5.1 单仓库报告结构

使用 assets/report-template.md 作为模板。

5.2 多仓库对比报告结构

使用 assets/comparison-template.md 作为模板。

5.3 启发式报告结构

# [研究主题] 启发式分析报告

> 研究日期:YYYY-MM-DD
> 研究仓库:[列出所有仓库]
> 对比项目:[本地项目路径]
> 报告路径:`./research/YYYYMMDD-[topic-slug]/[topic-slug]-report.md`

---

## 核心发现

### 一句话总结

[用一句话概括最关键的启发]

---

## 对比分析

### 功能对比

| 功能 | 仓库A | 仓库B | 本地项目 | 启发 |
|:-----|:------|:------|:---------|:-----|
| [功能1] | ✅ | ✅ | ❌ | [建议] |
| [功能2] | ✅ | ❌ | ✅ | [分析] |

### 架构对比

| 维度 | 仓库A | 仓库B | 本地项目 | 启发 |
|:-----|:------|:------|:---------|:-----|
| 目录结构 | [描述] | [描述] | [描述] | [建议] |
| 模块划分 | [描述] | [描述] | [描述] | [建议] |

### 规则/检测方式对比

| 检测项 | 仓库A | 仓库B | 本地项目 | 启发 |
|:-------|:------|:------|:---------|:-----|
| [规则1] | [实现] | [实现] | [实现] | [可学习] |

---

## 具体启发

### 可直接借鉴的方面

1. **[方面1]**
   - **外部做法**:[描述]
   - **本地现状**:[描述]
   - **改进建议**:[具体建议]
   - **优先级**:高/中/低

2. **[方面2]**
   - **外部做法**:[描述]
   - **本地现状**:[描述]
   - **改进建议**:[具体建议]
   - **优先级**:高/中/低

### 需要进一步探索的方面

1. **[方面1]**:[为什么值得探索]
2. **[方面2]**:[为什么值得探索]

---

## 行动建议

### 立即可做的改进

- [ ] [改进1] - 预计时间:[X小时]
- [ ] [改进2] - 预计时间:[X小时]

### 需要进一步调研的

- [ ] [调研项1] - 调研方式:[如何调研]
- [ ] [调研项2] - 调研方式:[如何调研]

---

## 附录

### 仓库详细信息

- **仓库A**:[名称](URL) - [一句话描述]
- **仓库B**:[名称](URL) - [一句话描述]

### 参考链接

- [相关文档]
- [相关文章]

5.4 会话汇报格式

## 研究完成

**研究仓库**:
- [仓库名A]:[一句话描述]
- [仓库名B]:[一句话描述]

**对比项目**:[本地项目路径]

**核心启发**:
1. [启发1]
2. [启发2]
3. [启发3]

**立即可做的改进**:
- [ ] [改进1]
- [ ] [改进2]

**详细报告已保存至**:`./research/YYYYMMDD-[topic-slug]/[topic-slug]-report.md`

最佳实践

研究策略

  1. 启发优先:研究的最终目的是"对我有什么帮助"
  2. 对比驱动:通过对比发现差异,通过差异获得启发
  3. 具体可操作:启发必须转化为具体的改进建议

启发提炼原则

  1. 从差异中学习:不同的实现方式往往有不同的考量
  2. 从共性中总结:多个仓库的共同选择往往有其原因
  3. 从细节中洞察:小细节可能反映设计理念

Resources

assets/

  • report-template.md: 单仓库报告模板
  • comparison-template.md: 多仓库对比报告模板
  • topic-research-template.md: 主题驱动搜索研究报告模板(新增)

高级功能 (v0.4.0)

借鉴 Zread MCP 的实现思路,增强本地分析能力。

1. 代码语义搜索

利用本地已克隆的仓库,进行深度代码搜索。

触发方式

用户表达以下需求时激活:

  • "搜索函数 X"
  • "查找类 Y"
  • "看看这个项目怎么实现 Z 的"
  • 直接使用 --search 参数

使用方法

# 搜索函数定义
/repo-research https://github.com/user/repo --search="function:parse*"

# 搜索类定义
/repo-research https://github.com/user/repo --search="class:*Handler"

# 搜索导入
/repo-research https://github.com/user/repo --search="import:react"

# 搜索特定模式
/repo-research https://github.com/user/repo --search="pattern:console\.log"

内部实现

调用 scripts/search.py 中的 CodeSearcher 类:

  • 使用 Grep 工具进行模式匹配
  • 支持多种语言:Python, JavaScript, TypeScript, Go, Rust, Java
  • 支持多种模式:function, class, import, doc, pattern

2. 深度代码分析

超越基础分析,提供架构和质量层面的深度洞察。

分析类型

类型描述触发参数
架构分析目录结构、模块划分、入口文件、架构模式--analyze=architecture
质量分析代码统计、注释率、技术债务、潜在问题--analyze=quality
完整分析包含架构和质量两个维度--analyze=full

使用方法

# 架构分析
/repo-research https://github.com/user/repo --analyze=architecture

# 质量分析
/repo-research https://github.com/user/repo --analyze=quality

# 完整分析
/repo-research https://github.com/user/repo --analyze=full

内部实现

  • 架构分析器 (scripts/analyzer/architecture.py):

    • 目录结构分析
    • 入口文件识别
    • 模块/包结构识别
    • 配置文件检测
    • 架构模式检测(MVC、微服务、插件、monorepo)
  • 质量分析器 (scripts/analyzer/quality.py):

    • 代码统计(行数、语言分布)
    • 注释覆盖率分析
    • 技术债务检测(TODO、FIXME、deprecated)
    • 问题检测(硬编码密钥、console.log、大文件)

3. 智能问答

利用 Claude Code 的 LLM 能力,回答关于仓库的自然语言问题。

触发方式

用户表达以下需求时激活:

  • "这个项目是做什么的?"
  • "如何使用这个项目?"
  • "架构是怎样的?"
  • "有哪些主要模块?"
  • 直接使用 --ask 参数

使用方法

# 询问项目概述
/repo-research https://github.com/user/repo --ask="这个项目是做什么的?"

# 询问使用方法
/repo-research https://github.com/user/repo --ask="如何使用这个项目?"

# 询问架构
/repo-research https://github.com/user/repo --ask="架构是怎样的?"

内部实现

  1. 问题分类 (scripts/qa.py 中的 QuestionClassifier):

    • 意图识别:overview, architecture, usage, api, dependencies
    • 实体提取:功能名、组件名、文件名
    • 上下文确定:需要读取哪些文件
  2. 回答生成:

    • 使用 Grep/Glob 搜索相关代码
    • 使用 read_file 读取关键文件
    • 结合 Claude Code 的 LLM 能力生成自然语言回答

4. 组合使用

高级功能可以组合使用,实现更强大的分析能力:

# 搜索 + 分析
/repo-research https://github.com/user/repo --search="function:parse*" --analyze=architecture

# 问答 + 报告
/repo-research https://github.com/user/repo --ask="这个项目如何使用?" --output=report

scripts/ 目录结构

scripts/
├── __init__.py           # 模块导出
├── search.py             # 语义搜索
├── qa.py                 # 智能问答
├── architecture.py       # 架构分析
├── quality.py            # 质量分析
└── security.py           # 安全分析 (v0.5.0 新增)

安全分析模块 (v0.5.0)

基于 OWASP Agentic AI Top 10 和常见漏洞模式设计,用于识别 skill 中可能存在的恶意代码或安全隐患。

触发方式

# 安全分析模式
/repo-research https://github.com/user/skill --analyze=security

# 完整分析(包含安全)
/repo-research https://github.com/user/skill --analyze=full

检测能力

类别检测内容风险等级
命令执行os.system, subprocess, eval(), exec()🔴 高
敏感文件访问读写 ~/.ssh/, ~/.aws/, .env🔴 高
网络外泄HTTP POST、WebSocket、数据上传🟡 中
代码混淆base64.b64decode, chr() 拼接等🔴 高
权限提升sudo, chmod 777, 修改 PATH🔴 高
硬编码凭证API Key、Token、Password🔴 高
下载执行`curlbash, wget
持久化crontab, systemd, LaunchAgents🟡 中
Skill 特有安装钩子、MCP 服务器风险🟡 中

风险等级

等级条件建议
🔴 critical存在命令执行、下载执行等强烈不建议使用,需完整审计
🟠 high多个高危发现或硬编码凭证审计后使用,限制权限
🟡 medium少量中危发现使用前检查,测试环境验证
🟢 low仅低危或无发现可安全使用

使用示例

# 分析一个 skill 的安全性
/repo-research https://github.com/example/skill --analyze=security

# 在研究报告对话框中,会自动包含安全分析章节
# 如果检测到高风险,会有明显的警告提示

未来计划

  • 依赖分析模块 (dependency analysis)
  • 性能分析模块 (performance analysis)
  • 更智能的问答系统

Source Transparency

This detail page is rendered from real SKILL.md content. Trust labels are metadata-based hints, not a safety guarantee.

Related Skills

Related by shared tags or category signals.

Coding

piclist-upload

No summary provided by upstream source.

Repository SourceNeeds Review
Coding

github-star-manager

No summary provided by upstream source.

Repository SourceNeeds Review
Coding

github-auto-star

No summary provided by upstream source.

Repository SourceNeeds Review
Coding

github-star-tracker

No summary provided by upstream source.

Repository SourceNeeds Review
repo-research | V50.AI