feat: add fix-issue skill for GitHub Issues#1
Conversation
GitHub-native equivalent of fix-ticket, replacing Jira with the gh CLI. Covers the same 9-phase pipeline (branch strategy, read issue, QA verify, research, plan, implement, review, QA check, commit/push, deploy monitor, GitHub handoff) with PR creation, issue labeling, and issue commenting. Co-Authored-By: Claude <noreply@anthropic.com>
Review Summary by QodoAdd fix-issue skill for GitHub-native bug-fix automation
WalkthroughsDescription• Adds fix-issue skill for GitHub-native bug-fix automation • Implements 9-phase pipeline: branch strategy, read issue, QA verify, research, plan, implement, review, QA check, commit/push, deploy monitor, GitHub handoff • Includes headless browser QA verification (pre-fix and post-fix) using playwright-cli • Adds GitHub configuration section to CONFIG.template.md for labels, reviewers, and assignees • Updates README with skill table entry and project structure documentation Diagramflowchart LR
User["User invokes<br/>/fix-issue 123"] --> Phase0["Phase 0:<br/>Branch Strategy"]
Phase0 --> Phase1["Phase 1:<br/>Read Issue"]
Phase1 --> Phase1_5["Phase 1.5:<br/>QA Verify<br/>Bug Reproduction"]
Phase1_5 --> Phase2["Phase 2:<br/>Research &<br/>Understand"]
Phase2 --> Phase3["Phase 3:<br/>Analyze & Plan"]
Phase3 --> Phase4["Phase 4:<br/>Implement Fix"]
Phase4 --> Phase5["Phase 5:<br/>Review<br/>3-5 Agents"]
Phase5 --> Phase5_5["Phase 5.5:<br/>QA Check<br/>Fix Verification"]
Phase5_5 --> Phase6["Phase 6:<br/>Commit & Push"]
Phase6 --> Phase7["Phase 7:<br/>Deploy Monitor"]
Phase7 --> Phase6_5["Phase 6.5:<br/>Worktree Merge<br/>if applicable"]
Phase6_5 --> Phase8["Phase 8:<br/>GitHub Handoff<br/>PR + Comment"]
Phase8 --> Phase9["Phase 9:<br/>Summary"]
Phase9 --> Done["Fix Complete"]
File Changes1. CONFIG.template.md
|
Code Review by Qodo
1. QA doc still Jira-based
|
| ## Verify Mode (Pre-Fix) | ||
|
|
||
| Goal: Reproduce the bug described in the Jira ticket using the browser. | ||
|
|
||
| 1. Navigate to the affected page | ||
| 2. Follow the reproduction steps from the ticket description | ||
| 3. Screenshot each step: `playwright-cli screenshot --filename=playwright-qa-screenshots/{ticket-id}-verify/NN-description.png` | ||
| 4. Check for JS errors: `playwright-cli console error` | ||
| 5. Look for the specific bug symptom described in the ticket |
There was a problem hiding this comment.
1. Qa doc still jira-based 🐞 Bug ✓ Correctness
skills/fix-issue/references/qa-integration.md still refers to “Fix-Ticket”, “Jira ticket”, and
{ticket-id} screenshot folders, which conflicts with fix-issue instructions that use GitHub
issue numbers and issue-{N} screenshot paths.
Agent Prompt
### Issue description
The QA reference doc for `fix-issue` is still written for `fix-ticket` (Jira) and uses `{ticket-id}` placeholders, which conflicts with the `fix-issue` skill’s screenshot naming (`issue-{N}`) and GitHub issue workflow.
### Issue Context
Users are instructed in `skills/fix-issue/SKILL.md` to rely on `references/qa-integration.md` for QA steps, so mismatched terminology/paths will cause incorrect execution and artifacts.
### Fix Focus Areas
- skills/fix-issue/references/qa-integration.md[1-5]
- skills/fix-issue/references/qa-integration.md[192-216]
- skills/fix-issue/SKILL.md[258-272]
ⓘ Copy this prompt and use it to remediate the issue with your preferred AI generation tools
| const { createBrowserClient } = await import('@supabase/ssr'); | ||
| const supabase = createBrowserClient('{SUPABASE_URL}', '{ANON_KEY}'); | ||
| const { error } = await supabase.auth.setSession({ | ||
| access_token: '${ACCESS_TOKEN}', | ||
| refresh_token: '${REFRESH_TOKEN}' | ||
| }); | ||
| if (error) throw error; | ||
| return 'session set'; | ||
| }" | ||
| ``` | ||
|
|
||
| **If the eval approach fails**, use the cookie approach instead: | ||
|
|
||
| ```bash | ||
| # For Supabase SSR (chunked cookies) | ||
| playwright-cli eval "() => { | ||
| const name = 'sb-{SUPABASE_REF}-auth-token'; | ||
| const encoded = btoa(JSON.stringify({ | ||
| access_token: '${ACCESS_TOKEN}', | ||
| refresh_token: '${REFRESH_TOKEN}' | ||
| })); | ||
| document.cookie = name + '.0=' + encodeURIComponent(encoded) + '; path=/; SameSite=Lax'; | ||
| // Clear stale chunks | ||
| for (let i = 1; i <= 5; i++) { | ||
| document.cookie = name + '.' + i + '=; path=/; expires=Thu, 01 Jan 1970 00:00:00 GMT'; | ||
| } | ||
| return 'cookies set'; | ||
| }" |
There was a problem hiding this comment.
2. Undefined supabase placeholders 🐞 Bug ⛯ Reliability
The new QA reference uses Supabase placeholders like {ANON_KEY} and {SUPABASE_REF} without
defining where they come from (CONFIG vs env), making the documented session-injection steps
non-executable as written.
Agent Prompt
### Issue description
`qa-integration.md` requires `{ANON_KEY}` and `{SUPABASE_REF}` but doesn’t explain how to obtain them or where they should be configured, so the documented login/session injection flow cannot be followed reliably.
### Issue Context
The fix-issue skill points users to `references/qa-integration.md` for the full QA steps; missing required inputs breaks Phase 1.5 and Phase 5.5.
### Fix Focus Areas
- skills/fix-issue/references/qa-integration.md[121-148]
- CONFIG.template.md[62-68]
ⓘ Copy this prompt and use it to remediate the issue with your preferred AI generation tools
| ```bash | ||
| SUPABASE_URL=$(grep NEXT_PUBLIC_SUPABASE_URL .env.local | cut -d= -f2-) | ||
| SERVICE_ROLE_KEY=$(grep SUPABASE_SERVICE_ROLE_KEY .env.local | cut -d= -f2-) | ||
| AUTH_RESPONSE=$(curl -s -X POST "${SUPABASE_URL}/auth/v1/token?grant_type=password" \ | ||
| -H "apikey: ${SERVICE_ROLE_KEY}" \ | ||
| -H "Content-Type: application/json" \ | ||
| -d '{"email":"{TEST_USER_EMAIL}","password":"{TEST_USER_PASSWORD}"}') | ||
| echo "$AUTH_RESPONSE" | python3 -c "import sys,json; d=json.load(sys.stdin); print('ACCESS_TOKEN=' + d['access_token']); print('REFRESH_TOKEN=' + d['refresh_token'])" |
There was a problem hiding this comment.
3. Service role used for login 🐞 Bug ⛨ Security
The QA reference instructs using SUPABASE_SERVICE_ROLE_KEY as the apikey for password-grant token retrieval, increasing exposure of a highly privileged secret and unnecessarily expanding blast radius if copied into logs/shell history.
Agent Prompt
### Issue description
The QA doc uses `SUPABASE_SERVICE_ROLE_KEY` (high-privilege) for routine login token retrieval, which is a security footgun and increases the impact of accidental disclosure.
### Issue Context
The same document already distinguishes an `{ANON_KEY}` for client operations, suggesting the service role key is not the intended credential for password-grant login.
### Fix Focus Areas
- skills/fix-issue/references/qa-integration.md[92-99]
- skills/fix-issue/references/qa-integration.md[67-76]
- skills/fix-issue/references/qa-integration.md[121-129]
ⓘ Copy this prompt and use it to remediate the issue with your preferred AI generation tools
Summary
fix-issueskill — the GitHub-native equivalent offix-ticketghCLI instead of Jira MCP for issue/PR managementCONFIG.template.mdfor label and assignee configWhat's new
The
fix-issueskill automates the full GitHub issue bug-fix lifecycle:gh issue viewCloses #Ntrailer)Why
fix-ticketis great for Jira-heavy teams. Many projects live entirely on GitHub — this skill brings the same zero-touch bug-fix pipeline to GitHub Issues without requiring any Jira MCP setup.Test plan
/fix-issue 123on a repo with a known bug issueCloses #Nand comments on the issueskip-github=trueskips Phase 8 entirely