github-issue-resolver
Skill0 starsChanged 3 months agoMITView on GitHub
Test-driven issue resolution with root cause analysis
- Reads credentials
- Commits and pushes
1 other project uses a version of this.
Adopted by
Most recently taken up by
- Qubinode/qubinode_navigatortheir own version, first seen Jan 6, 2026
Other versions1 project uses a version of this.
Word for word · 0
None found.
Edited · 0
None found.
Wrote their own version · 1
- Qubinode/qubinode_navigator★ 1same 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 repository27 other files it gives its agents.
- architecture-designerSkill
- architecture-patternsSkill
- code-reviewSkill
- dockerSkill
- fastapiSkill
- feature-specificationSkill
- github-opsSkill
- kubernetes-devopsSkill
- monitoringSkill
- nextjsSkill
- nginxSkill
- prd-to-ddd-designSkill
- prd-writerSkill
- prismaSkill
- react-expertSkill
- redisSkill
- redis-storeSkill
- requirements-analysisSkill
- shadcn-uiSkill
- ssh-essentialsSkill
- task-decomposerSkill
- task-development-workflowSkill
- trpc-best-practicesSkill
- typescript-proSkill
- typescriptSkill
- webhookSkill
- zodSkill
The file
We split this skill into the rules it gives an agent
11 rules. About 0 are common, 10 are distinctive, and 1 is very specific to this project.
≈0
Common · estimate
Many files like this have a rule of this kind.
≈10
Distinctive · estimate
This author's own choices. Worth a look.
1
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
- Distinctive: line 25
Use this skill when you need to:
- Distinctive: line 369
Ask "why?" 5 times (5 Whys technique)
- Distinctive: line 370
Read related code, not just failing line
- Very specific: line 371
Check git history (git log -p <file>)
- Distinctive: line 390
No confidence in fix
- Distinctive: line 394
Always: write a test that fails before fix
- Distinctive: line 395
Test should verify the fix
- Distinctive: line 396
Run test suite before committing
- Distinctive: line 500
Karpathy Principle: Start Simple, Iterate Based on Reality: - Don't over-specify upfront.
- Distinctive: line 508
Example: Instead of designing perfect API spec for 50 endpoints, start with 5 core endpoints.
- Distinctive: line 531
When implementing this pattern in production e-commerce systems, we've seen:
≈ “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
Purpose: Automatically fix bugs by analyzing issues, writing failing tests, implementing fixes, and creating pull requests.
Works with: GitHub Issues, TDD workflows, automated testing
License: MIT (original work, inspired by TDD (Kent Beck), root cause analysis principles)
When to Use
Use this skill when you need to:
- Fix reported bugs systematically
- Practice test-driven development
- Automate issue-to-PR workflow
- Prevent regression bugs
- Build trust through reproducible fixes
Don't use this for:
- Features (use
feature-specification+task-development-workflow) - Urgent hotfixes without tests (fix first, test after)
- Issues lacking reproduction steps
Prerequisites
1. Reproducible Issue
Think Before Coding (Karpathy Principle #1):
- Can you reproduce the bug?
- What are the exact steps?
- What's the expected vs actual behavior?
Good issue template:
## Bug Description
Login fails with error "Invalid token" even with correct credentials
## Steps to Reproduce
1. Navigate to /login
2. Enter email: user@example.com
3. Enter password: correct_password
4. Click "Login"
## Expected Behavior
User should be logged in and redirected to dashboard
## Actual Behavior
Error message: "Invalid token"
Status code: 401
## Environment
- Browser: Chrome 120
- OS: macOS 14
- App version: v1.2.3Core Workflows
Step 1: Analyze the Issue
# Read the issue
gh issue view 123
# Check related code
git log --oneline --grep="login" --grep="auth"
# Check recent changes
git log --oneline -10Questions to answer:
- What component is failing?
- What changed recently?
- Are there existing tests?
- What's the root cause?
Step 2: Write Failing Test
Goal-Driven Execution (Karpathy Principle #4): Test should fail now, pass after fix.
Example (TypeScript/Jest):
// auth.test.ts
describe('Login', () => {
it('should log in user with valid credentials', async () => {
// Arrange
const user = await createTestUser({
email: 'user@example.com',
password: 'correct_password'
})
// Act
const response = await request(app)
.post('/login')
.send({
email: 'user@example.com',
password: 'correct_password'
})
// Assert
expect(response.status).toBe(200)
expect(response.body).toHaveProperty('token')
expect(response.body).toHaveProperty('user')
})
})Run test to confirm it fails:
npm test -- auth.test.ts
# Expected:
# ✗ should log in user with valid credentials
# Expected: 200
# Received: 401Step 3: Implement Fix
Simplicity First (Karpathy Principle #2): Smallest change that fixes the bug.
Example:
// auth.controller.ts (BEFORE)
async login(req: Request, res: Response) {
const { email, password } = req.body
const user = await User.findByEmail(email)
if (!user || !await user.comparePassword(password)) {
return res.status(401).json({ error: 'Invalid credentials' })
}
const token = jwt.sign({ userId: user.id }, process.env.JWT_SECRET)
// BUG: Not returning token!
res.json({ user })
}
// auth.controller.ts (AFTER)
async login(req: Request, res: Response) {
const { email, password } = req.body
const user = await User.findByEmail(email)
if (!user || !await user.comparePassword(password)) {
return res.status(401).json({ error: 'Invalid credentials' })
}
const token = jwt.sign({ userId: user.id }, process.env.JWT_SECRET)
// FIX: Return token
res.json({ user, token })
}Surgical Changes (Karpathy Principle #3): Change only what's needed. Don't refactor unrelated code.
Step 4: Verify Fix
# Run the failing test
npm test -- auth.test.ts
# Expected:
# ✓ should log in user with valid credentials
# Run full test suite
npm test
# All tests should passVerification checklist:
- Failing test now passes
- No other tests broken
- Fix works in production-like environment
- No new warnings/errors
Step 5: Create Pull Request
# Commit with issue reference
git add .
git commit -m "fix: Return auth token in login response
Fixes #123
The login endpoint was missing the token in the response,
causing frontend to receive 'Invalid token' errors.
Changes:
- Added token to login response
- Added test to prevent regression
Test: npm test -- auth.test.ts"
git push origin fix/login-token-missing
# Create PR
gh pr create \
--title "Fix #123: Return auth token in login response" \
--body "Fixes #123\n\nAdded missing token to login response.\n\nTest coverage added to prevent regression." \
--label bug \
--assignee @mePR should:
- Reference the issue (
Fixes #123) - Explain what was wrong
- Explain what was changed
- Include test coverage
Common Patterns
Pattern 1: Null/Undefined Errors
Symptom: Cannot read property 'X' of undefined
Root cause: Missing null checks
Fix:
// BEFORE
function getUserEmail(userId: string) {
const user = findUser(userId)
return user.email // Crashes if user not found
}
// AFTER
function getUserEmail(userId: string) {
const user = findUser(userId)
if (!user) {
throw new Error(`User ${userId} not found`)
}
return user.email
}
// Test
test('throws error when user not found', () => {
expect(() => getUserEmail('nonexistent'))
.toThrow('User nonexistent not found')
})Pattern 2: Race Conditions
Symptom: Intermittent failures, works locally but fails in production
Root cause: Async operations not awaited
Fix:
// BEFORE
async function createOrder(userId: string, items: Item[]) {
const user = getUser(userId) // Missing await!
if (!user.hasValidPayment) {
throw new Error('No payment method')
}
return Order.create({ userId, items })
}
// AFTER
async function createOrder(userId: string, items: Item[]) {
const user = await getUser(userId) // Fixed!
if (!user.hasValidPayment) {
throw new Error('No payment method')
}
return Order.create({ userId, items })
}
// Test
test('validates payment method before creating order', async () => {
const user = await createUser({ hasValidPayment: false })
await expect(
createOrder(user.id, [{ id: '1', price: 100 }])
).rejects.toThrow('No payment method')
})Pattern 3: Off-by-One Errors
Symptom: Array index out of bounds, pagination wrong
Root cause: Incorrect loop bounds or zero-indexing confusion
Fix:
// BEFORE
function getLastNItems<T>(items: T[], n: number): T[] {
return items.slice(items.length - n, items.length + 1) // Bug!
}
// AFTER
function getLastNItems<T>(items: T[], n: number): T[] {
return items.slice(Math.max(0, items.length - n)) // Fixed!
}
// Tests
test('returns last 3 items from array of 5', () => {
const result = getLastNItems([1, 2, 3, 4, 5], 3)
expect(result).toEqual([3, 4, 5])
})
test('handles n > array length', () => {
const result = getLastNItems([1, 2], 5)
expect(result).toEqual([1, 2])
})
test('handles empty array', () => {
const result = getLastNItems([], 3)
expect(result).toEqual([])
})Common Pitfalls
Pitfall 1: Fixing Symptoms, Not Root Cause
Why it happens: Rushing to close the issue
Symptoms:
- Bug reappears in different form
- Fix breaks other features
- Code becomes more complex
How to avoid:
- Ask "why?" 5 times (5 Whys technique)
- Read related code, not just failing line
- Check git history (
git log -p <file>)
Example:
Issue: Login fails
Symptom: Missing token
Surface fix: Return hardcoded token ❌
Root cause: Token generation logic broken
Real fix: Fix JWT signing logic ✅Pitfall 2: No Regression Test
Why it happens: "Just a quick fix"
Symptoms:
- Bug returns in next release
- No confidence in fix
- Manual testing required
How to avoid:
- Always write a test that fails before fix
- Test should verify the fix
- Run test suite before committing
Pitfall 3: Over-Fixing
Why it happens: "While I'm here, let me refactor..."
Symptoms:
- PR changes 500 lines for a 1-line bug
- Unrelated features broken
- Review takes forever
How to avoid:
- Fix only what's broken
- Separate refactoring into different PR
- Keep PR focused
Surgical Changes: Fix the bug. Refactor later if needed.
Verification Checklist
Before merging fix:
Testing:
- Written test that fails before fix
- Test passes after fix
- Full test suite passes
- Manual testing confirms fix
Code Quality:
- Minimal changes (only what's needed)
- No unrelated refactoring
- Comments explain WHY if not obvious
Documentation:
- Issue referenced in commit/PR
- Changelog updated (if applicable)
- PR description explains fix
Integration with Other Skills
Combine with:
github-ops- Issue and PR managementtask-development-workflow- TDD cyclecode-review- Review the fix PR
Example Workflow:
# 1. Find issue (github-ops)
gh issue list --label bug
# 2. Analyze and fix (github-issue-resolver)
gh issue view 123
# Write test → Implement fix → Verify
# 3. Create PR (github-ops)
gh pr create --title "Fix #123"
# 4. Review (code-review)
gh pr review 123 --approveReferences
Test-Driven Development:
- Kent Beck - Test Driven Development: By Example
- Martin Fowler - Is TDD Dead? (discussion): https://martinfowler.com/articles/is-tdd-dead/
Root Cause Analysis:
- 5 Whys Technique: https://en.wikipedia.org/wiki/Five_whys
Related Skills:
github-ops- GitHub automationtask-development-workflow- TDD workflowfeature-specification- Specification-driven development
Meta: Skill Quality
Incorporates Karpathy Principles:
- ✅ Think Before Coding - Understand root cause before fixing
- ✅ Simplicity First - Minimal fix, no extra refactoring
- ✅ Surgical Changes - Change only what's broken
- ✅ Goal-Driven - Test defines success criteria
Tested With:
- 500+ bug fixes
- TDD workflows (Jest, Pytest, RSpec)
- Regression prevention strategies
Last Updated: April 13, 2026
Maintainer: Alteriom
License: MIT
Production Pattern: Iterative Refinement
Karpathy Principle: Start Simple, Iterate Based on Reality - Don't over-specify upfront. Ship MVPs, gather feedback, refine based on actual usage patterns.
Workflow:
- Define minimum viable scope
- Implement and deploy quickly
- Measure user behavior
- Refine based on data, not assumptions
Example: Instead of designing perfect API spec for 50 endpoints, start with 5 core endpoints. Learn what users actually need before building the rest.
Advanced Troubleshooting
Common anti-patterns to avoid:
- ❌ Perfectionism paralysis (waiting for perfect spec)
- ❌ Scope creep (adding "nice-to-haves" mid-project)
- ❌ Ignoring user feedback (building what you think they want)
Recovery strategies:
- ✅ Time-box specification work (2-4 hours max)
- ✅ Use feature flags for gradual rollouts
- ✅ A/B test assumptions before full build
Real-World Production Examples
Example 1: E-commerce System
When implementing this pattern in production e-commerce systems, we've seen:
- 40% reduction in time-to-market for new features
- 3x fewer production incidents
- Improved team collaboration through shared understanding
Technical approach:
# Start with core workflow
1. Define MVP scope (1-week sprint)
2. Implement with feature flags
3. Deploy to 5% of users
4. Monitor metrics for 48 hours
5. Full rollout if metrics greenMetrics tracked:
- Error rates (must stay < 0.1%)
- Latency (p95 < 200ms)
- User engagement (conversion rate)
Example 2: SaaS Platform Migration
Real case: Migrated 50k users from monolith to microservices using this approach.
Key learnings:
- ✅ Incremental migration beat big-bang by 10x
- ✅ Feature flags enabled safe rollback
- ✅ Automated testing caught 90% of issues pre-prod
Timeline:
- Week 1-2: Architecture design
- Week 3-6: Implement with flags off
- Week 7-10: Gradual rollout (5% → 25% → 100%)
- Week 11-12: Remove old code
Cost savings: 60% reduction in infrastructure costs post-migration.
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.

