[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"skill:01M6C45SFJAWK8GZ84CHR3ZJMP":3,"skill-same:01M6C45SFJAWK8GZ84CHR3ZJMP":89},{"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":22,"publishedAt":36,"linkOnly":37,"markdownContent":38,"markdownBody":39,"frontMatter":40,"refName":44,"commitSha":45,"skillDirectory":46,"forksCount":47,"repositoryHtmlUrl":48,"repositoryHomepageUrl":6,"ownerHtmlUrl":49,"ownerBlogUrl":6,"ownerDescription":6,"updatedAt":50,"install":51,"resources":64},"01M6C45SFJAWK8GZ84CHR3ZJMP","plugin-release-hygiene",null,"Maintainer-side version-bump guardrail and Claude startup drift backstop guidance for plugin entry-point edits. Use when entry-point files change, when choosing patch\u002Fminor\u002Fmajor overrides, or when documenting\u002Frunning the Claude plugin update surface. DO NOT USE FOR: CI release automation, registry publishing, or purely manual non-agent edit flows.","Grimblaz\u002Fagent-orchestra","Grimblaz","https:\u002F\u002Favatars.githubusercontent.com\u002Fu\u002F74755849?v=4","01M6C430M9XZDHGHPWQVTQ3KMA","01M6C430RJY3MMX0QAZ3X8DR3Y",3,"MIT","https:\u002F\u002Fgithub.com\u002FGrimblaz\u002Fagent-orchestra\u002Fblob\u002Fmain\u002Fskills\u002Fplugin-release-hygiene\u002FSKILL.md",[17],{"categoryNo":18,"categoryName":19,"taxonomyType":20,"taxonomyTypeDesc":21},"01JBSEEDCAT000000000000023","Skill与智能体开发","SCENARIO","使用场景",[23,24,25,26,27,28,29,30,31,32,33,34,35],"plugin","release","plugin release hygiene","automation","change","update","registry","ci","startup","changeset","edit","use","version","2026-11-10 10:12:30",false,"---\nname: plugin-release-hygiene\ndescription: \"Maintainer-side version-bump guardrail and Claude startup drift backstop guidance for plugin entry-point edits. Use when entry-point files change, when choosing patch\u002Fminor\u002Fmajor overrides, or when documenting\u002Frunning the Claude plugin update surface. DO NOT USE FOR: CI release automation, registry publishing, or purely manual non-agent edit flows.\"\nprovides: release-hygiene\nsuggested-next-step: pwsh .\u002Fskills\u002Fplugin-release-hygiene\u002Fscripts\u002Fplugin-release-hygiene-hook.ps1\napplies-when: changeset.touchesPluginEntryPoint()\n---\n\n\u003C!-- platform-assumptions: markdown skill guidance for VS Code custom agents in Agent Orchestra; assumes the skill is loaded by the plugin-distributed PostToolUse hook or a Copilot applyTo instruction when entry-point files are edited. -->\n\u003C!-- markdownlint-disable-file MD041 MD003 -->\n\n# Plugin Release Hygiene\n\nReusable guidance for preventing plugin entry-point changes from shipping without a version bump and for keeping the Claude-side update surface explicit. The maintainer-side trigger now lives in the plugin-distributed `PostToolUse` hooks declared in `hooks\u002Fhooks.json` for Claude and `hooks.json` for Copilot, both of which run `skills\u002Fplugin-release-hygiene\u002Fscripts\u002Fplugin-release-hygiene-hook.ps1`.\n\n> **Survival**: `SMC-12` governs `.claude\u002F.state\u002Frelease-hygiene-{slug}.json`. State is `within-conversation:session_id` when the hook payload supplies `session_id`; otherwise it is `within-worktree:hooks` keyed by branch slug, then short HEAD SHA, then `session` fallback. Cross-tool silence is partial: Claude may key by `session_id` while Copilot keys by branch slug, so both surfaces share a decision only when they resolve the same state file. The SHA and final fallback paths record `keying_strategy: session_fallback`.\n\n## When to Use\n\n- When an agent conversation edits an entry-point file that ships through the plugin cache\n- When a maintainer needs a default bump proposal plus an override path\n- When the repo must coalesce multiple entry-point edits into one scoped decision\n- When documentation or startup logic needs the supported `claude plugin` command surface\n\n## Entry-Point Scope\n\nTreat these paths as cache-keyed plugin entry points:\n\n- `agents\u002F**`\n- `commands\u002F**`\n- `skills\u002F**`\n- `hooks\u002F**`\n- `.claude-plugin\u002F**`\n- `plugin.json`\n- `README.md`\n- `.github\u002Fcopilot-instructions.md`\n\n> **Authoritative source**: The canonical entry-point set is defined by `Get-FVPluginEntryPointPatterns` in `.github\u002Fscripts\u002Flib\u002Fframe-predicate-core.ps1`. The list above mirrors it; `.github\u002Fscripts\u002FTests\u002Fentry-point-scope-parity.Tests.ps1` permanently prevents drift between this prose and the function.\n\nAny edit touching one of those paths requires a release-hygiene check before the turn ends.\n\n## Purpose\n\nMake the shipping consequence of an entry-point edit visible at the moment it happens. The default behavior is deterministic: propose a patch bump, offer a structured override for minor or major user-visible changes, or allow an explicit no-bump skip for comment-only edits. Coalesce that decision once per active state key so repeated edits do not spam the maintainer.\n\n## Maintainer Flow\n\n### 1. Determine Whether To Speak Or Stay Silent\n\nBefore proposing a bump, check the active scoped state file at `.claude\u002F.state\u002Frelease-hygiene-{slug}.json`.\n\n- If the file is absent, create proposal state and surface the bump prompt.\n- If the file exists and `chosen_level` is already set, append the touched path to `touched_files` and stay silent.\n- If the working copy already reflects a version bump relative to `main`, stay silent.\n- If `.github\u002Fscripts\u002Fbump-version.ps1` is not findable from the repo root, stay silent. Consumer plugin-cache installs must not try to rewrite versions.\n\nFor Claude Code, prefer the hook payload's `session_id` as the slug source so branch switches inside one conversation reuse the same state file. Fall back to the existing branch-derived slug when `session_id` is absent. If branch resolution also fails, use the short HEAD SHA when available; use `session` only as the final fallback.\n\n### 2. Default Classification\n\nDefault to `patch` for every entry-point edit. This is deterministic from the diff target, not from content inspection.\n\n- `patch` — default for any publishable entry-point change, including doc-only changes\n- `minor` — maintainer override for a new user-visible surface such as a new command, tool binding, or frontmatter field\n- `major` — maintainer override for a breaking surface change\n- `skip` — maintainer override for no-bump cases such as non-shipping comments or false-positive context\n\nDo not introduce a content-sensitive classifier. The baseline rule is always-patch.\n\n### 3. Proposal Text\n\nUse this shape for the first proposal in a conversation:\n\n> This edit touches `{path}`, which is cache-keyed by version. Proposing bump `{current}` -> `{next}` (`patch`: entry-point change so cached installs pick it up). Override if you wanted a different increment level.\n\nKeep the reason to one line and keep each option label to a few words, so the four choices stay scannable side by side.\n\n### 4. Structured Override\n\nOffer exactly four choices:\n\n- `Patch`\n- `Minor`\n- `Major`\n- `Skip`\n\nPersist the chosen level in `.claude\u002F.state\u002Frelease-hygiene-{slug}.json` with this minimum shape:\n\n```json\n{\n  \"proposed_level\": \"patch\",\n  \"chosen_level\": \"patch\",\n  \"keying_strategy\": \"session_id\",\n  \"touched_files\": [\"agents\u002FExperience-Owner.agent.md\"]\n}\n```\n\nAllowed `keying_strategy` values are `session_id`, `branch_slug`, and `session_fallback`.\n\n### 5. Apply The Bump\n\nResolve the repo root with `git rev-parse --show-toplevel`, then locate `.github\u002Fscripts\u002Fbump-version.ps1`. Compute the next semver from the current `.claude-plugin\u002Fplugin.json` version and the chosen level.\n\nBefore invoking the script, construct a categorized CHANGELOG entry body. Group changes into the appropriate subsection(s) — `Fixed`, `Added`, or `Changed` — as a markdown bullet list. Pass the body as `-ChangelogEntry` and the primary category as `-ChangelogSection`. The script uses today's date internally (`Get-Date -Format 'yyyy-MM-dd'`); the caller only supplies the body.\n\nExample invocation:\n\n```powershell\n$body = @\"\n- Brief description of what changed (#issue).\n\"@\npwsh .github\u002Fscripts\u002Fbump-version.ps1 -Version \u003CnextVersion> -ChangelogEntry $body -ChangelogSection 'Fixed'\n```\n\nUse `'Added'` when the primary change introduces a new user-visible surface, `'Fixed'` for bug fixes, and `'Changed'` for other modifications. When a release spans multiple categories, pass the dominant category as `-ChangelogSection` and include all bullets in `-ChangelogEntry` — the entry body may contain multiple `### SubSection` headings if needed, but must not contain a `## [X.Y.Z]` release header (the script synthesizes that).\n\nThe script inserts the CHANGELOG section above the most-recent existing `## [X.Y.Z]` heading (em-dash, en-dash, or hyphen separator are all recognized). If the section for the new version already exists, the script skips insertion silently (idempotent).\n\nDo not hand-edit version strings after the repo is back in lockstep. `bump-version.ps1` is the authority for writing all 7 occurrences and the CHANGELOG entry.\n\n## Claude Plugin CLI Surface\n\nThese commands are part of the supported surface and should be documented consistently anywhere this skill is referenced:\n\n```text\nclaude plugin list\nclaude plugin marketplace list\nclaude plugin marketplace update\nclaude plugin marketplace add \u003Csource>\nclaude plugin marketplace remove \u003Cname>\nclaude plugin update \u003Cplugin@marketplace>\nclaude plugin install \u003Cplugin@marketplace>\nclaude plugin uninstall \u003Cplugin@marketplace>\n```\n\nWhen a drift-check or maintainer flow needs one of these commands, attempt the command and parse the actual failure before claiming the surface is unavailable.\n\n## Related Guidance\n\n- Pair this skill with `session-startup` for the Claude-side active-assist drift backstop\n- Keep the Copilot and Claude trigger mechanics in the skill's `platforms\u002F` files, not in this shared body\n\n## Gotchas\n\n| Trigger                                        | Gotcha                                       | Fix                                                                                    |\n| ---------------------------------------------- | -------------------------------------------- | -------------------------------------------------------------------------------------- |\n| Multiple entry-point edits in one conversation | Repeated prompts turn a guardrail into noise | Record the first proposal in `.claude\u002F.state\u002F` and silently append later touched files |\n\n| Trigger                                         | Gotcha                                                                | Fix                                                                                                |\n| ----------------------------------------------- | --------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------- |\n| `session_id` is missing or payload shape drifts | A branch-scoped fallback can look like a silent regression in reviews | Persist `keying_strategy` so tests and future reviews can observe which keying path actually fired |\n\n| Trigger                                        | Gotcha                                                             | Fix                                                                      |\n| ---------------------------------------------- | ------------------------------------------------------------------ | ------------------------------------------------------------------------ |\n| Repo version files are already out of lockstep | `bump-version.ps1` refuses to write and the guardrail looks broken | Restore lockstep first, then let the bump script own all version updates |\n\n---\n\n## Frame Ports Filled By This Skill\n\n| Port | Work adapter | Explicit-skip adapter |\n| --- | --- | --- |\n| `release-hygiene` | This `SKILL.md` frontmatter declares `provides: release-hygiene` and `applies-when: changeset.touchesPluginEntryPoint()` | [adapters\u002Frelease-hygiene-explicit-skip-adapter.md](adapters\u002Frelease-hygiene-explicit-skip-adapter.md) |\n\n## Platform-specific invocation\n\nThis skill's methodology is tool-agnostic. Platform-specific routing lives alongside:\n\n- Copilot: [platforms\u002Fcopilot.md](platforms\u002Fcopilot.md)\n- Claude Code: [platforms\u002Fclaude.md](platforms\u002Fclaude.md)\n","\u003C!-- platform-assumptions: markdown skill guidance for VS Code custom agents in Agent Orchestra; assumes the skill is loaded by the plugin-distributed PostToolUse hook or a Copilot applyTo instruction when entry-point files are edited. -->\n\u003C!-- markdownlint-disable-file MD041 MD003 -->\n\n# Plugin Release Hygiene\n\nReusable guidance for preventing plugin entry-point changes from shipping without a version bump and for keeping the Claude-side update surface explicit. The maintainer-side trigger now lives in the plugin-distributed `PostToolUse` hooks declared in `hooks\u002Fhooks.json` for Claude and `hooks.json` for Copilot, both of which run `skills\u002Fplugin-release-hygiene\u002Fscripts\u002Fplugin-release-hygiene-hook.ps1`.\n\n> **Survival**: `SMC-12` governs `.claude\u002F.state\u002Frelease-hygiene-{slug}.json`. State is `within-conversation:session_id` when the hook payload supplies `session_id`; otherwise it is `within-worktree:hooks` keyed by branch slug, then short HEAD SHA, then `session` fallback. Cross-tool silence is partial: Claude may key by `session_id` while Copilot keys by branch slug, so both surfaces share a decision only when they resolve the same state file. The SHA and final fallback paths record `keying_strategy: session_fallback`.\n\n## When to Use\n\n- When an agent conversation edits an entry-point file that ships through the plugin cache\n- When a maintainer needs a default bump proposal plus an override path\n- When the repo must coalesce multiple entry-point edits into one scoped decision\n- When documentation or startup logic needs the supported `claude plugin` command surface\n\n## Entry-Point Scope\n\nTreat these paths as cache-keyed plugin entry points:\n\n- `agents\u002F**`\n- `commands\u002F**`\n- `skills\u002F**`\n- `hooks\u002F**`\n- `.claude-plugin\u002F**`\n- `plugin.json`\n- `README.md`\n- `.github\u002Fcopilot-instructions.md`\n\n> **Authoritative source**: The canonical entry-point set is defined by `Get-FVPluginEntryPointPatterns` in `.github\u002Fscripts\u002Flib\u002Fframe-predicate-core.ps1`. The list above mirrors it; `.github\u002Fscripts\u002FTests\u002Fentry-point-scope-parity.Tests.ps1` permanently prevents drift between this prose and the function.\n\nAny edit touching one of those paths requires a release-hygiene check before the turn ends.\n\n## Purpose\n\nMake the shipping consequence of an entry-point edit visible at the moment it happens. The default behavior is deterministic: propose a patch bump, offer a structured override for minor or major user-visible changes, or allow an explicit no-bump skip for comment-only edits. Coalesce that decision once per active state key so repeated edits do not spam the maintainer.\n\n## Maintainer Flow\n\n### 1. Determine Whether To Speak Or Stay Silent\n\nBefore proposing a bump, check the active scoped state file at `.claude\u002F.state\u002Frelease-hygiene-{slug}.json`.\n\n- If the file is absent, create proposal state and surface the bump prompt.\n- If the file exists and `chosen_level` is already set, append the touched path to `touched_files` and stay silent.\n- If the working copy already reflects a version bump relative to `main`, stay silent.\n- If `.github\u002Fscripts\u002Fbump-version.ps1` is not findable from the repo root, stay silent. Consumer plugin-cache installs must not try to rewrite versions.\n\nFor Claude Code, prefer the hook payload's `session_id` as the slug source so branch switches inside one conversation reuse the same state file. Fall back to the existing branch-derived slug when `session_id` is absent. If branch resolution also fails, use the short HEAD SHA when available; use `session` only as the final fallback.\n\n### 2. Default Classification\n\nDefault to `patch` for every entry-point edit. This is deterministic from the diff target, not from content inspection.\n\n- `patch` — default for any publishable entry-point change, including doc-only changes\n- `minor` — maintainer override for a new user-visible surface such as a new command, tool binding, or frontmatter field\n- `major` — maintainer override for a breaking surface change\n- `skip` — maintainer override for no-bump cases such as non-shipping comments or false-positive context\n\nDo not introduce a content-sensitive classifier. The baseline rule is always-patch.\n\n### 3. Proposal Text\n\nUse this shape for the first proposal in a conversation:\n\n> This edit touches `{path}`, which is cache-keyed by version. Proposing bump `{current}` -> `{next}` (`patch`: entry-point change so cached installs pick it up). Override if you wanted a different increment level.\n\nKeep the reason to one line and keep each option label to a few words, so the four choices stay scannable side by side.\n\n### 4. Structured Override\n\nOffer exactly four choices:\n\n- `Patch`\n- `Minor`\n- `Major`\n- `Skip`\n\nPersist the chosen level in `.claude\u002F.state\u002Frelease-hygiene-{slug}.json` with this minimum shape:\n\n```json\n{\n  \"proposed_level\": \"patch\",\n  \"chosen_level\": \"patch\",\n  \"keying_strategy\": \"session_id\",\n  \"touched_files\": [\"agents\u002FExperience-Owner.agent.md\"]\n}\n```\n\nAllowed `keying_strategy` values are `session_id`, `branch_slug`, and `session_fallback`.\n\n### 5. Apply The Bump\n\nResolve the repo root with `git rev-parse --show-toplevel`, then locate `.github\u002Fscripts\u002Fbump-version.ps1`. Compute the next semver from the current `.claude-plugin\u002Fplugin.json` version and the chosen level.\n\nBefore invoking the script, construct a categorized CHANGELOG entry body. Group changes into the appropriate subsection(s) — `Fixed`, `Added`, or `Changed` — as a markdown bullet list. Pass the body as `-ChangelogEntry` and the primary category as `-ChangelogSection`. The script uses today's date internally (`Get-Date -Format 'yyyy-MM-dd'`); the caller only supplies the body.\n\nExample invocation:\n\n```powershell\n$body = @\"\n- Brief description of what changed (#issue).\n\"@\npwsh .github\u002Fscripts\u002Fbump-version.ps1 -Version \u003CnextVersion> -ChangelogEntry $body -ChangelogSection 'Fixed'\n```\n\nUse `'Added'` when the primary change introduces a new user-visible surface, `'Fixed'` for bug fixes, and `'Changed'` for other modifications. When a release spans multiple categories, pass the dominant category as `-ChangelogSection` and include all bullets in `-ChangelogEntry` — the entry body may contain multiple `### SubSection` headings if needed, but must not contain a `## [X.Y.Z]` release header (the script synthesizes that).\n\nThe script inserts the CHANGELOG section above the most-recent existing `## [X.Y.Z]` heading (em-dash, en-dash, or hyphen separator are all recognized). If the section for the new version already exists, the script skips insertion silently (idempotent).\n\nDo not hand-edit version strings after the repo is back in lockstep. `bump-version.ps1` is the authority for writing all 7 occurrences and the CHANGELOG entry.\n\n## Claude Plugin CLI Surface\n\nThese commands are part of the supported surface and should be documented consistently anywhere this skill is referenced:\n\n```text\nclaude plugin list\nclaude plugin marketplace list\nclaude plugin marketplace update\nclaude plugin marketplace add \u003Csource>\nclaude plugin marketplace remove \u003Cname>\nclaude plugin update \u003Cplugin@marketplace>\nclaude plugin install \u003Cplugin@marketplace>\nclaude plugin uninstall \u003Cplugin@marketplace>\n```\n\nWhen a drift-check or maintainer flow needs one of these commands, attempt the command and parse the actual failure before claiming the surface is unavailable.\n\n## Related Guidance\n\n- Pair this skill with `session-startup` for the Claude-side active-assist drift backstop\n- Keep the Copilot and Claude trigger mechanics in the skill's `platforms\u002F` files, not in this shared body\n\n## Gotchas\n\n| Trigger                                        | Gotcha                                       | Fix                                                                                    |\n| ---------------------------------------------- | -------------------------------------------- | -------------------------------------------------------------------------------------- |\n| Multiple entry-point edits in one conversation | Repeated prompts turn a guardrail into noise | Record the first proposal in `.claude\u002F.state\u002F` and silently append later touched files |\n\n| Trigger                                         | Gotcha                                                                | Fix                                                                                                |\n| ----------------------------------------------- | --------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------- |\n| `session_id` is missing or payload shape drifts | A branch-scoped fallback can look like a silent regression in reviews | Persist `keying_strategy` so tests and future reviews can observe which keying path actually fired |\n\n| Trigger                                        | Gotcha                                                             | Fix                                                                      |\n| ---------------------------------------------- | ------------------------------------------------------------------ | ------------------------------------------------------------------------ |\n| Repo version files are already out of lockstep | `bump-version.ps1` refuses to write and the guardrail looks broken | Restore lockstep first, then let the bump script own all version updates |\n\n---\n\n## Frame Ports Filled By This Skill\n\n| Port | Work adapter | Explicit-skip adapter |\n| --- | --- | --- |\n| `release-hygiene` | This `SKILL.md` frontmatter declares `provides: release-hygiene` and `applies-when: changeset.touchesPluginEntryPoint()` | [adapters\u002Frelease-hygiene-explicit-skip-adapter.md](adapters\u002Frelease-hygiene-explicit-skip-adapter.md) |\n\n## Platform-specific invocation\n\nThis skill's methodology is tool-agnostic. Platform-specific routing lives alongside:\n\n- Copilot: [platforms\u002Fcopilot.md](platforms\u002Fcopilot.md)\n- Claude Code: [platforms\u002Fclaude.md](platforms\u002Fclaude.md)\n",{"name":5,"provides":41,"description":7,"applies-when":42,"suggested-next-step":43},"release-hygiene","changeset.touchesPluginEntryPoint()","pwsh .\u002Fskills\u002Fplugin-release-hygiene\u002Fscripts\u002Fplugin-release-hygiene-hook.ps1","main","d5486aacc32c9ca1b07173cfd530f8fe75c29e58","skills\u002Fplugin-release-hygiene",0,"https:\u002F\u002Fgithub.com\u002FGrimblaz\u002Fagent-orchestra","https:\u002F\u002Fgithub.com\u002FGrimblaz","2026-08-16 01:12:46",{"source":8,"skillName":5,"commands":52,"prompt":62,"zipAvailable":63},[53,56,59],{"tool":54,"command":55},"npx","npx skills add Grimblaz\u002Fagent-orchestra --skill plugin-release-hygiene",{"tool":57,"command":58},"bunx","bunx skills add Grimblaz\u002Fagent-orchestra --skill plugin-release-hygiene",{"tool":60,"command":61},"pnpm","pnpm dlx skills add Grimblaz\u002Fagent-orchestra --skill plugin-release-hygiene","安装技能，技能地址：https:\u002F\u002Fgithub.com\u002FGrimblaz\u002Fagent-orchestra\u002Fblob\u002Fmain\u002Fskills\u002Fplugin-release-hygiene\u002FSKILL.md",true,[65,71,75,79,85],{"path":66,"resourceType":67,"resourceTypeDesc":68,"sizeBytes":69,"sourceHtmlUrl":70},"adapters\u002Frelease-hygiene-explicit-skip-adapter.md","REFERENCE","参考文档",328,"https:\u002F\u002Fgithub.com\u002FGrimblaz\u002Fagent-orchestra\u002Fblob\u002Fmain\u002Fskills\u002Fplugin-release-hygiene\u002Fadapters\u002Frelease-hygiene-explicit-skip-adapter.md",{"path":72,"resourceType":67,"resourceTypeDesc":68,"sizeBytes":73,"sourceHtmlUrl":74},"platforms\u002Fclaude.md",1881,"https:\u002F\u002Fgithub.com\u002FGrimblaz\u002Fagent-orchestra\u002Fblob\u002Fmain\u002Fskills\u002Fplugin-release-hygiene\u002Fplatforms\u002Fclaude.md",{"path":76,"resourceType":67,"resourceTypeDesc":68,"sizeBytes":77,"sourceHtmlUrl":78},"platforms\u002Fcopilot.md",1609,"https:\u002F\u002Fgithub.com\u002FGrimblaz\u002Fagent-orchestra\u002Fblob\u002Fmain\u002Fskills\u002Fplugin-release-hygiene\u002Fplatforms\u002Fcopilot.md",{"path":80,"resourceType":81,"resourceTypeDesc":82,"sizeBytes":83,"sourceHtmlUrl":84},"scripts\u002Fplugin-release-hygiene-hook.ps1","SCRIPT","脚本",14056,"https:\u002F\u002Fgithub.com\u002FGrimblaz\u002Fagent-orchestra\u002Fblob\u002Fmain\u002Fskills\u002Fplugin-release-hygiene\u002Fscripts\u002Fplugin-release-hygiene-hook.ps1",{"path":86,"resourceType":81,"resourceTypeDesc":82,"sizeBytes":87,"sourceHtmlUrl":88},"scripts\u002Fsymmetric-bump-verifier.ps1",11640,"https:\u002F\u002Fgithub.com\u002FGrimblaz\u002Fagent-orchestra\u002Fblob\u002Fmain\u002Fskills\u002Fplugin-release-hygiene\u002Fscripts\u002Fsymmetric-bump-verifier.ps1",[90,121,145,161,187,208],{"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":102,"publishedAt":36},"01M6C48YMJVFHM7DVGG1WWW5RJ","webapp-testing","Playwright end-to-end testing guidance for web apps, with practical patterns and setup steps. Use when creating or improving browser-based E2E coverage, test stability, and CI execution. DO NOT USE FOR: React component tests (use ui-testing), canvas game interaction (use browser-canvas-testing), TDD workflow (use test-driven-development), debugging failures (use systematic-debugging), or randomized property tests (use property-based-testing).","https:\u002F\u002Fgithub.com\u002FGrimblaz\u002Fagent-orchestra\u002Fblob\u002Fmain\u002Fskills\u002Fwebapp-testing\u002FSKILL.md",[96,99],{"categoryNo":97,"categoryName":98,"taxonomyType":20,"taxonomyTypeDesc":21},"01JBSEEDCAT000000000000008","测试与质量",{"categoryNo":100,"categoryName":101,"taxonomyType":20,"taxonomyTypeDesc":21},"01JBSEEDCAT000000000000009","前端开发",[103,104,105,106,107,108,109,110,111,112,113,114,115,116,30,117,118,119,120,34],"testing","webapp testing","webapp","canvas","tdd","workflow","playwright","test","web","react","component","debugging","development","browser","execution","e2e","game","coverage",{"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":36},"01M6C48TNNP2KCSQXV8YK7SK49","verification-before-completion","Evidence-based verification checklist before marking work complete. Use before PRs, releases, marking tickets done, or any \"I'm finished\" declaration; also when naming a baseline commit for a differential suite claim, when designing a mutation campaign or red-run evidence, when making an absence claim, a universal claim, or a one-time demonstration offered as a standing guarantee, when attributing a measurement or claiming a sweep or verification loop is complete, and when stating what a check or a CI suite will do about a change. DO NOT USE FOR: post-merge cleanup or archival (use post-pr-review) or processing GitHub review comments (use code-review-intake).","https:\u002F\u002Fgithub.com\u002FGrimblaz\u002Fagent-orchestra\u002Fblob\u002Fmain\u002Fskills\u002Fverification-before-completion\u002FSKILL.md",[],[128,129,130,27,131,132,133,134,135,136,137,138,30,139,140,141,142,34,143,144],"verification","verification before completion","review","commit","merge","pr","cleanup","run","code","code-review","intake","loop","verification loop","work","check","evidence","campaign",{"skillNo":146,"name":147,"nameZh":6,"description":148,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":6,"repositoryNo":12,"starsCount":13,"licenseSpdxId":14,"licenseFileUrl":6,"sourceHtmlUrl":149,"categories":150,"keywords":151,"publishedAt":36},"01M6C48QZWNTP7JGKD32QZAKKX","validation-methodology","Reusable validation and review methodology for staged validation, failure triage, and prosecution-depth setup. Use when running validation ladders, triaging failures, or executing adversarial review passes. DO NOT USE FOR: CE Gate orchestration, specialist dispatch ownership, or step execution flow (keep those in Code-Conductor).","https:\u002F\u002Fgithub.com\u002FGrimblaz\u002Fagent-orchestra\u002Fblob\u002Fmain\u002Fskills\u002Fvalidation-methodology\u002FSKILL.md",[],[152,153,154,130,155,156,157,158,136,159,117,34,160],"validation","methodology","validation methodology","triage","orchestration","setup","adversarial review","flow","dispatch",{"skillNo":162,"name":163,"nameZh":6,"description":164,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":6,"repositoryNo":12,"starsCount":13,"licenseSpdxId":14,"licenseFileUrl":6,"sourceHtmlUrl":165,"categories":166,"keywords":173,"publishedAt":36},"01M6C48MCAHG5Z79BJ369CRYRZ","upstream-onboarding","Shared opening-phase protocol for upstream agents (Experience-Owner, Solution-Designer, Issue-Planner) and Code-Conductor when invoked on an existing GitHub issue. Renders a scaled context brief and runs a standards check on inherited work at each phase boundary. Use when a user-invocable agent receives a request referencing an existing GitHub issue and must load solution-authoring and upstream-onboarding at the opening phase. DO NOT USE FOR: subagent dispatches (which already operate within an assessed session context); post-merge review (use post-pr-review); research or non-tree subagents.","https:\u002F\u002Fgithub.com\u002FGrimblaz\u002Fagent-orchestra\u002Fblob\u002Fmain\u002Fskills\u002Fupstream-onboarding\u002FSKILL.md",[167,168],{"categoryNo":18,"categoryName":19,"taxonomyType":20,"taxonomyTypeDesc":21},{"categoryNo":169,"categoryName":170,"taxonomyType":171,"taxonomyTypeDesc":172},"01JBSEEDCAT000000000000038","人力资源","PROFESSION","适用职业",[174,175,130,176,177,132,178,133,136,179,180,181,182,183,184,141,142,185,186,34],"onboarding","upstream onboarding","github","research","standards check","protocol","brief","boundary","designer","subagent","planner","user","session",{"skillNo":188,"name":189,"nameZh":6,"description":190,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":6,"repositoryNo":12,"starsCount":13,"licenseSpdxId":14,"licenseFileUrl":6,"sourceHtmlUrl":191,"categories":192,"keywords":201,"publishedAt":36},"01M6C48GPVE120TGPMD1CS365H","ui-testing","Resilient React component testing strategies focusing on user behavior. Use when writing or reviewing component-level React tests, fixing flaky component tests, or establishing React testing patterns. DO NOT USE FOR: Playwright E2E tests (use webapp-testing), canvas game interaction (use browser-canvas-testing), TDD workflow (use test-driven-development), debugging failures (use systematic-debugging), UI component design (use frontend-design), or randomized property tests (use property-based-testing).","https:\u002F\u002Fgithub.com\u002FGrimblaz\u002Fagent-orchestra\u002Fblob\u002Fmain\u002Fskills\u002Fui-testing\u002FSKILL.md",[193,194,195,198],{"categoryNo":97,"categoryName":98,"taxonomyType":20,"taxonomyTypeDesc":21},{"categoryNo":100,"categoryName":101,"taxonomyType":20,"taxonomyTypeDesc":21},{"categoryNo":196,"categoryName":197,"taxonomyType":20,"taxonomyTypeDesc":21},"01JBSEEDCAT000000000000015","视觉设计",{"categoryNo":199,"categoryName":200,"taxonomyType":171,"taxonomyTypeDesc":172},"01JBSEEDCAT000000000000032","设计师",[103,202,203,204,205,206,106,108,109,110,112,113,114,115,116,207,118,119,34,105],"ui","ui testing","frontend","design","writing","testing patterns",{"skillNo":209,"name":210,"nameZh":6,"description":211,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":6,"repositoryNo":12,"starsCount":13,"licenseSpdxId":14,"licenseFileUrl":6,"sourceHtmlUrl":212,"categories":213,"keywords":216,"publishedAt":36},"01M6C48DRJ9XBDR2FW0W37DY53","ui-iteration","Reusable screenshot-driven UI polish workflow for iterative visual refinement. Use when improving layout, hierarchy, spacing, feedback, or Tailwind-based presentation through repeated review-and-adjust passes. DO NOT USE FOR: functional bug fixing, accessibility-only audits, or major redesign strategy work (use Code-Smith or frontend-design).","https:\u002F\u002Fgithub.com\u002FGrimblaz\u002Fagent-orchestra\u002Fblob\u002Fmain\u002Fskills\u002Fui-iteration\u002FSKILL.md",[214,215],{"categoryNo":100,"categoryName":101,"taxonomyType":20,"taxonomyTypeDesc":21},{"categoryNo":199,"categoryName":200,"taxonomyType":171,"taxonomyTypeDesc":172},[202,217,204,205,130,108,218,136,219,220,221,222,223,141,224,225,34,226],"ui iteration","accessibility","screenshot","Tailwind","polish","ui polish","feedback","redesign","strategy","only"]