[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"skill:01M6E5TMZAFB6MTVYT750FZDVY":3,"skill-same:01M6E5TMZAFB6MTVYT750FZDVY":50},{"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":24,"linkOnly":25,"markdownContent":26,"markdownBody":27,"frontMatter":28,"refName":30,"commitSha":31,"skillDirectory":32,"forksCount":13,"repositoryHtmlUrl":33,"repositoryHomepageUrl":6,"ownerHtmlUrl":34,"ownerBlogUrl":6,"ownerDescription":6,"updatedAt":35,"install":36,"resources":49},"01M6E5TMZAFB6MTVYT750FZDVY","wave-audit",null,"Audit open issues against merged PRs — find and close orphaned issues with proper comments","parametrization\u002F2real-team-framework","parametrization","https:\u002F\u002Favatars.githubusercontent.com\u002Fu\u002F1111097?v=4","01M6E5MC117M94CEXKX3C96PPX","01M6E5MC7YWG5N3VV4792VFK85",0,"Apache-2.0","https:\u002F\u002Fgithub.com\u002Fparametrization\u002F2real-team-framework\u002Fblob\u002Fmain\u002Fintake\u002Fnoorinalabs-2026-06\u002Fcandidates\u002Fskills\u002Fwave-audit\u002FSKILL.md",[],[18,19,20,21,22,23],"audit","wave audit","issues","open","find","close","2026-11-10 10:12:30",false,"---\nname: wave-audit\ndescription: Audit open issues against merged PRs — find and close orphaned issues with proper comments\nargs: Phase number, Wave number\n---\n\nAudit open issues for a wave and close any that were resolved but not auto-closed.\n\n## Instructions\n\n### 1. List merged PRs for the wave\n\n```bash\ngh pr list --state merged --base \"deployments\u002Fphase-{N}\u002Fwave-{M}\" --json number,title,body,headRefName\n```\n\n### 2. Extract issue references from PRs\n\nFor each merged PR, parse the body for:\n- `Closes #N`\n- `Fixes #N`\n- `Resolves #N`\n\nBuild a map: `{issue_number → [PR_number, PR_title]}`.\n\n### 3. List open issues for the wave\n\nThe canonical wave label is the phase-agnostic `wave-{X}` (#810); legacy\n`p{N}-wave-{M}` labels are grandfathered. Query BOTH and union (gh ANDs\nmultiple `--label` flags, so run them separately):\n\n```bash\ngh issue list --state open --label \"wave-{X}\" --json number,title,labels\ngh issue list --state open --label \"p{N}-wave-{M}\" --json number,title,labels  # grandfathered\n```\n\n### 4. Identify orphans\n\nAn orphan is an open issue that:\n- Is labeled with the wave label (`wave-{X}` or grandfathered `p{N}-wave-{M}`)\n- Was referenced by a merged PR's `Closes`\u002F`Fixes`\u002F`Resolves` but was not auto-closed\n\nCross-reference the two lists. Also check for issues that may have been implemented but the PR forgot to include the `Closes` reference — match by branch name pattern:\n\n```\n{FirstInitial}.{LastName}\u002F{ISSUE_NUMBER}-*\n```\n\n### 5. Report findings to user\n\nPresent a table before taking action:\n\n```\n**Wave Audit: Phase {N} Wave {M}**\n\n| Issue | Title | Status | Implementing PR | Action |\n|-------|-------|--------|-----------------|--------|\n| #123  | ...   | Open   | PR #456         | Close  |\n| #789  | ...   | Open   | (none found)    | Keep   |\n\n**Orphans found:** {count}\n**Issues with no implementing PR:** {count}\n```\n\n**Do NOT close any issues until the user confirms.** Present the list and wait for approval.\n\n### 6. Close confirmed orphans\n\nFor each confirmed orphan, close with a comment:\n\n```bash\ngh issue close {NUMBER} --comment \"$(cat \u003C\u003C'EOF'\nClosed by wave audit. This issue was resolved by PR #{PR_NUMBER} ({PR_TITLE}) which merged to `deployments\u002Fphase-{N}\u002Fwave-{M}`.\n\nAdded label: `fixed-in-phase{N}-wave-{M}`\nEOF\n)\"\n```\n\nAdd the `fixed-in-phase{N}-wave-{M}` label:\n\n```bash\ngh issue edit {NUMBER} --add-label \"fixed-in-phase{N}-wave-{M}\"\n```\n\n### 7. Report summary\n\n```\n**Audit complete:**\n- Issues closed: {count}\n- Issues remaining open: {count} (no implementing PR found)\n- Issues already closed: {count} (correctly auto-closed)\n```\n\n## What remains manual\n\n- User must approve all closures before they execute\n- Issues with no implementing PR require manual triage (defer, reassign, or close as won't-fix)\n- The skill does not verify that the PR actually implemented the issue — it relies on `Closes #N` references and branch naming conventions\n","Audit open issues for a wave and close any that were resolved but not auto-closed.\n\n## Instructions\n\n### 1. List merged PRs for the wave\n\n```bash\ngh pr list --state merged --base \"deployments\u002Fphase-{N}\u002Fwave-{M}\" --json number,title,body,headRefName\n```\n\n### 2. Extract issue references from PRs\n\nFor each merged PR, parse the body for:\n- `Closes #N`\n- `Fixes #N`\n- `Resolves #N`\n\nBuild a map: `{issue_number → [PR_number, PR_title]}`.\n\n### 3. List open issues for the wave\n\nThe canonical wave label is the phase-agnostic `wave-{X}` (#810); legacy\n`p{N}-wave-{M}` labels are grandfathered. Query BOTH and union (gh ANDs\nmultiple `--label` flags, so run them separately):\n\n```bash\ngh issue list --state open --label \"wave-{X}\" --json number,title,labels\ngh issue list --state open --label \"p{N}-wave-{M}\" --json number,title,labels  # grandfathered\n```\n\n### 4. Identify orphans\n\nAn orphan is an open issue that:\n- Is labeled with the wave label (`wave-{X}` or grandfathered `p{N}-wave-{M}`)\n- Was referenced by a merged PR's `Closes`\u002F`Fixes`\u002F`Resolves` but was not auto-closed\n\nCross-reference the two lists. Also check for issues that may have been implemented but the PR forgot to include the `Closes` reference — match by branch name pattern:\n\n```\n{FirstInitial}.{LastName}\u002F{ISSUE_NUMBER}-*\n```\n\n### 5. Report findings to user\n\nPresent a table before taking action:\n\n```\n**Wave Audit: Phase {N} Wave {M}**\n\n| Issue | Title | Status | Implementing PR | Action |\n|-------|-------|--------|-----------------|--------|\n| #123  | ...   | Open   | PR #456         | Close  |\n| #789  | ...   | Open   | (none found)    | Keep   |\n\n**Orphans found:** {count}\n**Issues with no implementing PR:** {count}\n```\n\n**Do NOT close any issues until the user confirms.** Present the list and wait for approval.\n\n### 6. Close confirmed orphans\n\nFor each confirmed orphan, close with a comment:\n\n```bash\ngh issue close {NUMBER} --comment \"$(cat \u003C\u003C'EOF'\nClosed by wave audit. This issue was resolved by PR #{PR_NUMBER} ({PR_TITLE}) which merged to `deployments\u002Fphase-{N}\u002Fwave-{M}`.\n\nAdded label: `fixed-in-phase{N}-wave-{M}`\nEOF\n)\"\n```\n\nAdd the `fixed-in-phase{N}-wave-{M}` label:\n\n```bash\ngh issue edit {NUMBER} --add-label \"fixed-in-phase{N}-wave-{M}\"\n```\n\n### 7. Report summary\n\n```\n**Audit complete:**\n- Issues closed: {count}\n- Issues remaining open: {count} (no implementing PR found)\n- Issues already closed: {count} (correctly auto-closed)\n```\n\n## What remains manual\n\n- User must approve all closures before they execute\n- Issues with no implementing PR require manual triage (defer, reassign, or close as won't-fix)\n- The skill does not verify that the PR actually implemented the issue — it relies on `Closes #N` references and branch naming conventions\n",{"args":29,"name":5,"description":7},"Phase number, Wave number","main","53ec1032b93d41533a48603e8fae7a92f56cc66c","intake\u002Fnoorinalabs-2026-06\u002Fcandidates\u002Fskills\u002Fwave-audit","https:\u002F\u002Fgithub.com\u002Fparametrization\u002F2real-team-framework","https:\u002F\u002Fgithub.com\u002Fparametrization","2026-09-21 01:06:30",{"source":8,"skillName":5,"commands":37,"prompt":47,"zipAvailable":48},[38,41,44],{"tool":39,"command":40},"npx","npx skills add parametrization\u002F2real-team-framework --skill wave-audit",{"tool":42,"command":43},"bunx","bunx skills add parametrization\u002F2real-team-framework --skill wave-audit",{"tool":45,"command":46},"pnpm","pnpm dlx skills add parametrization\u002F2real-team-framework --skill wave-audit","安装技能，技能地址：https:\u002F\u002Fgithub.com\u002Fparametrization\u002F2real-team-framework\u002Fblob\u002Fmain\u002Fintake\u002Fnoorinalabs-2026-06\u002Fcandidates\u002Fskills\u002Fwave-audit\u002FSKILL.md",true,[],[51,73,90,106,121,134],{"skillNo":52,"name":53,"nameZh":6,"description":54,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":6,"repositoryNo":12,"starsCount":13,"licenseSpdxId":14,"licenseFileUrl":6,"sourceHtmlUrl":55,"categories":56,"keywords":57,"publishedAt":24},"01M6E5VG1R7FF1025BZAV6BDTS","wave-wrapup","Finalize a wave — PR review, merge sequencing, issue cleanup, worktree cleanup, and handoff to retro","https:\u002F\u002Fgithub.com\u002Fparametrization\u002F2real-team-framework\u002Fblob\u002Fmain\u002Fintake\u002Fnoorinalabs-2026-06\u002Fcandidates\u002Fskills\u002Fwave-wrapup\u002FSKILL.md",[],[58,59,60,61,62,63,64,65,66,67,68,69,70,71,72],"wave wrapup","wrapup","pr","sequencing","name","worktree cleanup","issue","team","retro","worktree","cleanup","pr review","merge","handoff","review",{"skillNo":74,"name":75,"nameZh":6,"description":76,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":6,"repositoryNo":12,"starsCount":13,"licenseSpdxId":14,"licenseFileUrl":6,"sourceHtmlUrl":77,"categories":78,"keywords":79,"publishedAt":24},"01M6E5V9GDF75GV4YD2WPSH912","wave-start","Initialize a new wave — worktree cleanup, branch creation, label setup, status file update","https:\u002F\u002Fgithub.com\u002Fparametrization\u002F2real-team-framework\u002Fblob\u002Fmain\u002Fintake\u002Fnoorinalabs-2026-06\u002Fcandidates\u002Fskills\u002Fwave-start\u002FSKILL.md",[],[80,81,67,82,65,83,84,68,85,86,87,62,88,63,89],"start","wave start","branch","file","update","setup","status","file update","creation","initialize",{"skillNo":91,"name":92,"nameZh":6,"description":93,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":6,"repositoryNo":12,"starsCount":13,"licenseSpdxId":14,"licenseFileUrl":6,"sourceHtmlUrl":94,"categories":95,"keywords":96,"publishedAt":24},"01M6E5V4VXEJ39V87VHN1A3AW9","wave-scope","Reconcile declared-vs-labeled wave scope between \u002Fwave-retro and \u002Fwave-kickoff — collect dispositions, fold in retro carry-forwards and memory must-includes, and refresh the meta-issue","https:\u002F\u002Fgithub.com\u002Fparametrization\u002F2real-team-framework\u002Fblob\u002Fmain\u002Fintake\u002Fnoorinalabs-2026-06\u002Fcandidates\u002Fskills\u002Fwave-scope\u002FSKILL.md",[],[97,98,99,100,101,64,102,66,103,104,105],"wave scope","scope","reconcile","collect","Fold","kickoff","Meta","memory","refresh",{"skillNo":107,"name":108,"nameZh":6,"description":109,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":6,"repositoryNo":12,"starsCount":13,"licenseSpdxId":14,"licenseFileUrl":6,"sourceHtmlUrl":110,"categories":111,"keywords":112,"publishedAt":24},"01M6E5TZNPGG5EXZEN1FKJJT6K","wave-retro","Automated wave retrospective — PR analysis, assessments, trust matrix updates, feedback log, charter change proposals","https:\u002F\u002Fgithub.com\u002Fparametrization\u002F2real-team-framework\u002Fblob\u002Fmain\u002Fintake\u002Fnoorinalabs-2026-06\u002Fcandidates\u002Fskills\u002Fwave-retro\u002FSKILL.md",[],[66,113,114,62,115,116,117,65,118,119,60,120],"wave retro","feedback","trust","log","proposals","analysis","retrospective","change",{"skillNo":122,"name":123,"nameZh":6,"description":124,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":6,"repositoryNo":12,"starsCount":13,"licenseSpdxId":14,"licenseFileUrl":6,"sourceHtmlUrl":125,"categories":126,"keywords":127,"publishedAt":24},"01M6E5TR8XB3Z10A9SD4ZYNV45","wave-kickoff","Automated wave planning — branch creation, label management, issue labeling, kickoff comments, and execution plan","https:\u002F\u002Fgithub.com\u002Fparametrization\u002F2real-team-framework\u002Fblob\u002Fmain\u002Fintake\u002Fnoorinalabs-2026-06\u002Fcandidates\u002Fskills\u002Fwave-kickoff\u002FSKILL.md",[],[102,128,82,129,65,130,131,132,133,62,88,64],"wave kickoff","plan","execution","planning","execution plan","management",{"skillNo":135,"name":136,"nameZh":6,"description":137,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":6,"repositoryNo":12,"starsCount":13,"licenseSpdxId":14,"licenseFileUrl":6,"sourceHtmlUrl":138,"categories":139,"keywords":145,"publishedAt":24},"01M6E5TG3MPXT1SVT4FTJZ4JNT","watch-deploy","Monitor (and, within bounds, remediate) a deploy triggered by a merge — staging automatically post-merge, production only after the owner approves the queued deploy. Polls the deploy run to a terminal state, classifies failures, attempts bounded fix-forward, and escalates with a precise diagnosis.","https:\u002F\u002Fgithub.com\u002Fparametrization\u002F2real-team-framework\u002Fblob\u002Fmain\u002Fintake\u002Fnoorinalabs-2026-06\u002Fcandidates\u002Fskills\u002Fwatch-deploy\u002FSKILL.md",[140],{"categoryNo":141,"categoryName":142,"taxonomyType":143,"taxonomyTypeDesc":144},"01JBSEEDCAT000000000000011","运维与部署","SCENARIO","使用场景",[146,147,148,149,150,151,152,153,154,155,156,157,158,70,159],"watch deploy","deploy","watch","id","post","diagnosis","env","only","fix","Production","state","run","monitor","terminal"]