Agent skill
process-issues
Execute recipe sessions batch-by-batch for triaged GitHub issues. Reads the triage-issues output manifest, processes each batch sequentially, and launches the appropriate recipe for each issue. Use when user says "process issues", "run issues", or "execute pipeline for issues".
Install this agent skill to your Project
npx add-skill https://github.com/majiayu000/claude-skill-registry/tree/main/skills/other/other/process-issues
SKILL.md
Process Issues Skill
Execute the appropriate implementation recipe for each triaged GitHub issue, respecting the
batch order defined by the triage-issues manifest. This skill is the execution counterpart
to triage-issues — it consumes the manifest and orchestrates the full lifecycle: load recipe,
execute session, collect result, report.
When to Use
- After
/autoskillit:triage-issueshas produced a manifest intemp/triage-issues/ - User says "process issues", "run issues", "execute pipeline for issues"
- When a triage manifest exists and batched issues need implementation sessions launched
Critical Constraints
NEVER:
- Create files outside
temp/process-issues/directory - Apply
batch:Nlabels to GitHub issues (batch assignments are internal — they live only in the manifest JSON, not on GitHub objects) - Modify any source code files
- Reimplement recipe steps inline — always use
load_recipeto load the recipe YAML and follow it as an orchestrator - Process issues that already carry the
in-progresslabel — skip them with a warning
ALWAYS:
- Process batches in ascending order: batch 1 before batch 2 before batch 3
- Use
load_recipeto execute the recipe for each issue - Emit
---process-issues-result---result block on completion (success or failure) - Write the summary report to
temp/process-issues/(relative to the current working directory) - Use
model: "sonnet"when spawning subagents via the Task tool - Use
ghCLI for all GitHub operations (not raw API calls) - Include
--forcein allgh label createcalls
Arguments
- Positional (optional): path to triage manifest JSON
--batch N— only process batch N (default: process all batches in order)--dry-run— print the processing plan and exit without launching any recipe sessions--comment— post a GitHub comment on each issue at pickup and at completion--merge-batch— after each batch completes, runanalyze-prs+merge-prto merge the batch PRs into the integration branch before starting the next batch
Workflow
Step 0: Parse Arguments
Parse arguments:
- If a positional path is given, use it as the manifest path.
--batch N: record the target batch number; process only that batch.--dry-run: set dry_run flag; print plan then exit after Step 2.--comment: set comment flag.--merge-batch: set merge_batch flag.
Step 1: Locate and Read Manifest
Locate the manifest:
- If a positional path argument was given, use it directly.
- Otherwise, auto-discover the most recently modified manifest:
bash
ls -t temp/triage-issues/triage_manifest_*.json 2>/dev/null | head -1 - If no manifest is found, abort:
"No triage manifest found. Run
/autoskillit:triage-issuesfirst, or pass the manifest path as the first argument."
Parse the manifest JSON. Extract:
batches: ordered list; each entry hasbatch(number) andissues(array)- Per issue:
number,title,recipe("implementation"or"remediation")
Derive the repository reference for constructing issue URLs. Try in order:
- Read
github.default_repofrom.autoskillit/config.yamlif present. - Infer from git remote:
bashThis yields
{ git remote get-url upstream 2>/dev/null || git remote get-url origin; } | sed 's|.*github.com[:/]||; s|\.git$||'owner/repo.
Construct each issue's URL:
https://github.com/{owner}/{repo}/issues/{number}
Step 2: Dry Run Mode
If --dry-run is active, print a table:
Dry run — would process N issues in M batches:
BATCH ISSUE RECIPE TITLE
------ ------ ---------------- ----------------------------------------
1 #42 implementation Add user authentication
1 #43 remediation Fix login redirect bug
2 #44 implementation Refactor auth module
...
Total: N issues, M batches. No sessions launched.
Then emit the ---process-issues-result--- block with "dry_run": true and exit.
Step 2a: Batch Scope Confirmation
Before executing any batch, display the full processing plan and confirm scope with the user:
━━━ Process Issues — Batch Scope ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
About to process {N} issues in {M} batches:
BATCH ISSUE RECIPE TITLE
------ ------ ---------------- ----------------------------------------
{batch rows from manifest}
Processing mode: sequential within each batch (batches processed in order)
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
Proceed? [Y/n]
- Y (or Enter): Proceed to Step 3.
- n: Abort. Emit
process-issues-resultwith"aborted": trueand exit cleanly.
Skip this step when --dry-run is active (Step 2 already prints the plan and exits) or when
--batch N limits scope to a single batch (show only that batch's issues).
Step 3: Process Batches
For each batch in ascending order (batch 1, then batch 2, etc.):
CRITICAL: Do NOT output any prose status text between batches. After completing one batch (all issues processed, optional merge cycle done), immediately begin the batch header (3a) for the next batch.
- If
--batch Nwas given, skip all batches with a different number.
3a. Log batch header:
━━━ Batch N/M ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
Processing X issues:
#42 — implementation: Add user authentication
#43 — remediation: Fix login redirect bug
3b. For each issue in the batch (process sequentially):
CRITICAL: Do NOT output any prose status text between issues. After completing one issue's processing (step 9), immediately begin step 1 (Construct the issue URL) for the next issue. Inter-issue announcements create end_turn windows that cause stochastic session termination.
-
Construct the issue URL (from Step 1 derivation).
-
Fetch issue content:
fetch_github_issue(issue_url, include_comments=true)On failure: log a warning, record
status: failure, and advance to the next issue. -
Check for
in-progresslabel: Inspect the fetched issue'slabelslist. Ifin-progressis present:- Log:
"Skipping #N — already claimed (in-progress label present)" - Record
status: skipped - Advance to next issue.
- Log:
-
Optionally post pickup comment (if
--commentis active):bashgh issue comment {number} \ --body "Processing in batch {N} — recipe: \`{recipe}\`" -
Determine recipe name and
run_name:recipefieldRecipe to load run_namePR Title Prefix implementationimplementationfeature[FEATURE]remediationremediationfix[FIX]These values correspond to the GitHub labels applied by
triage-issues:recipe:implementation(new features/enhancements) andrecipe:remediation(bugs).The
run_nameencodes recipe origin for theopen-prskill, which derives the PR title prefix from it by convention (seeopen-prSKILL.md). -
Load the recipe:
load_recipe("{recipe_name}")This returns the recipe YAML. Read it and execute it as an orchestrator — follow each step in the recipe, calling the specified MCP tool with the specified
with:arguments. -
Execute the recipe with these ingredient values:
task: the issue title (the recipe'smake-planstep detectsissue_urland fetches full content internally)issue_url: the constructed issue URLrun_name:"feature"(implementation) or"fix"(remediation)base_branch:"integration"(or readgit rev-parse --abbrev-ref HEAD)open_pr:"true"audit:"true"review_approach:"false"
The recipe handles claim/release internally: both
implementation.yamlandremediation.yamlcallclaim_issueearly in their step graph andrelease_issueon both success and failure paths. There is no need to callclaim_issueorrelease_issuefrom this skill directly.If the recipe's
claim_issuestep returnsclaimed: false(issue already claimed by another session), the recipe routes toescalate_stop. Record the outcome and advance to the next issue. -
After recipe completes, record the result:
- On success path (
donestep reached):{issue_number, recipe, status: success, pr_url} - On failure path (
escalate_stopreached):{issue_number, recipe, status: failure, error}
- On success path (
-
Optionally post completion comment (if
--commentis active):- Success:
"✅ Processing complete — PR: {pr_url}" - Failure:
"❌ Processing failed — manual intervention required"
- Success:
3c. After all issues in batch complete (if --merge-batch is active):
Run the analyze-prs → merge-pr cycle for the batch's PRs:
run_skill("/autoskillit:analyze-prs {base_branch}")
Parse the pr_order_file from the skill output. For each PR in the recommended
merge order:
CRITICAL: Do NOT output any prose status text between PRs. After one merge-pr completes, immediately call run_skill for the next PR.
run_skill("/autoskillit:merge-pr {pr_number} {complexity}")
Log merge results and proceed to the next batch.
Step 4: Write Summary Report
Compute timestamp: YYYY-MM-DD_HHMMSS.
Create temp/process-issues/ if it does not exist.
Write temp/process-issues/process_report_{ts}.md:
# Process Issues Report — {ts}
## Summary
| Metric | Value |
|--------|-------|
| Total issues | N |
| Successes | X |
| Failures | Y |
| Skipped (in-progress) | Z |
| Batches processed | M |
## Results by Batch
### Batch 1
| Issue | Title | Recipe | Status | PR |
|-------|-------|--------|--------|----|
| #42 | Add user auth | implementation | success | #101 |
| #43 | Fix redirect | remediation | failure | — |
### Batch 2
...
## Failures
For each failed issue: error message captured from recipe terminal step.
Step 5: Emit Result Block
Print the structured result for pipeline capture:
---process-issues-result---
{
"report_path": "temp/process-issues/process_report_{ts}.md",
"total_issues": N,
"successes": X,
"failures": Y,
"skipped": Z,
"batch_count": M,
"dry_run": false,
"pr_urls": ["https://github.com/.../pull/101", ...]
}
---end-process-issues-result---
Output Location
temp/process-issues/
process_report_{ts}.md # Human-readable summary (created per run)
Related Skills
/autoskillit:triage-issues— Produces the manifest that this skill consumes/autoskillit:analyze-prs— Used in--merge-batchmode/autoskillit:merge-pr— Used in--merge-batchmode/autoskillit:open-pr— Called by each executed recipe; derives[FEATURE]/[FIX]PR title prefix from therun_nameingredient
Recommended Agent Skills
Expand your agent's capabilities with these related and highly-rated skills.
agent-ops-spec
Manage specification documents in .agent/specs/. Use when user provides requirements, acceptance criteria, or feature descriptions that need to be tracked and validated against implementation.
agent-ops-state
Maintain .agent state files. Use at session start, after meaningful steps, and before concluding: read/update constitution/memory/focus/issues/baseline consistently.
agent-ops-spec
Manage specification documents in .agent/specs/. Use when user provides requirements, acceptance criteria, or feature descriptions that need to be tracked and validated against implementation.
agent-ops-testing
Test strategy, execution, and coverage analysis. Use when designing tests, running test suites, or analyzing test results beyond baseline checks.
agent-ops-testing
Test strategy, execution, and coverage analysis. Use when designing tests, running test suites, or analyzing test results beyond baseline checks.
agent-ops-state
Maintain .agent state files. Use at session start, after meaningful steps, and before concluding: read/update constitution/memory/focus/issues/baseline consistently.
Didn't find tool you were looking for?