From oh-my-daily-skills
Organizes GitHub starred repositories into GitHub Lists using AI-assisted categorization. Supports full batch mode or selective (latest N stars or specific repos), proposes plan, applies after user confirmation.
npx claudepluginhub shiqkuangsan/oh-my-daily-skillsThis skill uses the workspace's default tool permissions.
Organize GitHub starred repos into GitHub Lists automatically.
GitHub Star 项目管理工具,支持从内容自动发现并 Star 项目,同步追踪更新,生成可视化 Dashboard
Guides optimization of GitHub profiles, READMEs, repos, Pages, gists, and Awesome lists for parasite SEO, GEO, open source marketing, and visibility.
Share bugs, ideas, or general feedback.
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.