All skills
cat-xierluo avatar

/github-star-manager

@f36f7c0

GitHub Star 项目管理工具,支持从内容自动发现并 Star 项目,同步追踪更新,生成可视化 Dashboard

Use this Skill: https://skilld.dev/gh/cat-xierluo/legal-skills/github-star-manager

This session only. Nothing lands on disk.

CHANGELOG.md

≈4k tokens on demand. Your agent reads this file only when SKILL.md points to it.

变更日志 (CHANGELOG.md)

本文档记录 github-star-manager 技能的所有变更。


[0.6.6] - 2026-09-24

修复

  • 导出脚本网络重试加固(重要):star_tracker.py 全部 14 处裸 requests.get/put/delete 改走新增的 _request_with_retry() 封装——指数退避重试(2s 起步、60s 封顶、最多 8 次),覆盖网络异常(ProxyError/RemoteDisconnected/Timeout 等)与 429/5xx 状态码,429 尊重 Retry-After 头。事故背景:全量导出 673 仓(约 2000+ 次请求)在代理环境下连续两晚失败——首次 HTTP 503 隧道错误(处理到 multica-ai/multica 时)、次次 RemoteDisconnected,裸调用一次即崩,长窗口任务必折。修复后全量导出 681 仓一次通过、零失败
  • 导出产物路径不再随 cwd 漂移:main.py 导出 Dashboard 与 config 原写入相对路径 output/,从其他目录(如仓库根)启动时产物散落工作区、污染共享仓库(实测:scripts/output/ 出现 data.js/dashboard.html 两个 untracked 脏文件);现统一锚定技能自身 output/ 目录(StarTracker.CACHE_DIR,已被 .gitignore 覆盖)。dashboard_generator.py 模板查找同步从相对路径改为锚定技能目录,否则非技能根目录启动时永远走简化模板

改进

  • 对话模块消歧经验扩充(3 条实战模式入 SKILL.md):① owner 拼写修正——截图直读 owner 404 时先怀疑 OCR 误读,按 repo 名搜索锁定真身并用星数量级与截图侧栏数字互证(实测 webadderalorg→webadderallorg/Recordly);② 社交账号名 ↔ GitHub owner 互证——博主昵称与 owner 名的派生关系作中优先级佐证(实测:耳朵→erduo1998-cell、姚老师→yaojingang、文森特→Vincentwei1021);③ 改名仓库识别——旧名 404 时查 API 301 重定向,返回的 full_name 即新名,已在库则跳过(实测:erduo-hyperframes-broll→erduo-broll-loop-engineering)
  • SKILL.md Dashboard 使用说明同步产物路径变化

[0.6.5] - 2026-09-23

改进

  • 消歧协议重排(重要):证据优先级明确为「来源亲授全称 > 语义比对 > 排除规则 > 版本轨迹」,Star 数量级从第 1 位降为第 5 位仅参考信号、永不单独定论。实测反例:taste-skill 同名的 Leonxlnx 版 8.9 万⭐ 比目标 senlindesign 版(366⭐)高两个数量级,若按旧协议"数量级快筛"会 star 错;实际靠语义比对 + 作者评论区亲授全称锁定

新增

  • 评论区/回复作为提取源:作者在评论区亲授的 owner/repo 全称是最高优先级证据,优先于一切启发式消歧
  • 半截 URL 补全策略:owner 确定而 name 截断(如 mcncarl/jianyi…)时,列该 owner 名下仓库按名称前缀 + description 语义匹配补全(实测:jianyi…→jianying-headless,yichen…→yichen-skills)
  • 批量 star 执行模式:一次内容提取出多个仓库时循环"查重→star→回读",单仓失败不阻断,最后汇总成功/跳过/失败

背景

四连 star 实战(taste-skill、jianying-headless、yichen-skills、hypit)中,数量级启发式首次遇到同名高星反例,暴露 0.6.4 协议的优先级缺陷;同时半截 URL 补全、评论区提取、批量执行三种实战模式均未成文,本次一并固化。

[0.6.4] - 2026-09-23

新增

  • 同名候选消歧协议:社交内容(截图/帖子)常只给项目名,同名候选多为 fork/搬运/衍生项目。对话模块新增四步锚定:Star 数量级判别(原仓库通常高 1–2 个数量级)、图片语义锚定(截图功能场景与候选 description 比对,而非只提取项目名文字)、衍生仓库排除(后缀/自述"基于上游")、版本交叉核对(内容提到版本号时查 releases/tags)
  • 消歧兜底:候选无法唯一确定时不凭猜测 star,列出候选与判断依据请用户确认

背景

实测两起截图 star 案例(mono-color-skill 3250⭐ vs 0~3⭐ 搬运;native-subtitle-quote-image 795⭐ vs 5/7⭐ 衍生)均依赖上述锚定手法锁定原仓库,但原 SKILL.md 仅有一行"上下文相关性验证",无可操作判据,本次将实战验证过的协议固化。

[0.6.3] - 2026-09-23

修复

  • 对话模块 star 命令在 gh 2.83.0 不可用:SKILL.md 中 gh repo star owner/repo 实际报 unknown command "star" for "gh repo"(该子命令并非所有 gh 版本都有),改用 REST API gh api -X PUT user/starred/owner/repo,幂等且跨版本可用
  • star 结果验证语义:补充检查是否已 star 的响应语义(HTTP 204 = 已 star,404 = 未 star),并要求 star 后以 GET 回读 204 为完成标准,不以 PUT 退出码为准
  • frontmatter 版本滞后:SKILL.md version 停留在 0.6.1,与 CHANGELOG 已发布的 0.6.2 脱节,本次一并同步到 0.6.3

[0.6.2] - 2026-05-10

修复

  • description 为 null 时自动重试:增量同步和首次同步时,对 description 为 null 的项目自动调用 GitHub API 重新抓取最新元数据,同时刷新 language、topics、homepage 等字段(Closes #9)
  • star 变化触发元数据刷新:检测到新增 star 时,同时刷新该项目的 description、language、topics 等元数据,确保存量项目改名后数据同步更新
  • 数据质量日志:新增 log_null_descriptions() 方法,记录哪些项目 description 为 null 并输出到 output/data_quality.log,方便排查数据质量问题

新增方法

方法 位置 功能
refresh_repo_metadata() star_tracker.py 通过 GitHub API 刷新单个仓库的最新元数据
log_null_descriptions() star_tracker.py 记录 description 为 null 的项目列表,写入数据质量日志
retry_null_descriptions() star_tracker.py 批量重试 description 为 null 的项目,自动刷新元数据

[0.6.1] - 2026-04-10

修复

  • 文档路径修正:环境配置示例统一改为当前目录结构
    • cp .env.example .env 修正为 cp assets/.env.example .env
    • pip install -r requirements.txt 修正为 pip install -r assets/requirements.txt
  • 配置目录口径统一:首次复制配置目录统一为 ~/.github-star-manager/

文档完善

  • references/api-guide.md 与 references/dev-guide.md 中的旧名称 github-star-tracker 已同步改为 github-star-manager
  • 开发指南中的测试目录示例改为当前目录 skills/github-star-manager

[0.6.0] - 2026-02-28

重构(Skill 整合)

变更 说明
Skill 整合 将 github-auto-star 整合到 github-star-tracker,统一为 github-star-manager
目录重命名 github-star-tracker → github-star-manager
模块化设计 同一 Skill 包含两个模块:对话模块 + 脚本模块

新增(对话模块)

模块 触发方式 功能
对话模块 对话触发 从内容提取项目并 Star
脚本模块 命令行/定时任务 同步、Dashboard、追踪、批量管理

对话模块功能

  • 从各种内容来源(URL/截图/文字)中自动提取 GitHub 仓库引用
  • 智能匹配:直接匹配 + 按名称搜索 + 上下文相关性验证
  • 自动检查是否已 Star,避免重复
  • 使用 GitHub CLI (gh) 执行 Star 操作

删除

  • 删除 github-auto-star 独立 Skill,功能已整合到 github-star-manager

[0.5.1] - 2026-02-14

修复(Dashboard UI 问题修复)

变更 说明
刷新后默认不显示项目 修复默认筛选状态,加载后自动显示项目列表
标签云不显示 修复 renderTagCloud() 使用错误的字段,改用 topics
Star 时间显示为零 修复统计函数未包含 twoyears/threeyears 选项
时间筛选器不工作 修复 filterProjects() 使用隐藏 select 而非变量的问题

增强(时间筛选扩展)

变更 说明
新增筛选选项 添加"2年"和"3年+"时间筛选选项
emoji 同步 活动标签和 Star 时间的 emoji 保持一致
默认显示调整 将"我的Star时间"设为默认显示标签(左侧)

重构(项目命名)

变更 说明
项目重命名 github-star-tracker → github-stars-tracker(复数形式符合 GitHub 官方命名)
HTML 标题更新 页面标题和 H1 标题改为 GitHub Stars Tracker
模板文件同步 更新 dashboard.example.html、.env.example 等模板

模板文件更新

  • assets/dashboard.example.html - 同步 Dashboard 修复和默认显示
  • assets/.env.example - 更新标题为 GitHub Stars Tracker

[0.5.0] - 2026-02-14

新增(数据维度增强 + 双重活跃度筛选)

变更 说明
数据字段扩展 从 3 个字段扩展到 27 个字段,丰富 AI 分析维度
starred_at 获取 使用认证 API 获取用户 star 的具体时间
项目更新活跃度筛选 按项目更新时间筛选(1周/1月/3月/半年/1年/超1年)
Star 时间筛选 按用户 star 的时间筛选,了解近期关注领域
双维度统计卡片 同时显示项目活跃度和 Star 时间分布

数据字段清单

基本信息:

  • full_name, name, owner, html_url, description, homepage

时间维度(关键):

  • starred_at - 用户何时 star 的
  • created_at - 仓库创建时间
  • updated_at - 最后更新时间
  • pushed_at - 最后推送时间
  • local_fetched_at - 本地抓取时间

统计数据:

  • stargazers_count, forks_count, watchers_count, open_issues_count

分类信息:

  • language, topics, license, visibility

项目特征:

  • is_fork, is_archived, is_template, has_wiki, has_pages, has_discussions

使用示例

# 重新初始化获取完整数据(27个字段)
python scripts/main.py --init --user cat-xierluo

# 查看 Dashboard(包含活跃度筛选)
open output/dashboard.html

技术改进

  • save_latest() 方法重写,保存完整仓库信息
  • get_starred_repos() 添加 include_starred_at 参数,使用 application/vnd.github.star+json 获取 starred_at
  • Dashboard 添加活跃度统计卡片和筛选下拉框
  • JavaScript 添加 getActivityCategory() 和 updateActivityStats() 函数

[0.4.2] - 2026-02-12

新增(输出目录规范)

变更 说明
output/ 目录 创建专用目录存放运行时生成的文件
文件组织 dashboard.html 和 projects.json 移至 output/
gitignore 更新 忽略整个 output/ 目录

使用说明

运行 --export 后,生成的文件位于 output/ 目录:

  • output/projects.json - 导出的项目数据
  • output/dashboard.html - 可视化面板

打开 output/dashboard.html 即可查看数据可视化。


[0.4.1] - 2026-02-12

修复(目录结构规范化)

  • 配置文件散落在根目录 → 移至 assets/ 目录符合 SKILL-GUIDE.md 规范
  • 文档路径引用错误 → 更新 SKILL.md 和 CHANGELOG.md 中的路径

变更内容

  • 移动 dashboard.example.html → assets/dashboard.example.html
  • 移动 projects.example.json → assets/projects.example.json
  • 移动 categories.yaml → assets/categories.yaml
  • 移动 tags.json → assets/tags.json
  • 更新 scripts/main.py 中的模板路径引用
  • 更新 SKILL.md 配置文件说明

[0.4.0] - 2026-02-12

新增(分类与标签系统)

功能 说明
分类配置 assets/categories.yaml - 8种预设分类,可自定义
标签管理 assets/tags.json - 添加、编辑、删除标签
智能分类 根据关键词自动匹配分类(语言/topics/description)
标签云 Dashboard 顶部显示所有标签,点击筛选
分类筛选 按预设分类(AI/Web/桌面/移动等)筛选项目
搜索增强 支持标签名和关键词搜索
统计增强 显示已分类项目数量

使用示例

# 导出数据(现在包含分类和标签)
python scripts/main.py --export

# 编辑分类配置
vim ~/.github-star-tracker/categories.yaml

# 添加新标签
python scripts/main.py --add-tag "游戏引擎" --color "#f472b6"

# 按分类查看
# 然后在 Dashboard 中点击对应分类标签

技术改进

  • 新增 assets/categories.yaml 和 assets/tags.json 配置文件
  • StarTracker 添加 _load_categories(), _load_tags(), get_categories_map() 方法
  • StarTracker 添加 _match_category() 方法,根据关键词智能匹配分类
  • get_starred_repos() 返回的每个仓库包含 category 和 matched_keywords 字段
  • Dashboard 全面重构,支持标签云、分类筛选、搜索

[0.3.1] - 2026-02-12

修复

问题 解决方案
只能获取 100 个 Star 移除 limit 限制,支持分页获取全部 Star
用户名必须手动输入 添加 get_authenticated_user() 自动获取 Token 对应的用户名
language=None 导致崩溃 修复空值检查
符号链接报错 修复 save_snapshot() 文件覆盖逻辑

改进

  • 默认 limit 从 100 提升到 9999(获取全部)
  • Dashboard 修复本地文件加载问题
  • --user 参数改为可选,未提供时自动获取

[0.3.0] - 2026-02-12

新增(Star 管理功能)

命令 说明
--star owner/repo 为单个仓库添加 Star
--unstar owner/repo 取消单个仓库的 Star
--cleanup --days 90 查找并清理长期未更新的仓库
--batch-unstar file.json 批量取消 Star(从 JSON 文件)
--batch-star file.json 批量添加 Star(从 JSON 文件)

使用示例

# 单个操作
python scripts/main.py --star owner/repo           # 添加 Star
python scripts/main.py --unstar owner/repo        # 取消 Star

# 清理陈旧项目
python scripts/main.py --cleanup --days 90         # 预览(默认)
python scripts/main.py --cleanup --days 90 --execute  # 实际执行

# 批量操作
python scripts/main.py --batch-unstar repos.json   # 批量取消
python scripts/main.py --batch-star repos.json    # 批量添加

技术改进

  • StarTracker 类新增 star_repo(), unstar_repo(), is_starred() 等方法
  • 添加 --execute 安全确认机制,避免误操作
  • 所有破坏性操作(取消 Star)默认预览,需要 --execute 确认

[0.2.0] - 2026-02-12

新增

  • HTML Dashboard:实现信息密集型可视化面板,支持一屏浏览大量项目
  • 数据导出功能:新增 --export 命令,生成 projects.json 供 Dashboard 使用
  • 状态筛选:支持按活跃度(活跃/近期更新/长期未更)和价值(高/中)筛选
  • 搜索功能:支持按项目名、描述、标签进行关键词搜索
  • 示例文件机制:创建 dashboard.example.html 作为模板,首次运行自动复制

改进

  • 从 knowledge-retention skill 重构,移除社交媒体截图转化功能
  • 专注核心功能:更新追踪、版本检测、活跃度分析
  • 卡片点击展开详情:显示创建时间、Forks、Issues 等信息

技术优化

  • 使用 CSS 变量管理主题色值
  • 响应式布局,支持移动端浏览
  • 本地 JSON 数据缓存,减少 API 请求

Source: SKILL.md on GitHub

1 alert15d4 checks · Risk SAFE
  • Gen Agent Trust Hub15d

    The skill is a management tool for GitHub stars that enables the agent to discover and manage repositories based on external content. It is generally safe, but possesses an attack surface for indirect prompt injection because it performs authenticated actions on GitHub based on untrusted data from URLs or images without strict boundary enforcement.

  • Socket15d

    No alerts

  • Snyk15d

    Risk: MEDIUM · 1 issue

  • Runlayer6mo

    4/17 files flagged

Signed by skilld at f36f7c0. This ties the file your Agent reads to that commit on GitHub. It does not review the instructions.

Last checked against GitHub 19 hours ago.

Activeupdated last week
homepage
https://github.com/cat-xierluo/legal-skills
author
杨卫薪律师(微信ywxlaw)
version
0.6.6

README badge

README badge for cat-xierluo/legal-skills/github-star-manager