name: github-star-manager
description: Manage GitHub stars with AI-powered categorization and cleanup. Use when a user wants to organize their starred repos into GitHub Lists, clean up stale/deprecated stars, export star data for analysis, or get stats about their GitHub stars. Supports semantic categorization via LLM and bulk operations (unstar, add-to-list).
metadata:
{
"openclaw":
{
"emoji": "⭐",
"requires": { "bins": ["gh", "jq"] },
"notes": "Requires gh auth login (authenticated GitHub CLI). For Lists operations (create/add), the token needs user scope — use a Classic token. The skill uses the existing gh auth session; no separate env var is needed.",
"install":
[
{
"id": "brew-gh",
"kind": "brew",
"formula": "gh",
"bins": ["gh"],
"label": "Install GitHub CLI (brew)",
},
{
"id": "apt-gh",
"kind": "apt",
"package": "gh",
"bins": ["gh"],
"label": "Install GitHub CLI (apt)",
},
{
"id": "brew-jq",
"kind": "brew",
"formula": "jq",
"bins": ["jq"],
"label": "Install jq (brew)",
},
{
"id": "apt-jq",
"kind": "apt",
"package": "jq",
"bins": ["jq"],
"label": "Install jq (apt)",
},
],
},
}
Requires gh (authenticated) + jq. For Lists operations: token needs user scope (Classic token recommended).
This skill uses the gh CLI's existing auth session. Before using:
gh auth login if not already authenticateduser scope — run gh auth refresh -s user or use a Classic token with user scopeNo separate API key or environment variable is needed.
gh api user/starred --paginate --jq '.[] | {
full_name, description, url: .html_url, language,
topics, stars: .stargazers_count, forks: .forks_count,
archived, updated_at, pushed_at
}' | jq -s '.' > stars.json
Slow for 1000+ stars (~1 min per 1000). Quick count: gh api user/starred --paginate --jq '. | length' | jq -s 'add'.
gh api graphql -f query='{
viewer {
lists(first: 100) {
nodes { id name description isPrivate items { totalCount } }
}
}
}' --jq '.data.viewer.lists.nodes'
gh api graphql -f query='
mutation($name: String!, $desc: String) {
createUserList(input: {name: $name, description: $desc, isPrivate: false}) {
list { id name }
}
}' -f name="LIST_NAME" -f desc="LIST_DESCRIPTION" --jq '.data.createUserList.list'
Save the returned id for adding repos.
REPO_ID=$(gh api repos/OWNER/REPO --jq '.node_id')
# Note: listIds is a JSON array, use --input to pass variables correctly
echo '{"query":"mutation($itemId:ID!,$listIds:[ID!]!){updateUserListsForItem(input:{itemId:$itemId,listIds:$listIds}){user{login}}}","variables":{"itemId":"'$REPO_ID'","listIds":["LIST_ID"]}}' \
| gh api graphql --input -
Add ~300ms delay between calls to avoid rate limits.
7w4.net收錄了海量優質技能外掛。
gh api -X DELETE user/starred/OWNER/REPO
Always confirm with user before unstarring.
這個 Skill 質量中規中矩,文件寫得比較清楚,功能覆蓋也比較全面,能滿足基本的 GitHub stars 管理需求。但它本質上只是一份命令參考手冊,不是可以直接執行的自動化工具,用起來需要一定的動手能力。缺少對操作結果的自動檢查,批次操作時如果遇到網路問題容易失敗。總體來說有參考價值,但不夠好用,建議等待更完善的版本。