원클릭으로
resolve-issue
// Resolve a GitHub issue end-to-end — explore, plan, implement, clean up, and open a draft PR.
// Resolve a GitHub issue end-to-end — explore, plan, implement, clean up, and open a draft PR.
Auto-merge a PR after it is marked ready-for-review, if the change is small, non-disruptive, and all checks pass.
Diagnose and fix failing CI on a PR. Capped at 3 attempts. Load repo-setup first.
Promote a draft PR to ready-for-review after CI passes and self-review is clean. Assigns reviewers and adds labels.
Clone or refresh a GitHub repo and prepare the working tree. Load this before any situation skill.
Triage and respond to comments on a PR. Fix if actionable, reply either way. Load repo-setup first.
Review a pull request. Self-fix on own PRs, post a review on others'. Load repo-setup first.
| name | resolve-issue |
| description | Resolve a GitHub issue end-to-end — explore, plan, implement, clean up, and open a draft PR. |
| license | Apache-2.0 |
| metadata | {"audience":"autonomous-agents"} |
Take an issue from "assigned" to "draft PR opened." Load repo-setup
first to get on a feature branch.
Default to shipping a draft PR. A best-effort first cut is more valuable than a "too big" comment. Other agents will review it, fix CI, and respond to feedback.
gh pr list --search "linked:issue:<number>" --repo <owner>/<repo> --json number,title,state,headRefName,url
If that returns nothing, also try:
gh api "repos/<owner>/<repo>/issues/<number>/timeline" --paginate \
--jq '[.[] | select(.event=="cross-referenced" and .source.issue.pull_request != null) | {number: .source.issue.number, state: .source.issue.state, title: .source.issue.title}]'
gh pr checkout <number>),
review what's done, and continue from there instead of starting
fresh. Load review skill to assess quality first.gh repo clone <other-owner>/<other-repo> ~/dev/<other-owner>/<other-repo> -- --depth=50
Only push changes to the repo where the fix belongs.references/investigation-protocol.md for the
full protocol.references/verification-harness.md.
Then run the project's test suite (see test discovery below).deslop skill — clean up AI noise.review skill — self-review. Fix issues and re-run deslop
until clean.Fixes #<number> in the message. Push.pr skill — open a draft PR. Be explicit about what's
complete vs. uncertain.Before pushing, check for conflicts with the default branch:
DEFAULT_BRANCH=$(gh repo view --json defaultBranchRef --jq .defaultBranchRef.name)
git fetch origin "$DEFAULT_BRANCH"
git rebase "origin/$DEFAULT_BRANCH"
If the rebase has conflicts:
git diff --name-only --diff-filter=U for conflicted files.<<<<<<<, =======,
>>>>>>>), understand both sides, and resolve.git add <resolved-file> then git rebase --continue.git rebase --abort and note it in the PR description.Never force-push to someone else's branch. On your own feature branch,
a rebase followed by git push --force-with-lease is acceptable.
Before committing, find and run the project's test suite. Check these locations in order and use the first match:
package.json (Node/JS/TS):
jq -r '.scripts.test // empty' package.json
Run with npm test, bun test, pnpm test, or yarn test
depending on the lockfile present.
Makefile / Justfile:
grep -E '^test[ :]' Makefile Justfile 2>/dev/null
Run with make test or just test.
Python (pytest / unittest):
test -f pytest.ini || test -f pyproject.toml || test -f setup.cfg
Run with pytest or python -m pytest.
Go:
test -f go.mod
Run with go test ./....
CI workflows (fallback):
grep -r 'run:.*test' .github/workflows/ 2>/dev/null | head -5
Extract the test command from the workflow file.
If no test command is found within 30 seconds of searching, skip and note "no test suite found" in the PR description. Don't spend more than 2 minutes on a failing test suite that's unrelated to your changes — note it and move on.
Reserve BLOCKED for genuine impossibility (missing auth, deleted repo, contradictory requirements). A best-effort draft PR is almost always better than blocking.