Fix GitHub Issue
SkillDev toolsUse when you have a GitHub Issue number or link and want it resolved end-to-end — reads the issue, locates the bug, applies a fix, writes tests, and opens a PR from the terminal.
Available today. Use it from your connected AI after setup.
No other account needed.
Connect ahel once, and every AI you use reads what you have installed.
Then ask your AI: use the Fix GitHub Issue skill
What this skill tells your AI
The instructions your AI receives, as published by drvoss/everything-copilot-cli in skills/development/fix-github-issue/SKILL.md and read by ahel’s review.
When to Use
- You have a GitHub Issue number and want to resolve it from scratch
- Debugging a reported bug with a clear reproduction case
- Picking up an issue from the backlog and implementing the fix
- Fast-track for "good first issue" or well-scoped bug reports
Differentiation from github-issue-triage: This skill fixes issues (code changes, tests,
PR). github-issue-triage is for organizing and classifying issues in bulk.
Prerequisites
- GitHub MCP server available (built-in to Copilot CLI)
- Write access to the repository for creating a branch and PR
ghCLI installed (for branch creation and PR fallback)
Workflow
1. Read the Issue
# Via Copilot MCP (structured data, no token needed):
# Tool: github-mcp-server-issue_read
# method: "get"
# owner: "my-org"
# repo: "my-app"
# issue_number: 123
# Also read any existing comments for additional context:
# Tool: github-mcp-server-issue_read
# method: "get_comments"
# owner: "my-org"
# repo: "my-app"
# issue_number: 123
Extract:
- Expected behavior vs actual behavior
- Reproduction steps
- Stack trace or error message (if present)
- Labels (bug/enhancement/docs)
2. Search for the Root Cause
# Search for the symbol, function, or error message mentioned in the issue
git --no-pager grep -n "functionNameFromIssue" -- "*.ts" "*.js"
# If it's an error message, search for where it's generated
git --no-pager grep -rn "the exact error string"
# Recent changes to the affected file
git --no-pager log --oneline -10 -- path/to/file.ts
3. Create a Dedicated Branch
$issueNumber = 123
$shortDesc = "fix-null-check-users-api"
git checkout -b "fix/issue-$issueNumber-$shortDesc"
4. Reproduce the Issue (Write a Failing Test First)
If the project has tests, write the test before fixing:
# Run existing tests to confirm baseline
npm test -- --testPathPattern="users"
# Write a failing test that demonstrates the bug
# (Edit the appropriate test file)
# Confirm test fails
npm test -- --testPathPattern="users" 2>&1 | Select-Object -Last 20
5. Implement the Fix
Make the minimal change to fix the root cause. Avoid unrelated cleanup in this commit.
# Verify tests pass after fix
npm test -- --testPathPattern="users"
# Run broader test suite
npm test
6. Commit with Issue Reference
git add -A
git commit -m "🐛 fix(users): handle null response when user not found
Fixes #123. The /api/users/:id endpoint was throwing a 500 error when the
user ID did not exist instead of returning 404. Added null check before
accessing user.profile."
7. Push and Open a PR
git push -u origin HEAD
# Open PR via gh CLI
gh pr create `
--title "fix: handle null user in /api/users/:id (closes #123)" `
--body "## Summary
Fixes #123
## Root Cause
The handler called \`user.profile.name\` without checking if \`user\` existed.
## Fix
Added early return with 404 response when user is not found.
## Testing
- Added unit test \`should return 404 when user not found\`
- All existing tests pass" `
--base main
Examples
Bug: API Returns 500 Instead of 404
Issue #89: GET /api/posts/999 returns 500 Internal Server Error
Expected: 404 Not Found
Actual: TypeError: Cannot read property 'title' of null
Copilot workflow:
issue_read→ get full issue contextgrep -n "Cannot read property"→ find where null is accessed- Create branch
fix/issue-89-null-post - Write test:
expect(response.status).toBe(404) - Fix: add
if (!post) return res.status(404).json({ error: 'Post not found' }) - Commit with
Fixes #89 - Open PR
Enhancement: Add Missing Field to API Response
Issue #102: Missing 'updatedAt' field in /api/users response
Expected: response includes updatedAt timestamp
Actual: field not present
Copilot workflow:
issue_read+get_comments→ clarify which endpoint and format- Search for the serializer/transformer function
- Add
updatedAtfield - Update API docs/types
- Commit with
Fixes #102
Tips
- Always read comments — the reporter or maintainers often add crucial context after filing
- Label check: if issue is labeled
needs-repro, ask for reproduction steps before fixing - Small PRs fix faster: keep fix PRs minimal — reference the issue for full context
- Use
Fixes #Nin commit: GitHub will auto-close the issue on merge - Check for duplicates: search for related issues before starting —
search_issueswith the error message
See Also
github-issue-triage— organize/classify issues in bulkcommit-workflow— craft the commit messagegithub-pr-workflow— manage the resulting PR- Inspired by: awesome-claude-code/resources/slash-commands/fix-github-issue
Signals
- GitHub stars
- 46
- Forks
- 11
- Last commit
- Aug 2026
ahel review
S4info
community integration — published by drvoss, not github
Automated review, not a security audit. Ruleset v1.
Advanced
- Catalog kind
- skill
- Gateway key
fix-github-issue-drvoss- Source
- github.com/drvoss/everything-copilot-cli