[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"skill:01M6D5CAK78MTSKH8WHTPGJGKX":3,"skill-same:01M6D5CAK78MTSKH8WHTPGJGKX":104},{"skillNo":4,"name":5,"nameZh":6,"description":7,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":16,"categories":17,"keywords":34,"publishedAt":59,"linkOnly":60,"markdownContent":61,"markdownBody":62,"frontMatter":63,"refName":67,"commitSha":68,"skillDirectory":69,"forksCount":14,"repositoryHtmlUrl":70,"repositoryHomepageUrl":6,"ownerHtmlUrl":71,"ownerBlogUrl":6,"ownerDescription":6,"updatedAt":72,"install":73,"resources":85},"01M6D5CAK78MTSKH8WHTPGJGKX","fix-github-issue",null,"Fix a GitHub issue with quality gates — coverage, code review, E2E, and bugfix triage loop.","fxmartin\u002Fclaude-code-config","fxmartin","https:\u002F\u002Favatars.githubusercontent.com\u002Fu\u002F7264390?v=4","01M6D59Z9JDK9V9YCBNCXKXE6M","François-Xavier Martin","01M6D59ZGWJ552048QS5E1GV2G",2,"MIT","https:\u002F\u002Fgithub.com\u002Ffxmartin\u002Fclaude-code-config\u002Fblob\u002Fmain\u002Fskills\u002Ffix-github-issue\u002FSKILL.md",[18,23,26,29],{"categoryNo":19,"categoryName":20,"taxonomyType":21,"taxonomyTypeDesc":22},"01JBSEEDCAT000000000000007","代码审查","SCENARIO","使用场景",{"categoryNo":24,"categoryName":25,"taxonomyType":21,"taxonomyTypeDesc":22},"01JBSEEDCAT000000000000008","测试与质量",{"categoryNo":27,"categoryName":28,"taxonomyType":21,"taxonomyTypeDesc":22},"01JBSEEDCAT000000000000023","Skill与智能体开发",{"categoryNo":30,"categoryName":31,"taxonomyType":32,"taxonomyTypeDesc":33},"01JBSEEDCAT000000000000030","开发工程师","PROFESSION","适用职业",[35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58],"github","fix github issue","issue","github issue","fix","coverage","true","number","URL","bugfix","gates","next","auto","code review","edit","write","read","quality","loop","Bash","e2e","code","quality gates","review","2026-11-10 10:12:30",false,"---\nname: fix-github-issue\ndescription: Fix a GitHub issue with quality gates — coverage, code review, E2E, and bugfix triage loop.\nuser-invocable: true\ndisable-model-invocation: true\nargument-hint: \"\u003Cissue-number|issue-url|next> [--skip-coverage] [--e2e-gate=block|warn|off] [--auto]\"\nallowed-tools: Read, Write, Edit, Bash, Glob, Grep, Agent\n---\n\n> **DEPRECATED**: Use `\u002Ffix-issue` instead. This skill is retained for reference but will be removed in a future update.\n\nYou are a **thin dispatcher** orchestrator. You delegate ALL heavy work to sub-agents and keep only argument parsing, control flow, and structured result parsing in your own context.\n\n## Phase 1: Parse Arguments & Validate Environment (DIRECT)\n\nParse `$ARGUMENTS` for:\n- **Target**: issue number (e.g., `123`), issue URL (e.g., `https:\u002F\u002Fgithub.com\u002Fowner\u002Frepo\u002Fissues\u002F123`), or `next` (highest priority open bug)\n- **Flags**:\n  - `--skip-coverage` — bypass coverage gate (build agent creates PR directly)\n  - `--e2e-gate=block|warn|off` — E2E test gate behavior (default: `off`)\n  - `--auto` — skip interactive prompts on failure\n\nExtract the issue number from the argument:\n- If URL: extract number from path\n- If `next`: run `gh issue list --label bug --state open --limit 1 --json number,title -q '.[0]'` to get the highest priority open bug\n- If number: use directly\n\nRun these validation checks directly:\n\n```bash\n# 1. GitHub CLI auth\ngh auth status\n# 2. Clean git state\ngit status --porcelain\n# 3. On main branch\ngit branch --show-current\n# 4. Pull latest\ngit pull\n```\n\nSTOP if working tree is dirty or not on main branch.\n\n## Phase 2: Fetch Issue & Validate (DIRECT)\n\n```bash\ngh issue view $ISSUE_NUMBER --json number,title,body,state,assignees,labels\n```\n\n**Stop conditions** — STOP and report if:\n- Issue is `closed`\n- Issue is assigned to someone else (not the current `gh` user)\n- Issue has label `wontfix` or `won't fix`\n\nExtract: `ISSUE_NUMBER`, `ISSUE_TITLE`, `ISSUE_BODY`, `ISSUE_LABELS`.\n\n## Phase 3: Investigation (DIRECT)\n\nInvestigate the issue yourself (this is lightweight context gathering):\n\n1. Extract key details: reproduction steps, error messages, stack traces, affected files\n2. Search for relevant files using keywords from the issue\n3. Check for linked PRs or related issues: `gh issue list --search \"mentions:#$ISSUE_NUMBER\"`\n4. Review recent commits touching affected files\n5. Assess complexity (simple \u002F moderate \u002F complex)\n\n## Phase 4: Fix Plan & Approval Gate (DIRECT)\n\nPresent a structured plan:\n\n```\n### Proposed Fix for #[ISSUE_NUMBER]: [ISSUE_TITLE]\n\n**Root Cause**: [your diagnosis]\n**Approach**: [strategy in 1-2 sentences]\n**Complexity**: Simple \u002F Moderate \u002F Complex\n\n**Files to Modify**:\n- `path\u002Fto\u002Ffile` — [what changes]\n\n**New Files** (if any):\n- `path\u002Fto\u002Fnew` — [purpose]\n\n**Tests**:\n- [ ] Update existing: [which]\n- [ ] Add new: [describe coverage]\n\n**Risk Assessment**: Low \u002F Medium \u002F High + rationale\n\n**Quality Gates**:\n- Coverage gate: [enabled \u002F skipped]\n- E2E gate: [off \u002F warn \u002F block]\n```\n\n**STOP and wait for user approval before proceeding.**\n\n## Phase 5: Build Agent\n\nLaunch the appropriate agent (detect from project type — `backend-typescript-architect` for TS\u002FBun, `python-backend-engineer` for Python, `general-purpose` as fallback).\n\n**If `--skip-coverage` is set** (build agent handles push + PR):\n\n```\nYou are fixing GitHub issue #[ISSUE_NUMBER]: [ISSUE_TITLE]\n\n## Issue Details\n[ISSUE_BODY]\n\n## Fix Plan\n[The approved plan from Phase 4]\n\n## Instructions\n1. Create branch: git checkout -b fix\u002Fissue-[ISSUE_NUMBER]-[short-description]\n2. Reproduce the bug first — create a failing test that demonstrates the issue\n3. Implement the minimal fix\n4. Add defensive tests — edge cases, regression prevention\n5. Run all quality gates (tests, types, lint)\n6. Commit:\n   git add [specific files]\n   git commit -m \"fix: [description]\n\n   Fixes #[ISSUE_NUMBER]\n\n   Co-Authored-By: Claude Opus 4.6 \u003Cnoreply@anthropic.com>\"\n7. Push and create PR:\n   git push -u origin fix\u002Fissue-[ISSUE_NUMBER]-[short-description]\n   gh pr create --title \"fix: [ISSUE_TITLE] (#[ISSUE_NUMBER])\" --body \"[summary, testing, Fixes #[ISSUE_NUMBER]]\"\n\nReturn PR_NUMBER: [number] and PR_URL: [url] when done.\n```\n\nExtract `PR_NUMBER` from the agent result. Skip Phase 6.\n\n**If coverage gate is enabled** (default — build agent commits locally only):\n\n```\nYou are fixing GitHub issue #[ISSUE_NUMBER]: [ISSUE_TITLE]\n\n## Issue Details\n[ISSUE_BODY]\n\n## Fix Plan\n[The approved plan from Phase 4]\n\n## Instructions\n1. Create branch: git checkout -b fix\u002Fissue-[ISSUE_NUMBER]-[short-description]\n2. Reproduce the bug first — create a failing test that demonstrates the issue\n3. Implement the minimal fix\n4. Add defensive tests — edge cases, regression prevention\n5. Run all quality gates (tests, types, lint)\n6. Commit locally:\n   git add [specific files]\n   git commit -m \"fix: [description]\n\n   Fixes #[ISSUE_NUMBER]\n\n   Co-Authored-By: Claude Opus 4.6 \u003Cnoreply@anthropic.com>\"\n7. DO NOT push or create a PR — the coverage agent handles that next.\n\nReturn BRANCH_NAME: fix\u002Fissue-[ISSUE_NUMBER]-[short-description] and BUILD_STATUS: SUCCESS when done.\n```\n\nExtract `BRANCH_NAME` and `BUILD_STATUS` from the agent result. Proceed to Phase 6.\n\n## Phase 6: Coverage Gate (skip if `--skip-coverage`)\n\nLaunch a `qa-engineer` agent with the prompt from `${CLAUDE_SKILL_DIR}\u002Fcoverage-gate-prompt.md`, substituting:\n- `{{ISSUE_NUMBER}}` -> current issue number\n- `{{ISSUE_TITLE}}` -> current issue title\n- `{{BRANCH_NAME}}` -> branch name from build agent result\n\nThe agent runs coverage analysis, adds tests, pushes the branch, and creates the PR.\n\nExtract `PR_NUMBER`, `PR_URL`, `COVERAGE_PCT`, `TESTS_ADDED`, and `COVERAGE_STATUS` from the agent result.\n\nIf `COVERAGE_STATUS: WARN` — log a warning but continue.\nIf the coverage agent fails entirely — proceed to Phase 9 (bugfix loop).\n\n## Phase 7: Review Gate\n\nLaunch a `senior-code-reviewer` agent with the prompt from `${CLAUDE_SKILL_DIR}\u002Freview-gate-prompt.md`, substituting:\n- `{{ISSUE_NUMBER}}` -> current issue number\n- `{{ISSUE_TITLE}}` -> current issue title\n- `{{PR_NUMBER}}` -> PR number from Phase 5 (if `--skip-coverage`) or Phase 6 (default)\n\nThe agent reviews the PR, fixes issues if found, and approves when satisfied.\n\nExtract `APPROVAL_STATUS` from the agent result.\n\nIf `APPROVAL_STATUS: CHANGES_NEEDED` persists after the review agent's fixes, proceed to Phase 9 (bugfix loop).\n\n## Phase 8: E2E Gate (skip unless `--e2e-gate=block|warn`)\n\nLaunch a `qa-engineer` agent with the prompt from `${CLAUDE_SKILL_DIR}\u002Fe2e-gate-prompt.md`, substituting:\n- `{{ISSUE_NUMBER}}` -> current issue number\n- `{{ISSUE_TITLE}}` -> current issue title\n- `{{PR_NUMBER}}` -> PR number\n- `{{BRANCH_NAME}}` -> branch name\n\nHandle result per `--e2e-gate` mode:\n- `block` + FAIL: if `--auto` treat as `warn`, otherwise ask user: retry \u002F continue \u002F abort\n- `warn` + FAIL: log warning, continue\n- PASS: continue\n\nIf FAIL and not continuing, proceed to Phase 9 (bugfix loop).\n\n## Phase 9: Bugfix Loop (on any gate failure)\n\nLaunch a `general-purpose` agent with the prompt from `${CLAUDE_SKILL_DIR}\u002Fbugfix-agent-prompt.md`, substituting:\n- `{{ISSUE_NUMBER}}` -> current issue number\n- `{{ISSUE_TITLE}}` -> current issue title\n- `{{BRANCH_NAME}}` -> the fix branch\n- `{{FAILED_STEP}}` -> which phase failed (build | coverage | review | e2e)\n- `{{FAILURE_OUTPUT}}` -> the error\u002Ffailure text from the failed agent\n\nExtract `FAILURE_CATEGORY`, `ISSUE_NUMBER` (sub-issue), `FIX_STATUS`, `TESTS_PASSING` from the agent result.\n\n- If `FIX_STATUS: FIXED` and `TESTS_PASSING: true`:\n  - Log: \"Fixed ([FAILURE_CATEGORY]) — retrying from failed step\"\n  - **Re-run from the phase that failed** (not from Phase 5):\n    - If build failed -> re-run Phase 5\n    - If coverage failed -> re-run Phase 6\n    - If review flagged issues -> re-run Phase 7\n    - If E2E failed -> re-run Phase 8\n  - Allow **max 2 bugfix iterations** to prevent infinite loops\n- If `FIX_STATUS: UNFIXED`:\n  - If `--auto`: log failure and STOP\n  - Otherwise: ask user what to do\n\n## Phase 10: Merge & Cleanup (DIRECT)\n\nOnce all gates pass:\n\n```bash\n# Merge PR\ngh pr merge $PR_NUMBER --squash --delete-branch\n\n# Comment on and close original issue\ngh issue comment $ISSUE_NUMBER --body \"Fixed in PR #$PR_NUMBER.\"\ngh issue close $ISSUE_NUMBER --reason completed\n\n# Return to main\ngit checkout main\ngit pull\n```\n\n## Phase 11: Summary Output (DIRECT)\n\nPrint a structured summary:\n\n```\n## Fix Complete: #[ISSUE_NUMBER] — [ISSUE_TITLE]\n\n- **PR**: #[PR_NUMBER] ([PR_URL])\n- **Branch**: [BRANCH_NAME] (merged & deleted)\n- **Files Modified**: [count]\n- **Tests Added**: [count]\n- **Coverage**: [COVERAGE_PCT]% [COVERAGE_STATUS]\n- **Review**: [APPROVAL_STATUS]\n- **E2E**: [E2E_RESULT or \"skipped\"]\n- **Bugfix Iterations**: [count]\n```\n\n## Context Budget Rules\n\n**NEVER read project source files directly** — the build agents read them.\nYour per-phase context cost should be minimal — delegate all heavy lifting to sub-agents.\n\n## Context\n\n$ARGUMENTS\n","> **DEPRECATED**: Use `\u002Ffix-issue` instead. This skill is retained for reference but will be removed in a future update.\n\nYou are a **thin dispatcher** orchestrator. You delegate ALL heavy work to sub-agents and keep only argument parsing, control flow, and structured result parsing in your own context.\n\n## Phase 1: Parse Arguments & Validate Environment (DIRECT)\n\nParse `$ARGUMENTS` for:\n- **Target**: issue number (e.g., `123`), issue URL (e.g., `https:\u002F\u002Fgithub.com\u002Fowner\u002Frepo\u002Fissues\u002F123`), or `next` (highest priority open bug)\n- **Flags**:\n  - `--skip-coverage` — bypass coverage gate (build agent creates PR directly)\n  - `--e2e-gate=block|warn|off` — E2E test gate behavior (default: `off`)\n  - `--auto` — skip interactive prompts on failure\n\nExtract the issue number from the argument:\n- If URL: extract number from path\n- If `next`: run `gh issue list --label bug --state open --limit 1 --json number,title -q '.[0]'` to get the highest priority open bug\n- If number: use directly\n\nRun these validation checks directly:\n\n```bash\n# 1. GitHub CLI auth\ngh auth status\n# 2. Clean git state\ngit status --porcelain\n# 3. On main branch\ngit branch --show-current\n# 4. Pull latest\ngit pull\n```\n\nSTOP if working tree is dirty or not on main branch.\n\n## Phase 2: Fetch Issue & Validate (DIRECT)\n\n```bash\ngh issue view $ISSUE_NUMBER --json number,title,body,state,assignees,labels\n```\n\n**Stop conditions** — STOP and report if:\n- Issue is `closed`\n- Issue is assigned to someone else (not the current `gh` user)\n- Issue has label `wontfix` or `won't fix`\n\nExtract: `ISSUE_NUMBER`, `ISSUE_TITLE`, `ISSUE_BODY`, `ISSUE_LABELS`.\n\n## Phase 3: Investigation (DIRECT)\n\nInvestigate the issue yourself (this is lightweight context gathering):\n\n1. Extract key details: reproduction steps, error messages, stack traces, affected files\n2. Search for relevant files using keywords from the issue\n3. Check for linked PRs or related issues: `gh issue list --search \"mentions:#$ISSUE_NUMBER\"`\n4. Review recent commits touching affected files\n5. Assess complexity (simple \u002F moderate \u002F complex)\n\n## Phase 4: Fix Plan & Approval Gate (DIRECT)\n\nPresent a structured plan:\n\n```\n### Proposed Fix for #[ISSUE_NUMBER]: [ISSUE_TITLE]\n\n**Root Cause**: [your diagnosis]\n**Approach**: [strategy in 1-2 sentences]\n**Complexity**: Simple \u002F Moderate \u002F Complex\n\n**Files to Modify**:\n- `path\u002Fto\u002Ffile` — [what changes]\n\n**New Files** (if any):\n- `path\u002Fto\u002Fnew` — [purpose]\n\n**Tests**:\n- [ ] Update existing: [which]\n- [ ] Add new: [describe coverage]\n\n**Risk Assessment**: Low \u002F Medium \u002F High + rationale\n\n**Quality Gates**:\n- Coverage gate: [enabled \u002F skipped]\n- E2E gate: [off \u002F warn \u002F block]\n```\n\n**STOP and wait for user approval before proceeding.**\n\n## Phase 5: Build Agent\n\nLaunch the appropriate agent (detect from project type — `backend-typescript-architect` for TS\u002FBun, `python-backend-engineer` for Python, `general-purpose` as fallback).\n\n**If `--skip-coverage` is set** (build agent handles push + PR):\n\n```\nYou are fixing GitHub issue #[ISSUE_NUMBER]: [ISSUE_TITLE]\n\n## Issue Details\n[ISSUE_BODY]\n\n## Fix Plan\n[The approved plan from Phase 4]\n\n## Instructions\n1. Create branch: git checkout -b fix\u002Fissue-[ISSUE_NUMBER]-[short-description]\n2. Reproduce the bug first — create a failing test that demonstrates the issue\n3. Implement the minimal fix\n4. Add defensive tests — edge cases, regression prevention\n5. Run all quality gates (tests, types, lint)\n6. Commit:\n   git add [specific files]\n   git commit -m \"fix: [description]\n\n   Fixes #[ISSUE_NUMBER]\n\n   Co-Authored-By: Claude Opus 4.6 \u003Cnoreply@anthropic.com>\"\n7. Push and create PR:\n   git push -u origin fix\u002Fissue-[ISSUE_NUMBER]-[short-description]\n   gh pr create --title \"fix: [ISSUE_TITLE] (#[ISSUE_NUMBER])\" --body \"[summary, testing, Fixes #[ISSUE_NUMBER]]\"\n\nReturn PR_NUMBER: [number] and PR_URL: [url] when done.\n```\n\nExtract `PR_NUMBER` from the agent result. Skip Phase 6.\n\n**If coverage gate is enabled** (default — build agent commits locally only):\n\n```\nYou are fixing GitHub issue #[ISSUE_NUMBER]: [ISSUE_TITLE]\n\n## Issue Details\n[ISSUE_BODY]\n\n## Fix Plan\n[The approved plan from Phase 4]\n\n## Instructions\n1. Create branch: git checkout -b fix\u002Fissue-[ISSUE_NUMBER]-[short-description]\n2. Reproduce the bug first — create a failing test that demonstrates the issue\n3. Implement the minimal fix\n4. Add defensive tests — edge cases, regression prevention\n5. Run all quality gates (tests, types, lint)\n6. Commit locally:\n   git add [specific files]\n   git commit -m \"fix: [description]\n\n   Fixes #[ISSUE_NUMBER]\n\n   Co-Authored-By: Claude Opus 4.6 \u003Cnoreply@anthropic.com>\"\n7. DO NOT push or create a PR — the coverage agent handles that next.\n\nReturn BRANCH_NAME: fix\u002Fissue-[ISSUE_NUMBER]-[short-description] and BUILD_STATUS: SUCCESS when done.\n```\n\nExtract `BRANCH_NAME` and `BUILD_STATUS` from the agent result. Proceed to Phase 6.\n\n## Phase 6: Coverage Gate (skip if `--skip-coverage`)\n\nLaunch a `qa-engineer` agent with the prompt from `${CLAUDE_SKILL_DIR}\u002Fcoverage-gate-prompt.md`, substituting:\n- `{{ISSUE_NUMBER}}` -> current issue number\n- `{{ISSUE_TITLE}}` -> current issue title\n- `{{BRANCH_NAME}}` -> branch name from build agent result\n\nThe agent runs coverage analysis, adds tests, pushes the branch, and creates the PR.\n\nExtract `PR_NUMBER`, `PR_URL`, `COVERAGE_PCT`, `TESTS_ADDED`, and `COVERAGE_STATUS` from the agent result.\n\nIf `COVERAGE_STATUS: WARN` — log a warning but continue.\nIf the coverage agent fails entirely — proceed to Phase 9 (bugfix loop).\n\n## Phase 7: Review Gate\n\nLaunch a `senior-code-reviewer` agent with the prompt from `${CLAUDE_SKILL_DIR}\u002Freview-gate-prompt.md`, substituting:\n- `{{ISSUE_NUMBER}}` -> current issue number\n- `{{ISSUE_TITLE}}` -> current issue title\n- `{{PR_NUMBER}}` -> PR number from Phase 5 (if `--skip-coverage`) or Phase 6 (default)\n\nThe agent reviews the PR, fixes issues if found, and approves when satisfied.\n\nExtract `APPROVAL_STATUS` from the agent result.\n\nIf `APPROVAL_STATUS: CHANGES_NEEDED` persists after the review agent's fixes, proceed to Phase 9 (bugfix loop).\n\n## Phase 8: E2E Gate (skip unless `--e2e-gate=block|warn`)\n\nLaunch a `qa-engineer` agent with the prompt from `${CLAUDE_SKILL_DIR}\u002Fe2e-gate-prompt.md`, substituting:\n- `{{ISSUE_NUMBER}}` -> current issue number\n- `{{ISSUE_TITLE}}` -> current issue title\n- `{{PR_NUMBER}}` -> PR number\n- `{{BRANCH_NAME}}` -> branch name\n\nHandle result per `--e2e-gate` mode:\n- `block` + FAIL: if `--auto` treat as `warn`, otherwise ask user: retry \u002F continue \u002F abort\n- `warn` + FAIL: log warning, continue\n- PASS: continue\n\nIf FAIL and not continuing, proceed to Phase 9 (bugfix loop).\n\n## Phase 9: Bugfix Loop (on any gate failure)\n\nLaunch a `general-purpose` agent with the prompt from `${CLAUDE_SKILL_DIR}\u002Fbugfix-agent-prompt.md`, substituting:\n- `{{ISSUE_NUMBER}}` -> current issue number\n- `{{ISSUE_TITLE}}` -> current issue title\n- `{{BRANCH_NAME}}` -> the fix branch\n- `{{FAILED_STEP}}` -> which phase failed (build | coverage | review | e2e)\n- `{{FAILURE_OUTPUT}}` -> the error\u002Ffailure text from the failed agent\n\nExtract `FAILURE_CATEGORY`, `ISSUE_NUMBER` (sub-issue), `FIX_STATUS`, `TESTS_PASSING` from the agent result.\n\n- If `FIX_STATUS: FIXED` and `TESTS_PASSING: true`:\n  - Log: \"Fixed ([FAILURE_CATEGORY]) — retrying from failed step\"\n  - **Re-run from the phase that failed** (not from Phase 5):\n    - If build failed -> re-run Phase 5\n    - If coverage failed -> re-run Phase 6\n    - If review flagged issues -> re-run Phase 7\n    - If E2E failed -> re-run Phase 8\n  - Allow **max 2 bugfix iterations** to prevent infinite loops\n- If `FIX_STATUS: UNFIXED`:\n  - If `--auto`: log failure and STOP\n  - Otherwise: ask user what to do\n\n## Phase 10: Merge & Cleanup (DIRECT)\n\nOnce all gates pass:\n\n```bash\n# Merge PR\ngh pr merge $PR_NUMBER --squash --delete-branch\n\n# Comment on and close original issue\ngh issue comment $ISSUE_NUMBER --body \"Fixed in PR #$PR_NUMBER.\"\ngh issue close $ISSUE_NUMBER --reason completed\n\n# Return to main\ngit checkout main\ngit pull\n```\n\n## Phase 11: Summary Output (DIRECT)\n\nPrint a structured summary:\n\n```\n## Fix Complete: #[ISSUE_NUMBER] — [ISSUE_TITLE]\n\n- **PR**: #[PR_NUMBER] ([PR_URL])\n- **Branch**: [BRANCH_NAME] (merged & deleted)\n- **Files Modified**: [count]\n- **Tests Added**: [count]\n- **Coverage**: [COVERAGE_PCT]% [COVERAGE_STATUS]\n- **Review**: [APPROVAL_STATUS]\n- **E2E**: [E2E_RESULT or \"skipped\"]\n- **Bugfix Iterations**: [count]\n```\n\n## Context Budget Rules\n\n**NEVER read project source files directly** — the build agents read them.\nYour per-phase context cost should be minimal — delegate all heavy lifting to sub-agents.\n\n## Context\n\n$ARGUMENTS\n",{"name":5,"description":7,"allowed-tools":64,"argument-hint":65,"user-invocable":66,"disable-model-invocation":66},"Read, Write, Edit, Bash, Glob, Grep, Agent","\u003Cissue-number|issue-url|next> [--skip-coverage] [--e2e-gate=block|warn|off] [--auto]",true,"main","abf8bf1ad6150c1db54a6feb7c038bb581f27411","skills\u002Ffix-github-issue","https:\u002F\u002Fgithub.com\u002Ffxmartin\u002Fclaude-code-config","https:\u002F\u002Fgithub.com\u002Ffxmartin","2026-11-15 03:42:20",{"source":8,"skillName":5,"commands":74,"prompt":84,"zipAvailable":66},[75,78,81],{"tool":76,"command":77},"npx","npx skills add fxmartin\u002Fclaude-code-config --skill fix-github-issue",{"tool":79,"command":80},"bunx","bunx skills add fxmartin\u002Fclaude-code-config --skill fix-github-issue",{"tool":82,"command":83},"pnpm","pnpm dlx skills add fxmartin\u002Fclaude-code-config --skill fix-github-issue","安装技能，技能地址：https:\u002F\u002Fgithub.com\u002Ffxmartin\u002Fclaude-code-config\u002Fblob\u002Fmain\u002Fskills\u002Ffix-github-issue\u002FSKILL.md",[86,92,96,100],{"path":87,"resourceType":88,"resourceTypeDesc":89,"sizeBytes":90,"sourceHtmlUrl":91},"bugfix-agent-prompt.md","REFERENCE","参考文档",2812,"https:\u002F\u002Fgithub.com\u002Ffxmartin\u002Fclaude-code-config\u002Fblob\u002Fmain\u002Fskills\u002Ffix-github-issue\u002Fbugfix-agent-prompt.md",{"path":93,"resourceType":88,"resourceTypeDesc":89,"sizeBytes":94,"sourceHtmlUrl":95},"coverage-gate-prompt.md",2486,"https:\u002F\u002Fgithub.com\u002Ffxmartin\u002Fclaude-code-config\u002Fblob\u002Fmain\u002Fskills\u002Ffix-github-issue\u002Fcoverage-gate-prompt.md",{"path":97,"resourceType":88,"resourceTypeDesc":89,"sizeBytes":98,"sourceHtmlUrl":99},"e2e-gate-prompt.md",2103,"https:\u002F\u002Fgithub.com\u002Ffxmartin\u002Fclaude-code-config\u002Fblob\u002Fmain\u002Fskills\u002Ffix-github-issue\u002Fe2e-gate-prompt.md",{"path":101,"resourceType":88,"resourceTypeDesc":89,"sizeBytes":102,"sourceHtmlUrl":103},"review-gate-prompt.md",3431,"https:\u002F\u002Fgithub.com\u002Ffxmartin\u002Fclaude-code-config\u002Fblob\u002Fmain\u002Fskills\u002Ffix-github-issue\u002Freview-gate-prompt.md",[105,115,128,134,158,185],{"skillNo":106,"name":107,"nameZh":6,"description":108,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":109,"categories":110,"keywords":111,"publishedAt":59},"01M6D5CPZ1N8C65QEHCM6YQJAV","evil","A poisoned skill fixture carrying an encoded payload.","https:\u002F\u002Fgithub.com\u002Ffxmartin\u002Fclaude-code-config\u002Fblob\u002Fmain\u002Ftests\u002Ffixtures\u002Fsupply-chain\u002Fpoisoned\u002Fskills\u002Fevil\u002FSKILL.md",[],[107,112,113,114],"skill fixture","fixture","payload",{"skillNo":116,"name":117,"nameZh":6,"description":118,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":119,"categories":120,"keywords":121,"publishedAt":59},"01M6D5CMBKSDEP6EC5JSVC0NEX","demo","A harmless demo skill used as a clean supply-chain fixture.","https:\u002F\u002Fgithub.com\u002Ffxmartin\u002Fclaude-code-config\u002Fblob\u002Fmain\u002Ftests\u002Ffixtures\u002Fsupply-chain\u002Fclean\u002Fskills\u002Fdemo\u002FSKILL.md",[],[117,122,123,124,125,113,126,127],"supply-chain","supply","chain","as","clean","demo skill",{"skillNo":129,"name":130,"nameZh":6,"description":6,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":131,"categories":132,"keywords":133,"publishedAt":59},"01M6D5CJDTS6WPNVV16QH2884X","skills","https:\u002F\u002Fgithub.com\u002Ffxmartin\u002Fclaude-code-config\u002Fblob\u002Fmain\u002Ftests\u002Ffixtures\u002Fagent-registry\u002Fno-agents-dir\u002Fskills\u002Fskill.md",[],[],{"skillNo":135,"name":136,"nameZh":6,"description":137,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":138,"categories":139,"keywords":141,"publishedAt":59},"01M6D5CER35BRAX8CGMMMWD6F4","telegram","Post messages to Telegram via Bot API. Supports Markdown formatting, reply-to, and silent mode.","https:\u002F\u002Fgithub.com\u002Ffxmartin\u002Fclaude-code-config\u002Fblob\u002Fmain\u002Fskills\u002Ftelegram\u002FSKILL.md",[140],{"categoryNo":30,"categoryName":31,"taxonomyType":32,"taxonomyTypeDesc":33},[136,142,143,144,145,146,51,147,54,148,149,150,151,152,153,41,154,155,156,157],"api","message","reply","html","webfetch","markdown","formatting","messages","bot","chat","markdown formatting","mode","post","via","id","false",{"skillNo":159,"name":160,"nameZh":6,"description":161,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":162,"categories":163,"keywords":167,"publishedAt":59},"01M6D5C4ZN2JZ5G467GQ6YPSXG","execute-e2e-tests","Run and manage Playwright E2E tests. Setup, write, execute, and debug end-to-end tests for any project.","https:\u002F\u002Fgithub.com\u002Ffxmartin\u002Fclaude-code-config\u002Fblob\u002Fmain\u002Fskills\u002Fexecute-e2e-tests\u002FSKILL.md",[164,165,166],{"categoryNo":24,"categoryName":25,"taxonomyType":21,"taxonomyTypeDesc":22},{"categoryNo":27,"categoryName":28,"taxonomyType":21,"taxonomyTypeDesc":22},{"categoryNo":30,"categoryName":31,"taxonomyType":32,"taxonomyTypeDesc":33},[168,169,170,171,55,172,173,174,175,54,176,177,49,50,51,178,179,180,181,149,182,56,183,184],"e2e tests","execute e2e tests","tests","execute","navigate","playwright e2e tests","close","project","end","back","dialog","option","select","click","browser","run","MCP",{"skillNo":186,"name":187,"nameZh":6,"description":188,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":189,"categories":190,"keywords":200,"publishedAt":59},"01M6D5BZW9F09V6EQY5785JVNA","design-e2e","Design and execute Playwright E2E test cases from epic\u002Fstory acceptance criteria. Generates test specs and runs them.","https:\u002F\u002Fgithub.com\u002Ffxmartin\u002Fclaude-code-config\u002Fblob\u002Fmain\u002Fskills\u002Fdesign-e2e\u002FSKILL.md",[191,192,195,196,197],{"categoryNo":24,"categoryName":25,"taxonomyType":21,"taxonomyTypeDesc":22},{"categoryNo":193,"categoryName":194,"taxonomyType":21,"taxonomyTypeDesc":22},"01JBSEEDCAT000000000000015","视觉设计",{"categoryNo":27,"categoryName":28,"taxonomyType":21,"taxonomyTypeDesc":22},{"categoryNo":30,"categoryName":31,"taxonomyType":32,"taxonomyTypeDesc":33},{"categoryNo":198,"categoryName":199,"taxonomyType":32,"taxonomyTypeDesc":33},"01JBSEEDCAT000000000000032","设计师",[201,55,202,179,177,203,204,205,49,50,51,178,181,180,54,149,182,206,56,183,184,172,174],"design","design e2e","e2e test","take","only","acceptance"]