用途
把本地目录清点成一个能浏览、能搜、能点开的工作台。它与 star-your-harness(负责搭)和 better-your-harness(负责体检)是一套。体检回答「我这儿哪里有问题」,工作台回答「我这儿都有什么」,后者是前者的前置——当 Skill 数量多到记不住、笔记散落在大量目录里时,需要的是一个能翻的架子,而不是一份报告。
主要能力
- 顶栏概览:显示目录路径、文件数、目录数、总体量、Skill 数以及用过/没用过的数量。
- 全局搜索:一个搜索框同时搜文件名、文档标题、Skill 名称和描述,按 / 聚焦,Esc 关抽屉。
- 文件页:左侧按文件数排列的一级目录可点击下钻;卡片显示文档标题(Markdown 的 frontmatter title 或第一个 #)、类型、体量、最近改动;可按类型筛选(文档/代码/数据/图片/音视频/配置),按最近改动/体量/名称排序。
- Skill 页:每个 Skill 一张卡,显示名字、description、真实调用次数、文件数、体量、最后更新;筛选包括全部/用过/从未调用/元信息不全/项目级;左侧列出 Skill 的所有来源目录,以及 skills/ 根下的裸 .md 文件(这些不是 Skill,永远不会被加载)。
- 抽屉预览:点任意卡片右侧滑出。文本文件看内容,图片直接显示,Skill 看 SKILL.md 全文。三个动作:打开(交给系统默认程序)、在访达中显示、复制绝对路径。
- 同名 Skill 折叠:按 项目 > 全局 > 插件 保留优先级最高的一条,避免「用过几个」被重复计数。
使用方式
起服务:
python3 ~/.claude/skills/view-your-harness/scripts/serve.py <目录>
它会先跑一遍索引(几秒到半分钟,看目录大小),然后起服务、自动开浏览器,终端打印端口和实际盘的路径。Ctrl-C 停止。
常用参数:
--port 7799:指定端口,被占用会自动往后顺延--no-open:不自动开浏览器(远程/无头环境)--no-usage:跳过会话日志统计,日志多时更快,代价是没有调用次数
这是前台进程,建议用 run_in_background 起,把 URL 报给用户。
交付时告诉用户三件事:地址、盘的是哪个目录、按 Ctrl-C 停。再用一两句话说说清点结果里最扎眼的内容,不要把文件清单在对话里念一遍。
只要数据不要界面时,单独跑索引器:
python3 ~/.claude/skills/view-your-harness/scripts/index.py <目录> -o /tmp/index.json
设计约束
- 只读:该 Skill 不改用户任何文件,服务端没有写、改、删接口。可操作的边界就是打开和定位,调系统的 open 把文件交给用户自己的编辑器和访达。
- 路径校验:所有路径都必须校验落在 root 之内。serve.py 的 safe_join 会 resolve 后比对,越界返 403。Skill 卡片的绝对路径额外白名单 ~/.claude 和 ~/.codex。
- 数字只来自 index.py:文件数、Skill 数、调用次数全部以 index.json 为准,脚本没统计的量就说「未统计」。
调用次数的口径
只认会话日志里 tool_use(name="Skill") 的 input.skill,不认 Skill 出现在系统提示词的可用清单里。统计范围是 ~/.claude/projects 和 ~/.codex/sessions 下的全部 jsonl(上限 1200 个文件)。换过客户端或清过日志就统计不到,这时页面显示「调用次数未统计」而不是 0。
适用场景
- 需要快速了解某个本地目录里有哪些文件和 Skill
- 需要查看 Skill 的真实调用次数、找出从未调用的 Skill
- 需要按类型、时间或体量筛选和浏览文件
- 需要把清点结果导出为 JSON 供其他分析使用
限制
- 只描述目录当前状态,不评价文件质量,也不判断哪个 Skill 该留该删
- 默认最多索引 20000 个文件,超了会在顶栏标 +,不是全量
- 会跳过 node_modules、.git、dist、.obsidian 等构建与缓存目录
- 卡片墙一次最多渲染 300 张,剩下的靠搜索缩小范围,不是无限滚动
- 「从未调用」不等于「没用」——刚装的、手动看过 reference 的、被别的 Skill 内部引用的,都会显示成从未调用。这是一条线索,不是一条判决
文件结构
view-your-harness/
├── SKILL.md
└── scripts/
├── index.py 目录 + Skill 清点 → index.json(纯事实,不做判断)
├── serve.py 本地只读服务,零依赖,只绑 127.0.0.1
└── ui.html 单页工作台,原生 JS,跟随系统深浅色