[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"skill:01M6EYYE11MSXWERJFPXVM9WDG":3,"skill-same:01M6EYYE11MSXWERJFPXVM9WDG":72},{"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":18,"publishedAt":38,"linkOnly":39,"markdownContent":40,"markdownBody":41,"frontMatter":42,"refName":25,"commitSha":44,"skillDirectory":45,"forksCount":46,"repositoryHtmlUrl":47,"repositoryHomepageUrl":48,"ownerHtmlUrl":49,"ownerBlogUrl":6,"ownerDescription":50,"updatedAt":51,"install":52,"resources":65},"01M6EYYE11MSXWERJFPXVM9WDG","iterate-pr",null,"Iterate on a PR until CI passes. Use when you need to fix CI failures, address review feedback, or continuously push fixes until all checks are green. Automates the feedback-fix-push-wait cycle.","ComeOnOliver\u002Fskillshub","ComeOnOliver","https:\u002F\u002Favatars.githubusercontent.com\u002Fu\u002F43215937?v=4","01M6E5JNFECJAAVFE0W7SMWWD2","Haoran Shu","01M6E5JNNDQS7AJZDYFQ8TPZCK",67,"MIT","https:\u002F\u002Fgithub.com\u002FComeOnOliver\u002Fskillshub\u002Fblob\u002Fmain\u002Fskills\u002Faiskillstore\u002Fmarketplace\u002Fsickn33\u002Fiterate-pr\u002FSKILL.md",[],[19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37],"pr","iterate pr","plugins","wait","green","cycle","main","use","fix","feedback","ci","review","https","sentry","push","fix ci","fix ci failures","github","safe","2026-11-10 10:12:30",false,"---\nname: iterate-pr\ndescription: \"Iterate on a PR until CI passes. Use when you need to fix CI failures, address review feedback, or continuously push fixes until all checks are green. Automates the feedback-fix-push-wait cycle.\"\nsource: \"https:\u002F\u002Fgithub.com\u002Fgetsentry\u002Fskills\u002Ftree\u002Fmain\u002Fplugins\u002Fsentry-skills\u002Fskills\u002Fiterate-pr\"\nrisk: safe\n---\n\n# Iterate on PR Until CI Passes\n\nContinuously iterate on the current branch until all CI checks pass and review feedback is addressed.\n\n## When to Use This Skill\n\nUse this skill when:\n- Fixing CI failures\n- Addressing review feedback\n- Continuously pushing fixes until all checks are green\n- Automating the feedback-fix-push-wait cycle\n- Ensuring PR meets all quality gates\n\n**Requires**: GitHub CLI (`gh`) authenticated and available.\n\n## Process\n\n### Step 1: Identify the PR\n\n```bash\ngh pr view --json number,url,headRefName,baseRefName\n```\n\nIf no PR exists for the current branch, stop and inform the user.\n\n### Step 2: Check CI Status First\n\nAlways check CI\u002FGitHub Actions status before looking at review feedback:\n\n```bash\ngh pr checks --json name,state,bucket,link,workflow\n```\n\nThe `bucket` field categorizes state into: `pass`, `fail`, `pending`, `skipping`, or `cancel`.\n\n**Important:** If any of these checks are still `pending`, wait before proceeding:\n- `sentry` \u002F `sentry-io`\n- `codecov`\n- `cursor` \u002F `bugbot` \u002F `seer`\n- Any linter or code analysis checks\n\nThese bots may post additional feedback comments once their checks complete. Waiting avoids duplicate work.\n\n### Step 3: Gather Review Feedback\n\nOnce CI checks have completed (or at least the bot-related checks), gather human and bot feedback:\n\n**Review Comments and Status:**\n```bash\ngh pr view --json reviews,comments,reviewDecision\n```\n\n**Inline Code Review Comments:**\n```bash\ngh api repos\u002F{owner}\u002F{repo}\u002Fpulls\u002F{pr_number}\u002Fcomments\n```\n\n**PR Conversation Comments (includes bot comments):**\n```bash\ngh api repos\u002F{owner}\u002F{repo}\u002Fissues\u002F{pr_number}\u002Fcomments\n```\n\nLook for bot comments from: Sentry, Codecov, Cursor, Bugbot, Seer, and other automated tools.\n\n### Step 4: Investigate Failures\n\nFor each CI failure, get the actual logs:\n\n```bash\n# List recent runs for this branch\ngh run list --branch $(git branch --show-current) --limit 5 --json databaseId,name,status,conclusion\n\n# View failed logs for a specific run\ngh run view \u003Crun-id> --log-failed\n```\n\nDo NOT assume what failed based on the check name alone. Always read the actual logs.\n\n### Step 5: Validate Feedback\n\nFor each piece of feedback (CI failure or review comment):\n\n1. **Read the relevant code** - Understand the context before making changes\n2. **Verify the issue is real** - Not all feedback is correct; reviewers and bots can be wrong\n3. **Check if already addressed** - The issue may have been fixed in a subsequent commit\n4. **Skip invalid feedback** - If the concern is not legitimate, move on\n\n### Step 6: Address Valid Issues\n\nMake minimal, targeted code changes. Only fix what is actually broken.\n\n### Step 7: Commit and Push\n\n```bash\ngit add -A\ngit commit -m \"fix: \u003Cdescriptive message of what was fixed>\"\ngit push origin $(git branch --show-current)\n```\n\n### Step 8: Wait for CI\n\nUse the built-in watch functionality:\n\n```bash\ngh pr checks --watch --interval 30\n```\n\nThis waits until all checks complete. Exit code 0 means all passed, exit code 1 means failures.\n\nAlternatively, poll manually if you need more control:\n\n```bash\ngh pr checks --json name,state,bucket | jq '.[] | select(.bucket != \"pass\")'\n```\n\n### Step 9: Repeat\n\nReturn to Step 2 if:\n- Any CI checks failed\n- New review feedback appeared\n\nContinue until all checks pass and no unaddressed feedback remains.\n\n## Exit Conditions\n\n**Success:**\n- All CI checks are green (`bucket: pass`)\n- No unaddressed human review feedback\n\n**Ask for Help:**\n- Same failure persists after 3 attempts (likely a flaky test or deeper issue)\n- Review feedback requires clarification or decision from the user\n- CI failure is unrelated to branch changes (infrastructure issue)\n\n**Stop Immediately:**\n- No PR exists for the current branch\n- Branch is out of sync and needs rebase (inform user)\n\n## Tips\n\n- Use `gh pr checks --required` to focus only on required checks\n- Use `gh run view \u003Crun-id> --verbose` to see all job steps, not just failures\n- If a check is from an external service, the `link` field in checks JSON provides the URL to investigate\n","# Iterate on PR Until CI Passes\n\nContinuously iterate on the current branch until all CI checks pass and review feedback is addressed.\n\n## When to Use This Skill\n\nUse this skill when:\n- Fixing CI failures\n- Addressing review feedback\n- Continuously pushing fixes until all checks are green\n- Automating the feedback-fix-push-wait cycle\n- Ensuring PR meets all quality gates\n\n**Requires**: GitHub CLI (`gh`) authenticated and available.\n\n## Process\n\n### Step 1: Identify the PR\n\n```bash\ngh pr view --json number,url,headRefName,baseRefName\n```\n\nIf no PR exists for the current branch, stop and inform the user.\n\n### Step 2: Check CI Status First\n\nAlways check CI\u002FGitHub Actions status before looking at review feedback:\n\n```bash\ngh pr checks --json name,state,bucket,link,workflow\n```\n\nThe `bucket` field categorizes state into: `pass`, `fail`, `pending`, `skipping`, or `cancel`.\n\n**Important:** If any of these checks are still `pending`, wait before proceeding:\n- `sentry` \u002F `sentry-io`\n- `codecov`\n- `cursor` \u002F `bugbot` \u002F `seer`\n- Any linter or code analysis checks\n\nThese bots may post additional feedback comments once their checks complete. Waiting avoids duplicate work.\n\n### Step 3: Gather Review Feedback\n\nOnce CI checks have completed (or at least the bot-related checks), gather human and bot feedback:\n\n**Review Comments and Status:**\n```bash\ngh pr view --json reviews,comments,reviewDecision\n```\n\n**Inline Code Review Comments:**\n```bash\ngh api repos\u002F{owner}\u002F{repo}\u002Fpulls\u002F{pr_number}\u002Fcomments\n```\n\n**PR Conversation Comments (includes bot comments):**\n```bash\ngh api repos\u002F{owner}\u002F{repo}\u002Fissues\u002F{pr_number}\u002Fcomments\n```\n\nLook for bot comments from: Sentry, Codecov, Cursor, Bugbot, Seer, and other automated tools.\n\n### Step 4: Investigate Failures\n\nFor each CI failure, get the actual logs:\n\n```bash\n# List recent runs for this branch\ngh run list --branch $(git branch --show-current) --limit 5 --json databaseId,name,status,conclusion\n\n# View failed logs for a specific run\ngh run view \u003Crun-id> --log-failed\n```\n\nDo NOT assume what failed based on the check name alone. Always read the actual logs.\n\n### Step 5: Validate Feedback\n\nFor each piece of feedback (CI failure or review comment):\n\n1. **Read the relevant code** - Understand the context before making changes\n2. **Verify the issue is real** - Not all feedback is correct; reviewers and bots can be wrong\n3. **Check if already addressed** - The issue may have been fixed in a subsequent commit\n4. **Skip invalid feedback** - If the concern is not legitimate, move on\n\n### Step 6: Address Valid Issues\n\nMake minimal, targeted code changes. Only fix what is actually broken.\n\n### Step 7: Commit and Push\n\n```bash\ngit add -A\ngit commit -m \"fix: \u003Cdescriptive message of what was fixed>\"\ngit push origin $(git branch --show-current)\n```\n\n### Step 8: Wait for CI\n\nUse the built-in watch functionality:\n\n```bash\ngh pr checks --watch --interval 30\n```\n\nThis waits until all checks complete. Exit code 0 means all passed, exit code 1 means failures.\n\nAlternatively, poll manually if you need more control:\n\n```bash\ngh pr checks --json name,state,bucket | jq '.[] | select(.bucket != \"pass\")'\n```\n\n### Step 9: Repeat\n\nReturn to Step 2 if:\n- Any CI checks failed\n- New review feedback appeared\n\nContinue until all checks pass and no unaddressed feedback remains.\n\n## Exit Conditions\n\n**Success:**\n- All CI checks are green (`bucket: pass`)\n- No unaddressed human review feedback\n\n**Ask for Help:**\n- Same failure persists after 3 attempts (likely a flaky test or deeper issue)\n- Review feedback requires clarification or decision from the user\n- CI failure is unrelated to branch changes (infrastructure issue)\n\n**Stop Immediately:**\n- No PR exists for the current branch\n- Branch is out of sync and needs rebase (inform user)\n\n## Tips\n\n- Use `gh pr checks --required` to focus only on required checks\n- Use `gh run view \u003Crun-id> --verbose` to see all job steps, not just failures\n- If a check is from an external service, the `link` field in checks JSON provides the URL to investigate\n",{"name":5,"risk":37,"source":43,"description":7},"https:\u002F\u002Fgithub.com\u002Fgetsentry\u002Fskills\u002Ftree\u002Fmain\u002Fplugins\u002Fsentry-skills\u002Fskills\u002Fiterate-pr","def8531e65114c0fca8fb8551c1871ee0eed705c","skills\u002Faiskillstore\u002Fmarketplace\u002Fsickn33\u002Fiterate-pr",24,"https:\u002F\u002Fgithub.com\u002FComeOnOliver\u002Fskillshub","https:\u002F\u002Fskillshub.wtf","https:\u002F\u002Fgithub.com\u002FComeOnOliver","AI & Blockchain Engineer\r\n","2026-06-24 22:07:19",{"source":8,"skillName":5,"commands":53,"prompt":63,"zipAvailable":64},[54,57,60],{"tool":55,"command":56},"npx","npx skills add ComeOnOliver\u002Fskillshub --skill iterate-pr",{"tool":58,"command":59},"bunx","bunx skills add ComeOnOliver\u002Fskillshub --skill iterate-pr",{"tool":61,"command":62},"pnpm","pnpm dlx skills add ComeOnOliver\u002Fskillshub --skill iterate-pr","安装技能，技能地址：https:\u002F\u002Fgithub.com\u002FComeOnOliver\u002Fskillshub\u002Fblob\u002Fmain\u002Fskills\u002Faiskillstore\u002Fmarketplace\u002Fsickn33\u002Fiterate-pr\u002FSKILL.md",true,[66],{"path":67,"resourceType":68,"resourceTypeDesc":69,"sizeBytes":70,"sourceHtmlUrl":71},"skill-report.json","REFERENCE","参考文档",10114,"https:\u002F\u002Fgithub.com\u002FComeOnOliver\u002Fskillshub\u002Fblob\u002Fmain\u002Fskills\u002Faiskillstore\u002Fmarketplace\u002Fsickn33\u002Fiterate-pr\u002Fskill-report.json",[73,87,97,106,112,119],{"skillNo":74,"name":75,"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":76,"categories":77,"keywords":83,"publishedAt":38},"01M6FKJN13GMG4KY57J3QD8GY5","model-hierarchy-skill","https:\u002F\u002Fgithub.com\u002FComeOnOliver\u002Fskillshub\u002Fblob\u002Fmain\u002Fskills\u002Fzscole\u002Fmodel-hierarchy-skill\u002Fmodel-hierarchy-skill\u002FSKILL.md",[78],{"categoryNo":79,"categoryName":80,"taxonomyType":81,"taxonomyTypeDesc":82},"01JBSEEDCAT000000000000023","Skill与智能体开发","SCENARIO","使用场景",[84,85,86],"model","model hierarchy","model hierarchy skill",{"skillNo":88,"name":89,"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":90,"categories":91,"keywords":93,"publishedAt":38},"01M6FKJJJ6GCAMR4PPPRD12M5X","zoom-mcp","https:\u002F\u002Fgithub.com\u002FComeOnOliver\u002Fskillshub\u002Fblob\u002Fmain\u002Fskills\u002Fzoom\u002Fskills\u002Fzoom-mcp\u002FSKILL.md",[92],{"categoryNo":79,"categoryName":80,"taxonomyType":81,"taxonomyTypeDesc":82},[94,95,96],"MCP","zoom","zoom mcp",{"skillNo":98,"name":99,"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":100,"categories":101,"keywords":102,"publishedAt":38},"01M6FKJE3KYT3KPEZMEEHYKA6K","zoom-apps-sdk","https:\u002F\u002Fgithub.com\u002FComeOnOliver\u002Fskillshub\u002Fblob\u002Fmain\u002Fskills\u002Fzoom\u002Fskills\u002Fzoom-apps-sdk\u002FSKILL.md",[],[103,104,105,95],"sdk","zoom apps sdk","apps",{"skillNo":107,"name":108,"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":109,"categories":110,"keywords":111,"publishedAt":38},"01M6FKJ9EDH9Q5VWDF8HAJRSP0","windows","https:\u002F\u002Fgithub.com\u002FComeOnOliver\u002Fskillshub\u002Fblob\u002Fmain\u002Fskills\u002Fzoom\u002Fskills\u002Fwindows\u002FSKILL.md",[],[108],{"skillNo":113,"name":114,"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":115,"categories":116,"keywords":118,"publishedAt":38},"01M6FKJ666BEEFC3AE9GJ72Q93","whiteboard","https:\u002F\u002Fgithub.com\u002FComeOnOliver\u002Fskillshub\u002Fblob\u002Fmain\u002Fskills\u002Fzoom\u002Fskills\u002Fwhiteboard\u002FSKILL.md",[117],{"categoryNo":79,"categoryName":80,"taxonomyType":81,"taxonomyTypeDesc":82},[114],{"skillNo":120,"name":121,"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":122,"categories":123,"keywords":124,"publishedAt":38},"01M6FKJ21WFCDGTJQ2Q91T9DVW","websockets","https:\u002F\u002Fgithub.com\u002FComeOnOliver\u002Fskillshub\u002Fblob\u002Fmain\u002Fskills\u002Fzoom\u002Fskills\u002Fwebsockets\u002FSKILL.md",[],[121]]