star-gratitude
Star a third-party skill or project the user found useful. Use when the user says a skill or project is good/useful/worth keeping (e.g. "这个skill真好用", "值得star", "想给它点个star", "想收藏"), asks to star/like/f
SKILL.mdSKILL.md
GitHubStar Gratitude
给「用着好用」的第三方 skill 或项目点 GitHub star,别让感谢被遗忘。核心纪律:先提醒、确认后再 star,绝不擅自代表用户执行公开动作。
触发时机
- 第一次调用:本会话第一次调用某个第三方 skill(来自插件、
~/.agents/skills、~/.dsh/skills或项目 skills 目录)时,按「工作流 A」提醒; - 用户明确提起:用户明确要求 star / 收藏,或表示某个 skill 或项目好用、值得支持时,按「工作流 B」处理。
不要因为会话中「用到了」某个第三方工具(非首次)就主动触发;用户没提、也不是首次调用,就不提。
查重(两种触发都先做)
在 ~/.dsh/star-gratitude/log.md 中查找该来源仓库(owner/repo):
- 已有记录(无论
✅ starred还是⏳ reminded)→ 不重复提醒。若用户仍明确要求 star 且记录是⏳ reminded,按工作流继续;若已是✅ starred,直接告知「已经 star 过了」。 - 无记录 → 首次遇到,进入对应工作流。
同一会话内已提醒过的来源,后续不再提醒(会话内记在心里即可)。
工作流 A:第一次调用第三方 skill 时
- 目标即本次调用的那个 skill。定位它的来源仓库:
- skill 目录(
~/.agents/skills/<name>/、~/.dsh/skills/<name>/、项目.dsh/skills/<name>/、插件node_modules/<pkg>/skills/<name>/)里读SKILL.md/README.md/package.json的repository、homepage、source、url字段; - 找不到就用
web_search按 skill 名找官方仓库;仍拿不准就把候选链接报给用户确认。不要猜一个仓库去 star。
- skill 目录(
- 展示
owner/repo+ 链接,一句话带过提醒:「这个 skill 来自 xxx,要顺手给它 star 吗?」——不打断任务,用户没回应就继续干活。 - 用户确认后,继续「确认与执行」;用户拒绝或暂不,记账
⏳ reminded后不再重复提醒。
工作流 B:用户明确提起
- 确认目标:哪个 skill / 项目?用户只说「好用」没说哪个时,先问清楚,不要猜。
- 按「工作流 A」第 1 步的方式定位仓库。
- 展示
owner/repo+ 链接,等用户明确确认。
确认与执行(两种工作流共用)
先提醒,等确认:必须等用户明确确认,同一轮内不要执行 star。
检查是否已 star:
gh api user/starred/OWNER/REPO -i,看响应头第一行的状态行——HTTP/2.0 204= 已 star(告知并记账✅ starred后结束);HTTP/2.0 404= 未 star,继续。注意gh api不带-i时不打印状态码(204 完全静默、退出码 0;404 才打印HTTP 404),所以判断已/未 star 一律看-i的状态行,不要靠猜。gh未安装/未登录(gh auth status确认)则给出https://github.com/OWNER/REPO手动链接。执行:
gh api -X PUT user/starred/OWNER/REPO(成功时无输出、退出码 0;不放心可再跑一次第 2 步确认)。gh api的 flag 记不清时,用 curl 兜底(token 由gh auth token提供,不写死、不泄露):- 检查:
curl -s -o /dev/null -w "%{http_code}" -H "Authorization: token $(gh auth token)" https://api.github.com/user/starred/OWNER/REPO—— 输出204= 已 star,404= 未 star; - 执行:
curl -s -o /dev/null -w "%{http_code}" -X PUT -H "Authorization: token $(gh auth token)" https://api.github.com/user/starred/OWNER/REPO—— 输出204= 成功。
- 检查:
记账(追加到
~/.dsh/star-gratitude/log.md,文件不存在则先建表头):- YYYY-MM-DD | owner/repo | <skill/项目名> | <一句话为什么好用> | ✅ starred - YYYY-MM-DD | owner/repo | <skill/项目名> | 用户未确认/拒绝 | ⏳ reminded
纪律
- star 是公开动作、用用户自己的账号——执行前用
gh auth status确认账号无误。 - 已 star 或已提醒过 → 告知并跳过,不重复打扰。
- 拿不准仓库归属 → 问用户,不猜。
- 任何失败(网络、权限、找不到仓库)→ 给出手动链接,绝不静默放弃。
- 提醒要轻:一句话带过,不打断任务节奏;只有用户回应后才进入确认流程。
gh api不支持 curl 风格的-w/-o参数(传了会报unknown shorthand flag: 'w' in -w);要看 HTTP 状态码用-i,或改用上面的 curl 兜底,不要在gh api上套 curl 参数。