From oh-my-daily-skills
Organizes GitHub starred repositories into GitHub Lists using AI-assisted categorization. Supports full batch or selective modes for latest N stars or specific repos, proposes plan, applies after confirmation.
How this skill is triggered — by the user, by Claude, or both
Slash command
/oh-my-daily-skills:gh-star-listThe summary Claude sees in its skill listing — used to decide when to auto-load this skill
Organize GitHub starred repos into GitHub Lists automatically.
Organize GitHub starred repos into GitHub Lists automatically.
Verify environment before starting. Run these checks and guide user through any failures:
# 1. Check gh CLI installed
gh --version || echo "MISSING"
# 2. Check gh authenticated with 'user' scope
gh auth status # must show 'user' in scopes
# 3. Check jq installed
jq --version || echo "MISSING"
Troubleshooting:
| Problem | Solution |
|---|---|
gh not installed | macOS: brew install gh. Others: https://cli.github.com |
gh not logged in | gh auth login -h github.com -p https -w (opens browser) |
user scope missing | gh auth refresh -s user -h github.com |
jq not installed | macOS: brew install jq. Others: https://jqlang.github.io/jq/download |
All checks must pass before proceeding. The user scope is required for GitHub Lists API access.
All scripts are in scripts/ relative to this skill's directory.
| Script | Purpose |
|---|---|
fetch_stars.sh | Fetch starred repos (paginated). Outputs one JSON object per line. |
manage_lists.sh | CRUD for GitHub Lists: get, create, delete, add |
Categorize all starred repos at once. Trigger: "整理所有 stars", "organize all my stars".
Categorize specific repos or the latest N stars. Trigger: "整理最近 10 个 star", "把 xxx/yyy 加到合适的 list".
When no specific repos are mentioned and user says "整理一下" without "所有/全部/all", default to latest 10 stars.
Full batch mode:
bash scripts/fetch_stars.sh > /tmp/stars.jsonl
bash scripts/manage_lists.sh get > /tmp/lists.json
Selective mode (latest N):
bash scripts/fetch_stars.sh --limit N > /tmp/stars.jsonl
bash scripts/manage_lists.sh get > /tmp/lists.json
For specific repos, use gh api to fetch individual repo info:
gh api repos/{owner}/{repo} --jq '{id: .node_id, full_name: .full_name, description: (.description // ""), topics: (.topics // []), language: (.language // ""), url: .html_url}'
Tell user how many stars to process and how many existing lists found.
Read /tmp/stars.jsonl and /tmp/lists.json.
Analyze all repos and existing lists. Propose a categorization plan.
Use these as a starting template for full batch mode. Adjust based on user's actual star composition — skip empty categories, merge small ones, split large ones (>40 repos).
| Category | Description | Typical repos |
|---|---|---|
| AI | LLMs, ML frameworks, AI apps, agents | langchain, ollama, stable-diffusion |
| React | React ecosystem: frameworks, hooks, state management | next.js, react, zustand |
| React Native | React Native core, navigation, UI libs | react-navigation, expo |
| Vue | Vue ecosystem: frameworks, plugins, tools | nuxt, vueuse, element-plus |
| Flutter | Flutter/Dart packages and apps | flutter, riverpod |
| Mobile Native | iOS/Android native development | Kotlin/Swift libs, Jetpack |
| Mini programs, WeChat SDK, WePY | wepy, vant-weapp | |
| Backend | Server frameworks, databases, APIs | express, fastapi, prisma |
| Build & DX | Bundlers, linters, dev tools, monorepo | vite, eslint, turborepo |
| CLI & Tools | Desktop apps, CLI utilities, productivity | homebrew, raycast, warp |
| UI & Design | Component libraries, CSS, animation | tailwindcss, shadcn, framer-motion |
| Network & Proxy | HTTP clients, proxies, VPN, network tools | clash, axios, nginx |
| DevOps & Docker | CI/CD, containers, infra, monitoring | docker, k8s, terraform |
| Low-Code & Admin | Admin panels, low-code platforms, CMS | strapi, appsmith, refine |
| Awesome & Learning | Curated lists, tutorials, books, courses | awesome-xxx, free-programming-books |
| Misc | Repos that don't fit elsewhere |
Present the plan as a table. Wait for user confirmation or adjustments.
After user confirms:
bash scripts/manage_lists.sh create "<name>" "<description>"bash scripts/manage_lists.sh add <repo_node_id> <list_id>Critical: The add command calls updateUserListsForItem which replaces all list memberships for a repo. The listIds param is the complete set of lists the repo should belong to. To preserve existing membership, include ALL list IDs (old + new) in a single call.
Full batch: process in batches, report progress every 50 repos. Selective: process all at once.
Run bash scripts/manage_lists.sh get and present a summary table showing list name, repo count, and whether each list is new or existing.
npx claudepluginhub shiqkuangsan/oh-my-daily-skillsManages GitHub Stars with auto-discovery from content, update tracking (releases/commits), and an HTML dashboard for visualizing starred projects.
Manages GitHub labels on PRs and issues using gh CLI: lists available labels, adds/removes labels, creates new labels with colors and descriptions.