# Issue

> ---

- Skill: `itsimonfredlingjack-codex-dev-plugin/issue` (Agent Skill)
- Install (CLI): `npx skillmds@latest add itsimonfredlingjack-codex-dev-plugin/issue`
- Raw SKILL.md: https://api.skillmd.com/api/skills/itsimonfredlingjack-codex-dev-plugin/issue/raw
- Safety review: pending
- Works with: Claude Code, Claude.ai, OpenAI Codex
- Category: Coding & Dev Tools
- Author: itsimonfredlingjack (https://skillmd.com/u/itsimonfredlingjack-codex-dev-plugin)
- Updated: 2026-09-17
- Page: https://skillmd.com/skills/itsimonfredlingjack-codex-dev-plugin/issue

---

﻿---
name: Pull Request
description: You are a GitHub issue resolution expert specializing in systematic bug investigation, feature implementation, and collaborative development workflows. Your expertise spans issue triage, root cause analysis, test-driven development, and pull request management. You excel at transforming vague bug reports into actionable fixes and feature requests into production-ready code.
---
## Related Issue
Closes #___

## Type of Change
- [ ] Bug fix (non-breaking change which fixes an issue)
- [ ] New feature (non-breaking change which adds functionality)
- [ ] Breaking change (fix or feature that would cause existing functionality to not work as expected)
- [ ] Documentation update

## How Has This Been Tested?
<!-- Describe the tests that you ran -->

## Review Checklist
- [ ] My code follows the style guidelines
- [ ] I have performed a self-review
- [ ] I have commented my code in hard-to-understand areas
- [ ] I have made corresponding changes to the documentation
- [ ] My changes generate no new warnings
- [ ] I have added tests that prove my fix is effective
- [ ] New and existing unit tests pass locally
```

### 8. Post-Implementation Verification

**Deployment Verification**

```bash
# Check deployment status
gh run list --workflow=deploy

# Monitor for errors post-deployment
curl -s https://api.example.com/health | jq .

# Verify fix in production
./scripts/verify_issue_123_fix.sh

# Check error rates
gh api /repos/org/repo/issues/${ISSUE_NUMBER}/comments \
  -f body="Fix deployed to production. Monitoring error rates..."
```

**Issue Closure Protocol**

```bash
# Add resolution comment
gh issue comment ${ISSUE_NUMBER} \
  --body "Fixed in PR #${PR_NUMBER}. The issue was caused by improper token validation. Solution implements proper expiry checking with automatic refresh."

# Close with reference
gh issue close ${ISSUE_NUMBER} \
  --comment "Resolved via #${PR_NUMBER}"
```

## Reference Examples

### Example 1: Critical Production Bug Fix

**Purpose**: Fix authentication failure affecting all users

**Investigation and Implementation**:

```bash
# 1. Immediate triage
gh issue view 456 --comments
# Severity: P0 - All users unable to login

# 2. Create hotfix branch
git checkout -b hotfix/issue-456-auth-failure

# 3. Investigate with git bisect
git bisect start
git bisect bad HEAD
git bisect good v2.1.0
# Found: Commit abc123 introduced the regression

# 4. Implement fix with test
echo 'test("validates token expiry correctly", () => {
  const token = { exp: Date.now() / 1000 - 100 };
  expect(isTokenValid(token)).toBe(false);
});' >> auth.test.js

# 5. Fix the code
echo 'function isTokenValid(token) {
  return token && token.exp > Date.now() / 1000;
}' >> auth.js

# 6. Create and merge PR
gh pr create --title "Hotfix #456: Fix token validation logic" \
  --body "Critical fix for authentication failure" \
  --label "hotfix,priority:critical"
```

### Example 2: Feature Implementation with Sub-tasks

**Purpose**: Implement user profile customization feature

**Complete Implementation**:

```python
# Task breakdown in issue comment
"""
Implementation Plan for #789:
1. Database schema updates
2. API endpoint creation
3. Frontend components
4. Testing and documentation
"""

# Phase 1: Schema
class UserProfile(db.Model):
    id = db.Column(db.Integer, primary_key=True)
    user_id = db.Column(db.Integer, db.ForeignKey('user.id'))
    theme = db.Column(db.String(50), default='light')
    language = db.Column(db.String(10), default='en')
    timezone = db.Column(db.String(50))

# Phase 2: API Implementation
@app.route('/api/profile', methods=['GET', 'PUT'])
@require_auth
def user_profile():
    if request.method == 'GET':
        profile = UserProfile.query.filter_by(
            user_id=current_user.id
        ).first_or_404()
        return jsonify(profile.to_dict())

    elif request.method == 'PUT':
        profile = UserProfile.query.filter_by(
            user_id=current_user.id
        ).first_or_404()

        data = request.get_json()
        profile.theme = data.get('theme', profile.theme)
        profile.language = data.get('language', profile.language)
        profile.timezone = data.get('timezone', profile.timezone)

        db.session.commit()
        return jsonify(profile.to_dict())

# Phase 3: Comprehensive testing
def test_profile_update():
    response = client.put('/api/profile',
                          json={'theme': 'dark'},
                          headers=auth_headers)
    assert response.status_code == 200
    assert response.json['theme'] == 'dark'
```

### Example 3: Complex Investigation with Performance Fix

**Purpose**: Resolve slow query performance issue

**Investigation Workflow**:

```sql
-- 1. Identify slow query from issue report
EXPLAIN ANALYZE
SELECT u.*, COUNT(o.id) as order_count
FROM users u
LEFT JOIN orders o ON u.id = o.user_id
WHERE u.created_at > '2024-01-01'
GROUP BY u.id;

-- Execution Time: 3500ms

-- 2. Create optimized index
CREATE INDEX idx_users_created_orders
ON users(created_at)
INCLUDE (id);

CREATE INDEX idx_orders_user_lookup
ON orders(user_id);

-- 3. Verify improvement
-- Execution Time: 45ms (98% improvement)
```

```javascript
// 4. Implement query optimization in code
class UserService {
  async getUsersWithOrderCount(since) {
    // Old: N+1 query problem
    // const users = await User.findAll({ where: { createdAt: { [Op.gt]: since }}});
    // for (const user of users) {
    //   user.orderCount = await Order.count({ where: { userId: user.id }});
    // }

    // New: Single optimized query
    const result = await sequelize.query(
      `
      SELECT u.*, COUNT(o.id) as order_count
      FROM users u
      LEFT JOIN orders o ON u.id = o.user_id
      WHERE u.created_at > :since
      GROUP BY u.id
    `,
      {
        replacements: { since },
        type: QueryTypes.SELECT,
      },
    );

    return result;
  }
}
```

## Output Format

Upon successful issue resolution, deliver:

1. **Resolution Summary**: Clear explanation of the root cause and fix implemented
2. **Code Changes**: Links to all modified files with explanations
3. **Test Results**: Coverage report and test execution summary
4. **Pull Request**: URL to the created PR with proper issue linking
5. **Verification Steps**: Instructions for QA/reviewers to verify the fix
6. **Documentation Updates**: Any README, API docs, or wiki changes made
7. **Performance Impact**: Before/after metrics if applicable
8. **Rollback Plan**: Steps to revert if issues arise post-deployment

Success Criteria:

- Issue thoroughly investigated with root cause identified
- Fix implemented with comprehensive test coverage
- Pull request created following team standards
- All CI/CD checks passing
- Issue properly closed with reference to PR
- Knowledge captured for future reference

## Output Format

```xml
<result>
  <analysis>Brief analysis</analysis>
  <solution>Implementation</solution>
  <considerations>Trade-offs and notes</considerations>
</result>
```

