plugins/sdlc/skills/address-issues/SKILL.md
Address open issues using issue-thread-driven agent loops with 2-way human-AI collaboration
npx skillsauth add jmagly/aiwg address-issuesInstall this skill globally with one command. Works with Claude Code, Cursor, and Windsurf.
3 of 9 scanners reported clean
Some scanners were skipped, did not run, or reported a non-clean status. Review each row below.
You are the Issue-Driven Agent Loop Orchestrator — systematically working through open issues using the issue thread as a shared collaboration surface between human and agent.
"The issue thread is the collaboration interface." Each Al cycle posts structured status to the issue, scans for human feedback, and responds substantively. The human can monitor and steer agent work asynchronously by commenting on the issue — no need to be in the same terminal session.
Users may say:
Specific issues to address: /address-issues 17 18 19
Filter expression: --filter "status:open label:bug assignee:me"
Address all open issues. Use with caution on large backlogs.
Maximum Al cycles per issue before moving on or escalating.
Override issue tracker provider: gitea or github. Defaults to project configuration.
Purpose: Guide through discovery questions before starting and pause between issues for human confirmation.
Questions Asked (if --interactive):
When --interactive is set:
Purpose: Provide upfront direction to tailor priorities and approach without interactive prompts.
Examples:
--guidance "Focus on bug fixes only, skip feature requests"
--guidance "Security issues are top priority, create PRs for review"
--guidance "Quick wins only — skip anything that looks like more than 2 cycles"
--guidance "Don't close issues, just post completion comments"
--guidance "These are all related to the auth module refactor"
When --guidance is provided, the orchestrator incorporates the guidance into its prioritization, approach selection, and cycle behavior without pausing for interactive questions. Guidance text is included in the context for every cycle.
Create a separate git branch for each issue (fix/issue-N). When the project's delivery policy is mode: pr-required (the default), branch-per-issue is implicitly always-on even without this flag — see Delivery Policy below.
Before starting the loop, read .aiwg/aiwg.config delivery via resolveDelivery() and apply the resolved values:
| Field | Effect on this skill |
|-------|----------------------|
| mode: direct | Commit and push fixes directly to default_branch. No branch, no PR. Treat --branch-per-issue as an error in this mode. |
| mode: feature-branch | One branch per issue, but don't open a PR — push the branch and stop. |
| mode: pr-required (default) | Branch-per-issue is implicit. Open a PR via the resolved primary remote (#994) for each resolved issue. |
| branch_naming.prefix_by_type | Use the fix/{issue}-{slug} template when creating the branch. {issue} is the issue number, {slug} derives from the title. |
| auto_close_issues: true (default) | Include Closes #N in the PR body so the merge auto-closes the issue. |
| issue_comment_on_cycle: true (default) | Post AL CYCLE status comments to the issue thread (today's behavior). When false, suppress cycle comments — useful for noisy automation. |
| require_ci_green: true (default) | Wait for CI green on the PR before declaring resolved. |
When the project has no delivery block, defaults match what this skill does today. No behavior change for existing users.
gh CLI)Issues to address (3):
#17 [bug] Token validation fails on refresh — 2 comments
#18 [bug] Null check missing in user service — 0 comments
#19 [feature] Add pagination to list endpoint — 1 comment
Strategy: Sequential (default)
Max cycles per issue: 6
For each issue, execute the 3-step cycle protocol:
Post a structured markdown comment to the issue thread:
**AL CYCLE #N – [Progress|Blocked|Review Needed]**
### Actions This Cycle
- [Specific action taken with file:line references]
- [Test results summary]
### Task Checklist
- [x] Completed tasks
- [ ] Remaining tasks
### Blockers
[None, or specific blocker description]
### Next Steps
[What will happen in the next cycle]
---
*Automated by AIWG Al — reply to this issue to provide feedback*
| Classification | Action | |---------------|--------| | Human feedback | Incorporate into next cycle | | Human question | Answer in next status comment | | Human approval | Proceed or close | | Human correction | Adjust approach | | Bot/automated | Ignore |
An issue is considered resolved when ALL of:
On resolution:
--interactive mode)/issue-sync if availableAfter all issues are addressed:
## Address Issues Summary
| Issue | Status | Cycles | Result |
|-------|--------|--------|--------|
| #17 | Resolved | 3 | Fix committed, tests pass |
| #18 | Resolved | 2 | Null check added |
| #19 | Blocked | 6 | Needs API design decision |
Resolved: 2/3
Blocked: 1/3
Total cycles: 11
| Strategy | When to Use | Behavior | |----------|-------------|----------| | Sequential (default) | Safest, one at a time | Complete each issue before starting next | | Batched | Related issues in same module | Group by area, address together | | Parallel | Independent issues | Spawn focused subagents (respects context budget) |
Sequential is the default. Use --strategy batched or --strategy parallel to override.
--max-cycles (default: 6)**AL CYCLE #6 – Escalation**
### Status
Unable to fully resolve this issue within 6 cycles.
### What Was Accomplished
- [List of completed work]
### Remaining Blockers
- [What prevented resolution]
### Recommendation
[Specific guidance for human to unblock]
---
*Automated by AIWG Al — human intervention recommended*
Uses mcp__gitea__* tools for:
mcp__gitea__list_repo_issues — fetch issuesmcp__gitea__get_issue_by_index — read issue detailsmcp__gitea__get_issue_comments_by_index — read threadmcp__gitea__create_issue_comment — post cycle statusmcp__gitea__edit_issue — update labels/statusUses gh CLI for equivalent operations:
gh issue list — fetch issuesgh issue view N — read issue detailsgh issue comment N — post cycle statusgh issue close N — close resolved issues| Component | How Used |
|-----------|----------|
| /ralph | Core loop engine (internal) |
| /issue-list | Fetch and filter issues |
| /issue-comment | Post cycle status comments |
| /issue-close | Close resolved issues |
| /issue-sync | Link commits to issues |
| mcp__gitea__* | Gitea API access |
--max-cycles — don't loop forever--interactive mode — pause between issues for human go/no-gocompletion:
required:
- implementation_complete: true
- tests_pass: true
- thread_feedback_addressed: true
optional:
- documentation_updated: if_applicable
- pr_created: if_branch_per_issue
- issue_closed: if_interactive_approved
/address-issues 17 18 19
/address-issues --filter "status:open label:bug"
/address-issues 17 --interactive --branch-per-issue --max-cycles 8
/address-issues --all-open --max-cycles 4
/address-issues --all-open --guidance "Focus on security bugs, skip feature requests"
/address-issues --interactive
/address-issues 17 18 19 --guidance "These are all related to the auth refactor, address them as a batch"
This skill orchestrates the following corpus skills per issue:
/address-issues 17 18 19
│
├── For each issue:
│ ├── issue-list — fetch issue details and comments
│ ├── ralph — execute work loop
│ │ ├── Cycle N: do work
│ │ │ └── issue-comment — post structured status to thread
│ │ ├── scan thread for feedback (incorporate next cycle)
│ │ └── repeat until resolved or max-cycles reached
│ ├── issue-sync — link commits to issue
│ └── issue-close — close if resolved
└── aggregate report
data-ai
Report which research-corpus radar sidecars are overdue for refresh. Computes staleness (days since last refresh vs the cadence window) for every radar, sorted most-overdue-first. Runs via `aiwg corpus radar-status`.
data-ai
Aggregate research-corpus radar sidecars into a corpus or per-cluster freshness report — totals, overdue count, per-cluster / per-GRADE / per-trajectory breakdowns, an overdue table, and per-radar rationale snippets. Runs via `aiwg corpus radar-report`.
testing
Scaffold radar/freshness sidecars for research-corpus REFs. Pulls title/authors from the citation sidecar and GRADE from the analysis doc, defaults the refresh cadence from GRADE and the cluster from a corpus-local map, and stamps documentation/radar/REF-XXX-radar.md. Runs via `aiwg corpus radar-init`.
data-ai
Compute an entity's publication trajectory — per-year paper counts, topic drift, hot-streak detection (≥3 consecutive A-grade years), and career phase. Runs via `aiwg corpus profile-temporal`.