From kiln
Triage open GitHub issues — categorize, label, flag actionable ones, suggest closures with confirmation, and offer backlog creation via /report-issue.
How this skill is triggered — by the user, by Claude, or both
Slash command
/kiln:analyze-issuesThe summary Claude sees in its skill listing — used to decide when to auto-load this skill
Triage accumulated GitHub issues by categorizing them, applying labels, flagging actionable ones with explanations, suggesting closures for informational/stale issues, and offering to convert flagged issues into `.kiln/issues/` backlog items.
Triage accumulated GitHub issues by categorizing them, applying labels, flagging actionable ones with explanations, suggesting closures for informational/stale issues, and offering to convert flagged issues into .kiln/issues/ backlog items.
$ARGUMENTS
Before doing anything, verify the gh CLI is available and authenticated.
Run this command:
gh auth status
gh is not found): Stop and tell the user:
The
ghCLI is not installed or not authenticated. Install it from https://cli.github.com and rungh auth loginbefore using/analyze-issues.
Fetch all open issues (up to 50):
gh issue list --state open --json number,title,body,labels,createdAt,updatedAt --limit 50
Parse the JSON output into a list of issues. Each issue has: number, title, body, labels (array of label objects with name), createdAt, updatedAt.
[]): Report "No issues to analyze" and stop.Check if $ARGUMENTS contains --reanalyze.
--reanalyze is present: Use ALL_ISSUES as ISSUES_TO_PROCESS. Skip no issues.--reanalyze is NOT present: Filter ALL_ISSUES to only those that do not have a label named analyzed. Store the filtered list as ISSUES_TO_PROCESS.After filtering:
analyzed label). Run with --reanalyze to re-process them." and stop.For each issue in ISSUES_TO_PROCESS, read its title and body and determine:
Assign exactly one category based on what the issue is about:
| Category | Assign when the issue is about... |
|---|---|
skills | Skill behavior, prompts, flow, new skill requests, slash commands |
agents | Agent definitions, team structure, agent behavior, model assignments |
hooks | Enforcement rules, hook behavior, gate logic, PreToolUse scripts |
templates | Spec/plan/task/interface templates, template formatting |
scaffold | Init script, project structure, scaffolding, bin/init.mjs |
workflow | Kiln pipeline, build-prd orchestration, process flow, phase ordering |
other | Anything that does not fit the above categories |
If an issue spans multiple areas, pick the primary area — the one the issue is mainly requesting a change to.
Determine if the issue is actionable — meaning it contains something worth acting on:
Flag as actionable when the issue contains:
Do NOT flag as actionable when the issue is:
For each actionable issue, write a one-sentence explanation of why it is worth acting on (e.g., "Adds retry logic that would prevent webhook delivery failures observed in 3 recent builds").
Determine if the issue should be suggested for closure:
Suggest closure when the issue is:
updatedAt to today) and no clear actionFor each closure suggestion, write a brief reason (e.g., "informational only — no action items", "duplicate of #12", "stale — no activity since 2025-12-01").
An issue can be both actionable and NOT suggested for closure, or not actionable and suggested for closure, or neither. These are independent assessments.
Store the results for each issue: number, title, category, is_actionable, actionable_reason (if actionable), suggest_close, close_reason (if suggesting closure).
Display the analysis results grouped by category. Use this format:
## Analysis Results
### category:skills (N issues)
- #12 "Add retry to webhook skill" — **Actionable**: Prevents delivery failures seen in recent builds
- #15 "Skill prompt too verbose" — **Actionable**: Reduces token usage by ~30%
### category:hooks (N issues)
- #8 "Hook timeout on large repos" — **Actionable**: Causes false blocks on repos with >100 files
- #19 "Build summary for run #45" — Suggest close: informational only
### category:other (N issues)
- #22 "General feedback on DX" — Suggest close: no specific action items
### Not categorized
(only if any issues failed to categorize — should not normally appear)
For each issue, show:
If no issues were suggested for closure in Step 4, skip this step entirely.
Otherwise, present the closure suggestions to the user:
## Suggested Closures
The following issues appear to be informational, resolved, stale, or duplicative:
1. #19 "Build summary for run #45" — informational only, no action items
2. #22 "General feedback on DX" — no specific action items
3. #31 "Stale hook investigation" — stale, no activity since 2025-10-15
Close all 3? (yes / no / pick individually)
Wait for the user's response:
For each issue the user confirms for closure, run:
gh issue close <number> --comment "Closed by /analyze-issues: <reason>"
FR-024: Archive closed issues — After closing a GitHub issue, check if a corresponding .kiln/issues/ backlog entry exists for that issue number. If so, move it to .kiln/issues/completed/ (create the directory if needed).
Track how many issues were closed for the summary report.
First, ensure all required labels exist by running these commands. The --force flag makes this idempotent — safe to re-run.
gh label create "category:skills" --color "0E8A16" --force
gh label create "category:agents" --color "1D76DB" --force
gh label create "category:hooks" --color "D93F0B" --force
gh label create "category:templates" --color "FBCA04" --force
gh label create "category:scaffold" --color "B60205" --force
gh label create "category:workflow" --color "5319E7" --force
gh label create "category:other" --color "C5DEF5" --force
gh label create "analyzed" --color "EDEDED" --force
If any label creation fails (e.g., insufficient permissions), report the error for that label and continue with the remaining labels.
For each analyzed issue, apply the category label and the analyzed label:
gh issue edit <number> --add-label "category:<category>,analyzed"
If labeling fails for a specific issue, report the error and continue with the remaining issues. Do not stop the entire run.
If no issues were flagged as actionable in Step 4, skip this step entirely.
Otherwise, present the actionable issues and offer to create backlog items:
## Backlog Creation
The following issues were flagged as actionable:
1. #12 "Add retry to webhook skill" — Prevents delivery failures seen in recent builds
2. #15 "Skill prompt too verbose" — Reduces token usage by ~30%
3. #8 "Hook timeout on large repos" — Causes false blocks on repos with >100 files
Create backlog items for these? (all / none / pick: 1,3)
Wait for the user's response:
For each selected issue, invoke:
/report-issue #<number>
This uses the existing /report-issue skill which handles GitHub issue import, classification, and file creation in .kiln/issues/.
Track how many backlog items were created for the summary report.
Display a final summary of all actions taken during this run:
## Analysis Summary
| Metric | Count |
|-------------------------|-------|
| Total issues analyzed | N |
| Categories assigned | N |
| Flagged as actionable | N |
| Suggested for closure | N |
| Issues closed | N |
| Backlog items created | N |
/report-issue invocations in Step 8 (0 if skipped)analyzed label and --reanalyze flag ensure repeated runs do not re-process issues unnecessarily. Label creation uses --force to avoid errors on existing labels./report-issue are left uncommitted for the user to review.npx claudepluginhub yoshisada/ai-repo-template --plugin kilnProvides behavioral guidelines to reduce common LLM coding mistakes, focusing on simplicity, surgical changes, assumption surfacing, and verifiable success criteria.
Searches, retrieves, and installs Agent Skills from prompts.chat registry using MCP tools like search_skills and get_skill. Activates for finding skills, browsing catalogs, or extending Claude.
Creates, edits, and optimizes skills for Claude Code, including drafting, evaluating with test prompts, iterating on performance, and improving skill descriptions for better triggering accuracy.