Resolve GitHub Issues
Execute issue resolution workflow using isolated worktrees, TDD methodology, and agent collaboration.
Context
- Current git status: !
git status - Current branch: !
git branch --show-current - Existing worktrees: !
git worktree list - Open issues: !
gh issue list --state open --limit 10 - GitHub authentication: !
gh auth status
Requirements Summary
Use isolated worktrees to avoid disrupting main development. Follow TDD cycle (red → green → refactor) with agent support. Reference issues in commits using auto-closing keywords. See references/requirements.md for protected PR workflow and commit standards.
Phase 1: Issue Selection and Worktree Setup
Goal: Select target issue and prepare isolated development environment.
Actions:
- Review open issues from context and select based on priority and
$ARGUMENTS - Check existing worktrees to determine if reuse is possible
- Use the EnterWorktree tool with a descriptive name (e.g.,
fix-456-auth-redirect) to create an isolated session - Rename the auto-generated branch to match conventions: run
git branch -m <type>/<issue>-<description>(seereferences/workflow-details.mdfor naming) - Verify issue acceptance criteria and dependencies
Phase 2: TDD Implementation
Goal: Implement fix using test-driven development with agent collaboration.
Actions:
- Plan implementation approach and assess architectural impact
- Write failing tests that verify issue is resolved (RED phase)
- Implement minimal code to make tests pass (GREEN phase)
- Refactor while keeping tests green (REFACTOR phase)
- Run quality validation commands to keep the TDD cycle honest (see
references/workflow-details.mdfor project-specific checks)./github:create-prre-runs the full gate in Phase 3 and is the authoritative pre-PR check.
Phase 3: PR Creation and Cleanup
Goal: Hand PR creation to /github:create-pr so the quality gate and the review loop run. Cleanup happens only after the merge, which may be many turns later.
Actions:
- Push branch to remote with
git push -u origin <branch-name> - CRITICAL: Do NOT call
gh pr createhere. InvokeSkill("github:create-pr", "<issue reference>")— e.g.Skill("github:create-pr", "Closes #456"). It is the plugin's only PR-creating path and owns the quality/security gate, the auto-closing-keyword linkage, the non-default-branch warning, and the mandatory/github:review-prhandoff. Seereferences/pr-creation-handoff.mdfor the full contract. Creating the PR directly skips all of it.- Append
--draftto the arguments if the fix requires further feedback before review - Append
--no-monitoronly when the user explicitly opts out of the review loop
- Append
- This skill does not resume here.
/github:create-prreports the PR URL, and/github:review-prthen owns the PR for the rest of its life: a persistent Monitor spanning turns, the triage/fix/push rounds, and the merge decision it asks the user to make. Do NOT wait inline, do NOT re-report the URL, and do NOT run Phase 4 speculatively.
Phase 4: Post-Merge Cleanup (later turn, fallback)
Trigger: The PR from Phase 3 has actually merged — normally a later turn, after /github:review-pr completed its merge decision. /github:review-pr's closeout now owns the post-merge cleanup (worktree removal via ExitWorktree action:"remove", switch to main, sync with origin), so this Phase runs only as a fallback when that cleanup was skipped: the user chose "Don't merge", an interrupt left the worktree behind, or this is a fresh session that cannot ExitWorktree the worktree created by an earlier session. Never assume the worktree is gone — verify first.
Actions:
- Verify the merge with
gh pr view <PR#> --json state -q .statereturningMERGED; never assume. - Check
git worktree listwhether the issue worktree still exists. If/github:review-pralready removed it, skip straight togit fetch --prune. - If it persists: CRITICAL: confirm still on the issue branch before
ExitWorktree action:"remove". If checkout drifted ontomain/develop, stop — removing would delete a long-lived branch. Remote head may already be gone; that is fine. - Use the ExitWorktree tool with action "remove" to clean up worktree and branch.
- If uncommitted changes exist, ExitWorktree refuses; confirm with the user before setting
discard_changes: true
- If uncommitted changes exist, ExitWorktree refuses; confirm with the user before setting
git fetch --pruneto sync remote-tracking branches.- Document resolution and any follow-up tasks
References
- Requirements:
references/requirements.md- Worktree setup, TDD, and commit standards - PR Creation Handoff:
references/pr-creation-handoff.md- Why PRs delegate to /github:create-pr - Workflow Details:
references/workflow-details.md- Issue selection, TDD cycle, agent collaboration - Quality Validation:
references/quality-validation.md- Node.js/Python validation commands (shared) - Examples:
references/examples.md- Commit message examples