Skip to main content
AI/MLjeremylongshore

triage

Validates all open GitHub issues, closes invalid ones with documentation, flags complex ones for planning discussion, then fixes and promotes remaining issues. Use when the user says triage issues, validate issues, fix issues, or work through the backlog.

Stars
2,267
Source
jeremylongshore/claude-code-plugins-plus-skills
Updated
2026-05-31
Slug
jeremylongshore--claude-code-plugins-plus-skills--triage
View on GitHubRaw SKILL.md

// install — copy + paste into any project

mkdir -p .claude/skills && curl -fsSL https://raw.githubusercontent.com/jeremylongshore/claude-code-plugins-plus-skills/HEAD/plugins/productivity/claude-workflow-skills/skills/triage/SKILL.md -o .claude/skills/triage.md

Drops the SKILL.md into .claude/skills/triage.md. Works with Claude Code, Cursor, and any agent that loads SKILL.md files from .claude/skills/.

Triage

Project: !basename $(git rev-parse --show-toplevel 2>/dev/null) 2>/dev/null || basename $PWD Branch: !git branch --show-current 2>/dev/null || echo "unknown" Open issues: !gh issue list --state open --json number,title --jq '.[] | "#\(.number) \(.title)"' 2>/dev/null || echo "none" Last tag: !git describe --tags --abbrev=0 2>/dev/null || echo "none" Recent commits: !git log --oneline -5 2>/dev/null || echo "none"

Validates every open GitHub issue, closes those that are invalid, surfaces complex ones for planning discussion, then fixes and promotes all remaining actionable issues.

Step 0: Pre-flight check

gh auth status 2>&1 || { echo "ERROR: gh is not authenticated. Run: gh auth login"; exit 1; }

Step 1: Fetch all open issues

gh issue list --state open --limit 100 --json number,title,body,labels,createdAt \
  --jq '.[] | {number, title, labels: [.labels[].name], createdAt, body}'

Read the full body of any issues where context is needed:

gh issue view <number> --json number,title,body,labels,comments

Also read the project files to understand current state before assessing anything:

  • README.md — stated purpose and feature set
  • CLAUDE.md — current status, known decisions, next steps

Step 2: Classify each issue

For every open issue, classify it as one of:

  • Invalid — already fixed, a duplicate, not reproducible, out of scope, or based on a misunderstanding. Evidence must be clear.
  • Complex — valid but requires significant design decisions, breaking changes, or multi-step implementation that warrants planning discussion before proceeding.
  • Actionable — valid, well-scoped, and fixable now without further input.

Build a classification table before taking any action:

# Title Classification Reason
N ... Invalid/Complex/Actionable ...

Step 3: Close invalid issues

For each invalid issue, post a closing comment that explains why it is being closed, then close it:

gh issue comment <number> --body "$(cat <<'EOF'
Closing as invalid: <specific reason — already fixed in <commit/PR>, duplicate of #N,
not reproducible because <evidence>, or out of scope because <reason>>.

<If already fixed: reference the commit or PR that resolved it.>
<If duplicate: reference the canonical issue.>
EOF
)"

gh issue close <number> --reason "not planned"

Use --reason "completed" if the issue was already resolved in code.

Step 4: Surface complex issues for planning

Stop and present complex issues to the user before proceeding. Format clearly:


Complex issues — planning needed before proceeding:

For each complex issue:

  • #N: </strong><ul> <li>Why it's complex: <design decision, breaking change, or scope concern></li> <li>Options to consider: <brief list of approaches></li> <li>Suggested next step: defer to backlog / spike / discuss now</li> </ul> </li> </ul> <hr> <p>Wait for the user's direction on each complex issue before moving to Step 5. If running non-interactively (no terminal), stop here and output the complex issues report.</p> <pre><code class="language-bash">if [ ! -t 0 ]; then echo "Non-interactive mode: stopping after complex issue report. Review and re-run interactively." exit 0 fi </code></pre> <h2>Step 5: Fix actionable issues</h2> <p>Work through each actionable issue. For each one:</p> <ol> <li><p>Read the relevant source files before making any changes.</p> </li> <li><p>Implement the fix — prefer the minimal correct change; don't refactor beyond the scope of the issue.</p> </li> <li><p>Verify the fix with any available linting or syntax checks:</p> <pre><code class="language-bash">bash -n <script.sh> # syntax check for shell scripts markdownlint '**/*.md' # markdown linting </code></pre> </li> <li><p>Stage the change:</p> <pre><code class="language-bash">git add -u </code></pre> </li> </ol> <p>Record each fix with its issue number so the commit and PR can reference them.</p> <h2>Step 6: Promote</h2> <p>Once all actionable issues are fixed, run:</p> <pre><code class="language-text">/promote </code></pre> <p>The promote skill will commit, push, create and merge a PR (referencing fixed issue numbers via <code>Closes #N</code> in the commit message), tag a release, and clean up.</p> <p>When composing the commit message for the promote step, include <code>Closes #N</code> for every issue fixed in Step 5.</p> </div></article></div><!--$--><!--/$--></main><footer class="mt-24 border-t border-[color:var(--color-line)] bg-[color:var(--color-bg-1)]" role="contentinfo"><div class="mx-auto max-w-7xl px-4 py-12 sm:px-6 lg:px-10"><div class="grid grid-cols-1 gap-10 sm:grid-cols-2 lg:grid-cols-4"><div class="space-y-3"><a class="inline-flex items-center rounded-sm leading-none transition-opacity hover:opacity-85" href="/"><span class="inline-flex items-center gap-2 leading-none text-[color:var(--color-ink-0)] sm:gap-2.5" aria-label="Mesrai Marketplace"><svg viewBox="0 0 280 65" role="img" aria-label="Mesrai" class="h-[24px] w-auto shrink-0 select-none sm:h-[26px]"><circle cx="32" cy="32" r="25" fill="currentColor"></circle><g transform="translate(32 32)"><path style="fill:var(--color-bg-0)" d="M -12 -10 C -12 -10, -8 -6, -8 0 C -8 6, -12 10, -12 10 C -12 10, -4 6, 0 0 C 4 6, 12 10, 12 10 C 12 10, 8 6, 8 0 C 8 -6, 12 -10, 12 -10 C 12 -10, 4 -6, 0 0 C -4 -6, -12 -10, -12 -10 Z"></path></g><text x="68" y="44" fill="currentColor" style="font-family:-apple-system, BlinkMacSystemFont, 'Segoe UI', Helvetica, Arial, sans-serif;font-size:36px;font-weight:700;letter-spacing:0.5px">Mesrai</text></svg><span aria-hidden="true" class="hidden h-3 w-px shrink-0 bg-[color:var(--color-line-2)] sm:inline-block"></span><span class="hidden font-mono text-[10.5px] uppercase tracking-[0.18em] text-[color:var(--color-ink-3)] sm:inline-block">Marketplace</span></span></a><p class="max-w-[28ch] text-[13px] leading-[1.6] text-[color:var(--color-ink-2)]">Production-grade code review rules, curated and installable in one click.</p></div><div><h3 class="mb-3 text-[10.5px] font-medium uppercase tracking-[0.16em] text-[color:var(--color-ink-3)]">Marketplace</h3><ul class="space-y-2"><li><a class="text-[13.5px] text-[color:var(--color-ink-1)] transition-colors hover:text-[color:var(--color-primary-light)]" href="/library">Browse rules</a></li><li><a class="text-[13.5px] text-[color:var(--color-ink-1)] transition-colors hover:text-[color:var(--color-primary-light)]" href="/skills">Agent skills</a></li><li><a class="text-[13.5px] text-[color:var(--color-ink-1)] transition-colors hover:text-[color:var(--color-primary-light)]" href="/become-author">Become an author</a></li></ul></div><div><h3 class="mb-3 text-[10.5px] font-medium uppercase tracking-[0.16em] text-[color:var(--color-ink-3)]">Mesrai</h3><ul class="space-y-2"><li><a href="https://app.mesrai.com" target="_blank" rel="noopener noreferrer" class="text-[13.5px] text-[color:var(--color-ink-1)] transition-colors hover:text-[color:var(--color-primary-light)]">Open app</a></li><li><a href="https://docs.mesrai.com" target="_blank" rel="noopener noreferrer" class="text-[13.5px] text-[color:var(--color-ink-1)] transition-colors hover:text-[color:var(--color-primary-light)]">Documentation</a></li><li><a href="https://mesrai.com/pricing" target="_blank" rel="noopener noreferrer" class="text-[13.5px] text-[color:var(--color-ink-1)] transition-colors hover:text-[color:var(--color-primary-light)]">Pricing</a></li></ul></div><div><h3 class="mb-3 text-[10.5px] font-medium uppercase tracking-[0.16em] text-[color:var(--color-ink-3)]">Community</h3><ul class="space-y-2"><li><a href="https://github.com/mesraiofficial" target="_blank" rel="noopener noreferrer" class="text-[13.5px] text-[color:var(--color-ink-1)] transition-colors hover:text-[color:var(--color-primary-light)]">GitHub</a></li><li><a href="mailto:contact@mesrai.com" class="text-[13.5px] text-[color:var(--color-ink-1)] transition-colors hover:text-[color:var(--color-primary-light)]">Contact</a></li></ul></div></div><div class="mt-10 flex flex-col items-start gap-2 border-t border-[color:var(--color-line)] pt-6 text-[12px] text-[color:var(--color-ink-3)] sm:flex-row sm:items-center sm:justify-between"><p>© <!-- -->2026<!-- --> Mesrai Technologies. All rights reserved.</p><p class="font-mono text-[11px] tracking-wider uppercase">Built with care · India + worldwide</p></div></div></footer></div><script src="/_next/static/chunks/02ty9.5yo_fen.js" id="_R_" async=""></script><script>(self.__next_f=self.__next_f||[]).push([0])</script><script>self.__next_f.push([1,"1:\"$Sreact.fragment\"\n2:I[83661,[\"/_next/static/chunks/17wr4kjvetgpg.js\",\"/_next/static/chunks/01d9z6trbvl9l.js\",\"/_next/static/chunks/0d3shmwh5_nmn.js\",\"/_next/static/chunks/0_3fj3rn8zo2r.js\"],\"ThemeProvider\"]\n3:I[45872,[\"/_next/static/chunks/17wr4kjvetgpg.js\",\"/_next/static/chunks/01d9z6trbvl9l.js\",\"/_next/static/chunks/0d3shmwh5_nmn.js\",\"/_next/static/chunks/0_3fj3rn8zo2r.js\"],\"Header\"]\n4:I[39756,[\"/_next/static/chunks/17wr4kjvetgpg.js\",\"/_next/static/chunks/01d9z6trbvl9l.js\",\"/_next/static/chunks/0d3shmwh5_nmn.js\",\"/_next/static/chunks/0_3fj3rn8zo2r.js\"],\"default\"]\n5:I[37457,[\"/_next/static/chunks/17wr4kjvetgpg.js\",\"/_next/static/chunks/01d9z6trbvl9l.js\",\"/_next/static/chunks/0d3shmwh5_nmn.js\",\"/_next/static/chunks/0_3fj3rn8zo2r.js\"],\"default\"]\n6:I[22016,[\"/_next/static/chunks/17wr4kjvetgpg.js\",\"/_next/static/chunks/01d9z6trbvl9l.js\",\"/_next/static/chunks/0d3shmwh5_nmn.js\",\"/_next/static/chunks/0_3fj3rn8zo2r.js\",\"/_next/static/chunks/0pg86~w1~d355.js\"],\"\"]\ne:I[68027,[\"/_next/static/chunks/17wr4kjvetgpg.js\",\"/_next/static/chunks/01d9z6trbvl9l.js\",\"/_next/static/chunks/0d3shmwh5_nmn.js\",\"/_next/static/chunks/0_3fj3rn8zo2r.js\"],\"default\",1]\n:HL[\"/_next/static/chunks/0fwxch7cdz3kv.css\",\"style\"]\n:HL[\"/_next/static/media/5f402bd2d8eef81a-s.p.16whm0euli40m.woff2\",\"font\",{\"crossOrigin\":\"\",\"type\":\"font/woff2\"}]\n:HL[\"/_next/static/media/797e433ab948586e-s.p.09zddjkbdep5a.woff2\",\"font\",{\"crossOrigin\":\"\",\"type\":\"font/woff2\"}]\n:HL[\"/_next/static/media/9433d1a810498265-s.p.0h26ys03~gfbk.woff2\",\"font\",{\"crossOrigin\":\"\",\"type\":\"font/woff2\"}]\n:HL[\"/_next/static/media/caa3a2e1cccd8315-s.p.09~u27dqhyhd6.woff2\",\"font\",{\"crossOrigin\":\"\",\"type\":\"font/woff2\"}]\n"])</script><script>self.__next_f.push([1,"0:{\"P\":null,\"c\":[\"\",\"skills\",\"s\",\"jeremylongshore--claude-code-plugins-plus-skills--triage\"],\"q\":\"\",\"i\":false,\"f\":[[[\"\",{\"children\":[\"skills\",{\"children\":[\"s\",{\"children\":[[\"slug\",\"jeremylongshore--claude-code-plugins-plus-skills--triage\",\"d\",null],{\"children\":[\"__PAGE__\",{}]}]}]}]},\"$undefined\",\"$undefined\",16],[[\"$\",\"$1\",\"c\",{\"children\":[[[\"$\",\"link\",\"0\",{\"rel\":\"stylesheet\",\"href\":\"/_next/static/chunks/0fwxch7cdz3kv.css\",\"precedence\":\"next\",\"crossOrigin\":\"$undefined\",\"nonce\":\"$undefined\"}],[\"$\",\"script\",\"script-0\",{\"src\":\"/_next/static/chunks/17wr4kjvetgpg.js\",\"async\":true,\"nonce\":\"$undefined\"}],[\"$\",\"script\",\"script-1\",{\"src\":\"/_next/static/chunks/01d9z6trbvl9l.js\",\"async\":true,\"nonce\":\"$undefined\"}],[\"$\",\"script\",\"script-2\",{\"src\":\"/_next/static/chunks/0d3shmwh5_nmn.js\",\"async\":true,\"nonce\":\"$undefined\"}],[\"$\",\"script\",\"script-3\",{\"src\":\"/_next/static/chunks/0_3fj3rn8zo2r.js\",\"async\":true,\"nonce\":\"$undefined\"}]],[\"$\",\"html\",null,{\"lang\":\"en\",\"suppressHydrationWarning\":true,\"className\":\"geist_deef94d5-module__Sms4YG__variable geist_mono_1bf8cbf6-module__FlyLvG__variable newsreader_6473ecd3-module__Kact_q__variable\",\"children\":[\"$\",\"body\",null,{\"className\":\"bg-grid-subtle min-h-svh font-sans antialiased\",\"children\":[\"$\",\"$L2\",null,{\"children\":[\"$\",\"div\",null,{\"className\":\"flex min-h-svh flex-col\",\"children\":[[\"$\",\"a\",null,{\"href\":\"#main\",\"className\":\"sr-only focus:not-sr-only focus:fixed focus:left-3 focus:top-3 focus:z-50 focus:rounded-md focus:bg-[color:var(--color-bg-2)] focus:px-3 focus:py-2 focus:text-[12px] focus:text-[color:var(--color-ink-0)]\",\"children\":\"Skip to main content\"}],[\"$\",\"$L3\",null,{}],[\"$\",\"main\",null,{\"id\":\"main\",\"className\":\"flex-1\",\"children\":[\"$\",\"$L4\",null,{\"parallelRouterKey\":\"children\",\"error\":\"$undefined\",\"errorStyles\":\"$undefined\",\"errorScripts\":\"$undefined\",\"template\":[\"$\",\"$L5\",null,{}],\"templateStyles\":\"$undefined\",\"templateScripts\":\"$undefined\",\"notFound\":[[\"$\",\"div\",null,{\"className\":\"mx-auto max-w-3xl px-4 py-24 sm:px-6 lg:px-10\",\"children\":[\"$\",\"div\",null,{\"role\":\"status\",\"className\":\"flex flex-col items-center justify-center gap-3 rounded-[12px] border border-dashed border-[color:var(--color-line)] bg-[color:var(--color-bg-1)] px-6 py-16 text-center\",\"children\":[[\"$\",\"div\",null,{\"className\":\"flex size-12 items-center justify-center rounded-full border border-[color:var(--color-line)] bg-[color:var(--color-bg-2)]\",\"children\":[\"$\",\"svg\",null,{\"ref\":\"$undefined\",\"xmlns\":\"http://www.w3.org/2000/svg\",\"width\":24,\"height\":24,\"viewBox\":\"0 0 24 24\",\"fill\":\"none\",\"stroke\":\"currentColor\",\"strokeWidth\":2,\"strokeLinecap\":\"round\",\"strokeLinejoin\":\"round\",\"className\":\"lucide lucide-inbox size-6 text-[color:var(--color-ink-3)]\",\"aria-hidden\":true,\"children\":[[\"$\",\"polyline\",\"o97t9d\",{\"points\":\"22 12 16 12 14 15 10 15 8 12 2 12\"}],[\"$\",\"path\",\"oot6mr\",{\"d\":\"M5.45 5.11 2 12v6a2 2 0 0 0 2 2h16a2 2 0 0 0 2-2v-6l-3.45-6.89A2 2 0 0 0 16.76 4H7.24a2 2 0 0 0-1.79 1.11z\"}],\"$undefined\"]}]}],[\"$\",\"h3\",null,{\"className\":\"font-serif text-[18px] text-[color:var(--color-ink-0)]\",\"children\":\"Page not found\"}],[\"$\",\"p\",null,{\"className\":\"max-w-[44ch] text-[13px] leading-[1.55] text-[color:var(--color-ink-2)]\",\"children\":\"The page you were looking for doesn't exist or was moved. Try the homepage or browse the library.\"}],[\"$\",\"div\",null,{\"className\":\"mt-2\",\"children\":[\"$\",\"div\",null,{\"className\":\"flex flex-wrap items-center gap-2\",\"children\":[[\"$\",\"$L6\",null,{\"href\":\"/\",\"children\":\"Home\",\"ref\":null,\"className\":\"inline-flex items-center justify-center gap-2 whitespace-nowrap rounded-md text-[13.5px] font-medium transition-all disabled:pointer-events-none disabled:opacity-50 [\u0026_svg]:size-4 [\u0026_svg]:shrink-0 bg-[color:var(--color-primary-light)] text-[color:var(--color-primary-dark)] hover:bg-[color:var(--color-o-600)] active:bg-[color:var(--color-o-700)] shadow-[0_1px_0_0_color-mix(in_oklab,var(--color-o-700)_50%,transparent)_inset,0_1px_2px_rgba(0,0,0,0.4)] h-9 px-4\"}],[\"$\",\"$L6\",null,{\"href\":\"/library\",\"children\":\"Browse rules\",\"ref\":null,\"className\":\"inline-flex items-center justify-center gap-2 whitespace-nowrap rounded-md text-[13.5px] font-medium transition-all disabled:pointer-events-none disabled:opacity-50 [\u0026_svg]:size-4 [\u0026_svg]:shrink-0 border border-[color:var(--color-line)] bg-transparent text-[color:var(--color-ink-0)] hover:bg-[color:var(--color-bg-2)] hover:border-[color:var(--color-line-2)] h-9 px-4\"}]]}]}]]}]}],[]],\"forbidden\":\"$undefined\",\"unauthorized\":\"$undefined\"}]}],\"$L7\"]}]}]}]}]]}],{\"children\":[\"$L8\",{\"children\":[\"$L9\",{\"children\":[\"$La\",{\"children\":[\"$Lb\",{},null,false,null]},null,false,\"$@c\"]},null,false,\"$@c\"]},null,false,\"$@c\"]},null,false,null],\"$Ld\",false]],\"m\":\"$undefined\",\"G\":[\"$e\",[\"$Lf\"]],\"S\":true,\"h\":null,\"s\":\"$undefined\",\"l\":\"$undefined\",\"p\":\"$undefined\",\"d\":\"$undefined\",\"b\":\"Ns5mKA7XDYfug19WaJf-f\"}\n"])</script><script>self.__next_f.push([1,"13:I[97367,[\"/_next/static/chunks/17wr4kjvetgpg.js\",\"/_next/static/chunks/01d9z6trbvl9l.js\",\"/_next/static/chunks/0d3shmwh5_nmn.js\",\"/_next/static/chunks/0_3fj3rn8zo2r.js\"],\"OutletBoundary\"]\n14:\"$Sreact.suspense\"\n17:I[97367,[\"/_next/static/chunks/17wr4kjvetgpg.js\",\"/_next/static/chunks/01d9z6trbvl9l.js\",\"/_next/static/chunks/0d3shmwh5_nmn.js\",\"/_next/static/chunks/0_3fj3rn8zo2r.js\"],\"ViewportBoundary\"]\n19:I[97367,[\"/_next/static/chunks/17wr4kjvetgpg.js\",\"/_next/static/chunks/01d9z6trbvl9l.js\",\"/_next/static/chunks/0d3shmwh5_nmn.js\",\"/_next/static/chunks/0_3fj3rn8zo2r.js\"],\"MetadataBoundary\"]\n"])</script><script>self.__next_f.push([1,"7:[\"$\",\"footer\",null,{\"className\":\"mt-24 border-t border-[color:var(--color-line)] bg-[color:var(--color-bg-1)]\",\"role\":\"contentinfo\",\"children\":[\"$\",\"div\",null,{\"className\":\"mx-auto max-w-7xl px-4 py-12 sm:px-6 lg:px-10\",\"children\":[[\"$\",\"div\",null,{\"className\":\"grid grid-cols-1 gap-10 sm:grid-cols-2 lg:grid-cols-4\",\"children\":[[\"$\",\"div\",null,{\"className\":\"space-y-3\",\"children\":[[\"$\",\"$L6\",null,{\"href\":\"/\",\"className\":\"inline-flex items-center rounded-sm leading-none transition-opacity hover:opacity-85\",\"children\":[\"$\",\"span\",null,{\"className\":\"inline-flex items-center gap-2 leading-none text-[color:var(--color-ink-0)] sm:gap-2.5\",\"aria-label\":\"Mesrai Marketplace\",\"children\":[[\"$\",\"svg\",null,{\"viewBox\":\"0 0 280 65\",\"role\":\"img\",\"aria-label\":\"Mesrai\",\"className\":\"h-[24px] w-auto shrink-0 select-none sm:h-[26px]\",\"children\":[[\"$\",\"circle\",null,{\"cx\":\"32\",\"cy\":\"32\",\"r\":\"25\",\"fill\":\"currentColor\"}],[\"$\",\"g\",null,{\"transform\":\"translate(32 32)\",\"children\":[\"$\",\"path\",null,{\"style\":{\"fill\":\"var(--color-bg-0)\"},\"d\":\"M -12 -10 C -12 -10, -8 -6, -8 0 C -8 6, -12 10, -12 10 C -12 10, -4 6, 0 0 C 4 6, 12 10, 12 10 C 12 10, 8 6, 8 0 C 8 -6, 12 -10, 12 -10 C 12 -10, 4 -6, 0 0 C -4 -6, -12 -10, -12 -10 Z\"}]}],[\"$\",\"text\",null,{\"x\":\"68\",\"y\":\"44\",\"fill\":\"currentColor\",\"style\":{\"fontFamily\":\"-apple-system, BlinkMacSystemFont, 'Segoe UI', Helvetica, Arial, sans-serif\",\"fontSize\":\"36px\",\"fontWeight\":700,\"letterSpacing\":\"0.5px\"},\"children\":\"Mesrai\"}]]}],[\"$\",\"span\",null,{\"aria-hidden\":true,\"className\":\"hidden h-3 w-px shrink-0 bg-[color:var(--color-line-2)] sm:inline-block\"}],[\"$\",\"span\",null,{\"className\":\"hidden font-mono text-[10.5px] uppercase tracking-[0.18em] text-[color:var(--color-ink-3)] sm:inline-block\",\"children\":\"Marketplace\"}]]}]}],[\"$\",\"p\",null,{\"className\":\"max-w-[28ch] text-[13px] leading-[1.6] text-[color:var(--color-ink-2)]\",\"children\":\"Production-grade code review rules, curated and installable in one click.\"}]]}],[[\"$\",\"div\",\"Marketplace\",{\"children\":[[\"$\",\"h3\",null,{\"className\":\"mb-3 text-[10.5px] font-medium uppercase tracking-[0.16em] text-[color:var(--color-ink-3)]\",\"children\":\"Marketplace\"}],[\"$\",\"ul\",null,{\"className\":\"space-y-2\",\"children\":[[\"$\",\"li\",\"Browse rules\",{\"children\":[\"$\",\"$L6\",null,{\"href\":\"/library\",\"className\":\"text-[13.5px] text-[color:var(--color-ink-1)] transition-colors hover:text-[color:var(--color-primary-light)]\",\"children\":\"Browse rules\"}]}],[\"$\",\"li\",\"Agent skills\",{\"children\":[\"$\",\"$L6\",null,{\"href\":\"/skills\",\"className\":\"text-[13.5px] text-[color:var(--color-ink-1)] transition-colors hover:text-[color:var(--color-primary-light)]\",\"children\":\"Agent skills\"}]}],[\"$\",\"li\",\"Become an author\",{\"children\":[\"$\",\"$L6\",null,{\"href\":\"/become-author\",\"className\":\"text-[13.5px] text-[color:var(--color-ink-1)] transition-colors hover:text-[color:var(--color-primary-light)]\",\"children\":\"Become an author\"}]}]]}]]}],[\"$\",\"div\",\"Mesrai\",{\"children\":[[\"$\",\"h3\",null,{\"className\":\"mb-3 text-[10.5px] font-medium uppercase tracking-[0.16em] text-[color:var(--color-ink-3)]\",\"children\":\"Mesrai\"}],[\"$\",\"ul\",null,{\"className\":\"space-y-2\",\"children\":[[\"$\",\"li\",\"Open app\",{\"children\":[\"$\",\"a\",null,{\"href\":\"https://app.mesrai.com\",\"target\":\"_blank\",\"rel\":\"noopener noreferrer\",\"className\":\"text-[13.5px] text-[color:var(--color-ink-1)] transition-colors hover:text-[color:var(--color-primary-light)]\",\"children\":\"Open app\"}]}],[\"$\",\"li\",\"Documentation\",{\"children\":[\"$\",\"a\",null,{\"href\":\"https://docs.mesrai.com\",\"target\":\"_blank\",\"rel\":\"noopener noreferrer\",\"className\":\"text-[13.5px] text-[color:var(--color-ink-1)] transition-colors hover:text-[color:var(--color-primary-light)]\",\"children\":\"Documentation\"}]}],[\"$\",\"li\",\"Pricing\",{\"children\":[\"$\",\"a\",null,{\"href\":\"https://mesrai.com/pricing\",\"target\":\"_blank\",\"rel\":\"noopener noreferrer\",\"className\":\"text-[13.5px] text-[color:var(--color-ink-1)] transition-colors hover:text-[color:var(--color-primary-light)]\",\"children\":\"Pricing\"}]}]]}]]}],[\"$\",\"div\",\"Community\",{\"children\":[[\"$\",\"h3\",null,{\"className\":\"mb-3 text-[10.5px] font-medium uppercase tracking-[0.16em] text-[color:var(--color-ink-3)]\",\"children\":\"Community\"}],\"$L10\"]}]]]}],\"$L11\"]}]}]\n"])</script><script>self.__next_f.push([1,"8:[\"$\",\"$1\",\"c\",{\"children\":[null,[\"$\",\"$L4\",null,{\"parallelRouterKey\":\"children\",\"error\":\"$undefined\",\"errorStyles\":\"$undefined\",\"errorScripts\":\"$undefined\",\"template\":[\"$\",\"$L5\",null,{}],\"templateStyles\":\"$undefined\",\"templateScripts\":\"$undefined\",\"notFound\":\"$undefined\",\"forbidden\":\"$undefined\",\"unauthorized\":\"$undefined\"}]]}]\n9:[\"$\",\"$1\",\"c\",{\"children\":[null,[\"$\",\"$L4\",null,{\"parallelRouterKey\":\"children\",\"error\":\"$undefined\",\"errorStyles\":\"$undefined\",\"errorScripts\":\"$undefined\",\"template\":[\"$\",\"$L5\",null,{}],\"templateStyles\":\"$undefined\",\"templateScripts\":\"$undefined\",\"notFound\":\"$undefined\",\"forbidden\":\"$undefined\",\"unauthorized\":\"$undefined\"}]]}]\na:[\"$\",\"$1\",\"c\",{\"children\":[null,[\"$\",\"$L4\",null,{\"parallelRouterKey\":\"children\",\"error\":\"$undefined\",\"errorStyles\":\"$undefined\",\"errorScripts\":\"$undefined\",\"template\":[\"$\",\"$L5\",null,{}],\"templateStyles\":\"$undefined\",\"templateScripts\":\"$undefined\",\"notFound\":\"$undefined\",\"forbidden\":\"$undefined\",\"unauthorized\":\"$undefined\"}]]}]\nb:[\"$\",\"$1\",\"c\",{\"children\":[\"$L12\",[[\"$\",\"script\",\"script-0\",{\"src\":\"/_next/static/chunks/0pg86~w1~d355.js\",\"async\":true,\"nonce\":\"$undefined\"}]],[\"$\",\"$L13\",null,{\"children\":[\"$\",\"$14\",null,{\"name\":\"Next.MetadataOutlet\",\"children\":\"$@15\"}]}]]}]\n16:[]\nc:\"$W16\"\nd:[\"$\",\"$1\",\"h\",{\"children\":[null,[\"$\",\"$L17\",null,{\"children\":\"$L18\"}],[\"$\",\"div\",null,{\"hidden\":true,\"children\":[\"$\",\"$L19\",null,{\"children\":[\"$\",\"$14\",null,{\"name\":\"Next.Metadata\",\"children\":\"$L1a\"}]}]}],[\"$\",\"meta\",null,{\"name\":\"next-size-adjust\",\"content\":\"\"}]]}]\nf:[\"$\",\"link\",\"0\",{\"rel\":\"stylesheet\",\"href\":\"/_next/static/chunks/0fwxch7cdz3kv.css\",\"precedence\":\"next\",\"crossOrigin\":\"$undefined\",\"nonce\":\"$undefined\"}]\n"])</script><script>self.__next_f.push([1,"10:[\"$\",\"ul\",null,{\"className\":\"space-y-2\",\"children\":[[\"$\",\"li\",\"GitHub\",{\"children\":[\"$\",\"a\",null,{\"href\":\"https://github.com/mesraiofficial\",\"target\":\"_blank\",\"rel\":\"noopener noreferrer\",\"className\":\"text-[13.5px] text-[color:var(--color-ink-1)] transition-colors hover:text-[color:var(--color-primary-light)]\",\"children\":\"GitHub\"}]}],[\"$\",\"li\",\"Contact\",{\"children\":[\"$\",\"a\",null,{\"href\":\"mailto:contact@mesrai.com\",\"className\":\"text-[13.5px] text-[color:var(--color-ink-1)] transition-colors hover:text-[color:var(--color-primary-light)]\",\"children\":\"Contact\"}]}]]}]\n11:[\"$\",\"div\",null,{\"className\":\"mt-10 flex flex-col items-start gap-2 border-t border-[color:var(--color-line)] pt-6 text-[12px] text-[color:var(--color-ink-3)] sm:flex-row sm:items-center sm:justify-between\",\"children\":[[\"$\",\"p\",null,{\"children\":[\"© \",2026,\" Mesrai Technologies. All rights reserved.\"]}],[\"$\",\"p\",null,{\"className\":\"font-mono text-[11px] tracking-wider uppercase\",\"children\":\"Built with care · India + worldwide\"}]]}]\n"])</script><script>self.__next_f.push([1,"18:[[\"$\",\"meta\",\"0\",{\"charSet\":\"utf-8\"}],[\"$\",\"meta\",\"1\",{\"name\":\"viewport\",\"content\":\"width=device-width, initial-scale=1\"}],[\"$\",\"meta\",\"2\",{\"name\":\"theme-color\",\"content\":\"#0a0a0b\",\"media\":\"(prefers-color-scheme: dark)\"}],[\"$\",\"meta\",\"3\",{\"name\":\"theme-color\",\"content\":\"#fbfaf7\",\"media\":\"(prefers-color-scheme: light)\"}]]\n"])</script><script>self.__next_f.push([1,"1b:I[27201,[\"/_next/static/chunks/17wr4kjvetgpg.js\",\"/_next/static/chunks/01d9z6trbvl9l.js\",\"/_next/static/chunks/0d3shmwh5_nmn.js\",\"/_next/static/chunks/0_3fj3rn8zo2r.js\"],\"IconMark\"]\n15:null\n"])</script><script>self.__next_f.push([1,"1a:[[\"$\",\"title\",\"0\",{\"children\":\"triage · AI/ML · Mesrai Skills\"}],[\"$\",\"meta\",\"1\",{\"name\":\"description\",\"content\":\"Validates all open GitHub issues, closes invalid ones with documentation, flags complex ones for planning discussion, then fixes and promotes remaining issues. \"}],[\"$\",\"link\",\"2\",{\"rel\":\"manifest\",\"href\":\"/manifest.webmanifest\",\"crossOrigin\":\"$undefined\"}],[\"$\",\"meta\",\"3\",{\"name\":\"keywords\",\"content\":\"code review,ai code review,pull request review,static analysis rules,Mesrai,engineering standards\"}],[\"$\",\"link\",\"4\",{\"rel\":\"canonical\",\"href\":\"https://www.marketplace.mesrai.com/skills/s/jeremylongshore--claude-code-plugins-plus-skills--triage\"}],[\"$\",\"meta\",\"5\",{\"property\":\"og:title\",\"content\":\"triage · AI/ML · Mesrai Skills\"}],[\"$\",\"meta\",\"6\",{\"property\":\"og:description\",\"content\":\"Validates all open GitHub issues, closes invalid ones with documentation, flags complex ones for planning discussion, then fixes and promotes remaining issues. \"}],[\"$\",\"meta\",\"7\",{\"property\":\"og:url\",\"content\":\"https://www.marketplace.mesrai.com/skills/s/jeremylongshore--claude-code-plugins-plus-skills--triage\"}],[\"$\",\"meta\",\"8\",{\"property\":\"og:site_name\",\"content\":\"Mesrai Marketplace\"}],[\"$\",\"meta\",\"9\",{\"property\":\"og:image\",\"content\":\"https://www.marketplace.mesrai.com/api/og/default\"}],[\"$\",\"meta\",\"10\",{\"property\":\"og:image:width\",\"content\":\"1200\"}],[\"$\",\"meta\",\"11\",{\"property\":\"og:image:height\",\"content\":\"630\"}],[\"$\",\"meta\",\"12\",{\"property\":\"og:image:alt\",\"content\":\"triage · AI/ML · Mesrai Skills\"}],[\"$\",\"meta\",\"13\",{\"property\":\"og:type\",\"content\":\"website\"}],[\"$\",\"meta\",\"14\",{\"name\":\"twitter:card\",\"content\":\"summary_large_image\"}],[\"$\",\"meta\",\"15\",{\"name\":\"twitter:site\",\"content\":\"@mesrai\"}],[\"$\",\"meta\",\"16\",{\"name\":\"twitter:title\",\"content\":\"triage · AI/ML · Mesrai Skills\"}],[\"$\",\"meta\",\"17\",{\"name\":\"twitter:description\",\"content\":\"Validates all open GitHub issues, closes invalid ones with documentation, flags complex ones for planning discussion, then fixes and promotes remaining issues. \"}],[\"$\",\"meta\",\"18\",{\"name\":\"twitter:image\",\"content\":\"https://www.marketplace.mesrai.com/api/og/default\"}],[\"$\",\"link\",\"19\",{\"rel\":\"shortcut icon\",\"href\":\"/favicon.ico\"}],[\"$\",\"link\",\"20\",{\"rel\":\"icon\",\"href\":\"/favicon.ico?favicon.0hemvqz2teeos.ico\",\"sizes\":\"48x48\",\"type\":\"image/x-icon\"}],[\"$\",\"link\",\"21\",{\"rel\":\"icon\",\"href\":\"/favicon.svg\",\"type\":\"image/svg+xml\"}],[\"$\",\"link\",\"22\",{\"rel\":\"icon\",\"href\":\"/favicon-32x32.png\",\"sizes\":\"32x32\",\"type\":\"image/png\"}],[\"$\",\"link\",\"23\",{\"rel\":\"icon\",\"href\":\"/favicon-16x16.png\",\"sizes\":\"16x16\",\"type\":\"image/png\"}],[\"$\",\"link\",\"24\",{\"rel\":\"icon\",\"href\":\"/favicon-96x96.png\",\"sizes\":\"96x96\",\"type\":\"image/png\"}],[\"$\",\"link\",\"25\",{\"rel\":\"apple-touch-icon\",\"href\":\"/favicon-96x96.png\"}],[\"$\",\"$L1b\",\"26\",{}]]\n"])</script><script>self.__next_f.push([1,"12:[\"$\",\"div\",null,{\"className\":\"mx-auto max-w-4xl px-4 pb-24 pt-10 sm:px-6 sm:pt-14 lg:px-10\",\"children\":[[\"$\",\"script\",null,{\"type\":\"application/ld+json\",\"dangerouslySetInnerHTML\":{\"__html\":\"{\\\"@context\\\":\\\"https://schema.org\\\",\\\"@type\\\":\\\"SoftwareSourceCode\\\",\\\"name\\\":\\\"triage\\\",\\\"description\\\":\\\"Validates all open GitHub issues, closes invalid ones with documentation, flags complex ones for planning discussion, then fixes and promotes remaining issues. Use when the user says triage issues, validate issues, fix issues, or work through the backlog.\\\",\\\"codeRepository\\\":\\\"https://github.com/jeremylongshore/claude-code-plugins-plus-skills/tree/main/plugins/productivity/claude-workflow-skills/skills/triage\\\",\\\"programmingLanguage\\\":\\\"Markdown\\\",\\\"author\\\":{\\\"@type\\\":\\\"Organization\\\",\\\"name\\\":\\\"jeremylongshore\\\"},\\\"dateModified\\\":\\\"2026-05-31T04:18:51Z\\\",\\\"keywords\\\":\\\"AI/ML, agent skill, claude code\\\",\\\"url\\\":\\\"https://www.marketplace.mesrai.com/skills/s/jeremylongshore--claude-code-plugins-plus-skills--triage\\\",\\\"inLanguage\\\":\\\"en\\\"}\"}}],[\"$\",\"script\",null,{\"type\":\"application/ld+json\",\"dangerouslySetInnerHTML\":{\"__html\":\"{\\\"@context\\\":\\\"https://schema.org\\\",\\\"@type\\\":\\\"BreadcrumbList\\\",\\\"itemListElement\\\":[{\\\"@type\\\":\\\"ListItem\\\",\\\"position\\\":1,\\\"name\\\":\\\"Skills\\\",\\\"item\\\":\\\"https://www.marketplace.mesrai.com/skills\\\"},{\\\"@type\\\":\\\"ListItem\\\",\\\"position\\\":2,\\\"name\\\":\\\"AI/ML\\\",\\\"item\\\":\\\"https://www.marketplace.mesrai.com/skills/c/ai-ml\\\"},{\\\"@type\\\":\\\"ListItem\\\",\\\"position\\\":3,\\\"name\\\":\\\"triage\\\",\\\"item\\\":\\\"https://www.marketplace.mesrai.com/skills/s/jeremylongshore--claude-code-plugins-plus-skills--triage\\\"}]}\"}}],[\"$\",\"nav\",null,{\"aria-label\":\"Breadcrumb\",\"className\":\"mb-6 flex items-center gap-2 font-mono text-[11px] tracking-wider text-[color:var(--color-ink-3)]\",\"children\":[[\"$\",\"$L6\",null,{\"href\":\"/skills\",\"className\":\"uppercase hover:text-[color:var(--color-primary-light)]\",\"children\":\"Skills\"}],[\"$\",\"span\",null,{\"aria-hidden\":true,\"children\":\"›\"}],[\"$\",\"$L6\",null,{\"href\":\"/skills/c/ai-ml\",\"className\":\"uppercase hover:text-[color:var(--color-primary-light)]\",\"children\":\"AI/ML\"}],[\"$\",\"span\",null,{\"aria-hidden\":true,\"children\":\"›\"}],[\"$\",\"span\",null,{\"className\":\"truncate uppercase text-[color:var(--color-ink-1)]\",\"children\":\"triage\"}]]}],[\"$\",\"header\",null,{\"className\":\"border-b border-[color:var(--color-line)] pb-6\",\"children\":[[\"$\",\"div\",null,{\"className\":\"mb-3 flex flex-wrap items-center gap-2\",\"children\":[[\"$\",\"$L6\",null,{\"href\":\"/skills/c/ai-ml\",\"className\":\"rounded-full border border-[color:var(--color-line)] px-2.5 py-0.5 font-mono text-[10.5px] uppercase tracking-wider text-[color:var(--color-ink-2)] hover:border-[color:var(--color-primary-light)] hover:text-[color:var(--color-primary-light)]\",\"children\":\"AI/ML\"}],[\"$\",\"span\",null,{\"className\":\"font-mono text-[10.5px] uppercase tracking-wider text-[color:var(--color-ink-3)]\",\"children\":\"jeremylongshore\"}]]}],[\"$\",\"h1\",null,{\"className\":\"font-serif text-[36px] leading-tight tracking-tight text-[color:var(--color-ink-0)] sm:text-[42px]\",\"children\":\"triage\"}],[\"$\",\"p\",null,{\"className\":\"mt-4 max-w-[65ch] text-[15px] leading-[1.65] text-[color:var(--color-ink-2)]\",\"children\":\"Validates all open GitHub issues, closes invalid ones with documentation, flags complex ones for planning discussion, then fixes and promotes remaining issues. Use when the user says triage issues, validate issues, fix issues, or work through the backlog.\"}],[\"$\",\"dl\",null,{\"className\":\"mt-6 grid grid-cols-2 gap-x-6 gap-y-3 sm:grid-cols-4\",\"children\":[[\"$\",\"div\",null,{\"className\":\"flex min-w-0 flex-col gap-1\",\"children\":[[\"$\",\"dt\",null,{\"className\":\"font-mono text-[10px] uppercase tracking-[0.16em] text-[color:var(--color-ink-3)]\",\"children\":\"Stars\"}],\"$L1c\"]}],\"$L1d\",\"$L1e\",\"$L1f\"]}],\"$L20\"]}],\"$L21\",\"$L22\"]}]\n"])</script><script>self.__next_f.push([1,"23:I[28263,[\"/_next/static/chunks/17wr4kjvetgpg.js\",\"/_next/static/chunks/01d9z6trbvl9l.js\",\"/_next/static/chunks/0d3shmwh5_nmn.js\",\"/_next/static/chunks/0_3fj3rn8zo2r.js\",\"/_next/static/chunks/0pg86~w1~d355.js\"],\"CopyButton\"]\n1c:[\"$\",\"dd\",null,{\"className\":\"truncate text-[13px] text-[color:var(--color-ink-1)] \",\"title\":\"2,267\",\"children\":\"2,267\"}]\n1d:[\"$\",\"div\",null,{\"className\":\"flex min-w-0 flex-col gap-1\",\"children\":[[\"$\",\"dt\",null,{\"className\":\"font-mono text-[10px] uppercase tracking-[0.16em] text-[color:var(--color-ink-3)]\",\"children\":\"Source\"}],[\"$\",\"dd\",null,{\"className\":\"truncate text-[13px] text-[color:var(--color-ink-1)] \",\"title\":\"jeremylongshore/claude-code-plugins-plus-skills\",\"children\":\"jeremylongshore/claude-code-plugins-plus-skills\"}]]}]\n1e:[\"$\",\"div\",null,{\"className\":\"flex min-w-0 flex-col gap-1\",\"children\":[[\"$\",\"dt\",null,{\"className\":\"font-mono text-[10px] uppercase tracking-[0.16em] text-[color:var(--color-ink-3)]\",\"children\":\"Updated\"}],[\"$\",\"dd\",null,{\"className\":\"truncate text-[13px] text-[color:var(--color-ink-1)] \",\"title\":\"2026-05-31\",\"children\":\"2026-05-31\"}]]}]\n1f:[\"$\",\"div\",null,{\"className\":\"flex min-w-0 flex-col gap-1\",\"children\":[[\"$\",\"dt\",null,{\"className\":\"font-mono text-[10px] uppercase tracking-[0.16em] text-[color:var(--color-ink-3)]\",\"children\":\"Slug\"}],[\"$\",\"dd\",null,{\"className\":\"truncate text-[13px] text-[color:var(--color-ink-1)] font-mono text-[12px]\",\"title\":\"jeremylongshore--claude-code-plugins-plus-skills--triage\",\"children\":\"jeremylongshore--claude-code-plugins-plus-skills--triage\"}]]}]\n"])</script><script>self.__next_f.push([1,"20:[\"$\",\"div\",null,{\"className\":\"mt-6 flex flex-wrap items-center gap-3\",\"children\":[[\"$\",\"a\",null,{\"href\":\"https://github.com/jeremylongshore/claude-code-plugins-plus-skills/tree/main/plugins/productivity/claude-workflow-skills/skills/triage\",\"target\":\"_blank\",\"rel\":\"noopener noreferrer\",\"className\":\"inline-flex items-center gap-2 rounded-full bg-[color:var(--color-primary-light)] px-5 py-2.5 text-[13px] font-medium text-[color:var(--color-on-primary)] transition-opacity hover:opacity-90\",\"children\":[\"View on GitHub\",[\"$\",\"span\",null,{\"aria-hidden\":true,\"children\":\"↗\"}]]}],[\"$\",\"a\",null,{\"href\":\"https://raw.githubusercontent.com/jeremylongshore/claude-code-plugins-plus-skills/main/plugins/productivity/claude-workflow-skills/skills/triage/SKILL.md\",\"target\":\"_blank\",\"rel\":\"noopener noreferrer\",\"className\":\"inline-flex items-center gap-2 rounded-full border border-[color:var(--color-line-2)] px-5 py-2.5 text-[13px] font-medium text-[color:var(--color-ink-1)] hover:border-[color:var(--color-ink-3)] hover:text-[color:var(--color-ink-0)]\",\"children\":\"Raw SKILL.md\"}],[\"$\",\"$L23\",null,{\"value\":\"https://github.com/jeremylongshore/claude-code-plugins-plus-skills/tree/main/plugins/productivity/claude-workflow-skills/skills/triage\",\"label\":\"Copy GitHub URL\"}],[\"$\",\"$L23\",null,{\"value\":\"\",\"fetchUrl\":\"https://raw.githubusercontent.com/jeremylongshore/claude-code-plugins-plus-skills/main/plugins/productivity/claude-workflow-skills/skills/triage/SKILL.md\",\"label\":\"Copy SKILL.md\"}]]}]\n"])</script><script>self.__next_f.push([1,"21:[\"$\",\"section\",null,{\"aria-label\":\"Install\",\"className\":\"mt-8 rounded-xl border border-[color:var(--color-line)] bg-[color:var(--color-bg-1)] p-5\",\"children\":[[\"$\",\"div\",null,{\"className\":\"mb-2 flex items-center justify-between gap-3\",\"children\":[[\"$\",\"p\",null,{\"className\":\"font-mono text-[10.5px] uppercase tracking-[0.16em] text-[color:var(--color-ink-3)]\",\"children\":\"// install — copy + paste into any project\"}],[\"$\",\"$L23\",null,{\"value\":\"mkdir -p .claude/skills \u0026\u0026 curl -fsSL https://raw.githubusercontent.com/jeremylongshore/claude-code-plugins-plus-skills/HEAD/plugins/productivity/claude-workflow-skills/skills/triage/SKILL.md -o .claude/skills/triage.md\",\"label\":\"Copy\"}]]}],[\"$\",\"div\",null,{\"className\":\"relative\",\"children\":[[\"$\",\"pre\",null,{\"className\":\"overflow-x-auto rounded-md bg-[color:var(--color-bg-3)] p-3 pr-20 text-[12px] leading-[1.6] text-[color:var(--color-ink-1)]\",\"children\":[\"$\",\"code\",null,{\"children\":\"mkdir -p .claude/skills \u0026\u0026 curl -fsSL https://raw.githubusercontent.com/jeremylongshore/claude-code-plugins-plus-skills/HEAD/plugins/productivity/claude-workflow-skills/skills/triage/SKILL.md -o .claude/skills/triage.md\"}]}],[\"$\",\"$L23\",null,{\"value\":\"mkdir -p .claude/skills \u0026\u0026 curl -fsSL https://raw.githubusercontent.com/jeremylongshore/claude-code-plugins-plus-skills/HEAD/plugins/productivity/claude-workflow-skills/skills/triage/SKILL.md -o .claude/skills/triage.md\",\"variant\":\"corner\",\"label\":\"Copy\"}]]}],[\"$\",\"p\",null,{\"className\":\"mt-3 text-[12.5px] leading-[1.55] text-[color:var(--color-ink-2)]\",\"children\":[\"Drops the SKILL.md into\",\" \",[\"$\",\"code\",null,{\"className\":\"rounded bg-[color:var(--color-bg-3)] px-1.5 py-0.5 font-mono text-[11.5px]\",\"children\":[\".claude/skills/\",\"triage\",\".md\"]}],\". Works with Claude Code, Cursor, and any agent that loads SKILL.md files from\",\" \",[\"$\",\"code\",null,{\"className\":\"rounded bg-[color:var(--color-bg-3)] px-1.5 py-0.5 font-mono text-[11.5px]\",\"children\":\".claude/skills/\"}],\".\"]}]]}]\n"])</script><script>self.__next_f.push([1,"24:T148e,"])</script><script>self.__next_f.push([1,"\u003ch1\u003eTriage\u003c/h1\u003e\n\u003cp\u003eProject: !\u003ccode\u003ebasename $(git rev-parse --show-toplevel 2\u0026gt;/dev/null) 2\u0026gt;/dev/null || basename $PWD\u003c/code\u003e\nBranch: !\u003ccode\u003egit branch --show-current 2\u0026gt;/dev/null || echo \u0026quot;unknown\u0026quot;\u003c/code\u003e\nOpen issues: !\u003ccode\u003egh issue list --state open --json number,title --jq \u0026#39;.[] | \u0026quot;#\\(.number) \\(.title)\u0026quot;\u0026#39; 2\u0026gt;/dev/null || echo \u0026quot;none\u0026quot;\u003c/code\u003e\nLast tag: !\u003ccode\u003egit describe --tags --abbrev=0 2\u0026gt;/dev/null || echo \u0026quot;none\u0026quot;\u003c/code\u003e\nRecent commits: !\u003ccode\u003egit log --oneline -5 2\u0026gt;/dev/null || echo \u0026quot;none\u0026quot;\u003c/code\u003e\u003c/p\u003e\n\u003cp\u003eValidates every open GitHub issue, closes those that are invalid, surfaces complex ones\nfor planning discussion, then fixes and promotes all remaining actionable issues.\u003c/p\u003e\n\u003ch2\u003eStep 0: Pre-flight check\u003c/h2\u003e\n\u003cpre\u003e\u003ccode class=\"language-bash\"\u003egh auth status 2\u0026gt;\u0026amp;1 || { echo \u0026quot;ERROR: gh is not authenticated. Run: gh auth login\u0026quot;; exit 1; }\n\u003c/code\u003e\u003c/pre\u003e\n\u003ch2\u003eStep 1: Fetch all open issues\u003c/h2\u003e\n\u003cpre\u003e\u003ccode class=\"language-bash\"\u003egh issue list --state open --limit 100 --json number,title,body,labels,createdAt \\\n --jq \u0026#39;.[] | {number, title, labels: [.labels[].name], createdAt, body}\u0026#39;\n\u003c/code\u003e\u003c/pre\u003e\n\u003cp\u003eRead the full body of any issues where context is needed:\u003c/p\u003e\n\u003cpre\u003e\u003ccode class=\"language-bash\"\u003egh issue view \u0026lt;number\u0026gt; --json number,title,body,labels,comments\n\u003c/code\u003e\u003c/pre\u003e\n\u003cp\u003eAlso read the project files to understand current state before assessing anything:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ccode\u003eREADME.md\u003c/code\u003e — stated purpose and feature set\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eCLAUDE.md\u003c/code\u003e — current status, known decisions, next steps\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eStep 2: Classify each issue\u003c/h2\u003e\n\u003cp\u003eFor every open issue, classify it as one of:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e\u003cstrong\u003eInvalid\u003c/strong\u003e — already fixed, a duplicate, not reproducible, out of scope, or based on a\nmisunderstanding. Evidence must be clear.\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eComplex\u003c/strong\u003e — valid but requires significant design decisions, breaking changes, or\nmulti-step implementation that warrants planning discussion before proceeding.\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eActionable\u003c/strong\u003e — valid, well-scoped, and fixable now without further input.\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003eBuild a classification table before taking any action:\u003c/p\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003e#\u003c/th\u003e\n\u003cth\u003eTitle\u003c/th\u003e\n\u003cth\u003eClassification\u003c/th\u003e\n\u003cth\u003eReason\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\u003ctr\u003e\n\u003ctd\u003eN\u003c/td\u003e\n\u003ctd\u003e...\u003c/td\u003e\n\u003ctd\u003eInvalid/Complex/Actionable\u003c/td\u003e\n\u003ctd\u003e...\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\u003c/table\u003e\n\u003ch2\u003eStep 3: Close invalid issues\u003c/h2\u003e\n\u003cp\u003eFor each invalid issue, post a closing comment that explains why it is being closed, then close it:\u003c/p\u003e\n\u003cpre\u003e\u003ccode class=\"language-bash\"\u003egh issue comment \u0026lt;number\u0026gt; --body \u0026quot;$(cat \u0026lt;\u0026lt;\u0026#39;EOF\u0026#39;\nClosing as invalid: \u0026lt;specific reason — already fixed in \u0026lt;commit/PR\u0026gt;, duplicate of #N,\nnot reproducible because \u0026lt;evidence\u0026gt;, or out of scope because \u0026lt;reason\u0026gt;\u0026gt;.\n\n\u0026lt;If already fixed: reference the commit or PR that resolved it.\u0026gt;\n\u0026lt;If duplicate: reference the canonical issue.\u0026gt;\nEOF\n)\u0026quot;\n\ngh issue close \u0026lt;number\u0026gt; --reason \u0026quot;not planned\u0026quot;\n\u003c/code\u003e\u003c/pre\u003e\n\u003cp\u003eUse \u003ccode\u003e--reason \u0026quot;completed\u0026quot;\u003c/code\u003e if the issue was already resolved in code.\u003c/p\u003e\n\u003ch2\u003eStep 4: Surface complex issues for planning\u003c/h2\u003e\n\u003cp\u003eStop and present complex issues to the user before proceeding. Format clearly:\u003c/p\u003e\n\u003chr\u003e\n\u003cp\u003e\u003cstrong\u003eComplex issues — planning needed before proceeding:\u003c/strong\u003e\u003c/p\u003e\n\u003cp\u003eFor each complex issue:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e\u003cstrong\u003e#N: \u003ctitle\u003e\u003c/strong\u003e\u003cul\u003e\n\u003cli\u003eWhy it\u0026#39;s complex: \u0026lt;design decision, breaking change, or scope concern\u0026gt;\u003c/li\u003e\n\u003cli\u003eOptions to consider: \u003cbrief list of approaches\u003e\u003c/li\u003e\n\u003cli\u003eSuggested next step: defer to backlog / spike / discuss now\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003chr\u003e\n\u003cp\u003eWait for the user\u0026#39;s direction on each complex issue before moving to Step 5.\nIf running non-interactively (no terminal), stop here and output the complex issues report.\u003c/p\u003e\n\u003cpre\u003e\u003ccode class=\"language-bash\"\u003eif [ ! -t 0 ]; then\n echo \u0026quot;Non-interactive mode: stopping after complex issue report. Review and re-run interactively.\u0026quot;\n exit 0\nfi\n\u003c/code\u003e\u003c/pre\u003e\n\u003ch2\u003eStep 5: Fix actionable issues\u003c/h2\u003e\n\u003cp\u003eWork through each actionable issue. For each one:\u003c/p\u003e\n\u003col\u003e\n\u003cli\u003e\u003cp\u003eRead the relevant source files before making any changes.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\u003cp\u003eImplement the fix — prefer the minimal correct change; don\u0026#39;t refactor beyond the scope of\nthe issue.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\u003cp\u003eVerify the fix with any available linting or syntax checks:\u003c/p\u003e\n\u003cpre\u003e\u003ccode class=\"language-bash\"\u003ebash -n \u0026lt;script.sh\u0026gt; # syntax check for shell scripts\nmarkdownlint \u0026#39;**/*.md\u0026#39; # markdown linting\n\u003c/code\u003e\u003c/pre\u003e\n\u003c/li\u003e\n\u003cli\u003e\u003cp\u003eStage the change:\u003c/p\u003e\n\u003cpre\u003e\u003ccode class=\"language-bash\"\u003egit add -u\n\u003c/code\u003e\u003c/pre\u003e\n\u003c/li\u003e\n\u003c/ol\u003e\n\u003cp\u003eRecord each fix with its issue number so the commit and PR can reference them.\u003c/p\u003e\n\u003ch2\u003eStep 6: Promote\u003c/h2\u003e\n\u003cp\u003eOnce all actionable issues are fixed, run:\u003c/p\u003e\n\u003cpre\u003e\u003ccode class=\"language-text\"\u003e/promote\n\u003c/code\u003e\u003c/pre\u003e\n\u003cp\u003eThe promote skill will commit, push, create and merge a PR (referencing fixed issue numbers\nvia \u003ccode\u003eCloses #N\u003c/code\u003e in the commit message), tag a release, and clean up.\u003c/p\u003e\n\u003cp\u003eWhen composing the commit message for the promote step, include \u003ccode\u003eCloses #N\u003c/code\u003e for every\nissue fixed in Step 5.\u003c/p\u003e\n"])</script><script>self.__next_f.push([1,"22:[\"$\",\"article\",null,{\"className\":\"mt-10\",\"children\":[\"$\",\"div\",null,{\"className\":\"prose-skill\",\"dangerouslySetInnerHTML\":{\"__html\":\"$24\"}}]}]\n"])</script></body></html>