{"id":"3474e6fc-c6a4-4df0-bcd2-40eea469e305","shortId":"2XASVH","kind":"skill","title":"lovstudio:gh-tidy","tagline":"Interactive GitHub repo hygiene skill. Lists all open issues, PRs, stale branches, and orphan labels, shows a summary of each with analysis, then asks the user how to handle each item (close, merge, comment, delete, keep). Executes all chosen actions via gh CLI. Use when the user","description":"# lovstudio:gh-tidy\n\nInteractive GitHub repo triage — issues, PRs, branches, labels in one pass.\n\n## Prerequisites\n\n- `gh` CLI installed and authenticated (`gh auth status`)\n- Current directory is a git repo with a GitHub remote\n\n## Workflow\n\n### Step 1: Scan\n\nRun all of these in parallel to gather repo state:\n\n```bash\n# Open issues\ngh issue list --state open --limit 100 --json number,title,author,createdAt,labels,comments\n\n# Open PRs\ngh pr list --state open --limit 100 --json number,title,author,createdAt,labels,reviewDecision,mergeable,headRefName\n\n# Remote branches (exclude main/master/develop)\ngit branch -r --no-merged origin/main | grep -v 'HEAD\\|main$\\|master$\\|develop$'\n\n# Labels\ngh label list --limit 100 --json name,description,color\n```\n\n### Step 2: Summarize\n\nPresent a concise table for each category that has items:\n\n**Issues:**\n| # | Title | Author | Age | Comments | Labels |\n|---|-------|--------|-----|----------|--------|\n\n**PRs:**\n| # | Title | Author | Age | Mergeable | Review |\n|---|-------|--------|-----|-----------|--------|\n\n**Stale branches** (no commits in 30+ days):\nList branch names with last commit date.\n\n**Orphan labels** (not used by any issue/PR):\nList label names.\n\nFor each item, provide a brief analysis:\n- Issues: Is it actionable? Feature request vs bug? Has it been addressed?\n- PRs: Are there conflicts? Is the code valuable? What does the diff look like?\n- Branches: Is the work merged? Abandoned?\n\n### Step 3: Triage\n\nUse `AskUserQuestion` to ask the user how to handle each item. Group by category.\n\nFor issues, offer: Close with thank-you / Close as wontfix / Keep open / Add label\nFor PRs, offer: Review & merge / Close without merge / Keep open\nFor branches, offer: Delete / Keep\nFor labels, offer: Delete / Keep\n\n**Important:** Always show your analysis and reasoning for each item before asking. Don't just present options without context.\n\n### Step 4: Execute\n\nExecute all chosen actions via `gh` CLI:\n\n```bash\n# Close issue with comment\ngh issue close <N> --comment \"message\"\n\n# Merge PR (prefer squash)\ngh pr merge <N> --squash\n\n# Close PR without merge\ngh pr close <N> --comment \"message\"\n\n# Delete remote branch\ngit push origin --delete <branch>\n\n# Delete label\ngh label delete <name> --yes\n```\n\n### Step 5: Report\n\nShow a summary of what was done:\n\n```\nGitHub Tidy Report\n==================\nIssues:  2 closed, 1 kept\nPRs:     1 merged, 0 closed\nBranches: 3 deleted\nLabels:  0 deleted\n```\n\n## Rules\n\n- Always show analysis before asking for decisions — explain WHY you suggest an action\n- For PR merges with conflicts, resolve conflicts locally first, then push and merge\n- When closing issues/PRs from external contributors, always leave a polite thank-you comment\n- Never force-push or delete protected branches\n- Skip categories with zero items — don't show empty tables\n- For large repos (50+ items), batch the triage questions by category","tags":["tidy","skills","lovstudio","agent-skills","ai-coding-assistant","cjk","claude-code","cursor","gemini-cli","markdown-to-docx","markdown-to-pdf"],"capabilities":["skill","source-lovstudio","skill-gh-tidy","topic-agent-skills","topic-ai-coding-assistant","topic-cjk","topic-claude-code","topic-cursor","topic-gemini-cli","topic-markdown-to-docx","topic-markdown-to-pdf"],"categories":["skills"],"synonyms":[],"warnings":[],"endpointUrl":"https://skills.sh/lovstudio/skills/gh-tidy","protocol":"skill","transport":"skills-sh","auth":{"type":"none","details":{"cli":"npx skills add lovstudio/skills","source_repo":"https://github.com/lovstudio/skills","install_from":"skills.sh"}},"qualityScore":"0.469","qualityRationale":"deterministic score 0.47 from registry signals: · indexed on github topic:agent-skills · 39 github stars · SKILL.md body (2,908 chars)","verified":false,"liveness":"unknown","lastLivenessCheck":null,"agentReviews":{"count":0,"score_avg":null,"cost_usd_avg":null,"success_rate":null,"latency_p50_ms":null,"narrative_summary":null,"summary_updated_at":null},"enrichmentModel":"deterministic:skill-github:v1","enrichmentVersion":1,"enrichedAt":"2026-04-21T01:36:45.966Z","embedding":null,"createdAt":"2026-04-18T22:19:01.029Z","updatedAt":"2026-04-21T01:36:45.966Z","lastSeenAt":"2026-04-21T01:36:45.966Z","tsv":"'0':392,398 '1':88,387,390 '100':109,125,157 '2':163,385 '3':251,395 '30':192 '4':322 '5':372 '50':462 'abandon':249 'action':44,221,327,413 'add':280 'address':229 'age':178,184 'alway':303,401,433 'analysi':26,217,306,403 'ask':28,256,313,405 'askuserquest':254 'auth':74 'authent':72 'author':113,129,177,183 'bash':100,331 'batch':464 'branch':16,62,136,140,188,195,244,293,360,394,448 'brief':216 'bug':225 'categori':171,266,450,469 'chosen':43,326 'cli':47,69,330 'close':36,270,275,287,332,338,349,355,386,393,428 'code':236 'color':161 'comment':38,116,179,335,339,356,440 'commit':190,199 'concis':167 'conflict':233,418,420 'context':320 'contributor':432 'createdat':114,130 'current':76 'date':200 'day':193 'decis':407 'delet':39,295,300,358,364,365,369,396,399,446 'descript':160 'develop':151 'diff':241 'directori':77 'done':380 'empti':457 'exclud':137 'execut':41,323,324 'explain':408 'extern':431 'featur':222 'first':422 'forc':443 'force-push':442 'gather':97 'gh':3,46,54,68,73,103,119,153,329,336,345,353,367 'gh-tidi':2,53 'git':80,139,361 'github':6,57,84,381 'grep':146 'group':264 'handl':33,261 'head':148 'headrefnam':134 'hygien':8 'import':302 'instal':70 'interact':5,56 'issu':13,60,102,104,175,218,268,333,337,384 'issue/pr':207 'issues/prs':429 'item':35,174,213,263,311,453,463 'json':110,126,158 'keep':40,278,290,296,301 'kept':388 'label':19,63,115,131,152,154,180,202,209,281,298,366,368,397 'larg':460 'last':198 'leav':434 'like':243 'limit':108,124,156 'list':10,105,121,155,194,208 'local':421 'look':242 'lovstudio':1,52 'main':149 'main/master/develop':138 'master':150 'merg':37,144,248,286,289,341,347,352,391,416,426 'mergeabl':133,185 'messag':340,357 'name':159,196,210 'never':441 'no-merg':142 'number':111,127 'offer':269,284,294,299 'one':65 'open':12,101,107,117,123,279,291 'option':318 'origin':363 'origin/main':145 'orphan':18,201 'parallel':95 'pass':66 'polit':436 'pr':120,342,346,350,354,415 'prefer':343 'prerequisit':67 'present':165,317 'protect':447 'provid':214 'prs':14,61,118,181,230,283,389 'push':362,424,444 'question':467 'r':141 'reason':308 'remot':85,135,359 'repo':7,58,81,98,461 'report':373,383 'request':223 'resolv':419 'review':186,285 'reviewdecis':132 'rule':400 'run':90 'scan':89 'show':20,304,374,402,456 'skill':9 'skill-gh-tidy' 'skip':449 'source-lovstudio' 'squash':344,348 'stale':15,187 'state':99,106,122 'status':75 'step':87,162,250,321,371 'suggest':411 'summar':164 'summari':22,376 'tabl':168,458 'thank':273,438 'thank-you':272,437 'tidi':4,55,382 'titl':112,128,176,182 'topic-agent-skills' 'topic-ai-coding-assistant' 'topic-cjk' 'topic-claude-code' 'topic-cursor' 'topic-gemini-cli' 'topic-markdown-to-docx' 'topic-markdown-to-pdf' 'triag':59,252,466 'use':48,204,253 'user':30,51,258 'v':147 'valuabl':237 'via':45,328 'vs':224 'without':288,319,351 'wontfix':277 'work':247 'workflow':86 'yes':370 'zero':452","prices":[{"id":"34008d81-58ed-4180-bfc5-24688d573849","listingId":"3474e6fc-c6a4-4df0-bcd2-40eea469e305","amountUsd":"0","unit":"free","nativeCurrency":null,"nativeAmount":null,"chain":null,"payTo":null,"paymentMethod":"skill-free","isPrimary":true,"details":{"org":"lovstudio","category":"skills","install_from":"skills.sh"},"createdAt":"2026-04-18T22:19:01.029Z"}],"sources":[{"listingId":"3474e6fc-c6a4-4df0-bcd2-40eea469e305","source":"github","sourceId":"lovstudio/skills/gh-tidy","sourceUrl":"https://github.com/lovstudio/skills/tree/main/skills/gh-tidy","isPrimary":false,"firstSeenAt":"2026-04-18T22:19:01.029Z","lastSeenAt":"2026-04-21T01:36:45.966Z"}],"details":{"listingId":"3474e6fc-c6a4-4df0-bcd2-40eea469e305","quickStartSnippet":null,"exampleRequest":null,"exampleResponse":null,"schema":null,"openapiUrl":null,"agentsTxtUrl":null,"citations":[],"useCases":[],"bestFor":[],"notFor":[],"kindDetails":{"org":"lovstudio","slug":"gh-tidy","github":{"repo":"lovstudio/skills","stars":39,"topics":["agent-skills","ai-coding-assistant","cjk","claude-code","cursor","gemini-cli","markdown-to-docx","markdown-to-pdf"],"license":"mit","html_url":"https://github.com/lovstudio/skills","pushed_at":"2026-04-20T21:40:57Z","description":"Agent skills for AI coding assistants — Markdown to PDF/DOCX with 14 themes, CJK support","skill_md_sha":"6904050e9c3aa5718bd89097d1708a49a99d2d81","skill_md_path":"skills/gh-tidy/SKILL.md","default_branch":"main","skill_tree_url":"https://github.com/lovstudio/skills/tree/main/skills/gh-tidy"},"layout":"multi","source":"github","category":"skills","frontmatter":{"name":"lovstudio:gh-tidy","license":"MIT","description":"Interactive GitHub repo hygiene skill. Lists all open issues, PRs, stale branches, and orphan labels, shows a summary of each with analysis, then asks the user how to handle each item (close, merge, comment, delete, keep). Executes all chosen actions via gh CLI. Use when the user says \"清理 GitHub\", \"tidy repo\", \"clean up issues\", \"处理 PR\", \"repo hygiene\", or similar.","compatibility":"Requires gh CLI authenticated. Works on any GitHub repo."},"skills_sh_url":"https://skills.sh/lovstudio/skills/gh-tidy"},"updatedAt":"2026-04-21T01:36:45.966Z"}}