← ClaudeAtlas

repo-maplisted

Local repository map for multi-repo development: scan every local git repo into an incremental, self-healing index (name, path, read/write role, purpose); a UserPromptSubmit hook auto-injects the path and role whenever a repo name is mentioned, so cross-repo references and edits never need hand-pasted paths; optional macOS launchd scheduled sync keeps new repos in the map. Use when the user works across multiple local repositories or says 仓库地图, repo-map, repo map, 全局项目索引, 跨仓库引用, 找不到本地仓库, 仓库地图定时更新.
hanzhangzzz/agent-skills-zh · ★ 1 · AI & Automation · score 67
Install: claude install-skill hanzhangzzz/agent-skills-zh
# repo-map:本地仓库地图 ## 机制概览(三层识别链路) | 层 | 载体 | 覆盖场景 | 可靠性 | |----|------|---------|--------| | L1 | UserPromptSubmit hook 字符串匹配 | 用户提到明确仓库名 | 确定性 100% | | L2 | 项目 CLAUDE.md「## 关联仓库」节 | 确认过的结构性老关系(选择性沉淀) | 常驻上下文 | | L3 | 全局 CLAUDE.md 一行规则 + `resolve` 命令 | 模糊指代("那个缺陷分级服务") | 尽力而为兜底 | 核心不变量:**缓存是纯产物,人永远不维护**。每次 resolve/list/sync 先做低成本一致性检查(find .git 清单 vs 缓存路径集),差集增量分析、死路径自动剪枝。 自愈由谁触发,决定了"新仓库多久进地图": | 触发方式 | 时机 | 覆盖 | |---------|------|------| | `resolve`/`list` 内置同步 | 用户手动跑命令那一刻 | 被动,不跑就不更新 | | launchd 定时 `sync`(可选,冷启动询问) | 每 N 秒自动 | 主动,新仓库无需任何动作 | `sync` 比 `list` 的增量多做一件事:**重析未成型仓库**(无 remote 或无提交)。刚 `git init` 的仓库会被记成"本地·可写"且无摘要,等它配好远端、有了首次提交,必须复查才能修正角色——纯增量永远不会回头看已存在路径,这是定时任务存在的真正理由。 组件:`scripts/repo_map.py`(scan/resolve/list/sync/schedule)+ `scripts/prompt_hook.py`(hook)。脚本就地运行于 skill 目录,不复制副本(单一事实源)。 ## 安装步骤(幂等,可重复执行) ### 1. 前置检查 `python3 --version`、`git --version`、`~/.claude/settings.json` 存在。任一缺失即停下说明,不带病安装。 ### 2. 探测扫描根,与用户确认 - 从历史 session 反推:`ls ~/.claude/projects/` 的目录名即历史 cwd(`-` 分隔),统计高频路径前缀。 - 辅助验证:对候选前缀 `find <root> -maxdepth 6 -name .git | head` 确认确实有仓库群。 - 把探测结果(根目录 + 预计仓库数)报给用户确认后再写配置。扫描根是配置不是数据——一年变不了一次,手工列出最诚实。 ### 3. 身份引导,写配置 `~/.claude/repo-map.config.json` 配置含个人邮箱与组织域名,是机器级私密文件:**绝不提交进任何仓库**(本仓库 .gitignore 已设防线),只存在于 `~/.claude/`。 首次安装(配置不存在)时不要让用户手打邮箱,先探测候选、再让用户选择(选择优于输入): - 候选邮箱来源:`git config --global user.email`,再抽 3-5 个扫描根内仓库统计高频作者(`git log --format=%ae | sort | uniq -c | sort -rn | head`)。 - 候选 host 来源:对扫描根内仓库的 remote host 做频次统计。 - 用选择题(AskU