从GitHub星标和官方技能目录中挑选工具
目标:当任务需要工具、库、CLI、MCP服务器或智能体技能时,优先选择用户已经信任的(他们的GitHub星标)和官方供应商目录,而不是随机网络结果,同时仍要检查质量。
以下所有路径都相对于本技能文件夹(包含此SKILL.md的目录)。
1. 明确需求
用一行写下工具必须做什么,以及硬约束(语言/运行时、操作系统、硬件如GPU/VRAM、许可证、离线/本地、预算)。利用你已经了解的用户环境信息。
2. 搜索用户的GitHub星标
找到用户的GitHub登录名(如果未知则询问一次,或者当 gh 以用户身份登录时使用 gh api user --jq .login)。然后使用第一个存在的源:
- 本地快照(可选)。 如果本技能文件夹中存在
references/stars.csv或references/stars_by_list.md(或者用户指向一个副本,例如在单独的私有仓库中),则先搜索它;它可以离线工作。stars.csv列:lists(GitHub 星标列表名称,用|分隔;如果没有则为(unlisted))、full_name、url、description、description_ja、language、stars、pushed_at、archived、license、topics、starred_at。stars_by_list.md:相同的仓库按星标列表分组,每行一个,顶部有Snapshot:日期。列表名称是很好的类别提示。- 快照可能已过时;当在线并且需要时效性时,也要进行下面的实时检查。
- 实时、只读(默认,当没有快照时):
gh api --paginate "users/<login>/starred?per_page=100" --jq '.[] | [.full_name,.html_url,.description,.language,(.topics|join(" ")),.stargazers_count,.pushed_at,.archived] | @tsv'(如果gh不可用,则使用未经验证的 REST APIhttps://api.github.com/users/<login>/starred)。如果用户将星标组织到GitHub星标列表中,则将列表名称用作类别提示。
在描述、主题、名称和语言上使用多个同义词(包括用户使用的其他语言)进行匹配,例如 rg -i "video|動画|ffmpeg" references/stars.csv。在推荐之前,先浏览有匹配可能的仓库的README。
3. 搜索官方技能/插件目录(当智能体技能或插件有帮助时)
- 运行
npx -y skills find "<query>",可选地使用--owner <publisher>限制为官方发布者,例如 anthropics、openai、cursor、github、google、google-gemini、microsoft、vercel-labs、cloudflare、huggingface、awslabs。这需要互联网访问;如果环境离线则跳过并说明原因。 - 也可以直接考虑供应商的官方仓库(例如 anthropics/skills、anthropics/claude-plugins-official、openai/skills、openai/plugins、cursor/plugins、github/awesome-copilot、google/skills、vercel-labs/agent-skills、huggingface/skills、microsoft/skills、cloudflare/skills)。在将其称为官方之前,请验证仓库属于供应商的组织。
4. 质量过滤(适用于每个候选)
- 使用快照中的
stars、pushed_at、archived和license,并在在线时使用gh api repos/<owner>/<repo>刷新它们。 - 优先选择知名、积极维护的项目。放弃已归档的仓库、大约1年内没有有意义活动的仓库,以及星标非常少的仓库,除非没有更好的选择(然后说明情况)。
- 星标可能包含旧仓库或恶搞仓库:被星标表示有兴趣,不代表质量。
- 如果星标和官方目录中都没有合适的,请说明情况,并退回到常规搜索,查找公认的标准工具。不要强行推荐一个星标仓库。
5. 推荐
- 给出1个首选,外加最多2-3个备选方案。每个方案包括:带有链接的名称、一行介绍它的功能、为什么适合此任务和约束条件、星标数和最后更新日期(说明是来自快照还是实时检查),以及它来自用户的星标、官方目录还是常规搜索。
- 不要编造星标、日期或功能;只报告你已验证的信息。
- 安装、星标或更改任何内容都需要用户批准;本技能默认是只读的。
创建或更新快照(可选)
python3 scripts/refresh_stars.py <login> 会写入 references/stars.csv 和 references/stars_by_list.md(只读;需要 gh 已登录;只有当 gh 以 <login> 身份登录时才会填充星标列表名称,否则每个仓库都是 (unlisted))。现有的 description_ja 值会保留。这些数据是个人数据:请将其保留在公共仓库之外(参见 .gitignore),或将其存储在单独的私有仓库中。