gh-issue-resolver
Skill7 starsChanged 21 days agoMITView on GitHub
Implement and verify a fix for a GitHub Issue whose response plan has already been posted as a comment by gh-issue-planner. Creates a feature branch, applies the agreed plan, runs tests, and opens a Pull Request. Use when the user asks to implement/fix/resolve a planned GitHub Issue. Triggers include requests such as Issueを実装して / Issueを修正して / Issueを対応して, implement issue #N, fix issue #N, resolve issue #N, work on issue #N. Prerequisite: an agreed plan comment must exist on the issue (run gh-issue-planner first if not).
- Commits and pushes
2 other projects use a version of this.
Adopted by
Most recently taken up by
- northraystudio/marudaword for word, first seen Oct 22, 2026
- tarasinghrajput/Anukar-skillstheir own version, first seen Feb 21, 2026
Other versions2 projects use a version of this.
Word for word · 1
- northraystudio/maruda★ 7100% same
Edited · 0
None found.
Wrote their own version · 1
- tarasinghrajput/Anukar-skills★ 7same name
How matches are found. Word for word: the exact same text. Edited: shares passages with this file (“99% same” means 99% of its five-word phrases also appear here; 10% or more counts). Their own version: similar meaning, or, weakest, the same name. We can’t tell which project had it first. Projects are counted among the 200 most-starred candidates, and mentions are links to the repository we found, up to 50 per site, so both counts are a floor.
In this repository13 other files it gives its agents.
- data-validationSkill
- dependency-auditSkill
- gh-batch-runnerSkill
- gh-issue-drafterSkill
- gh-issue-plannerSkill
- progress-dashboardSkill
- report-to-issuesSkill
- rule-proposerSkill
- sakuda-triageSkill
- setupSkill
- software-evaluationSkill
- spec-docSkill
- vulnerability-scanSkill
The file
Show its rules and text
We split this skill into the rules it gives an agent
25 rules. About 0 are common, 14 are distinctive, and 11 are very specific to this project.
≈0
Common · estimate
Many files like this have a rule of this kind.
≈14
Distinctive · estimate
This author's own choices. Worth a look.
11
Very specific
Tied to their project's names, files or tools. Probably skip.
- Common
- Distinctive
- Very specific
- could be automatic: a setting could enforce it
- Very specific: line 15
If no such comment exists, stop and direct the user to run gh-issue-planner first.
- Very specific: line 21
Run the following command (replace <id> with the issue number):
- Distinctive: line 29
Treat that comment as the agreed plan and extract the 対応方針 (Approach) / どこまで作るか / 影響範囲 (Impact Scope) / 実装方法 (Implementation Steps) …
- Very specific: line 33
If no such comment exists, abort with a message asking the user to run gh-issue-planner first.
- Very specific: line 34
If the plan has no どこまで作るか section (an older agreed plan), do not guess one — ask the user to re-run gh-issue-planner so how far to build …
- Very specific: line 64
All implementation work (Steps 3–4) is performed inside the worktree directory ../<branch-name>.
- Distinctive: line 68
Before writing any code, check the agreed どこまで作るか against what you now see in the worktree.
- Distinctive: line 75
Keep everything listed under 削らないもの, however little is built
- Distinctive: line 77
Run existing tests after each logical change to catch regressions early
- Distinctive: line 78
Add or update tests to cover the changed behavior
- Very specific: line 79
If the agreed plan turns out to be infeasible or incomplete, stop and return to gh-issue-planner rather than silently expanding the scope …
- Distinctive: line 89
If tests fail, diagnose and fix before proceeding.
- Very specific: line 99
Treat a regression-class FAIL exactly like a failing test: fix it now, do not proceed with it outstanding.
- Distinctive: line 104
After tests pass, remove the worktree and switch the main working tree to the feature branch:
- Distinctive: line 118
Run the application in the normal development environment and verify the fix on screen.
- Distinctive: line 149
Start with the basics:
- Distinctive: line 167
Run every skill whose triggers fire.
- Very specific: line 171
Run each selected skill against the changed scope, passing <base-ref> from Step 2 as the baseline so attribution is possible.
- Very specific: line 230
If new regression findings appear, they count toward the same budget.
- Distinctive: line 239
Never spend the budget re-attempting the same fix.
- Very specific: line 272
If the user agrees, hand the findings to report-to-issues.
- Very specific: line 276
When the loop cannot close, stop and return to gh-issue-planner.
- Distinctive: line 291
Leave the branch and the PR in place — the planner needs the work to reason about.
- Distinctive: line 332
Never skip or weaken failing tests.
- Distinctive: line 334
Prefer minimal, upstream fixes over downstream workarounds
≈ “Common” is an estimate: at least 1 in 5 of the 350,495 skill files we read have a rule of the same kind, not the same words. “Very specific” is our guess from the words: it names a file, a command, a setting or the project itself.
Files
GitHub Issue Resolver
Overview
Implement and verify a fix for a GitHub Issue, starting from the agreed response plan that gh-issue-planner has already posted as a comment on the issue. This skill creates a feature branch, uses a git worktree as a temporary implementation sandbox, runs tests, opens a Pull Request, and verifies the fix against the original issue.
Prerequisites
- The target issue must have an agreed plan comment previously posted by
gh-issue-planner, identified by the HTML marker<!-- gh-issue-planner:agreed-plan -->near the end of the comment body. - If no such comment exists, stop and direct the user to run
gh-issue-plannerfirst. Do not improvise an unagreed plan in this skill.
Workflow
Step 1: Fetch the Issue and Agreed Plan
Run the following command (replace <id> with the issue number):
gh issue view <id> --json number,title,body,labels,state,url,commentsFrom the comments array:
- Locate the most recent comment whose body contains the marker
<!-- gh-issue-planner:agreed-plan -->. - Treat that comment as the agreed plan and extract the 対応方針 (Approach) / どこまで作るか / 影響範囲 (Impact Scope) / 実装方法 (Implementation Steps) sections. The plan is written in the user's language, so find each section by meaning, not by the Japanese heading — those are only the template's names.
- If no such comment exists, abort with a message asking the user to run
gh-issue-plannerfirst. - If the plan has no どこまで作るか section (an older agreed plan), do not guess one — ask the
user to re-run
gh-issue-plannerso how far to build is agreed first. The plan is written in the user's language, so look for the section by meaning (e.g. "How far to build"), not by the Japanese heading string.
Step 2: Branch and Worktree Setup
Resolve <base-ref> first — everything downstream (the branch, the PR's base, and the
verification baseline in Step 8) is measured against it:
| Flow | <base-ref> |
| individual (default) | the integration branch recorded in CLAUDE.md, falling back to the default branch |
| stack | the branch of the Issue this one depends on |
| batch | the epic branch, passed in by gh-batch-runner |
# 1. Create a branch from <base-ref> (without switching the main working tree)
git branch <branch-name> <base-ref>
# Examples: fix/42-add-timeout-to-fetch feat/15-user-export-api
# 2. Create an isolated worktree from that branch
git worktree add ../<branch-name> <branch-name>Branch naming convention:
- Bug fixes:
fix/<id>-<short-description> - Features:
feat/<id>-<short-description> - Refactors:
refactor/<id>-<short-description>
All implementation work (Steps 3–4) is performed inside the worktree directory ../<branch-name>. The main working tree stays on its current branch throughout.
Step 3: Implementation
Before writing any code, check the agreed どこまで作るか against what you now see in the
worktree. If an earlier item of the check before building turns out to be enough (the codebase already has it, the
standard library covers it, one line does it), write no code and return to
gh-issue-planner with what you found — どこまで作るか is part of the agreement, so building
less is a plan change, not an implementation shortcut.
Apply the changes defined in the agreed plan inside the worktree directory. Follow these rules:
- Keep everything listed under 削らないもの, however little is built
- Make minimal, focused changes — do not scope-creep beyond the agreed plan
- Run existing tests after each logical change to catch regressions early
- Add or update tests to cover the changed behavior
- If the agreed plan turns out to be infeasible or incomplete, stop and return to
gh-issue-plannerrather than silently expanding the scope here
Step 4: Test Verification
# Run tests relevant to the changed area (inside the worktree directory)
# Ensure no regressions in existing tests
# Verify new tests passIf tests fail, diagnose and fix before proceeding. Do not skip failing tests.
If the change is data-related (see the trigger list in Step 8.1), also run
data-validation here — inside the worktree, while the main working tree still holds the
base branch and attribution is cheapest:
/maruda:data-validation <changed-data-scope> # baseline: <base-ref>Treat a regression-class FAIL exactly like a failing test: fix it now, do not proceed with
it outstanding. Step 8 re-runs the check as the final gate.
Step 5: Teardown Worktree and Switch to Branch
After tests pass, remove the worktree and switch the main working tree to the feature branch:
# Remove the worktree — the branch and its commits are preserved
git worktree remove ../<branch-name>
# Switch the main working tree to the feature branch
git checkout <branch-name>The main working tree now reflects the implemented changes.
Step 6: Visual Verification
Run the application in the normal development environment and verify the fix on screen. Confirm the fix addresses the acceptance criteria in the original issue.
Step 7: Create a Pull Request
gh pr create --base <base-ref> --title "<type>(#<id>): <short description>" --body "$(cat <<'EOF'
## Summary
<What was changed and why — reference the issue>
Closes #<id>
## どこまで作るか
<copied verbatim from the agreed plan: 結論 / 作らないもの / 削らないもの>
## Changes
- <file>: <what changed>
- <file>: <what changed>
## Testing
- [ ] Existing tests pass
- [ ] New tests added for changed behavior
- [ ] Manual verification completed
EOF
)"Step 8: Verify (autonomous)
Verification is not a suggestion to the user — it is work this skill performs. Re-run the diagnosis, read the result, and fix what this change broke, without waiting to be asked.
Start with the basics:
- Re-read the issue description and acceptance criteria — does the implementation fully address them?
- Run the full test suite — no regressions introduced
Then run the autonomous verification loop below.
8.1 Decide which diagnoses to re-run
Re-run a diagnostic skill when any of its triggers is present in the diff:
| Skill | Re-run when the diff touches |
data-validation | migrations, DDL, schema files, ORM models/entities, serializers/DTOs, queries, fixtures/seeds/factories, import-export or ETL code, validation rules, or any column/field rename or type change |
vulnerability-scan | the issue originated from vulnerability-scan, or the diff touches auth, input handling, queries, file paths, outbound requests, or headers/cookies |
dependency-audit | the issue originated from dependency-audit, or the diff touches a dependency manifest or lockfile (package.json, *.lock, pnpm-lock.yaml, go.mod, pyproject.toml, requirements*.txt, Gemfile, composer.json, Cargo.toml, …), workspace config (pnpm-workspace.yaml, go.work, …), or a Dockerfile / image reference |
software-evaluation | the issue originated from software-evaluation |
Run every skill whose triggers fire. If none fire, skip to 8.5.
8.2 Run the diagnosis
Run each selected skill against the changed scope, passing <base-ref> from Step 2 as the
baseline so attribution is possible. The baseline is always what this branch was cut from —
in a batch that is the epic branch, so a finding that already fails there is pre-existing for
this Issue:
/maruda:data-validation <changed-data-scope> # baseline: <base-ref>
/maruda:vulnerability-scan <changed-path>
/maruda:dependency-audit <changed-path> # run on <base-ref> and on HEAD in the same session
/maruda:software-evaluation <changed-path>dependency-audit has no baseline flag: run it on <base-ref> (the main working tree, or a
temporary worktree of it) and on this branch back to back in one session, the second run
with --skip-db-update, so both runs use the same vulnerability database (check that the two
reports show the same DB UpdatedAt). An advisory present in both is pre-existing. One only on
this branch is a regression only if the diff (git diff <base-ref>...HEAD) adds or changes
that package@version in a lockfile or an image reference; otherwise it is pre-existing — an
advisory published between the two runs. The rule is the same whatever found it (Found by):
--skip-db-update fixes Trivy's database only, while pnpm audit / npm audit query the
registry on every run. A target the audit could not run is environmental.
data-validation writes no file in this mode — read its session output directly. Parse the
fixed header block it emits:
<!-- data-validation:result -->
RESULT: PASS | WARN | FAILand its attribution table:
<!-- data-validation:attribution -->
| ID | Class | Basis |8.3 Classify every finding before touching anything
| Class | Meaning | Action |
| regression | Passes on the base, fails now — this change caused it | Fix autonomously (8.4) |
| pre-existing | Fails on the base too | Do not fix. Collect for 8.6 |
| environmental | Fixture missing, tool absent, connection unavailable | Do not fix. Report in 8.6 |
| unknown | No baseline was available | Do not fix. Treat as pre-existing |
Only regression is in scope. Fixing a pre-existing finding here is scope creep, and it
buries an unrelated defect inside this PR's diff.
8.4 Fix regressions autonomously — bounded loop
For each regression finding, in severity order:
- Confirm the fix stays inside the agreed plan's 影響範囲. If it cannot, stop immediately and go to 8.7 — do not widen the scope on your own authority.
- Apply the minimal upstream fix. Follow the finding's Remediation direction when given. Fix the writer, not the contract — loosening a constraint, deleting an assertion, or relaxing a threshold to make a check pass is never an acceptable fix.
- Re-run the affected tests, then re-run the diagnosis from 8.2.
- If new
regressionfindings appear, they count toward the same budget.
Attempt budget: 3 iterations of the whole loop. Count an iteration each time you return to 8.2 after applying fixes. Then:
- All regressions cleared → continue to 8.5
- Budget exhausted with regressions outstanding → stop and go to 8.7
- A fix would require leaving the agreed plan's impact scope → stop immediately and go to 8.7
Never spend the budget re-attempting the same fix. If two consecutive iterations produce the same finding with the same remediation, the plan is wrong — go to 8.7 now rather than burning the third attempt.
8.5 Update the PR
Amend the PR body with what verification found and what was fixed in response, so the autonomous edits are visible to the reviewer rather than buried in the commit log:
## Verification
- Full test suite: pass
- data-validation: FAIL → PASS (2 regressions fixed: D-01, D-03)
- vulnerability-scan: not triggered
- dependency-audit: complete — no new advisories (DB 2026-11-05)8.6 Hand off what is out of scope
pre-existing and environmental findings are real, and dropping them silently is how they
survive forever. Report them, and offer to file them — but do not create Issues without the
user's confirmation:
Findings outside this change's scope (not fixed here):
[pre-existing] D-02 users.email is empty on 3.2% of rows
[pre-existing] D-04 2 future-dated created_at values
[environmental] D-05 payments.yml is not loaded by the test setup
Register these as GitHub Issues? (report-to-issues)If the user agrees, hand the findings to report-to-issues.
8.7 Stop conditions — return to the planner
When the loop cannot close, stop and return to gh-issue-planner. Do not merge, do not
mark the issue resolved, and do not paper over the failure:
⛔ Verification did not converge for Issue #<id>.
Outstanding regressions:
D-01 orders.status contains values outside the declared enum (3 attempts)
Reason: the fix requires changing internal/model/order.go, which is outside the
agreed plan's 影響範囲 (db/migrations/ only).
The agreed plan needs revision. Re-run gh-issue-planner on Issue #<id>.Leave the branch and the PR in place — the planner needs the work to reason about.
8.8 Report completion
✅ Implementation complete and verified for Issue #<id>.
Tests: pass | data-validation: PASS | 2 regressions fixed during verificationThis closes the improvement cycle loop — and closes it with the fix already applied, not with a suggestion that someone re-run the diagnosis later.
Step 9: Cleanup (on explicit user instruction only)
Do NOT run this step automatically. Execute only when the user explicitly requests cleanup (e.g., "ブランチを削除して", "マージしたので片付けて", "clean up the branch").
Typical trigger: the PR has been merged and the user is ready to discard the feature branch.
# Switch back to the default branch
git checkout main # or master / trunk as appropriate
# Delete the local branch (-d guards against unmerged changes)
git branch -d <branch-name>
# Prune stale remote-tracking refs if the remote branch was already deleted
git fetch --pruneKey Principles
- Never start implementation without an agreed plan comment posted by
gh-issue-planner <base-ref>is one decision made once (Step 2) and reused for the branch, the PR base and the verification baseline — never mix two of them- Stay strictly within the agreed plan — no scope creep
- Verify autonomously, remediate only regressions. Re-running the diagnosis and fixing what this change broke is this skill's job, not a suggestion handed back to the user. What this change did not break is not this skill's job — attribution is what separates the two
- The autonomy is bounded, not open-ended: 3 loop iterations, and the agreed plan's 影響範囲
is a hard wall. Hitting either boundary means returning to
gh-issue-planner, never widening the scope unilaterally - Never skip or weaken failing tests; fix the root cause instead
- Never relax a constraint, threshold, or assertion to make a check pass — fix the writer
- Prefer minimal, upstream fixes over downstream workarounds
- The worktree is a temporary sandbox — remove it after tests pass (Step 5), before visual verification
- Never delete the feature branch without explicit user instruction — cleanup (Step 9) happens only after the user confirms the PR is merged and ready to discard
Does it work?
Reviews from people and from AI agents that ran it: what they used it for, and whether it worked.
No reviews yet
People and AI agents can review whether this works in practice. Say what you used it for, and whether it worked.
- It worked
- Partly
- It didn't
Using an agent? It can post a review for you after it has run the file: the MCP tool registry_write, action report. How to connect one.
Your trail
Files you open will collect here, so you can find them again.
Open two or more, and you can remix the rules you like from each into one list. Kept in this browser only.
Now do this for your own.
Bring your CLAUDE.md, AGENTS.md or skills. agentleFS shows which of your rules are common, which are yours and which only fit one project, and keeps one version your agents read everywhere.

