[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"skill:01M699DGX6C5TAGA2NHPRRR5H3":3,"skill-same:01M699DGX6C5TAGA2NHPRRR5H3":118},{"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":26,"publishedAt":47,"linkOnly":48,"markdownContent":49,"markdownBody":50,"frontMatter":51,"refName":52,"commitSha":53,"skillDirectory":54,"forksCount":55,"repositoryHtmlUrl":56,"repositoryHomepageUrl":57,"ownerHtmlUrl":58,"ownerBlogUrl":59,"ownerDescription":60,"updatedAt":61,"install":62,"resources":75},"01M699DGX6C5TAGA2NHPRRR5H3","cut-release",null,"Use this skill to cut an APM release from the current worktree: assess whether the cycle since the last tag warrants a patch or minor bump (semver discipline against the merged-since-last-tag diff), sanitize the [Unreleased] CHANGELOG block into a dated version block with one concise \"so what\" entry per merged PR (drop internal-only churn, consolidate duplicates), bump pyproject.toml + uv.lock, run the CI-mirror lint chain, and open the release PR. Activate on \"ship a release\", \"cut v0.x\", \"release prep\", \"bump and PR\", \"open release PR\", \"what kind of release do we need\", or any phrasing that ends in opening a release PR -- even when the user does not say \"skill\". Stops BEFORE tagging; tagging stays a human gate that triggers the release workflow. Refuses to bump to a major (>= 1.0.0) version without explicit operator confirmation.","microsoft\u002Fapm","microsoft","https:\u002F\u002Favatars.githubusercontent.com\u002Fu\u002F6154722?v=4","01M698VYDXZ6JW5WH3CRV650R8","Microsoft","01M699CC41JR5QW38C9PDX6101",4336,"MIT","https:\u002F\u002Fgithub.com\u002Fmicrosoft\u002Fapm\u002Fblob\u002Fmain\u002F.agents\u002Fskills\u002Fcut-release\u002FSKILL.md",[18,23],{"categoryNo":19,"categoryName":20,"taxonomyType":21,"taxonomyTypeDesc":22},"01JBSEEDCAT000000000000007","代码审查","SCENARIO","使用场景",{"categoryNo":24,"categoryName":25,"taxonomyType":21,"taxonomyTypeDesc":22},"01JBSEEDCAT000000000000023","Skill与智能体开发",[27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46],"cut release","release","cut","when","workflow","lock","churn","chain","consolidate","drop","cycle","activate","uv","bump","duplicates","patch","only","confirmation","open","ci","2026-11-10 10:12:30",false,"---\nname: cut-release\ndescription: >-\n  Use this skill to cut an APM release from the current worktree:\n  assess whether the cycle since the last tag warrants a patch or\n  minor bump (semver discipline against the merged-since-last-tag\n  diff), sanitize the [Unreleased] CHANGELOG block into a dated\n  version block with one concise \"so what\" entry per merged PR\n  (drop internal-only churn, consolidate duplicates), bump\n  pyproject.toml + uv.lock, run the CI-mirror lint chain, and open\n  the release PR. Activate on \"ship a release\", \"cut v0.x\",\n  \"release prep\", \"bump and PR\", \"open release PR\", \"what kind of\n  release do we need\", or any phrasing that ends in opening a\n  release PR -- even when the user does not say \"skill\". Stops\n  BEFORE tagging; tagging stays a human gate that triggers the\n  release workflow. Refuses to bump to a major (>= 1.0.0) version\n  without explicit operator confirmation.\n---\n\n# cut-release -- assess, sanitize, bump, lint, open PR\n\nThis skill drives the release-cut workflow end-to-end on the current\nworktree. It STOPS at \"PR open\"; tagging is the human-gated trigger\nthat fires the release workflow.\n\n## When to use\n\nTrigger this skill on any of these intents:\n\n- \"cut a release\"\n- \"ship v0.x\" \u002F \"ship the release\"\n- \"release prep\" \u002F \"prepare the release\"\n- \"bump and open the PR\"\n- \"open the release PR\"\n- \"what kind of release do we need now\"\n- \"we have enough merged for a release\"\n- Any phrasing that ends in opening a release PR.\n\nDo NOT trigger on:\n\n- \"tag v0.16.0\" -- tagging is the post-merge step the operator runs.\n- \"publish a blog post\" \u002F \"draft release notes for the website\".\n- \"what changed since v0.15.0\" -- enumeration only, no release.\n- \"regenerate uv.lock\" \u002F raw version-string edits.\n- \"rollback to v0.15.0\" -- release reversal is a different skill.\n\n## Companion primitives\n\nThe skill DEPENDS on these existing primitives in the same source\ntree. Do not duplicate their content; reference them.\n\n- `.apm\u002Fskills\u002Fapm-strategy\u002FSKILL.md` -- versioning judgement and\n  breaking-change lens. Auto-loads via its own trigger on\n  `CHANGELOG.md` and release-pipeline edits. Treat it as the\n  authoritative lens for \"is this BREAKING\" and \"does this\n  positioning change warrant a migration note\".\n- `.apm\u002Finstructions\u002Flinting.instructions.md` -- canonical\n  CI-mirror lint chain. Reference; do not re-derive ruff \u002F pylint\n  command lists in this skill.\n- `.github\u002Finstructions\u002Fchangelog.instructions.md` -- Keep-a-\n  Changelog format contract. Reference; do not redefine the\n  format.\n\n## Output charset rule\n\nPer `.github\u002Finstructions\u002Fencoding.instructions.md`, source files in\nthis bundle (SKILL.md, assets, scripts) MUST stay in printable ASCII.\nThe PR body and changelog entries this skill produces are also\nwritten to repo files (CHANGELOG.md, PR body), so they MUST stay\nASCII too. Use `--` for em dashes, `[!]` \u002F `[+]` \u002F `[x]` for status\nmarkers, and so on.\n\n## Procedure\n\nRun these phases in order. Reload `plan.md` (the session memento)\nat the start of each phase and after every tool return.\n\n### Phase 0 -- ground state\n\n1. Read the current branch with `git rev-parse --abbrev-ref HEAD`.\n   The skill assumes you are on a release-prep branch (or are\n   willing to create one). If you are on `main`, STOP and ask the\n   operator to put you on a branch.\n2. Resolve the last release tag with `git describe --tags --abbrev=0`.\n3. Persist the goal to plan.md:\n   - Range: `\u003Clast-tag>..HEAD`.\n   - Acceptance: release PR is open, lint mirror green, no version\n     bumped beyond what the cycle warrants.\n\n### Phase 1 -- enumerate merged PRs\n\nRun `scripts\u002Flist-changes-since-tag.sh` (no arguments). It emits\nJSON on stdout: one object per merged PR with fields `pr`, `title`,\n`labels`, `author`, `paths_summary`, `is_user_facing_guess`.\n\nThe script's heuristic for `is_user_facing_guess` is\nintentionally conservative -- it flags as INTERNAL only when the\ndiff is fully contained in `.apm\u002F`, `.github\u002Finstructions\u002F`,\n`tests\u002F`, `docs\u002F`, or matches `chore(repo)`. Treat the field as a\nHINT, not a verdict; the LLM makes the final call per\n`assets\u002Fentry-sanitizer.md`.\n\nDO NOT rely on training-recalled PR titles. Truth #5: pretraining\nis frozen. Every PR title in the changelog must come from the\nscript's stdout.\n\n### Phase 2 -- pick the bump (B10 CHECKPOINT 1)\n\nLoad `assets\u002Fsemver-rubric.md`. Walk every PR from Phase 1\nagainst the rubric. The rubric outputs PATCH, MINOR, or\nESCALATE-TO-MAJOR.\n\nShow the operator:\n\n- The chosen bump and the next version number.\n- Per-PR rationale (which signal fired).\n- The \"why patch\u002Fminor\" one-liner that will go into the PR body.\n\nIf the rubric outputs ESCALATE-TO-MAJOR (>= 1.0.0), STOP and\nsurface the escalation per `assets\u002Fsemver-rubric.md` \"Major bump\"\nsection. Do not bump to 1.0.0 without explicit operator\nconfirmation.\n\nWait for the operator's confirm before continuing.\n\n### Phase 3 -- sanitize the changelog (B10 CHECKPOINT 2)\n\nLoad `assets\u002Fentry-sanitizer.md`. For each PR classified as\nuser-facing in Phase 1:\n\n1. Choose its section: Added (new feature, new command, new spec),\n   Changed (behavior change in existing surface), Fixed (bug fix),\n   Deprecated, Removed, Security, Performance.\n2. Write ONE entry per PR. Two-sentence cap. \"So what\" framing.\n   PR number in parentheses at the end. Preserve `by @author` for\n   external contributors.\n3. Consolidate any pre-existing Unreleased entries that point at\n   the same PR.\n4. Drop INTERNAL PRs entirely (the script flagged most of them;\n   the rubric in entry-sanitizer.md confirms).\n5. Mark BREAKING entries with `**BREAKING:**` prefix.\n\nRewrite the CHANGELOG.md `[Unreleased]` block in place:\n\n```\n## [Unreleased]\n\n## [X.Y.Z] - YYYY-MM-DD\n\n### Added\n...\n### Changed\n...\n### Fixed\n...\n```\n\nKeep an empty `[Unreleased]` placeholder above the new version\nheading. The date is today (read from the operator's environment,\nnot recall).\n\nShow the operator the unified diff against CHANGELOG.md. Wait for\nconfirm before continuing.\n\n### Phase 4 -- bump version files\n\nRun `scripts\u002Fbump-version.sh \u003Cnew-version>`. The script edits\n`pyproject.toml` (the `version = \"...\"` line in `[project]`) and\nruns `uv lock` to refresh `uv.lock`. It prints a unified diff to\nstdout for human review.\n\nIf the script exits non-zero, surface the error and STOP -- do not\ncontinue with a partial bump.\n\n### Phase 5 -- verify lint mirror (S4 gate; B10 CHECKPOINT 3 on fail)\n\nRun `scripts\u002Fverify-lint-mirror.sh`. It mirrors the four CI lint\nsteps from `.apm\u002Finstructions\u002Flinting.instructions.md` verbatim\n(ruff check, ruff format --check, pylint R0801, auth-signals).\n\nIf it passes (exit 0), proceed to Phase 6.\n\nIf it fails (exit 1), STOP. Surface the failures to the operator.\nCommon cures:\n\n- ruff diagnostics -- run `uv run --extra dev ruff check src\u002F\n  tests\u002F --fix` and `uv run --extra dev ruff format src\u002F tests\u002F`.\n- pylint R0801 -- duplication landed via a recent main commit;\n  merge main first, then re-run.\n- auth-signals -- consult `scripts\u002Flint-auth-signals.sh` output.\n\nDo NOT push or open the PR until lint is green. The PR description\nwill claim CI is green; that claim must hold.\n\n### Phase 6 -- commit, push, open PR\n\n1. `git add CHANGELOG.md pyproject.toml uv.lock`.\n2. `git commit -m \"chore: release vX.Y.Z\" -m \"\u003Cshort body>\"`.\n   The body mirrors prior release commits (#1410, #1454, #1526):\n   one paragraph naming what was bumped and the lint-mirror\n   confirmation, plus the \"post-merge: tag vX.Y.Z\" reminder.\n   Include the standard `Co-authored-by` trailer.\n3. `git push -u origin HEAD`.\n4. Compose the PR body from `assets\u002Fpr-body-template.md`,\n   substituting `{version}` (unprefixed, e.g. `0.16.1` -- used by\n   `CHANGELOG.md` and `pyproject.toml`), `{tag}` (v-prefixed, e.g.\n   `v0.16.1` -- used by the post-merge `git tag` block, since the\n   release workflow's stable-release regex requires the `v` prefix\n   per `.github\u002Fworkflows\u002Fbuild-release.yml`), `{date}`,\n   `{bump_rationale}`, and (if BREAKING) `{breaking_summary}`.\n5. `gh pr create --base main --head \u003Cbranch> --title\n   \"chore: release vX.Y.Z\" --body-file \u003Ctmpfile>`.\n6. Echo the PR URL.\n7. Surface the post-merge step explicitly: \"Post-merge: tag\n   `vX.Y.Z` to trigger the release workflow.\" Do NOT tag.\n\n### Phase 7 -- update plan and exit\n\nMark each plan.md todo as done. The session ends here. Tagging is\nthe operator's decision and lives outside this skill.\n\n## Anti-patterns this skill refuses\n\n- TAGGING. Tagging is a separate, human-gated step. If asked to\n  tag inside this session, decline and remind the operator that\n  the release workflow expects `git tag vX.Y.Z && git push --tags`\n  after PR merge.\n- BUMP-TO-MAJOR-UNPROMPTED. 0.x -> 1.0.0 is a positioning\n  decision. ESCALATE per `assets\u002Fsemver-rubric.md`.\n- HAND-ROLLED PR TITLES. Every changelog entry must be backed by\n  a PR title from `scripts\u002Flist-changes-since-tag.sh` stdout. No\n  recall.\n- CHATTY GATE. Three operator checkpoints, no more (version pick,\n  sanitized changelog, lint-fail recovery). Do not ask per-PR or\n  per-section.\n- PARTIAL PUSH. If lint fails, do not push. The release PR\n  asserts green CI; pushing red breaks the contract.\n- SKIPPED LINT. Do not skip Phase 5 even if the diff looks\n  trivial. The lint mirror catches code-duplication drift on the\n  merge commit, which is invisible to a local diff inspection.\n\n## Boundary\n\nThis skill does NOT:\n\n- Tag the release.\n- Run the test suite or build PyInstaller binaries.\n- Publish a GitHub Release body, blog post, or announcement.\n- Decide whether a release should happen -- the operator decided\n  that by activating this skill.\n- Bump to >= 1.0.0 without explicit operator confirmation.\n- Review code quality or test coverage (use `autopilot-pr-review-worker`\n  before activating this skill if a recent PR needs review).\n","# cut-release -- assess, sanitize, bump, lint, open PR\n\nThis skill drives the release-cut workflow end-to-end on the current\nworktree. It STOPS at \"PR open\"; tagging is the human-gated trigger\nthat fires the release workflow.\n\n## When to use\n\nTrigger this skill on any of these intents:\n\n- \"cut a release\"\n- \"ship v0.x\" \u002F \"ship the release\"\n- \"release prep\" \u002F \"prepare the release\"\n- \"bump and open the PR\"\n- \"open the release PR\"\n- \"what kind of release do we need now\"\n- \"we have enough merged for a release\"\n- Any phrasing that ends in opening a release PR.\n\nDo NOT trigger on:\n\n- \"tag v0.16.0\" -- tagging is the post-merge step the operator runs.\n- \"publish a blog post\" \u002F \"draft release notes for the website\".\n- \"what changed since v0.15.0\" -- enumeration only, no release.\n- \"regenerate uv.lock\" \u002F raw version-string edits.\n- \"rollback to v0.15.0\" -- release reversal is a different skill.\n\n## Companion primitives\n\nThe skill DEPENDS on these existing primitives in the same source\ntree. Do not duplicate their content; reference them.\n\n- `.apm\u002Fskills\u002Fapm-strategy\u002FSKILL.md` -- versioning judgement and\n  breaking-change lens. Auto-loads via its own trigger on\n  `CHANGELOG.md` and release-pipeline edits. Treat it as the\n  authoritative lens for \"is this BREAKING\" and \"does this\n  positioning change warrant a migration note\".\n- `.apm\u002Finstructions\u002Flinting.instructions.md` -- canonical\n  CI-mirror lint chain. Reference; do not re-derive ruff \u002F pylint\n  command lists in this skill.\n- `.github\u002Finstructions\u002Fchangelog.instructions.md` -- Keep-a-\n  Changelog format contract. Reference; do not redefine the\n  format.\n\n## Output charset rule\n\nPer `.github\u002Finstructions\u002Fencoding.instructions.md`, source files in\nthis bundle (SKILL.md, assets, scripts) MUST stay in printable ASCII.\nThe PR body and changelog entries this skill produces are also\nwritten to repo files (CHANGELOG.md, PR body), so they MUST stay\nASCII too. Use `--` for em dashes, `[!]` \u002F `[+]` \u002F `[x]` for status\nmarkers, and so on.\n\n## Procedure\n\nRun these phases in order. Reload `plan.md` (the session memento)\nat the start of each phase and after every tool return.\n\n### Phase 0 -- ground state\n\n1. Read the current branch with `git rev-parse --abbrev-ref HEAD`.\n   The skill assumes you are on a release-prep branch (or are\n   willing to create one). If you are on `main`, STOP and ask the\n   operator to put you on a branch.\n2. Resolve the last release tag with `git describe --tags --abbrev=0`.\n3. Persist the goal to plan.md:\n   - Range: `\u003Clast-tag>..HEAD`.\n   - Acceptance: release PR is open, lint mirror green, no version\n     bumped beyond what the cycle warrants.\n\n### Phase 1 -- enumerate merged PRs\n\nRun `scripts\u002Flist-changes-since-tag.sh` (no arguments). It emits\nJSON on stdout: one object per merged PR with fields `pr`, `title`,\n`labels`, `author`, `paths_summary`, `is_user_facing_guess`.\n\nThe script's heuristic for `is_user_facing_guess` is\nintentionally conservative -- it flags as INTERNAL only when the\ndiff is fully contained in `.apm\u002F`, `.github\u002Finstructions\u002F`,\n`tests\u002F`, `docs\u002F`, or matches `chore(repo)`. Treat the field as a\nHINT, not a verdict; the LLM makes the final call per\n`assets\u002Fentry-sanitizer.md`.\n\nDO NOT rely on training-recalled PR titles. Truth #5: pretraining\nis frozen. Every PR title in the changelog must come from the\nscript's stdout.\n\n### Phase 2 -- pick the bump (B10 CHECKPOINT 1)\n\nLoad `assets\u002Fsemver-rubric.md`. Walk every PR from Phase 1\nagainst the rubric. The rubric outputs PATCH, MINOR, or\nESCALATE-TO-MAJOR.\n\nShow the operator:\n\n- The chosen bump and the next version number.\n- Per-PR rationale (which signal fired).\n- The \"why patch\u002Fminor\" one-liner that will go into the PR body.\n\nIf the rubric outputs ESCALATE-TO-MAJOR (>= 1.0.0), STOP and\nsurface the escalation per `assets\u002Fsemver-rubric.md` \"Major bump\"\nsection. Do not bump to 1.0.0 without explicit operator\nconfirmation.\n\nWait for the operator's confirm before continuing.\n\n### Phase 3 -- sanitize the changelog (B10 CHECKPOINT 2)\n\nLoad `assets\u002Fentry-sanitizer.md`. For each PR classified as\nuser-facing in Phase 1:\n\n1. Choose its section: Added (new feature, new command, new spec),\n   Changed (behavior change in existing surface), Fixed (bug fix),\n   Deprecated, Removed, Security, Performance.\n2. Write ONE entry per PR. Two-sentence cap. \"So what\" framing.\n   PR number in parentheses at the end. Preserve `by @author` for\n   external contributors.\n3. Consolidate any pre-existing Unreleased entries that point at\n   the same PR.\n4. Drop INTERNAL PRs entirely (the script flagged most of them;\n   the rubric in entry-sanitizer.md confirms).\n5. Mark BREAKING entries with `**BREAKING:**` prefix.\n\nRewrite the CHANGELOG.md `[Unreleased]` block in place:\n\n```\n## [Unreleased]\n\n## [X.Y.Z] - YYYY-MM-DD\n\n### Added\n...\n### Changed\n...\n### Fixed\n...\n```\n\nKeep an empty `[Unreleased]` placeholder above the new version\nheading. The date is today (read from the operator's environment,\nnot recall).\n\nShow the operator the unified diff against CHANGELOG.md. Wait for\nconfirm before continuing.\n\n### Phase 4 -- bump version files\n\nRun `scripts\u002Fbump-version.sh \u003Cnew-version>`. The script edits\n`pyproject.toml` (the `version = \"...\"` line in `[project]`) and\nruns `uv lock` to refresh `uv.lock`. It prints a unified diff to\nstdout for human review.\n\nIf the script exits non-zero, surface the error and STOP -- do not\ncontinue with a partial bump.\n\n### Phase 5 -- verify lint mirror (S4 gate; B10 CHECKPOINT 3 on fail)\n\nRun `scripts\u002Fverify-lint-mirror.sh`. It mirrors the four CI lint\nsteps from `.apm\u002Finstructions\u002Flinting.instructions.md` verbatim\n(ruff check, ruff format --check, pylint R0801, auth-signals).\n\nIf it passes (exit 0), proceed to Phase 6.\n\nIf it fails (exit 1), STOP. Surface the failures to the operator.\nCommon cures:\n\n- ruff diagnostics -- run `uv run --extra dev ruff check src\u002F\n  tests\u002F --fix` and `uv run --extra dev ruff format src\u002F tests\u002F`.\n- pylint R0801 -- duplication landed via a recent main commit;\n  merge main first, then re-run.\n- auth-signals -- consult `scripts\u002Flint-auth-signals.sh` output.\n\nDo NOT push or open the PR until lint is green. The PR description\nwill claim CI is green; that claim must hold.\n\n### Phase 6 -- commit, push, open PR\n\n1. `git add CHANGELOG.md pyproject.toml uv.lock`.\n2. `git commit -m \"chore: release vX.Y.Z\" -m \"\u003Cshort body>\"`.\n   The body mirrors prior release commits (#1410, #1454, #1526):\n   one paragraph naming what was bumped and the lint-mirror\n   confirmation, plus the \"post-merge: tag vX.Y.Z\" reminder.\n   Include the standard `Co-authored-by` trailer.\n3. `git push -u origin HEAD`.\n4. Compose the PR body from `assets\u002Fpr-body-template.md`,\n   substituting `{version}` (unprefixed, e.g. `0.16.1` -- used by\n   `CHANGELOG.md` and `pyproject.toml`), `{tag}` (v-prefixed, e.g.\n   `v0.16.1` -- used by the post-merge `git tag` block, since the\n   release workflow's stable-release regex requires the `v` prefix\n   per `.github\u002Fworkflows\u002Fbuild-release.yml`), `{date}`,\n   `{bump_rationale}`, and (if BREAKING) `{breaking_summary}`.\n5. `gh pr create --base main --head \u003Cbranch> --title\n   \"chore: release vX.Y.Z\" --body-file \u003Ctmpfile>`.\n6. Echo the PR URL.\n7. Surface the post-merge step explicitly: \"Post-merge: tag\n   `vX.Y.Z` to trigger the release workflow.\" Do NOT tag.\n\n### Phase 7 -- update plan and exit\n\nMark each plan.md todo as done. The session ends here. Tagging is\nthe operator's decision and lives outside this skill.\n\n## Anti-patterns this skill refuses\n\n- TAGGING. Tagging is a separate, human-gated step. If asked to\n  tag inside this session, decline and remind the operator that\n  the release workflow expects `git tag vX.Y.Z && git push --tags`\n  after PR merge.\n- BUMP-TO-MAJOR-UNPROMPTED. 0.x -> 1.0.0 is a positioning\n  decision. ESCALATE per `assets\u002Fsemver-rubric.md`.\n- HAND-ROLLED PR TITLES. Every changelog entry must be backed by\n  a PR title from `scripts\u002Flist-changes-since-tag.sh` stdout. No\n  recall.\n- CHATTY GATE. Three operator checkpoints, no more (version pick,\n  sanitized changelog, lint-fail recovery). Do not ask per-PR or\n  per-section.\n- PARTIAL PUSH. If lint fails, do not push. The release PR\n  asserts green CI; pushing red breaks the contract.\n- SKIPPED LINT. Do not skip Phase 5 even if the diff looks\n  trivial. The lint mirror catches code-duplication drift on the\n  merge commit, which is invisible to a local diff inspection.\n\n## Boundary\n\nThis skill does NOT:\n\n- Tag the release.\n- Run the test suite or build PyInstaller binaries.\n- Publish a GitHub Release body, blog post, or announcement.\n- Decide whether a release should happen -- the operator decided\n  that by activating this skill.\n- Bump to >= 1.0.0 without explicit operator confirmation.\n- Review code quality or test coverage (use `autopilot-pr-review-worker`\n  before activating this skill if a recent PR needs review).\n",{"name":5,"description":7},"main","2920043258932f0f67e6f01df7b9047eb42f358c",".agents\u002Fskills\u002Fcut-release",415,"https:\u002F\u002Fgithub.com\u002Fmicrosoft\u002Fapm","https:\u002F\u002Fmicrosoft.github.io\u002Fapm\u002F","https:\u002F\u002Fgithub.com\u002Fmicrosoft","https:\u002F\u002Fopensource.microsoft.com","Open source projects and samples from Microsoft","2026-11-12 02:56:52",{"source":8,"skillName":5,"commands":63,"prompt":73,"zipAvailable":74},[64,67,70],{"tool":65,"command":66},"npx","npx skills add microsoft\u002Fapm --skill cut-release",{"tool":68,"command":69},"bunx","bunx skills add microsoft\u002Fapm --skill cut-release",{"tool":71,"command":72},"pnpm","pnpm dlx skills add microsoft\u002Fapm --skill cut-release","安装技能，技能地址：https:\u002F\u002Fgithub.com\u002Fmicrosoft\u002Fapm\u002Fblob\u002Fmain\u002F.agents\u002Fskills\u002Fcut-release\u002FSKILL.md",true,[76,82,88,92,96,100,106,110,114],{"path":77,"resourceType":78,"resourceTypeDesc":79,"sizeBytes":80,"sourceHtmlUrl":81},"agents\u002Fopenai.yaml","REFERENCE","参考文档",103,"https:\u002F\u002Fgithub.com\u002Fnichee\u002Fdotfiles\u002Fblob\u002Fmain\u002Fclaude\u002Fskills\u002Fdiagnosing-bugs\u002Fagents\u002Fopenai.yaml",{"path":83,"resourceType":84,"resourceTypeDesc":85,"sizeBytes":86,"sourceHtmlUrl":87},"assets\u002Fentry-sanitizer.md","ASSET","资产文件",6277,"https:\u002F\u002Fgithub.com\u002Fmicrosoft\u002Fapm\u002Fblob\u002Fmain\u002F.agents\u002Fskills\u002Fcut-release\u002Fassets\u002Fentry-sanitizer.md",{"path":89,"resourceType":84,"resourceTypeDesc":85,"sizeBytes":90,"sourceHtmlUrl":91},"assets\u002Fpr-body-template.md",604,"https:\u002F\u002Fgithub.com\u002Fmicrosoft\u002Fapm\u002Fblob\u002Fmain\u002F.agents\u002Fskills\u002Fcut-release\u002Fassets\u002Fpr-body-template.md",{"path":93,"resourceType":84,"resourceTypeDesc":85,"sizeBytes":94,"sourceHtmlUrl":95},"assets\u002Fsemver-rubric.md",4525,"https:\u002F\u002Fgithub.com\u002Fmicrosoft\u002Fapm\u002Fblob\u002Fmain\u002F.agents\u002Fskills\u002Fcut-release\u002Fassets\u002Fsemver-rubric.md",{"path":97,"resourceType":78,"resourceTypeDesc":79,"sizeBytes":98,"sourceHtmlUrl":99},"evals\u002Fevals.json",3381,"https:\u002F\u002Fgithub.com\u002Fmicrosoft\u002Fapm\u002Fblob\u002Fmain\u002F.agents\u002Fskills\u002Fcut-release\u002Fevals\u002Fevals.json",{"path":101,"resourceType":102,"resourceTypeDesc":103,"sizeBytes":104,"sourceHtmlUrl":105},"scripts\u002Fbump-version.sh","SCRIPT","脚本",3014,"https:\u002F\u002Fgithub.com\u002Fmicrosoft\u002Fapm\u002Fblob\u002Fmain\u002F.agents\u002Fskills\u002Fcut-release\u002Fscripts\u002Fbump-version.sh",{"path":107,"resourceType":102,"resourceTypeDesc":103,"sizeBytes":108,"sourceHtmlUrl":109},"scripts\u002Fhitl-loop.template.sh",1164,"https:\u002F\u002Fgithub.com\u002Fnichee\u002Fdotfiles\u002Fblob\u002Fmain\u002Fclaude\u002Fskills\u002Fdiagnosing-bugs\u002Fscripts\u002Fhitl-loop.template.sh",{"path":111,"resourceType":102,"resourceTypeDesc":103,"sizeBytes":112,"sourceHtmlUrl":113},"scripts\u002Flist-changes-since-tag.sh",4611,"https:\u002F\u002Fgithub.com\u002Fmicrosoft\u002Fapm\u002Fblob\u002Fmain\u002F.agents\u002Fskills\u002Fcut-release\u002Fscripts\u002Flist-changes-since-tag.sh",{"path":115,"resourceType":102,"resourceTypeDesc":103,"sizeBytes":116,"sourceHtmlUrl":117},"scripts\u002Fverify-lint-mirror.sh",2645,"https:\u002F\u002Fgithub.com\u002Fmicrosoft\u002Fapm\u002Fblob\u002Fmain\u002F.agents\u002Fskills\u002Fcut-release\u002Fscripts\u002Fverify-lint-mirror.sh",[119,125,131,136,141,146],{"skillNo":120,"name":121,"nameZh":6,"description":6,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":122,"categories":123,"keywords":124,"publishedAt":47},"01M699JMZBYWPBT7JYWBSB95Z6","hello","https:\u002F\u002Fgithub.com\u002Fmicrosoft\u002Fapm\u002Fblob\u002Fmain\u002Ftests\u002Fintegration\u002Ffixtures\u002Ftarget_resolution\u002Fshared\u002Fminimal_skill\u002F.apm\u002Fskills\u002Fhello\u002FSKILL.md",[],[121],{"skillNo":126,"name":127,"nameZh":6,"description":6,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":128,"categories":129,"keywords":130,"publishedAt":47},"01M699JKAMZ4DH1PYJMXHE4FG4","placeholder","https:\u002F\u002Fgithub.com\u002Fmicrosoft\u002Fapm\u002Fblob\u002Fmain\u002Ftests\u002Fintegration\u002Ffixtures\u002Ftarget_resolution\u002Fs25_copilot_alias\u002F.apm\u002Fskills\u002Fplaceholder\u002FSKILL.md",[],[127],{"skillNo":132,"name":127,"nameZh":6,"description":6,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":133,"categories":134,"keywords":135,"publishedAt":47},"01M699JHR9DKJ7BZHAPF6DZX2Z","https:\u002F\u002Fgithub.com\u002Fmicrosoft\u002Fapm\u002Fblob\u002Fmain\u002Ftests\u002Fintegration\u002Ffixtures\u002Ftarget_resolution\u002Fs24_priority_override\u002F.apm\u002Fskills\u002Fplaceholder\u002FSKILL.md",[],[127],{"skillNo":137,"name":127,"nameZh":6,"description":6,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":138,"categories":139,"keywords":140,"publishedAt":47},"01M699JG5BJBZSWM25F1VMJ2H6","https:\u002F\u002Fgithub.com\u002Fmicrosoft\u002Fapm\u002Fblob\u002Fmain\u002Ftests\u002Fintegration\u002Ffixtures\u002Ftarget_resolution\u002Fs23_error_renderer\u002F.apm\u002Fskills\u002Fplaceholder\u002FSKILL.md",[],[127],{"skillNo":142,"name":127,"nameZh":6,"description":6,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":143,"categories":144,"keywords":145,"publishedAt":47},"01M699JEFSMBP3HNS061R15CE9","https:\u002F\u002Fgithub.com\u002Fmicrosoft\u002Fapm\u002Fblob\u002Fmain\u002Ftests\u002Fintegration\u002Ffixtures\u002Ftarget_resolution\u002Fs22_gemini_md_only\u002F.apm\u002Fskills\u002Fplaceholder\u002FSKILL.md",[],[127],{"skillNo":147,"name":127,"nameZh":6,"description":6,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":148,"categories":149,"keywords":150,"publishedAt":47},"01M699JCRCJCVZ3Z3RD8F9MXF5","https:\u002F\u002Fgithub.com\u002Fmicrosoft\u002Fapm\u002Fblob\u002Fmain\u002Ftests\u002Fintegration\u002Ffixtures\u002Ftarget_resolution\u002Fs21_codex_dir\u002F.apm\u002Fskills\u002Fplaceholder\u002FSKILL.md",[],[127]]