[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"skill:01M6C2ZQRHKVCAPEZY3AXKXVS6":3,"skill-same:01M6C2ZQRHKVCAPEZY3AXKXVS6":69},{"skillNo":4,"name":5,"nameZh":6,"description":7,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":6,"repositoryNo":12,"starsCount":13,"licenseSpdxId":14,"licenseFileUrl":6,"sourceHtmlUrl":15,"categories":16,"keywords":17,"publishedAt":33,"linkOnly":34,"markdownContent":35,"markdownBody":36,"frontMatter":37,"refName":38,"commitSha":39,"skillDirectory":40,"forksCount":41,"repositoryHtmlUrl":42,"repositoryHomepageUrl":6,"ownerHtmlUrl":43,"ownerBlogUrl":6,"ownerDescription":6,"updatedAt":44,"install":45,"resources":58},"01M6C2ZQRHKVCAPEZY3AXKXVS6","pr-green-definition",null,"Canonical 7-green PR merge criteria, PR status check pattern, PR freeze discipline, and admin merge protocol","jleechanorg\u002Fjleechan-skills","jleechanorg","https:\u002F\u002Favatars.githubusercontent.com\u002Fu\u002F221404966?v=4","01M6C1VJ99XG950X1DWPEBCBGX","01M6C1VJDK5YVDNT3362RT5WSB",6,"MIT","https:\u002F\u002Fgithub.com\u002Fjleechanorg\u002Fjleechan-skills\u002Fblob\u002Fmain\u002F.claude\u002Fskills_archive\u002Flegacy-pre-2026-08-27\u002Fpackages\u002Fpr-green-definition\u002FSKILL.md",[],[18,19,20,21,22,23,24,25,26,27,28,29,30,31,32],"pr","pr green definition","green","definition","policy","merge","status","protocol","admin","freeze","check","discipline","pattern","pr merge","canonical","2026-11-10 10:12:30",false,"---\nname: pr-green-definition\ndescription: Canonical 7-green PR merge criteria, PR status check pattern, PR freeze discipline, and admin merge protocol\ntype: policy\n---\n\n# PR \"Green\" Definition (7-Green)\n\nA PR is \"green\" (merge-ready) when **all 7 conditions** hold:\n\n| # | Condition | Verification |\n|---|---|---|\n| 1 | **CI passing** | All checks show SUCCESS |\n| 2 | **No merge conflicts** | mergeable: MERGEABLE |\n| 3 | **CodeRabbit APPROVED** | CR must post explicit APPROVED review state (configured via `.coderabbit.yaml` `approve=true`); COMMENTED alone does not pass |\n| 4 | **Bugbot clean** | Zero error-severity comments from cursor[bot] |\n| 5 | **All inline comments resolved** | Zero unresolved non-nit inline review comments |\n| 6 | **Evidence review passed** | evidence-review-bot APPROVED or evidence-gate CI passed |\n| 7 | **Skeptic PASS** | github-actions[bot] posted VERDICT: PASS on the PR (from skeptic-cron.yml workflow) |\n\n**Pre-merge verification is MANDATORY.** Before executing any merge command (`gh pr merge`, `gh api ...\u002Fmerge`), verify all 7 gates pass. If ANY gate fails, do NOT merge — fix the failing gate first. Merging a non-green PR is a commitment integrity violation.\n\n## Verification Procedure (Mandatory)\n\n**WARNING: `gh pr checks` is NOT sufficient for 7-green verification.** The Green Gate workflow always exits 0 (success), so `gh pr checks` shows \"Green Gate: pass\" even when individual gates FAIL. The \"CodeRabbit: pass\" line means the webhook responded, NOT that CodeRabbit gave an APPROVED review.\n\n### Step-by-step verification\n\nGiven a PR number `N` and its branch name `BRANCH`:\n\n```bash\n# 1. Get branch name\nBRANCH=$(gh pr view N --repo OWNER\u002FREPO --json headRefName --jq '.headRefName')\n\n# 2. Get latest Green Gate run ID (use workflow file name to avoid ambiguity)\nRUN_ID=$(gh run list --workflow green-gate.yml --repo OWNER\u002FREPO --branch \"$BRANCH\" -L 1 --json databaseId --jq '.[0].databaseId')\n\n# 3. Read gate-by-gate results (THE ONLY RELIABLE CHECK)\ngh run view \"$RUN_ID\" --repo OWNER\u002FREPO --log 2>\u002Fdev\u002Fnull | grep -E \"GATE-[1-5] (PASS|FAIL)\"\n\n# 4. Get latest Skeptic Gate run (use workflow file name)\nSKEPTIC_ID=$(gh run list --workflow skeptic-gate.yml --repo OWNER\u002FREPO --branch \"$BRANCH\" -L 1 --json databaseId --jq '.[0].databaseId')\n\n# 5. Read skeptic verdict\ngh run view \"$SKEPTIC_ID\" --repo OWNER\u002FREPO --log 2>\u002Fdev\u002Fnull | grep -E \"VERDICT\"\n\n# 6. Cross-reference CR review state (do NOT trust gh pr checks)\ngh pr view N --repo OWNER\u002FREPO --json reviews --jq '[.reviews[] | select(.state != \"COMMENTED\") | {author: .author.login, state: .state}] | last'\n```\n\n### What each gate checks\n\n| Gate | `gh pr checks` shows | Actually verifies |\n|------|---------------------|-------------------|\n| 1 | CI check statuses | `commits\u002F{sha}\u002Fstatus` API = \"success\" |\n| 2 | (not shown) | `pulls\u002F{N}` API `.mergeable` = true |\n| 3 | \"CodeRabbit: pass\" (MISLEADING) | Latest non-COMMENTED coderabbitai review = APPROVED |\n| 4 | \"Cursor Bugbot: pass\" (MISLEADING) | cursor[bot] check conclusion = success, no error comments |\n| 5 | (not shown) | GraphQL: zero unresolved review threads |\n| 6 | (not shown) | Evidence review bot APPROVED |\n| 7 | \"Skeptic Gate: pass\" (MISLEADING) | VERDICT: PASS posted by skeptic-cron |\n\n**Rule**: A PR is 7-green ONLY when all 7 gates show PASS in the workflow logs. Never report 7-green status based on `gh pr checks` output alone.\n\n## PR status check — canonical pattern (mandatory)\n\n**Every PR status check (loops, hooks, one-off) MUST check merge\u002Fclose state FIRST:**\n\n```bash\n# STEP 0 — always first. If merged\u002Fclosed, stop checking green conditions.\ngh api repos\u002FOWNER\u002FREPO\u002Fpulls\u002FN --jq '{state, merged}'\n# If merged:true or state:\"closed\" → report and exit. Do NOT check mergeable_state, reviews, etc.\n```\n\nWhy: `mergeable_state` returns `unknown` for merged PRs (identical to its transient CI-running state). Checking only these fields causes loops to report \"blocked\" on already-merged PRs for hours.\n\n## PR Freeze Discipline\n\n**Pre-push commit count check**: Before pushing a PR branch, run COMMITS=$(git rev-list --count origin\u002Fmain..HEAD). If > 5 commits, warn: \"N commits — squash before final review to avoid CR incremental stall and merge conflicts.\"\n\n**Squash before final merge**: When all 7-green conditions are met (or CR has verbally approved in comments), squash all commits into ONE before pushing:\n\n```bash\ngit reset --soft origin\u002Fmain\ngit commit -m \"feat(scope): concise single-commit message\"\ngit push --force-with-lease\n```\n\nThen let skeptic-cron merge (or `gh pr merge N --squash --admin`).\n\n**Why**: 16-commit PR #412 took 5 review rounds. CR treats squashed commits as \"already reviewed\" and refuses re-review. 1-commit squash merged in one shot.\n\n**Never use `git commit --no-edit`** after a merge conflict — it steals origin\u002Fmain's commit message. Always provide an explicit squash commit message.\n\n**Admin merge** (when CR is in incremental stall): `gh pr merge N --squash --admin --subject \"feat(scope): message\"`. Verify `gh api repo --jq .permissions.admin` first.\n\n**Export PR admin merge**: For `jleechanorg\u002Fclaude-commands` export PRs (title contains \"Export\"), when `cr-loop-guard.sh` returns `skip` AND CR state is `CHANGES_REQUESTED` on acknowledged design limitations (not code bugs), treat the PR as merge-ready.\n","# PR \"Green\" Definition (7-Green)\n\nA PR is \"green\" (merge-ready) when **all 7 conditions** hold:\n\n| # | Condition | Verification |\n|---|---|---|\n| 1 | **CI passing** | All checks show SUCCESS |\n| 2 | **No merge conflicts** | mergeable: MERGEABLE |\n| 3 | **CodeRabbit APPROVED** | CR must post explicit APPROVED review state (configured via `.coderabbit.yaml` `approve=true`); COMMENTED alone does not pass |\n| 4 | **Bugbot clean** | Zero error-severity comments from cursor[bot] |\n| 5 | **All inline comments resolved** | Zero unresolved non-nit inline review comments |\n| 6 | **Evidence review passed** | evidence-review-bot APPROVED or evidence-gate CI passed |\n| 7 | **Skeptic PASS** | github-actions[bot] posted VERDICT: PASS on the PR (from skeptic-cron.yml workflow) |\n\n**Pre-merge verification is MANDATORY.** Before executing any merge command (`gh pr merge`, `gh api ...\u002Fmerge`), verify all 7 gates pass. If ANY gate fails, do NOT merge — fix the failing gate first. Merging a non-green PR is a commitment integrity violation.\n\n## Verification Procedure (Mandatory)\n\n**WARNING: `gh pr checks` is NOT sufficient for 7-green verification.** The Green Gate workflow always exits 0 (success), so `gh pr checks` shows \"Green Gate: pass\" even when individual gates FAIL. The \"CodeRabbit: pass\" line means the webhook responded, NOT that CodeRabbit gave an APPROVED review.\n\n### Step-by-step verification\n\nGiven a PR number `N` and its branch name `BRANCH`:\n\n```bash\n# 1. Get branch name\nBRANCH=$(gh pr view N --repo OWNER\u002FREPO --json headRefName --jq '.headRefName')\n\n# 2. Get latest Green Gate run ID (use workflow file name to avoid ambiguity)\nRUN_ID=$(gh run list --workflow green-gate.yml --repo OWNER\u002FREPO --branch \"$BRANCH\" -L 1 --json databaseId --jq '.[0].databaseId')\n\n# 3. Read gate-by-gate results (THE ONLY RELIABLE CHECK)\ngh run view \"$RUN_ID\" --repo OWNER\u002FREPO --log 2>\u002Fdev\u002Fnull | grep -E \"GATE-[1-5] (PASS|FAIL)\"\n\n# 4. Get latest Skeptic Gate run (use workflow file name)\nSKEPTIC_ID=$(gh run list --workflow skeptic-gate.yml --repo OWNER\u002FREPO --branch \"$BRANCH\" -L 1 --json databaseId --jq '.[0].databaseId')\n\n# 5. Read skeptic verdict\ngh run view \"$SKEPTIC_ID\" --repo OWNER\u002FREPO --log 2>\u002Fdev\u002Fnull | grep -E \"VERDICT\"\n\n# 6. Cross-reference CR review state (do NOT trust gh pr checks)\ngh pr view N --repo OWNER\u002FREPO --json reviews --jq '[.reviews[] | select(.state != \"COMMENTED\") | {author: .author.login, state: .state}] | last'\n```\n\n### What each gate checks\n\n| Gate | `gh pr checks` shows | Actually verifies |\n|------|---------------------|-------------------|\n| 1 | CI check statuses | `commits\u002F{sha}\u002Fstatus` API = \"success\" |\n| 2 | (not shown) | `pulls\u002F{N}` API `.mergeable` = true |\n| 3 | \"CodeRabbit: pass\" (MISLEADING) | Latest non-COMMENTED coderabbitai review = APPROVED |\n| 4 | \"Cursor Bugbot: pass\" (MISLEADING) | cursor[bot] check conclusion = success, no error comments |\n| 5 | (not shown) | GraphQL: zero unresolved review threads |\n| 6 | (not shown) | Evidence review bot APPROVED |\n| 7 | \"Skeptic Gate: pass\" (MISLEADING) | VERDICT: PASS posted by skeptic-cron |\n\n**Rule**: A PR is 7-green ONLY when all 7 gates show PASS in the workflow logs. Never report 7-green status based on `gh pr checks` output alone.\n\n## PR status check — canonical pattern (mandatory)\n\n**Every PR status check (loops, hooks, one-off) MUST check merge\u002Fclose state FIRST:**\n\n```bash\n# STEP 0 — always first. If merged\u002Fclosed, stop checking green conditions.\ngh api repos\u002FOWNER\u002FREPO\u002Fpulls\u002FN --jq '{state, merged}'\n# If merged:true or state:\"closed\" → report and exit. Do NOT check mergeable_state, reviews, etc.\n```\n\nWhy: `mergeable_state` returns `unknown` for merged PRs (identical to its transient CI-running state). Checking only these fields causes loops to report \"blocked\" on already-merged PRs for hours.\n\n## PR Freeze Discipline\n\n**Pre-push commit count check**: Before pushing a PR branch, run COMMITS=$(git rev-list --count origin\u002Fmain..HEAD). If > 5 commits, warn: \"N commits — squash before final review to avoid CR incremental stall and merge conflicts.\"\n\n**Squash before final merge**: When all 7-green conditions are met (or CR has verbally approved in comments), squash all commits into ONE before pushing:\n\n```bash\ngit reset --soft origin\u002Fmain\ngit commit -m \"feat(scope): concise single-commit message\"\ngit push --force-with-lease\n```\n\nThen let skeptic-cron merge (or `gh pr merge N --squash --admin`).\n\n**Why**: 16-commit PR #412 took 5 review rounds. CR treats squashed commits as \"already reviewed\" and refuses re-review. 1-commit squash merged in one shot.\n\n**Never use `git commit --no-edit`** after a merge conflict — it steals origin\u002Fmain's commit message. Always provide an explicit squash commit message.\n\n**Admin merge** (when CR is in incremental stall): `gh pr merge N --squash --admin --subject \"feat(scope): message\"`. Verify `gh api repo --jq .permissions.admin` first.\n\n**Export PR admin merge**: For `jleechanorg\u002Fclaude-commands` export PRs (title contains \"Export\"), when `cr-loop-guard.sh` returns `skip` AND CR state is `CHANGES_REQUESTED` on acknowledged design limitations (not code bugs), treat the PR as merge-ready.\n",{"name":5,"type":22,"description":7},"main","42ccd02cbf5e8e47839dc3eab6fc754dc6b339cf",".claude\u002Fskills_archive\u002Flegacy-pre-2026-08-27\u002Fpackages\u002Fpr-green-definition",0,"https:\u002F\u002Fgithub.com\u002Fjleechanorg\u002Fjleechan-skills","https:\u002F\u002Fgithub.com\u002Fjleechanorg","2026-11-12 14:45:07",{"source":8,"skillName":5,"commands":46,"prompt":56,"zipAvailable":57},[47,50,53],{"tool":48,"command":49},"npx","npx skills add jleechanorg\u002Fjleechan-skills --skill pr-green-definition",{"tool":51,"command":52},"bunx","bunx skills add jleechanorg\u002Fjleechan-skills --skill pr-green-definition",{"tool":54,"command":55},"pnpm","pnpm dlx skills add jleechanorg\u002Fjleechan-skills --skill pr-green-definition","安装技能，技能地址：https:\u002F\u002Fgithub.com\u002Fjleechanorg\u002Fjleechan-skills\u002Fblob\u002Fmain\u002F.claude\u002Fskills_archive\u002Flegacy-pre-2026-08-27\u002Fpackages\u002Fpr-green-definition\u002FSKILL.md",true,[59,65],{"path":60,"resourceType":61,"resourceTypeDesc":62,"sizeBytes":63,"sourceHtmlUrl":64},"reference\u002Flaunch.md","REFERENCE","参考文档",17760,"https:\u002F\u002Fgithub.com\u002FMuvon\u002Foctomind-tap\u002Fblob\u002Fmaster\u002Fskills\u002Fsocial-linkedin\u002Freference\u002Flaunch.md",{"path":66,"resourceType":61,"resourceTypeDesc":62,"sizeBytes":67,"sourceHtmlUrl":68},"reference\u002Fmechanics.md",18485,"https:\u002F\u002Fgithub.com\u002FMuvon\u002Foctomind-tap\u002Fblob\u002Fmaster\u002Fskills\u002Fsocial-linkedin\u002Freference\u002Fmechanics.md",[70,87,109,123,136,152],{"skillNo":71,"name":72,"nameZh":6,"description":73,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":6,"repositoryNo":12,"starsCount":13,"licenseSpdxId":14,"licenseFileUrl":6,"sourceHtmlUrl":74,"categories":75,"keywords":76,"publishedAt":33},"01M716Y5MTJ6GYJZ2ATXCJK8G4","instinct","Use when the user invokes \u002Finstinct or \u002Fin, or asks to \"message Instinct\", \"ask Instinct\", \"tell Instinct\", \"check Instinct\", or read replies from the configured peer assistant. iMessage first, WhatsApp Web as fallback.","https:\u002F\u002Fgithub.com\u002Fjleechanorg\u002Fjleechan-skills\u002Fblob\u002Fmain\u002F.claude\u002Fskills\u002Finstinct\u002FSKILL.md",[],[72,77,78,79,28,80,81,82,83,84,85,86],"user","when","replies","use","identity","whatsapp","gmail","read","message","ask",{"skillNo":88,"name":89,"nameZh":6,"description":90,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":6,"repositoryNo":12,"starsCount":13,"licenseSpdxId":14,"licenseFileUrl":6,"sourceHtmlUrl":91,"categories":92,"keywords":98,"publishedAt":33},"01M716Y4HF7FVVMJSA2CCVN5VF","hr","Compatibility alias for history-resume; produce the same fresh-state, provenance-aware resume briefing.","https:\u002F\u002Fgithub.com\u002Fjleechanorg\u002Fjleechan-skills\u002Fblob\u002Fmain\u002F.claude\u002Fskills\u002Fhr\u002FSKILL.md",[93],{"categoryNo":94,"categoryName":95,"taxonomyType":96,"taxonomyTypeDesc":97},"01JBSEEDCAT000000000000038","人力资源","PROFESSION","适用职业",[89,99,100,101,102,103,104,105,106,107,108],"resume","compatibility","provenance","for","history","produce","alias","briefing","state","fresh",{"skillNo":110,"name":111,"nameZh":6,"description":112,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":6,"repositoryNo":12,"starsCount":13,"licenseSpdxId":14,"licenseFileUrl":6,"sourceHtmlUrl":113,"categories":114,"keywords":116,"publishedAt":33},"01M716Y1FFNFKFJYYKF8HQA6T8","history-resume","Resume briefing for the current repository branch or worktree using fresh state and admitted history sources.","https:\u002F\u002Fgithub.com\u002Fjleechanorg\u002Fjleechan-skills\u002Fblob\u002Fmain\u002F.claude\u002Fskills\u002Fhistory-resume\u002FSKILL.md",[115],{"categoryNo":94,"categoryName":95,"taxonomyType":96,"taxonomyTypeDesc":97},[103,99,117,118,77,119,106,120,102,121,122,107,108],"history resume","branch","analysis","repository","worktree","sources",{"skillNo":124,"name":125,"nameZh":6,"description":126,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":6,"repositoryNo":12,"starsCount":13,"licenseSpdxId":14,"licenseFileUrl":6,"sourceHtmlUrl":127,"categories":128,"keywords":129,"publishedAt":33},"01M716XWXJ8EPHK4RH9T14TR85","grok","Alias for the canonical grokbot browser conversation workflow; \u002Fgrok talks to the Grok bot the same way \u002Fdot talks to Dot.","https:\u002F\u002Fgithub.com\u002Fjleechanorg\u002Fjleechan-skills\u002Fblob\u002Fmain\u002F.claude\u002Fskills\u002Fgrok\u002FSKILL.md",[],[125,130,131,132,102,32,105,133,134,135],"dot","bot","workflow","conversation","browser","grokbot",{"skillNo":137,"name":138,"nameZh":6,"description":139,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":6,"repositoryNo":12,"starsCount":13,"licenseSpdxId":14,"licenseFileUrl":6,"sourceHtmlUrl":140,"categories":141,"keywords":142,"publishedAt":33},"01M70N9Q07DTE0EW5KFXMMMSJ0","codexa-bench","Compare `codexa` and normal `codex` on a fair split of comparable work by default; use `--strict` for duplicate runs of the exact same task.","https:\u002F\u002Fgithub.com\u002Fjleechanorg\u002Fjleechan-skills\u002Fblob\u002Fmain\u002F.claude\u002Fskills\u002Fcodexa-bench\u002FSKILL.md",[],[143,144,145,80,146,102,147,148,149,150,151],"codexa bench","work","split","default","duplicate","task","compare","normal","codex",{"skillNo":153,"name":154,"nameZh":6,"description":155,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":6,"repositoryNo":12,"starsCount":13,"licenseSpdxId":156,"licenseFileUrl":157,"sourceHtmlUrl":158,"categories":159,"keywords":171,"publishedAt":33},"01M6C24S2X60SP8BBFGAEKPEGW","frontend-design","Create distinctive, production-grade frontend interfaces with high design quality. Use this skill when the user asks to build web components, pages, artifacts, posters, or applications (examples include websites, landing pages, dashboards, React components, HTML\u002FCSS layouts, or when styling\u002Fbeautifying any web UI). Generates creative, polished code and UI design that avoids generic AI aesthetics.","Apache-2.0","https:\u002F\u002Fgithub.com\u002Fjleechanorg\u002Fjleechan-skills\u002Fblob\u002Fmain\u002F.claude\u002Fskills\u002Ffrontend-design\u002FLICENSE.txt","https:\u002F\u002Fgithub.com\u002Fjleechanorg\u002Fjleechan-skills\u002Fblob\u002Fmain\u002F.claude\u002Fskills\u002Ffrontend-design\u002FSKILL.md",[160,165,168],{"categoryNo":161,"categoryName":162,"taxonomyType":163,"taxonomyTypeDesc":164},"01JBSEEDCAT000000000000009","前端开发","SCENARIO","使用场景",{"categoryNo":166,"categoryName":167,"taxonomyType":163,"taxonomyTypeDesc":164},"01JBSEEDCAT000000000000015","视觉设计",{"categoryNo":169,"categoryName":170,"taxonomyType":96,"taxonomyTypeDesc":97},"01JBSEEDCAT000000000000032","设计师",[172,173,174,80,175,176,177,77,178,179,180,181,182,183,184,185,186,187,188,189,190,191,192,193,194,195,78,196],"frontend","design","frontend design","generic","ui design","react","html","components","code","artifacts","ui","aesthetics","Production","web components","landing","applications","quality","web","css","create","examples","with","react components","web ui","pages"]