GitHub Stars Organizer
Organize a user's GitHub starred repositories by reusing existing lists, creating only a small number of broad missing lists, and adding unlisted repositories to the right places.
This skill is for organizing starred repositories, not for general GitHub account maintenance.
Default stance: be conservative, review-first, and additive. A bad list assignment is worse than leaving a repository unfiled for later review.
Required Tooling
- Preferred browser automation skill: chrome-cdp
- A compatible equivalent is acceptable only if it can:
- control an authenticated local browser session
- read the GitHub Stars page
- inspect repository list membership
- create lists
- add repositories to lists
If chrome-cdp or an equivalent browser automation skill is unavailable, stop and say that authenticated browser automation is required.
Remote Debugging Prerequisite
If Chrome remote debugging is not enabled yet, tell the user to do this first:
- Open
chrome://inspect/#remote-debugging
- Enable remote debugging / remote target discovery
- Make sure GitHub is logged in in that Chrome profile
- Confirm the local debugging endpoint is available, commonly
127.0.0.1:9222
- Approve any Chrome "Allow debugging" prompt for the GitHub tab if it appears
Do not proceed until browser automation can reach the GitHub tab.
Inputs
The user should provide at least one of:
- GitHub username
- GitHub profile URL
- GitHub Stars URL
Do not hardcode any specific account, repository, or list names.
Default Safety Rules
- Default to additive organization only
- Do not unstar repositories
- Do not remove repositories from lists
- Do not rename or delete lists
- If a repository is already in one or more lists, skip it by default
- Reuse existing lists before creating new ones
- Keep the final list system compact and reusable
- Prefer one primary list per repository
- Add a second list only when it clearly improves retrieval
- Add a third list only for genuine cross-domain repositories
- If confidence is not high, do not guess
- Report ambiguous repositories instead of forcing them into a weak category
If the user explicitly asks for reorganization that would modify existing assignments, ask for confirmation before changing any existing list membership.
Operating Modes
- Default mode: review-first
- analyze lists
- analyze unlisted repositories
- propose taxonomy and assignments
- stop for confirmation before writing if ambiguity is material
- Auto-apply mode
- only use when the user explicitly asks for direct execution
- still stop if ambiguity is high or list count would exceed the cap
If the user did not clearly ask for immediate writes, prefer the default review-first mode.
Primary Workflow
- Open the target user's Stars page in the authenticated GitHub browser session.
- Read all existing lists first and build a normalized map of:
- list name
- semantic meaning
- probable duplicates or near-duplicates
- Read all starred repositories.
Important:
- GitHub Stars pagination is cursor-based.
- Follow the
Next link/cursor.
- Do not assume
page=N is reliable.
- For each starred repository, inspect its list membership.
- Split repositories into:
- Only organize the unlisted repositories unless the user explicitly asks for broader reorganization.
- Build a taxonomy plan:
- strongly prefer existing suitable lists
- create missing lists only when they are broad and reusable
- avoid near-duplicate lists
- Classify each unlisted repository by primary intent, not by incidental words in the description.
- Assign a confidence level to each proposed placement:
- Keep the total number of lists ideally between 5 and 15.
- If the plan would require more than 15 total lists, stop and ask the user whether the extra lists may be created.
Include:
- the exact proposed new list names
- a short reason for each
- If ambiguity is material, stop and ask the user before writing.
Treat ambiguity as material when:
- more than 10 repositories are medium/low confidence, or
- more than 10% of unlisted repositories are medium/low confidence, or
- many repositories appear to require a new category not yet approved by the user
- Create any approved missing lists.
- Add each unlisted repository to the smallest reasonable number of lists.
Target:
- usually 1 list
- sometimes 2
- rarely 3
- Verify every repository after update by re-reading its current list membership.
- Report:
- lists reused
- lists created
- repositories added
- repositories skipped because they were already organized
- repositories intentionally left unassigned because confidence was too low
- ambiguities or repos that may need user judgment
Taxonomy Rules
- Prefer broad, stable themes over tiny one-off buckets
- New lists should usually represent a category that can hold multiple repositories
- Do not create a new list for fewer than 3 repositories unless the user explicitly wants that category
- Prefer single-responsibility list names
- Do not use compound list titles with
&, /, or other bundled meanings unless the user explicitly asked for that style
- One list title should represent one retrieval concept
- Avoid trivial distinctions like:
AI Agents vs Agent Frameworks vs Autonomous Agents
UI, Frontend, Web UI, Frontend Tools
- Prefer merging into one broad list unless the distinction is genuinely useful for retrieval
- Good list systems usually include a mix of:
- domain buckets
- tooling buckets
- reference/awesome/tutorial buckets
- Avoid creating language-only lists unless the user explicitly wants language-based organization
If the current taxonomy is missing an obvious stable category, create it only when it has a clear long-term use.
Examples of acceptable missing categories:
Web Tooling
Build Tooling
Auth
Identity
Browser Automation
Examples of bad categories:
Random JS
Stuff To Try
Interesting Repos
Tools 2
Better Algorithm
Use a two-pass planner:
Reuse-first pass
Match every unlisted repository against existing lists before proposing anything new.
Gap-creation pass
Create new lists only for clusters that:
- do not fit an existing list cleanly
- are broad enough to be useful again
- help retrieve repositories later
This keeps the system stable and prevents uncontrolled list growth.
Also cap per-repository assignment density:
- prefer 1 list
- allow 2 when both are clearly helpful
- allow 3 only when the repository spans multiple major themes
This prevents over-tagging.
Add a confidence gate:
- high confidence:
- repository name, description, and ecosystem all point to the same category
- medium confidence:
- one strong clue exists, but there are plausible alternatives
- low confidence:
- the repository could fit multiple categories equally well, or the description is too vague
Default write policy:
- auto-apply only high-confidence assignments
- ask the user before applying medium-confidence assignments in bulk
- never auto-apply low-confidence assignments
Add a naming gate:
- if a proposed new list name feels like two categories glued together, split it
- prefer
Frontend and Design Systems over Frontend & UX
- prefer
Backend and Infrastructure over Backend & Infra
- prefer
Learning and Reference only if the user wants both as separate retrieval concepts; otherwise pick the one that best matches intent
Classification Rules
Classify by the repository's primary job, not by stray words in its description.
Signal priority:
- repository name
- short description / tagline
- project type and user
- ecosystem and technology
- only then secondary keywords
Negative rule:
- a repo is not backend just because it mentions
server, node, API, or auth
- a repo is not frontend just because it has a UI or demo
- a repo is not learning/reference just because it has docs or examples
- a repo is not AI coding tooling just because it is used by developers
- a repo is not productivity just because it is an app
Use the category only when the category is the main value proposition.
Category Intent
Descriptions may be broader than titles, but the title itself should stay single-purpose.
If a repository does not fit an existing category cleanly, prefer:
- proposing a new stable list, or
- leaving it unassigned for review
instead of forcing it into the nearest broad bucket.
GitHub-Specific Notes
- Read detailed implementation guidance in
references/algorithm.md
- Read conservative classification guidance in
references/classification.md
- The core repository membership endpoint is
/<owner>/<repo>/lists
- Use that endpoint to detect whether a repository is already organized
- If a repository already has checked lists, skip it by default
- After adding list assignments, re-fetch the same menu and confirm the expected checked state
When to Ask the User
Ask before proceeding only when one of these is true:
- the target account is unclear
- browser automation is unavailable
- Chrome remote debugging is not enabled
- the GitHub session is not authenticated
- more than 15 total lists would be needed
- ambiguity is high enough that bulk writes would likely create bad assignments
- a large number of borderline or duplicate list names already exist and safe reuse is unclear
Critical Prohibitions
- Do not use a specific user's account as a hidden default
- Do not blindly create dozens of lists
- Do not destroy or rewrite existing organization without explicit permission
- Do not rely on
page=N for GitHub Stars traversal
- Do not treat a repository as unlisted until its current list membership has been checked
- Do not classify by programming language alone
- Do not use
Learning & Reference as a lazy fallback for uncertain repositories
- Do not classify a repository into
Backend & Infra or Frontend & UX based on weak incidental keywords
1---
2name: github-stars-organizer
3description: "GitHub stars and lists organizer. Reuses existing lists, finds unlisted starred repositories, creates only necessary broad lists, and adds repos without disturbing existing assignments. Use when user asks to organize GitHub stars, sort starred repos, clean up lists, or file unlisted stars. Keywords: GitHub stars, GitHub lists, starred repositories, chrome-cdp."
4metadata:
5 author: techmeat
6 version: "1.1.0"
7 release_date: "2026-03-18"
8---
9
10# GitHub Stars Organizer
11
12Organize a user's GitHub starred repositories by reusing existing lists, creating only a small number of broad missing lists, and adding unlisted repositories to the right places.
13
14This skill is for **organizing starred repositories**, not for general GitHub account maintenance.
15
16Default stance: be **conservative, review-first, and additive**. A bad list assignment is worse than leaving a repository unfiled for later review.
17
18## Required Tooling
19
20- Preferred browser automation skill: [chrome-cdp](https://github.com/pasky/chrome-cdp-skill/tree/main/skills/chrome-cdp)
21- A compatible equivalent is acceptable only if it can:
22 - control an authenticated local browser session
23 - read the GitHub Stars page
24 - inspect repository list membership
25 - create lists
26 - add repositories to lists
27
28If `chrome-cdp` or an equivalent browser automation skill is unavailable, stop and say that authenticated browser automation is required.
29
30## Remote Debugging Prerequisite
31
32If Chrome remote debugging is not enabled yet, tell the user to do this first:
33
341. Open `chrome://inspect/#remote-debugging`
352. Enable remote debugging / remote target discovery
363. Make sure GitHub is logged in in that Chrome profile
374. Confirm the local debugging endpoint is available, commonly `127.0.0.1:9222`
385. Approve any Chrome "Allow debugging" prompt for the GitHub tab if it appears
39
40Do not proceed until browser automation can reach the GitHub tab.
41
42## Inputs
43
44The user should provide at least one of:
45
46- GitHub username
47- GitHub profile URL
48- GitHub Stars URL
49
50Do not hardcode any specific account, repository, or list names.
51
52## Default Safety Rules
53
54- Default to **additive organization only**
55- Do not unstar repositories
56- Do not remove repositories from lists
57- Do not rename or delete lists
58- If a repository is already in one or more lists, skip it by default
59- Reuse existing lists before creating new ones
60- Keep the final list system compact and reusable
61- Prefer **one primary list** per repository
62- Add a second list only when it clearly improves retrieval
63- Add a third list only for genuine cross-domain repositories
64- If confidence is not high, do not guess
65- Report ambiguous repositories instead of forcing them into a weak category
66
67If the user explicitly asks for reorganization that would modify existing assignments, ask for confirmation before changing any existing list membership.
68
69## Operating Modes
70
71- **Default mode: review-first**
72 - analyze lists
73 - analyze unlisted repositories
74 - propose taxonomy and assignments
75 - stop for confirmation before writing if ambiguity is material
76- **Auto-apply mode**
77 - only use when the user explicitly asks for direct execution
78 - still stop if ambiguity is high or list count would exceed the cap
79
80If the user did not clearly ask for immediate writes, prefer the default review-first mode.
81
82## Primary Workflow
83
841. Open the target user's Stars page in the authenticated GitHub browser session.
852. Read **all existing lists first** and build a normalized map of:
86 - list name
87 - semantic meaning
88 - probable duplicates or near-duplicates
893. Read **all starred repositories**.
90 Important:
91 - GitHub Stars pagination is cursor-based.
92 - Follow the `Next` link/cursor.
93 - Do not assume `page=N` is reliable.
944. For each starred repository, inspect its list membership.
955. Split repositories into:
96 - already listed
97 - unlisted
986. Only organize the **unlisted** repositories unless the user explicitly asks for broader reorganization.
997. Build a taxonomy plan:
100 - strongly prefer existing suitable lists
101 - create missing lists only when they are broad and reusable
102 - avoid near-duplicate lists
1038. Classify each unlisted repository by **primary intent**, not by incidental words in the description.
1049. Assign a confidence level to each proposed placement:
105 - high
106 - medium
107 - low
10810. Keep the total number of lists ideally between **5 and 15**.
10911. If the plan would require more than **15 total lists**, stop and ask the user whether the extra lists may be created.
110 Include:
111 - the exact proposed new list names
112 - a short reason for each
11312. If ambiguity is material, stop and ask the user before writing.
114 Treat ambiguity as material when:
115 - more than 10 repositories are medium/low confidence, or
116 - more than 10% of unlisted repositories are medium/low confidence, or
117 - many repositories appear to require a new category not yet approved by the user
11813. Create any approved missing lists.
11914. Add each unlisted repository to the smallest reasonable number of lists.
120 Target:
121 - usually 1 list
122 - sometimes 2
123 - rarely 3
12415. Verify every repository after update by re-reading its current list membership.
12516. Report:
126 - lists reused
127 - lists created
128 - repositories added
129 - repositories skipped because they were already organized
130 - repositories intentionally left unassigned because confidence was too low
131 - ambiguities or repos that may need user judgment
132
133## Taxonomy Rules
134
135- Prefer broad, stable themes over tiny one-off buckets
136- New lists should usually represent a category that can hold multiple repositories
137- Do not create a new list for fewer than 3 repositories unless the user explicitly wants that category
138- Prefer **single-responsibility list names**
139- Do not use compound list titles with `&`, `/`, or other bundled meanings unless the user explicitly asked for that style
140- One list title should represent one retrieval concept
141- Avoid trivial distinctions like:
142 - `AI Agents` vs `Agent Frameworks` vs `Autonomous Agents`
143 - `UI`, `Frontend`, `Web UI`, `Frontend Tools`
144- Prefer merging into one broad list unless the distinction is genuinely useful for retrieval
145- Good list systems usually include a mix of:
146 - domain buckets
147 - tooling buckets
148 - reference/awesome/tutorial buckets
149- Avoid creating language-only lists unless the user explicitly wants language-based organization
150
151If the current taxonomy is missing an obvious stable category, create it only when it has a clear long-term use.
152
153Examples of acceptable missing categories:
154
155- `Web Tooling`
156- `Build Tooling`
157- `Auth`
158- `Identity`
159- `Browser Automation`
160
161Examples of bad categories:
162
163- `Random JS`
164- `Stuff To Try`
165- `Interesting Repos`
166- `Tools 2`
167
168## Better Algorithm
169
170Use a two-pass planner:
171
1721. **Reuse-first pass**
173 Match every unlisted repository against existing lists before proposing anything new.
174
1752. **Gap-creation pass**
176 Create new lists only for clusters that:
177 - do not fit an existing list cleanly
178 - are broad enough to be useful again
179 - help retrieve repositories later
180
181This keeps the system stable and prevents uncontrolled list growth.
182
183Also cap per-repository assignment density:
184
185- prefer 1 list
186- allow 2 when both are clearly helpful
187- allow 3 only when the repository spans multiple major themes
188
189This prevents over-tagging.
190
191Add a **confidence gate**:
192
193- high confidence:
194 - repository name, description, and ecosystem all point to the same category
195- medium confidence:
196 - one strong clue exists, but there are plausible alternatives
197- low confidence:
198 - the repository could fit multiple categories equally well, or the description is too vague
199
200Default write policy:
201
202- auto-apply only high-confidence assignments
203- ask the user before applying medium-confidence assignments in bulk
204- never auto-apply low-confidence assignments
205
206Add a **naming gate**:
207
208- if a proposed new list name feels like two categories glued together, split it
209- prefer `Frontend` and `Design Systems` over `Frontend & UX`
210- prefer `Backend` and `Infrastructure` over `Backend & Infra`
211- prefer `Learning` and `Reference` only if the user wants both as separate retrieval concepts; otherwise pick the one that best matches intent
212
213## Classification Rules
214
215Classify by the repository's **primary job**, not by stray words in its description.
216
217Signal priority:
218
2191. repository name
2202. short description / tagline
2213. project type and user
2224. ecosystem and technology
2235. only then secondary keywords
224
225Negative rule:
226
227- a repo is **not** backend just because it mentions `server`, `node`, `API`, or `auth`
228- a repo is **not** frontend just because it has a UI or demo
229- a repo is **not** learning/reference just because it has docs or examples
230- a repo is **not** AI coding tooling just because it is used by developers
231- a repo is **not** productivity just because it is an app
232
233Use the category only when the category is the main value proposition.
234
235## Category Intent
236
237- `Learning`
238 - use only for awesome-lists, tutorials, guides, courses, examples, templates, references, and educational starter material
239 - do not use for mature runtimes, frameworks, products, or libraries unless their main role is educational
240
241- `Frontend`
242 - use for UI frameworks, component libraries, CSS systems, animation libraries, editors, design systems, browser interaction tooling, and clear front-end app frameworks
243 - do not use for agent systems just because they have a UI
244
245- `Backend`
246 - use for APIs, databases, deployment stacks, observability systems, infrastructure platforms, queues, auth servers, server-side platforms, and operations tooling
247 - do not dump generic developer tooling or web build tooling here by default
248
249- `AI Coding Tools`
250 - use for tools whose primary purpose is helping people write, inspect, run, review, or manage code with AI or developer automation
251 - do not use for ordinary libraries, frameworks, or product apps
252
253- `AI Agents`
254 - use for agent runtimes, orchestration systems, agent operating environments, autonomous assistants, and multi-agent control planes
255 - do not use for prompt collections, awesome-lists, or evaluation content unless the repo itself is an agent system
256
257- `AI Skills & Prompts`
258 - use for reusable prompts, skills, instruction packs, subagents, templates, and other composable prompting artifacts
259
260- `RAG & Search`
261 - use for retrieval, vector search, memory systems, embedding pipelines, indexing, semantic search, and knowledge retrieval
262
263- `Productivity & Personal Tools`
264 - use for end-user note apps, personal systems, automation tools, messaging bridges, utilities, and personal workflow software
265
266Descriptions may be broader than titles, but the title itself should stay single-purpose.
267
268If a repository does not fit an existing category cleanly, prefer:
269
270- proposing a new stable list, or
271- leaving it unassigned for review
272
273instead of forcing it into the nearest broad bucket.
274
275## GitHub-Specific Notes
276
277- Read detailed implementation guidance in `references/algorithm.md`
278- Read conservative classification guidance in `references/classification.md`
279- The core repository membership endpoint is `/<owner>/<repo>/lists`
280- Use that endpoint to detect whether a repository is already organized
281- If a repository already has checked lists, skip it by default
282- After adding list assignments, re-fetch the same menu and confirm the expected checked state
283
284## When to Ask the User
285
286Ask before proceeding only when one of these is true:
287
288- the target account is unclear
289- browser automation is unavailable
290- Chrome remote debugging is not enabled
291- the GitHub session is not authenticated
292- more than 15 total lists would be needed
293- ambiguity is high enough that bulk writes would likely create bad assignments
294- a large number of borderline or duplicate list names already exist and safe reuse is unclear
295
296## Critical Prohibitions
297
298- Do not use a specific user's account as a hidden default
299- Do not blindly create dozens of lists
300- Do not destroy or rewrite existing organization without explicit permission
301- Do not rely on `page=N` for GitHub Stars traversal
302- Do not treat a repository as unlisted until its current list membership has been checked
303- Do not classify by programming language alone
304- Do not use `Learning & Reference` as a lazy fallback for uncertain repositories
305- Do not classify a repository into `Backend & Infra` or `Frontend & UX` based on weak incidental keywords