[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"skill:01M6X6PRBW32D8XV9DR2MDP0V5":3,"skill-same:01M6X6PRBW32D8XV9DR2MDP0V5":83},{"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":23,"publishedAt":44,"linkOnly":45,"markdownContent":46,"markdownBody":47,"frontMatter":48,"refName":54,"commitSha":55,"skillDirectory":56,"forksCount":57,"repositoryHtmlUrl":58,"repositoryHomepageUrl":59,"ownerHtmlUrl":60,"ownerBlogUrl":59,"ownerDescription":61,"updatedAt":62,"install":63,"resources":76},"01M6X6PRBW32D8XV9DR2MDP0V5","finishing-a-development-branch",null,"Use when the feature is implementation-complete and the next step is 'ship it' — verifies, cleans up, routes to merge\u002FPR\u002Fpark\u002Fdiscard; never destroys work without explicit confirmation.","event4u-app\u002Fagent-config","event4u-app","https:\u002F\u002Favatars.githubusercontent.com\u002Fu\u002F199339632?v=4","01M6X5TWBNCQCE1VDKT4E9KF7N","event4u.app","01M6X5TWF4HRM266RG2Q5VVH1X",19,"MIT","https:\u002F\u002Fgithub.com\u002Fevent4u-app\u002Fagent-config\u002Fblob\u002Fmain\u002Fsrc\u002Fskills\u002Ffinishing-a-development-branch\u002FSKILL.md",[18],{"categoryNo":19,"categoryName":20,"taxonomyType":21,"taxonomyTypeDesc":22},"01JBSEEDCAT000000000000023","Skill与智能体开发","SCENARIO","使用场景",[24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43],"finishing a development branch","development","branch","when","merge","next step","complete","feature","ship it","next","base","park","up","never","use","process","confirmation","work","ship","pr","2026-11-10 10:12:30",false,"---\nmodel_tier: medium\nname: finishing-a-development-branch\ndescription: \"Use when the feature is implementation-complete and the next step is 'ship it' — verifies, cleans up, routes to merge\u002FPR\u002Fpark\u002Fdiscard; never destroys work without explicit confirmation.\"\ndomain: process\nworkspaces:\n  - engineering\npacks:\n  - engineering-base\n---\n\n# finishing-a-development-branch\n\n## When to use\n\n* Implementation of a feature or bug fix is complete on a development branch\n* All planned commits are in, the user is ready to hand off\n* You are about to say \"done\" and suggest the next action\n* The branch has been idle and the user wants to decide its fate\n\nDo NOT use when:\n\n* Still implementing — use targeted verification, not the ship gate\n* A PR already exists and is mid-review — use\n  [`receiving-code-review`](..\u002Freceiving-code-review\u002FSKILL.md)\n* Only documentation changed and no tests apply — simplify to\n  commit + PR without the full gate\n\n## Goal\n\nRoute a finished branch to its next state **with evidence** — merged,\npushed for PR, parked, or discarded. Never let a half-verified branch\nbecome a PR. Never destroy work without explicit confirmation.\n\n## The Iron Law\n\n```\nNO MERGE, NO PR, NO DISCARD WITHOUT VERIFIED TESTS + EXPLICIT CHOICE.\n```\n\nSkipping verification because \"it worked a minute ago\" is how broken\n`main` happens. Discarding because \"I assumed the user meant it\" is\nhow work gets lost.\n\n## Procedure\n\n### 1. Inspect the current branch state\n\nBefore presenting any options, gather context. Do not assume — check:\n\n* `git status` — clean, or still dirty?\n* `git log --oneline \u003Cbase>..HEAD` — what commits are actually on this\n  branch?\n* `git branch --show-current` — the branch name you will be operating on\n* Remote state — is the branch pushed? Is there an open PR already?\n\nIf a PR already exists for this branch, **stop** — this is not a\nfinishing step, route to [`receiving-code-review`](..\u002Freceiving-code-review\u002FSKILL.md)\nor [`fix-pr-comments`](..\u002F..\u002Fcommands\u002Ffix\u002Fpr-comments.md) instead.\n\n### 2. Verify readiness\n\nRun the end-of-work gate before presenting any options — see\n[`verify-completion-evidence`](..\u002Fverify-completion-evidence\u002FSKILL.md).\nSteps 1–3 run only when `quality.local_auto_run: true`; under the\ndefault (`false` \u002F missing) skip them without asking — the user runs\nquality tools manually, remote CI on the PR is the authoritative gate,\nand the readiness report says *\"quality gates delegated to remote CI\"*\ninstead of claiming them green:\n\n1. Targeted tests green\n2. Full test suite green\n3. Quality pipeline green — the project's full sequence (type-checker → auto-fixer dry-run → linter → type-checker; e.g. PHPStan → Rector → ECS → PHPStan for Laravel-PHP, tsc → eslint --fix → eslint → tsc for TS, mypy → ruff --fix → ruff → mypy for Python)\n4. `git status` clean — nothing unstaged, no stray files\n5. Branch is pushed or explicitly marked local-only\n\nIf any executed step fails → **stop**. Report the failure, do not\npresent ship options. Fixing the failure comes first.\n\n### 3. Determine the base branch\n\n```bash\n# Default: main\nBASE=main\n\n# Stacked PR: parent branch\nBASE=$(git config branch.$(git branch --show-current).merge | sed 's|refs\u002Fheads\u002F||')\n```\n\nIf ambiguous, ask: *\"This branch splits from `\u003Cguess>` — correct?\"*\nbefore presenting options.\n\n### 4. Present the four options — numbered, no narration\n\nAsk the user exactly one question:\n\n```\nImplementation is verified. What now?\n\n1. Open a Pull Request on \u003Cbase-branch>\n2. Merge locally into \u003Cbase-branch> (for projects without a PR flow)\n3. Keep the branch as-is — I'll handle it later\n4. Discard all work on this branch\n```\n\nDo not add recommendations unless the user asks. Each option leads to\na different sub-procedure (steps 5a–5d).\n\n### 5a. Option 1 — Open a PR\n\n1. Ensure the branch is up to date with the base →\n   [`prepare-for-review`](..\u002F..\u002Fcommands\u002Fprepare-for-review.md)\n2. Self-review the full diff → [`review-changes`](..\u002F..\u002Fcommands\u002Freview\u002Fchanges.md)\n3. Write the PR description → [`create-pr-description`](..\u002F..\u002Fcommands\u002Fpr\u002Fcreate\u002Fdescription-only.md)\n4. Open the PR → [`create-pr`](..\u002F..\u002Fcommands\u002Fpr\u002Fcreate.md)\n5. Confirm the PR opened green, not red\n\nSee [`requesting-code-review`](..\u002Frequesting-code-review\u002FSKILL.md) for\nthe surrounding discipline.\n\n### 5b. Option 2 — Merge locally\n\nUse only when the project policy is \"no PR required\" (solo repos,\nspike branches, private tooling). For team repos, default to Option 1.\n\n```bash\ngit checkout \u003Cbase-branch>\ngit pull --ff-only\ngit merge --no-ff \u003Cfeature-branch>\n# Re-run the full test suite on the merged tree\n\u003Ctest command>\n# Only if green:\ngit branch -d \u003Cfeature-branch>\n```\n\nIf the post-merge test run fails → `git reset --hard ORIG_HEAD`, fix\non the feature branch, restart from Option 1\u002F2.\n\n### 5c. Option 3 — Keep as-is\n\n* Push the branch to origin if not already pushed (safeguards the work)\n* Report the branch name and the last commit SHA back to the user\n* Do not delete the worktree, do not force-push\n\n### 5d. Option 4 — Discard\n\n**Confirmation gate** — require a typed answer, not \"y\":\n\n```\nThis will permanently remove:\n- Local branch \u003Cname>\n- Remote branch \u003Cname> (if pushed)\n- Commits: \u003Clist of SHAs + subjects>\n\nType \"discard \u003Cname>\" to confirm.\n```\n\nOnly on exact match:\n\n```bash\ngit checkout \u003Cbase-branch>\ngit branch -D \u003Cfeature-branch>\n# Remove remote only if the user confirms a second time\ngit push origin --delete \u003Cfeature-branch>\n```\n\nLog the discarded SHAs so the work can be recovered via `git reflog`\nwithin the reflog TTL if needed.\n\n### 6. Clean up worktrees\n\nIf the branch lives in a `git worktree`:\n\n* Option 1 → kept until merged; the daily run then lists it (`auto` removes it)\n* Options 2, 4 → `git worktree remove \u003Cpath>`; a `security\u002F…` fix ends at deployed\n* Option 3 → keep the worktree\n\n## Output format\n\nAfter the chosen option completes, report:\n\n1. **What happened** — single sentence (\"PR #123 opened\", \"Merged\n   into main as `abcdef`\", \"Branch discarded\")\n2. **Evidence** — exit codes \u002F PR URL \u002F commit SHA\n3. **Cleanup state** — worktree removed \u002F kept, branch deleted \u002F\n   retained\n4. **Next step** — e.g. \"Awaiting review\" \u002F \"Main is one commit ahead\"\n\n## Gotchas\n\n* Option 1 (PR) on a red CI — the PR opens but is not actually\n  reviewable; check the CI status before reporting success\n* Option 2 (local merge) with fast-forward only on a diverged base\n  silently fails — the merge command aborts but the report can look\n  successful if the exit code is not checked\n* Option 4 (discard) on a branch that is already the upstream of\n  another local branch — the dependent branch is orphaned\n* Force-pushing after a PR is opened can lose the reviewer's\n  line-comments — prefer additional commits during review\n* `git branch -d` vs `-D` — lowercase `-d` refuses unmerged branches,\n  uppercase `-D` forces; only use `-D` inside the confirmed discard\n  flow\n* On stacked PRs, the base is **not** `main` — opening a PR to `main`\n  invalidates the stack\n\n## Do NOT\n\n* Do NOT present ship options while tests or quality checks are red\n* Do NOT add rationale or recommendations to the four numbered options\n  — the user decides\n* Do NOT discard a branch without a typed confirmation including the\n  branch name\n* Do NOT force-delete a remote branch without user confirmation\n* Do NOT silently change the base branch between verification and ship\n* Do NOT mix any other cleanup into the discard step\n\n## Anti-patterns\n\n* Presenting three options and phrasing the fourth as \"or we can\n  discard if you want\" — buries the destructive option\n* Running the full gate inside this skill *and* at the start of\n  `create-pr` — duplicates work. Trust the gate result if nothing\n  changed in between\n* Merging local + opening PR at the same time — pick one\n* Asking \"ready to ship?\" without listing the four concrete options\n\n## When to hand over to another skill \u002F command\n\n* Final pre-merge verification → [`verify-completion-evidence`](..\u002Fverify-completion-evidence\u002FSKILL.md)\n* Rebasing the stack before PR → [`prepare-for-review`](..\u002F..\u002Fcommands\u002Fprepare-for-review.md)\n* Writing the commit for any last-minute tweaks →\n  [`commit`](..\u002F..\u002Fcommands\u002Fcommit.md),\n  [`conventional-commits-writing`](..\u002Fconventional-commits-writing\u002FSKILL.md)\n* Self-review walkthrough → [`review-changes`](..\u002F..\u002Fcommands\u002Freview\u002Fchanges.md)\n* Creating the PR → [`create-pr`](..\u002F..\u002Fcommands\u002Fpr\u002Fcreate.md)\n* Processing review comments after the PR is open →\n  [`receiving-code-review`](..\u002Freceiving-code-review\u002FSKILL.md)\n\n## Validation checklist\n\nBefore reporting \"done\" after this skill runs:\n\n* [ ] Full gate (tests + quality pipeline) verified green in this turn\n      when `quality.local_auto_run: true` — under the default `false`\n      the report states \"quality gates delegated to remote CI\" instead\n* [ ] Base branch determined and confirmed with the user when ambiguous\n* [ ] Exactly four numbered options were presented, no narration added\n* [ ] User's choice recorded literally, not reinterpreted\n* [ ] Sub-procedure for the chosen option completed end-to-end\n* [ ] Worktree state handled per option (remove for 1\u002F2\u002F4, keep for 3)\n* [ ] Destructive actions had typed confirmation including branch name\n* [ ] Final report includes evidence (PR URL, SHA, or exit code)\n","# finishing-a-development-branch\n\n## When to use\n\n* Implementation of a feature or bug fix is complete on a development branch\n* All planned commits are in, the user is ready to hand off\n* You are about to say \"done\" and suggest the next action\n* The branch has been idle and the user wants to decide its fate\n\nDo NOT use when:\n\n* Still implementing — use targeted verification, not the ship gate\n* A PR already exists and is mid-review — use\n  [`receiving-code-review`](..\u002Freceiving-code-review\u002FSKILL.md)\n* Only documentation changed and no tests apply — simplify to\n  commit + PR without the full gate\n\n## Goal\n\nRoute a finished branch to its next state **with evidence** — merged,\npushed for PR, parked, or discarded. Never let a half-verified branch\nbecome a PR. Never destroy work without explicit confirmation.\n\n## The Iron Law\n\n```\nNO MERGE, NO PR, NO DISCARD WITHOUT VERIFIED TESTS + EXPLICIT CHOICE.\n```\n\nSkipping verification because \"it worked a minute ago\" is how broken\n`main` happens. Discarding because \"I assumed the user meant it\" is\nhow work gets lost.\n\n## Procedure\n\n### 1. Inspect the current branch state\n\nBefore presenting any options, gather context. Do not assume — check:\n\n* `git status` — clean, or still dirty?\n* `git log --oneline \u003Cbase>..HEAD` — what commits are actually on this\n  branch?\n* `git branch --show-current` — the branch name you will be operating on\n* Remote state — is the branch pushed? Is there an open PR already?\n\nIf a PR already exists for this branch, **stop** — this is not a\nfinishing step, route to [`receiving-code-review`](..\u002Freceiving-code-review\u002FSKILL.md)\nor [`fix-pr-comments`](..\u002F..\u002Fcommands\u002Ffix\u002Fpr-comments.md) instead.\n\n### 2. Verify readiness\n\nRun the end-of-work gate before presenting any options — see\n[`verify-completion-evidence`](..\u002Fverify-completion-evidence\u002FSKILL.md).\nSteps 1–3 run only when `quality.local_auto_run: true`; under the\ndefault (`false` \u002F missing) skip them without asking — the user runs\nquality tools manually, remote CI on the PR is the authoritative gate,\nand the readiness report says *\"quality gates delegated to remote CI\"*\ninstead of claiming them green:\n\n1. Targeted tests green\n2. Full test suite green\n3. Quality pipeline green — the project's full sequence (type-checker → auto-fixer dry-run → linter → type-checker; e.g. PHPStan → Rector → ECS → PHPStan for Laravel-PHP, tsc → eslint --fix → eslint → tsc for TS, mypy → ruff --fix → ruff → mypy for Python)\n4. `git status` clean — nothing unstaged, no stray files\n5. Branch is pushed or explicitly marked local-only\n\nIf any executed step fails → **stop**. Report the failure, do not\npresent ship options. Fixing the failure comes first.\n\n### 3. Determine the base branch\n\n```bash\n# Default: main\nBASE=main\n\n# Stacked PR: parent branch\nBASE=$(git config branch.$(git branch --show-current).merge | sed 's|refs\u002Fheads\u002F||')\n```\n\nIf ambiguous, ask: *\"This branch splits from `\u003Cguess>` — correct?\"*\nbefore presenting options.\n\n### 4. Present the four options — numbered, no narration\n\nAsk the user exactly one question:\n\n```\nImplementation is verified. What now?\n\n1. Open a Pull Request on \u003Cbase-branch>\n2. Merge locally into \u003Cbase-branch> (for projects without a PR flow)\n3. Keep the branch as-is — I'll handle it later\n4. Discard all work on this branch\n```\n\nDo not add recommendations unless the user asks. Each option leads to\na different sub-procedure (steps 5a–5d).\n\n### 5a. Option 1 — Open a PR\n\n1. Ensure the branch is up to date with the base →\n   [`prepare-for-review`](..\u002F..\u002Fcommands\u002Fprepare-for-review.md)\n2. Self-review the full diff → [`review-changes`](..\u002F..\u002Fcommands\u002Freview\u002Fchanges.md)\n3. Write the PR description → [`create-pr-description`](..\u002F..\u002Fcommands\u002Fpr\u002Fcreate\u002Fdescription-only.md)\n4. Open the PR → [`create-pr`](..\u002F..\u002Fcommands\u002Fpr\u002Fcreate.md)\n5. Confirm the PR opened green, not red\n\nSee [`requesting-code-review`](..\u002Frequesting-code-review\u002FSKILL.md) for\nthe surrounding discipline.\n\n### 5b. Option 2 — Merge locally\n\nUse only when the project policy is \"no PR required\" (solo repos,\nspike branches, private tooling). For team repos, default to Option 1.\n\n```bash\ngit checkout \u003Cbase-branch>\ngit pull --ff-only\ngit merge --no-ff \u003Cfeature-branch>\n# Re-run the full test suite on the merged tree\n\u003Ctest command>\n# Only if green:\ngit branch -d \u003Cfeature-branch>\n```\n\nIf the post-merge test run fails → `git reset --hard ORIG_HEAD`, fix\non the feature branch, restart from Option 1\u002F2.\n\n### 5c. Option 3 — Keep as-is\n\n* Push the branch to origin if not already pushed (safeguards the work)\n* Report the branch name and the last commit SHA back to the user\n* Do not delete the worktree, do not force-push\n\n### 5d. Option 4 — Discard\n\n**Confirmation gate** — require a typed answer, not \"y\":\n\n```\nThis will permanently remove:\n- Local branch \u003Cname>\n- Remote branch \u003Cname> (if pushed)\n- Commits: \u003Clist of SHAs + subjects>\n\nType \"discard \u003Cname>\" to confirm.\n```\n\nOnly on exact match:\n\n```bash\ngit checkout \u003Cbase-branch>\ngit branch -D \u003Cfeature-branch>\n# Remove remote only if the user confirms a second time\ngit push origin --delete \u003Cfeature-branch>\n```\n\nLog the discarded SHAs so the work can be recovered via `git reflog`\nwithin the reflog TTL if needed.\n\n### 6. Clean up worktrees\n\nIf the branch lives in a `git worktree`:\n\n* Option 1 → kept until merged; the daily run then lists it (`auto` removes it)\n* Options 2, 4 → `git worktree remove \u003Cpath>`; a `security\u002F…` fix ends at deployed\n* Option 3 → keep the worktree\n\n## Output format\n\nAfter the chosen option completes, report:\n\n1. **What happened** — single sentence (\"PR #123 opened\", \"Merged\n   into main as `abcdef`\", \"Branch discarded\")\n2. **Evidence** — exit codes \u002F PR URL \u002F commit SHA\n3. **Cleanup state** — worktree removed \u002F kept, branch deleted \u002F\n   retained\n4. **Next step** — e.g. \"Awaiting review\" \u002F \"Main is one commit ahead\"\n\n## Gotchas\n\n* Option 1 (PR) on a red CI — the PR opens but is not actually\n  reviewable; check the CI status before reporting success\n* Option 2 (local merge) with fast-forward only on a diverged base\n  silently fails — the merge command aborts but the report can look\n  successful if the exit code is not checked\n* Option 4 (discard) on a branch that is already the upstream of\n  another local branch — the dependent branch is orphaned\n* Force-pushing after a PR is opened can lose the reviewer's\n  line-comments — prefer additional commits during review\n* `git branch -d` vs `-D` — lowercase `-d` refuses unmerged branches,\n  uppercase `-D` forces; only use `-D` inside the confirmed discard\n  flow\n* On stacked PRs, the base is **not** `main` — opening a PR to `main`\n  invalidates the stack\n\n## Do NOT\n\n* Do NOT present ship options while tests or quality checks are red\n* Do NOT add rationale or recommendations to the four numbered options\n  — the user decides\n* Do NOT discard a branch without a typed confirmation including the\n  branch name\n* Do NOT force-delete a remote branch without user confirmation\n* Do NOT silently change the base branch between verification and ship\n* Do NOT mix any other cleanup into the discard step\n\n## Anti-patterns\n\n* Presenting three options and phrasing the fourth as \"or we can\n  discard if you want\" — buries the destructive option\n* Running the full gate inside this skill *and* at the start of\n  `create-pr` — duplicates work. Trust the gate result if nothing\n  changed in between\n* Merging local + opening PR at the same time — pick one\n* Asking \"ready to ship?\" without listing the four concrete options\n\n## When to hand over to another skill \u002F command\n\n* Final pre-merge verification → [`verify-completion-evidence`](..\u002Fverify-completion-evidence\u002FSKILL.md)\n* Rebasing the stack before PR → [`prepare-for-review`](..\u002F..\u002Fcommands\u002Fprepare-for-review.md)\n* Writing the commit for any last-minute tweaks →\n  [`commit`](..\u002F..\u002Fcommands\u002Fcommit.md),\n  [`conventional-commits-writing`](..\u002Fconventional-commits-writing\u002FSKILL.md)\n* Self-review walkthrough → [`review-changes`](..\u002F..\u002Fcommands\u002Freview\u002Fchanges.md)\n* Creating the PR → [`create-pr`](..\u002F..\u002Fcommands\u002Fpr\u002Fcreate.md)\n* Processing review comments after the PR is open →\n  [`receiving-code-review`](..\u002Freceiving-code-review\u002FSKILL.md)\n\n## Validation checklist\n\nBefore reporting \"done\" after this skill runs:\n\n* [ ] Full gate (tests + quality pipeline) verified green in this turn\n      when `quality.local_auto_run: true` — under the default `false`\n      the report states \"quality gates delegated to remote CI\" instead\n* [ ] Base branch determined and confirmed with the user when ambiguous\n* [ ] Exactly four numbered options were presented, no narration added\n* [ ] User's choice recorded literally, not reinterpreted\n* [ ] Sub-procedure for the chosen option completed end-to-end\n* [ ] Worktree state handled per option (remove for 1\u002F2\u002F4, keep for 3)\n* [ ] Destructive actions had typed confirmation including branch name\n* [ ] Final report includes evidence (PR URL, SHA, or exit code)\n",{"name":5,"packs":49,"domain":39,"model_tier":51,"workspaces":52,"description":7},[50],"engineering-base","medium",[53],"engineering","main","12bd765ce1d800501d45dfb8232102793af01290","src\u002Fskills\u002Ffinishing-a-development-branch",1,"https:\u002F\u002Fgithub.com\u002Fevent4u-app\u002Fagent-config","https:\u002F\u002Fevent4u.app","https:\u002F\u002Fgithub.com\u002Fevent4u-app","Your events in your hand","2026-11-14 02:29:41",{"source":8,"skillName":5,"commands":64,"prompt":74,"zipAvailable":75},[65,68,71],{"tool":66,"command":67},"npx","npx skills add event4u-app\u002Fagent-config --skill finishing-a-development-branch",{"tool":69,"command":70},"bunx","bunx skills add event4u-app\u002Fagent-config --skill finishing-a-development-branch",{"tool":72,"command":73},"pnpm","pnpm dlx skills add event4u-app\u002Fagent-config --skill finishing-a-development-branch","安装技能，技能地址：https:\u002F\u002Fgithub.com\u002Fevent4u-app\u002Fagent-config\u002Fblob\u002Fmain\u002Fsrc\u002Fskills\u002Ffinishing-a-development-branch\u002FSKILL.md",true,[77],{"path":78,"resourceType":79,"resourceTypeDesc":80,"sizeBytes":81,"sourceHtmlUrl":82},"evals\u002Ftriggers.json","REFERENCE","参考文档",3154,"https:\u002F\u002Fgithub.com\u002Fevent4u-app\u002Fagent-config\u002Fblob\u002Fmain\u002Fsrc\u002Fskills\u002Ffinishing-a-development-branch\u002Fevals\u002Ftriggers.json",[84,98,111,123,135,145],{"skillNo":85,"name":86,"nameZh":6,"description":87,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":88,"categories":89,"keywords":91,"publishedAt":44},"01M6X84PK96XBPENXH66JCTSD1","unknown-key-fixture","Declares a key the schema does not know.","https:\u002F\u002Fgithub.com\u002Fevent4u-app\u002Fagent-config\u002Fblob\u002Fmain\u002Ftests\u002Fscripts\u002Ffixtures\u002Fbody-portable\u002Funknown-key\u002FSKILL.md",[90],{"categoryNo":19,"categoryName":20,"taxonomyType":21,"taxonomyTypeDesc":22},[92,93,94,95,96,97],"unknown key fixture","Unknown key","fixture","unknown","schema","package",{"skillNo":99,"name":100,"nameZh":6,"description":101,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":102,"categories":103,"keywords":105,"publishedAt":44},"01M6X84HW7NAHZ7GZMQ9RXK1XJ","portable-fixture","Declares only semantics the MCP-lite carrier transports whole.","https:\u002F\u002Fgithub.com\u002Fevent4u-app\u002Fagent-config\u002Fblob\u002Fmain\u002Ftests\u002Fscripts\u002Ffixtures\u002Fbody-portable\u002Fportable\u002FSKILL.md",[104],{"categoryNo":19,"categoryName":20,"taxonomyType":21,"taxonomyTypeDesc":22},[94,106,107,108,109,97,110],"portable","portable fixture","engineer","only","MCP",{"skillNo":112,"name":113,"nameZh":6,"description":114,"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":44},"01M6X84F29FE0RGGZ1ZTFGZTX2","non-portable-fixture","Declares a runtime semantic the carrier drops.","https:\u002F\u002Fgithub.com\u002Fevent4u-app\u002Fagent-config\u002Fblob\u002Fmain\u002Ftests\u002Fscripts\u002Ffixtures\u002Fbody-portable\u002Fnon-portable\u002FSKILL.md",[117],{"categoryNo":19,"categoryName":20,"taxonomyType":21,"taxonomyTypeDesc":22},[107,119,106,94,120,121,122,97],"non portable fixture","semantic","high","runtime",{"skillNo":124,"name":125,"nameZh":6,"description":126,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":127,"categories":128,"keywords":130,"publishedAt":44},"01M6X848F706PT9MDCX75JKJ6B","candidate-zero-width","A candidate whose prose carries an invisible joiner.","https:\u002F\u002Fgithub.com\u002Fevent4u-app\u002Fagent-config\u002Fblob\u002Fmain\u002Ftests\u002Ffixtures\u002Fskill-scout-candidates\u002Fzero-width-injection\u002FSKILL.md",[129],{"categoryNo":19,"categoryName":20,"taxonomyType":21,"taxonomyTypeDesc":22},[131,132,133,134],"candidate zero width","candidate","ZeRO","prose",{"skillNo":136,"name":137,"nameZh":6,"description":138,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":139,"categories":140,"keywords":142,"publishedAt":44},"01M6X841SSC2T31VDF41SA6DG1","candidate-disclosure-suppression","A candidate whose prose tells the agent to withhold from the user.","https:\u002F\u002Fgithub.com\u002Fevent4u-app\u002Fagent-config\u002Fblob\u002Fmain\u002Ftests\u002Ffixtures\u002Fskill-scout-candidates\u002Fdisclosure-suppression\u002FSKILL.md",[141],{"categoryNo":19,"categoryName":20,"taxonomyType":21,"taxonomyTypeDesc":22},[143,132,134,144],"candidate disclosure suppression","user",{"skillNo":146,"name":147,"nameZh":6,"description":148,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":149,"categories":150,"keywords":152,"publishedAt":44},"01M6X83TFS5AGPBPVTQNWP0BB3","candidate-dangerous-frontmatter","A candidate claiming an unscoped tool grant and a permission bypass.","https:\u002F\u002Fgithub.com\u002Fevent4u-app\u002Fagent-config\u002Fblob\u002Fmain\u002Ftests\u002Ffixtures\u002Fskill-scout-candidates\u002Fdangerous-frontmatter\u002FSKILL.md",[151],{"categoryNo":19,"categoryName":20,"taxonomyType":21,"taxonomyTypeDesc":22},[153,132,154,155,156,157],"candidate dangerous frontmatter","frontmatter","shell","permission","tool"]