一键导入
sync-progress
扫描所有 "In Progress" 任务关联的 GitHub 仓库,通过本地 git commit 历史和 CHANGELOG 文件分析开发进度,估算完成百分比并更新任务文件。当用户想了解项目进展、更新任务进度时使用。
用 Codex 或 Claude 帮你安装 复制这段 Prompt,粘贴到 Codex、Claude 或其他助手里,让它检查 Skill 页面并帮你完成安装。
菜单
扫描所有 "In Progress" 任务关联的 GitHub 仓库,通过本地 git commit 历史和 CHANGELOG 文件分析开发进度,估算完成百分比并更新任务文件。当用户想了解项目进展、更新任务进度时使用。
用 Codex 或 Claude 帮你安装 复制这段 Prompt,粘贴到 Codex、Claude 或其他助手里,让它检查 Skill 页面并帮你完成安装。
基于 SOC 职业分类
| name | sync-progress |
| description | 扫描所有 "In Progress" 任务关联的 GitHub 仓库,通过本地 git commit 历史和 CHANGELOG 文件分析开发进度,估算完成百分比并更新任务文件。当用户想了解项目进展、更新任务进度时使用。 |
| allowed-tools | Bash(git *), Bash(find *), Bash(mkdir *), Bash(cd * && pnpm run build *), Bash(bash *update-task*), Bash(echo *), Read, Glob, Grep, Edit |
你是一个项目进度分析师。你的任务是扫描所有进行中的 backlog 任务,通过分析关联 GitHub 仓库的 commit 历史 和 CHANGELOG 文件,评估每个任务的完成进度。
本 skill 不依赖硬编码路径,所有路径在运行时动态检测:
# 1. 项目根目录(Brood 所在位置)
REPO_ROOT=$(git rev-parse --show-toplevel)
# 2. 本地仓库扫描根目录(按优先级检测)
# a) 环境变量覆盖(用户可在 .env 或 shell profile 中设置)
# b) 项目根目录的父目录(假设开发者把项目集中放在同一个 Dev 目录)
# c) 兜底使用 $HOME
if [ -n "$SYNC_SCAN_ROOT" ]; then
SCAN_ROOT="$SYNC_SCAN_ROOT"
else
SCAN_ROOT=$(dirname "$REPO_ROOT")
fi
# 3. Clone 缓存目录(未找到本地仓库时临时 clone,放在 SCAN_ROOT 同级目录下)
CLONE_DIR="${SCAN_ROOT}"
运行时:先执行上述命令确定 REPO_ROOT、SCAN_ROOT、CLONE_DIR,后续所有步骤使用这些变量。把检测结果打印出来让用户确认:
📍 项目根目录: /Users/xxx/Dev/Brood
🔍 仓库扫描范围: /Users/xxx/Dev
📦 Clone 缓存: /Users/xxx/Dev(与 Brood 同级目录)
严格按以下步骤执行:
backlog/tasks/*.md 下所有任务文件status: "In Progress" 或 status: In Progress 的任务references: 字段是否包含 github.com URL对 frontmatter 中没有 github.com references 的 In Progress 任务,扫描全文提取 GitHub URL 并自动写入 frontmatter,扩大扫描覆盖范围。
执行步骤:
用 Bash 从整个任务文件中提取所有 GitHub URL:
grep -oE 'https://github\.com/[A-Za-z0-9._-]+/[A-Za-z0-9._-]+(/[^[:space:]"'"'"'>)]*)?' "<task_file>"
标准化每个 URL,提取 repo 根地址或保留有价值的分支信息:
https://github.com/owner/repo/blob/branch/file.md → https://github.com/owner/repo(去掉 blob 路径)https://github.com/owner/repo/tree/branch → 保留完整(含分支信息)https://github.com/owner/repo/issues/... → https://github.com/owner/repo(只保留 repo)https://github.com/owner/repo → 保留去重,过滤掉 Brood 仓库自身的 URL(即 Brood repo)
如果提取到有效 URL,用 Edit 工具将其写入 frontmatter references: 字段:
references: 行但内容为 [] 或空,替换为列表格式references: 行,在 priority: 或 --- 结束行前插入打印操作日志(带 🤖 标记区分自动行为):
🤖 智能匹配: TASK-32 ← https://github.com/jhfnetboy/DSR-Research-Flow(从 description body 提取)
🤖 智能匹配: TASK-34 ← https://github.com/jhfnetboy/AuraAI(从 description body 提取)
对自动补全了 references 的任务,继续后续第二步~第六步的完整分析流程
注意事项:
从 references: 中提取 GitHub URL,解析出关键信息:
https://github.com/{owner}/{repo} 部分https://github.com/{owner}/{repo}/tree/{branch},提取分支名一个任务可能有多个 GitHub references,全部处理。
在 $SCAN_ROOT 下扫描所有本地 git 仓库,构建 remote URL → 本地路径的映射:
find "$SCAN_ROOT" -maxdepth 4 -name ".git" -type d 2>/dev/null | while read gitdir; do
repo_dir=$(dirname "$gitdir")
remote=$(git -C "$repo_dir" remote get-url origin 2>/dev/null)
if [ -n "$remote" ]; then
echo "$repo_dir|$remote"
fi
done
匹配规则:
.git 后缀,统一 git@github.com: 和 https://github.com/ 格式)owner/repo 去匹配如果本地未找到仓库:
mkdir -p "$CLONE_DIR"
git clone <github_url> "$CLONE_DIR/<repo_name>"
对每个定位到的本地仓库:
git -C <repo_path> pull --rebase 2>/dev/null || git -C <repo_path> fetch --all
git -C <repo_path> log --all --oneline --since="30 days ago" -50
如果 references URL 指定了分支,确保该分支在本地存在后:
git -C <repo_path> log <branch> -- --oneline --since="30 days ago" -50
读取 CHANGELOG: 先在根目录查找,再搜索子目录:
# 根目录优先
for f in CHANGELOG.md changelog.md CHANGES.md HISTORY.md; do
[ -f "<repo_path>/$f" ] && echo "ROOT:$f" && break
done
# 子目录搜索(深度 2)
find <repo_path> -maxdepth 2 -name "CHANGELOG.md" -o -name "changelog.md" -o -name "CHANGES.md" 2>/dev/null
用 Read 工具读取找到的所有 CHANGELOG 文件。
辅助信息 (可选): 如果 CHANGELOG 内容不够丰富,尝试读取 <repo_path>/README.md 中的 roadmap 或进度相关内容。
核心方法: 将 CHANGELOG + commits 的内容与任务的 Acceptance Criteria 做语义匹配。
评估步骤:
## Acceptance Criteria(AC)和 ## Definition of Done(DoD)列表[x] 已完成 — changelog 或 commits 中有明确对应的完成记录[~] 进行中 — 有相关的 WIP commit 或部分完成的记录[ ] 未开始 — 没有找到相关记录(已完成数 + 进行中数×0.5) / 总AC数 × 100%如果 AC 条目很少或很笼统(比如只有一条),则主要依据 changelog 和 commits 的内容量来估算:
将进度信息写入任务的 Description section(<!-- SECTION:DESCRIPTION:BEGIN/END --> 标记内),因为 backlog web UI 只渲染已知 section,自定义 section 不会在页面上显示。
写入规则:
### 进度报告 子标题和进度数据### 进度报告,替换该子标题及其后面的全部内容(直到 <!-- SECTION:DESCRIPTION:END -->)格式模板 (追加在 Description 原有内容之后,<!-- SECTION:DESCRIPTION:END --> 之前):
### 📊 进度报告 ({YYYY-MM-DD} 扫描)
**🚀 预估进度: {N}%** | 近 30 天 {N} 次提交,最近一次 {日期}
**✅ AC 完成情况**:
- ✅ {AC条目1} — {依据简述}
- 🔧 {AC条目2} — {进行中,相关 commit}
- ⬜ {AC条目3} — 未开始
**📝 近期动态** ({changelog来源}):
- {MM-DD}: {版本/动态1}
- {MM-DD}: {版本/动态2}
- {MM-DD}: {版本/动态3}
💡 {一句话总结当前阶段和剩余工作}
在终端用表格格式打印所有扫描结果的概览:
=== BroodBrain 进度扫描报告 ===
扫描时间: {YYYY-MM-DD HH:MM}
| 任务 | 进度 | 仓库 | 最近提交 | 摘要 |
|------|------|------|----------|------|
| TASK-18 KMS/TEE | 75% | AirAccount (KMS) | 今天 | v0.16.4 stable beta |
| TASK-8 Paymaster V4 | 60% | SuperPaymaster | 今天 | V4.3 稳定币已合并 |
| TASK-9 Comet ENS | — | 无关联仓库 | — | 跳过 |
先重新构建静态站点(让 web 版展示最新内容),再提交推送:
cd "$REPO_ROOT" && pnpm run build && bash "$REPO_ROOT/update-task.sh"
注意:pnpm run build 需要一定时间(启动本地 backlog server → 抓取 → 生成 dist/),使用 Bash 工具时设置 timeout: 120000(2 分钟)以确保不会超时中断。
git pull/git fetch 将远程同步到本地,之后所有分析(git log、读文件等)只使用本地分支和本地文件,禁止使用 origin/ 前缀的远程引用。不调用 GitHub API。git pull 失败不要中断流程,改用 git fetch 然后继续分析本地已有数据git log 使用本地分支名(不加 origin/ 前缀),用 --all 参数确保覆盖所有本地分支详见 skills/sync-progress/README.md。快速安装:
# 在你自己的 backlog 项目中安装此 skill
mkdir -p .claude/skills/sync-progress
curl -o .claude/skills/sync-progress/SKILL.md \
https://raw.githubusercontent.com/AAStarCommunity/Brood/main/skills/sync-progress/SKILL.md
可选配置:export SYNC_SCAN_ROOT="$HOME/projects" 指定仓库扫描范围。
扫描所有 "In Progress" 任务关联的 GitHub 仓库,通过本地 git commit 历史和 CHANGELOG 分析开发进度,再将结果同步写回任务文件并部署。当用户想了解项目进展、更新任务进度时使用。
扫描所有活跃 repo 的 License 合规状态,确保每个 repo 包含完整的七件套文件(LICENSE 五件套 + CONTRIBUTING.md + CLA Action),同步模板变更,创建 PR 到 main。当用户想检查 license 合规、初始化新 repo 的 license、或批量更新 TRADEMARK/CLA 政策时使用。
反向同步:扫描所有生态 repo,将接口/版本/状态/依赖变更回流到 Brood 的 INTERFACES.md、PROFILE.md 和 ECOSYSTEM_MAP.md。当用户想检查上下文健康度、同步接口变更、或验证所有 repo 的 @-include 完整性时使用。