[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"skill:01M71T049AZNASM6ZH8HTVH67W":3,"skill-same:01M71T049AZNASM6ZH8HTVH67W":76},{"skillNo":4,"name":5,"nameZh":6,"description":7,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":9,"repositoryNo":12,"starsCount":13,"licenseSpdxId":14,"licenseFileUrl":6,"sourceHtmlUrl":15,"categories":16,"keywords":22,"publishedAt":43,"linkOnly":44,"markdownContent":45,"markdownBody":46,"frontMatter":47,"refName":54,"commitSha":55,"skillDirectory":56,"forksCount":57,"repositoryHtmlUrl":58,"repositoryHomepageUrl":6,"ownerHtmlUrl":59,"ownerBlogUrl":60,"ownerDescription":61,"updatedAt":62,"install":63,"resources":75},"01M71T049AZNASM6ZH8HTVH67W","promotion-intake",null,"Use when a Claudosseum promotion package (manifest + battle history + telemetry + SKILL.md bundle) is ready to land in clauDNA — validates it against the promotion contract and stages the skill as a reviewable PR. Not for authoring new skills by hand; use \u002Fclaudna:skill-scaffold for those.","Claudfather\u002FclauDNA","Claudfather","https:\u002F\u002Favatars.githubusercontent.com\u002Fu\u002F281278891?v=4","01M71SX82K0TBGQ394AB2G1T5Z","01M71SX83CE1S8YC06K9P3P962",0,"Apache-2.0","https:\u002F\u002Fgithub.com\u002FClaudfather\u002FclauDNA\u002Fblob\u002Fmain\u002Fskills\u002Fpromotion-intake\u002FSKILL.md",[17],{"categoryNo":18,"categoryName":19,"taxonomyType":20,"taxonomyTypeDesc":21},"01JBSEEDCAT000000000000037","律师与法务","PROFESSION","适用职业",[23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42],"promotion","promotion intake","intake","when","use","package","auto","remote","new","telemetry","gh","contract","true","repo","battle","for","pr","history","ready","as","2026-11-10 13:02:02",false,"---\nname: promotion-intake\nuser-invocable: true\ndescription: \"Use when a Claudosseum promotion package (manifest + battle history + telemetry + SKILL.md bundle) is ready to land in clauDNA — validates it against the promotion contract and stages the skill as a reviewable PR. Not for authoring new skills by hand; use \u002Fclaudna:skill-scaffold for those.\"\nrequires-context: repo-clone\nargument-hint: \"\u003Cpackage-path-or-url> [--dry-run] [--auto]\"\nrequires:\n  - cli: gh\n    reason: \"Fetching remote packages and the PR step (via \u002Fclaudna:ship)\"\n---\n\n# Promotion Intake\n\nThe importer half of the Claudosseum→clauDNA promotion contract: consume a promotion package, validate it with the contract's own enforcer (`scripts\u002Fvalidate-promotion-package.py`), and — only on a clean pass — stage the promoted skill as a PR for maintainer review. This skill makes the mission's \"promotions flow on a defined cadence\" mechanically real; the maintainer's admin-merge stays the final gate.\n\nVersioning is out of scope: no `plugin.json` bump, no CHANGELOG version cut — release trains are separate.\n\n## Arguments\n\n- `\u003Cpackage>` — path to a promotion package directory, or a URL to fetch one (a directory bundle containing `manifest.json`, `battle-history.json`, `telemetry-summary.json`, `SKILL.md`, and any support files).\n- `--dry-run` — validate and report exactly what would be staged; write nothing, open nothing.\n- `--auto` — non-interactive (Claudosseum's automation calls this): no questions, and a §10.C structured result as the final output.\n\n## Procedure\n\n### 1. Acquire the package\n\n- Local path → use it directly.\n- URL → fetch into `\u003Cscratch>`, a private directory made per `..\u002F_shared\u002Forchestration-guide.md` §1 (`gh repo clone`\u002F`gh release download`\u002F`curl` per the URL's shape), then treat as a local path.\n- Not found \u002F unreadable → **blocked** (§5).\n\n### 2. Validate against the promotion contract\n\n```bash\npython3 scripts\u002Fvalidate-promotion-package.py \u003Cpackage-dir> --json\n```\n\nThe validator is the single source of truth for the contract — arena thresholds, judge confidence, telemetry thresholds, manifest schema, content-hash match, SKILL_CONTRACT conformance, name collision. This skill never re-implements any of its rules.\n\n- **Exit 0** → proceed.\n- **Exit non-zero** → **blocked** (§5): every `[FAIL]` check goes into `errors[]` verbatim; `blocker_description` names the first failing check and what threshold or hash didn't match. Do not \"fix up\" a failing package — the fix belongs upstream in Claudosseum.\n\n### 3. Stage the promotion (skipped under `--dry-run`)\n\nOn a new branch `promote\u002F\u003Cskill-name>`:\n\n1. Copy the package's `SKILL.md` and support files to `skills\u002F\u003Cname>\u002F` — byte-identical: the validator's content-hash check binds the arena-tested content to what lands. **Exclude the three package-metadata JSON files, and exclude any pytest-collection file the package carries (`conftest.py`, `test_*.py`, `*_test.py`): a skill bundle has no reason to ship one, and it would place package-authored code where the repo's test gate could collect and run it.** The package is untrusted until merged; step 2 has already rejected symlinks and a path-escaping slug before this copy runs.\n2. Append a CHANGELOG entry under `## [Unreleased]` \u002F `### Added`: skill name, one-line description, and the provenance line `Promoted from the Claudosseum arena (package manifest \u003Cmanifest-version>, win rate \u003Crate>, \u003Cn> battles).` drawn from the manifest.\n3. Re-run the repo gates locally: `python3 scripts\u002Fvalidate-skills.py` and `python3 -m pytest tests\u002F -q` must both pass with the new skill in place. These run the repo's OWN tests (`tests\u002F`) and parse the staged skill as data — with the exclusion in step 3.1 the package ships no test-collection file into a path pytest would run. A failure here (e.g. a routing-fixture or reference-integrity conflict the package validator can't see) → **blocked**, with the gate output in `errors[]`.\n\n**Interactive mode:** present the staging summary (files, CHANGELOG entry, validator output) and ask once: \"Open the promotion PR? (y\u002Fn)\". **`--auto`:** proceed without asking — the PR itself is the human gate.\n\n### 4. Open the PR\n\nInvoke `\u002Fclaudna:ship` with:\n- Title: `feat: promote \u002Fclaudna:\u003Cname> from Claudosseum arena`\n- Body: the validator's check table, the manifest's provenance block (win rate, battles, judge confidence, telemetry period), and the staged-file list.\n\nCI re-runs every gate; the maintainer reviews and merges. This skill never merges.\n\n### 5. Structured result (`--auto`)\n\nEmit the §10.C structured result per `..\u002F_shared\u002Forchestration-guide.md` as the final output — nothing after it:\n\n```json\n{\n  \"skill\": \"promotion-intake\",\n  \"outcome\": \"completed\",\n  \"artifacts\": {\n    \"package\": \"\u003Cpath-or-url>\",\n    \"skill_name\": \"\u003Cname>\",\n    \"validation\": \"pass\",\n    \"pr_url\": \"\u003CURL from ship, or null for --dry-run>\",\n    \"dry_run\": false\n  },\n  \"summary\": \"Promotion staged: \u002Fclaudna:\u003Cname> — PR \u003Curl>.\",\n  \"next\": null,\n  \"errors\": [],\n  \"blocker_description\": null\n}\n```\n\nOutcomes: `completed` — PR opened (or dry-run validated clean; `pr_url: null`, `dry_run: true`). `blocked` — acquisition, contract validation, or repo-gate failure; `errors[]` carries the verbatim failures, `blocker_description` the first cause. There is no `partial`: a promotion either stages whole or not at all.\n\n## Rules\n\n- **The validator is law.** Never land content the validator rejected; never edit package content to make it pass.\n- **Byte-identical staging.** The content hash binds arena-tested content to what ships.\n- **One skill per package, one PR per promotion.**\n- **Never merges, never bumps versions.** The maintainer's review is the cadence's human gate.\n","# Promotion Intake\n\nThe importer half of the Claudosseum→clauDNA promotion contract: consume a promotion package, validate it with the contract's own enforcer (`scripts\u002Fvalidate-promotion-package.py`), and — only on a clean pass — stage the promoted skill as a PR for maintainer review. This skill makes the mission's \"promotions flow on a defined cadence\" mechanically real; the maintainer's admin-merge stays the final gate.\n\nVersioning is out of scope: no `plugin.json` bump, no CHANGELOG version cut — release trains are separate.\n\n## Arguments\n\n- `\u003Cpackage>` — path to a promotion package directory, or a URL to fetch one (a directory bundle containing `manifest.json`, `battle-history.json`, `telemetry-summary.json`, `SKILL.md`, and any support files).\n- `--dry-run` — validate and report exactly what would be staged; write nothing, open nothing.\n- `--auto` — non-interactive (Claudosseum's automation calls this): no questions, and a §10.C structured result as the final output.\n\n## Procedure\n\n### 1. Acquire the package\n\n- Local path → use it directly.\n- URL → fetch into `\u003Cscratch>`, a private directory made per `..\u002F_shared\u002Forchestration-guide.md` §1 (`gh repo clone`\u002F`gh release download`\u002F`curl` per the URL's shape), then treat as a local path.\n- Not found \u002F unreadable → **blocked** (§5).\n\n### 2. Validate against the promotion contract\n\n```bash\npython3 scripts\u002Fvalidate-promotion-package.py \u003Cpackage-dir> --json\n```\n\nThe validator is the single source of truth for the contract — arena thresholds, judge confidence, telemetry thresholds, manifest schema, content-hash match, SKILL_CONTRACT conformance, name collision. This skill never re-implements any of its rules.\n\n- **Exit 0** → proceed.\n- **Exit non-zero** → **blocked** (§5): every `[FAIL]` check goes into `errors[]` verbatim; `blocker_description` names the first failing check and what threshold or hash didn't match. Do not \"fix up\" a failing package — the fix belongs upstream in Claudosseum.\n\n### 3. Stage the promotion (skipped under `--dry-run`)\n\nOn a new branch `promote\u002F\u003Cskill-name>`:\n\n1. Copy the package's `SKILL.md` and support files to `skills\u002F\u003Cname>\u002F` — byte-identical: the validator's content-hash check binds the arena-tested content to what lands. **Exclude the three package-metadata JSON files, and exclude any pytest-collection file the package carries (`conftest.py`, `test_*.py`, `*_test.py`): a skill bundle has no reason to ship one, and it would place package-authored code where the repo's test gate could collect and run it.** The package is untrusted until merged; step 2 has already rejected symlinks and a path-escaping slug before this copy runs.\n2. Append a CHANGELOG entry under `## [Unreleased]` \u002F `### Added`: skill name, one-line description, and the provenance line `Promoted from the Claudosseum arena (package manifest \u003Cmanifest-version>, win rate \u003Crate>, \u003Cn> battles).` drawn from the manifest.\n3. Re-run the repo gates locally: `python3 scripts\u002Fvalidate-skills.py` and `python3 -m pytest tests\u002F -q` must both pass with the new skill in place. These run the repo's OWN tests (`tests\u002F`) and parse the staged skill as data — with the exclusion in step 3.1 the package ships no test-collection file into a path pytest would run. A failure here (e.g. a routing-fixture or reference-integrity conflict the package validator can't see) → **blocked**, with the gate output in `errors[]`.\n\n**Interactive mode:** present the staging summary (files, CHANGELOG entry, validator output) and ask once: \"Open the promotion PR? (y\u002Fn)\". **`--auto`:** proceed without asking — the PR itself is the human gate.\n\n### 4. Open the PR\n\nInvoke `\u002Fclaudna:ship` with:\n- Title: `feat: promote \u002Fclaudna:\u003Cname> from Claudosseum arena`\n- Body: the validator's check table, the manifest's provenance block (win rate, battles, judge confidence, telemetry period), and the staged-file list.\n\nCI re-runs every gate; the maintainer reviews and merges. This skill never merges.\n\n### 5. Structured result (`--auto`)\n\nEmit the §10.C structured result per `..\u002F_shared\u002Forchestration-guide.md` as the final output — nothing after it:\n\n```json\n{\n  \"skill\": \"promotion-intake\",\n  \"outcome\": \"completed\",\n  \"artifacts\": {\n    \"package\": \"\u003Cpath-or-url>\",\n    \"skill_name\": \"\u003Cname>\",\n    \"validation\": \"pass\",\n    \"pr_url\": \"\u003CURL from ship, or null for --dry-run>\",\n    \"dry_run\": false\n  },\n  \"summary\": \"Promotion staged: \u002Fclaudna:\u003Cname> — PR \u003Curl>.\",\n  \"next\": null,\n  \"errors\": [],\n  \"blocker_description\": null\n}\n```\n\nOutcomes: `completed` — PR opened (or dry-run validated clean; `pr_url: null`, `dry_run: true`). `blocked` — acquisition, contract validation, or repo-gate failure; `errors[]` carries the verbatim failures, `blocker_description` the first cause. There is no `partial`: a promotion either stages whole or not at all.\n\n## Rules\n\n- **The validator is law.** Never land content the validator rejected; never edit package content to make it pass.\n- **Byte-identical staging.** The content hash binds arena-tested content to what ships.\n- **One skill per package, one PR per promotion.**\n- **Never merges, never bumps versions.** The maintainer's review is the cadence's human gate.\n",{"name":5,"requires":48,"description":7,"argument-hint":51,"user-invocable":52,"requires-context":53},[49],{"cli":33,"reason":50},"Fetching remote packages and the PR step (via \u002Fclaudna:ship)","\u003Cpackage-path-or-url> [--dry-run] [--auto]",true,"repo-clone","main","fc776f04574726e261087dbb521c1831bf0ea9d5","skills\u002Fpromotion-intake",1,"https:\u002F\u002Fgithub.com\u002FClaudfather\u002FclauDNA","https:\u002F\u002Fgithub.com\u002FClaudfather","https:\u002F\u002Fcrog.gg","Rise of the machines","2026-11-15 02:10:52",{"source":8,"skillName":5,"commands":64,"prompt":74,"zipAvailable":52},[65,68,71],{"tool":66,"command":67},"npx","npx skills add Claudfather\u002FclauDNA --skill promotion-intake",{"tool":69,"command":70},"bunx","bunx skills add Claudfather\u002FclauDNA --skill promotion-intake",{"tool":72,"command":73},"pnpm","pnpm dlx skills add Claudfather\u002FclauDNA --skill promotion-intake","安装技能，技能地址：https:\u002F\u002Fgithub.com\u002FClaudfather\u002FclauDNA\u002Fblob\u002Fmain\u002Fskills\u002Fpromotion-intake\u002FSKILL.md",[],[77,100,110,133,156,172],{"skillNo":78,"name":79,"nameZh":6,"description":80,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":9,"repositoryNo":12,"starsCount":13,"licenseSpdxId":14,"licenseFileUrl":6,"sourceHtmlUrl":81,"categories":82,"keywords":83,"publishedAt":43},"01M71T1STJ99BE1C0JYHCQW0XN","example-review","Use when you want to review pull requests with detailed, actionable feedback on code quality, correctness, and maintainability.","https:\u002F\u002Fgithub.com\u002FClaudfather\u002FclauDNA\u002Fblob\u002Fmain\u002Ftests\u002Ffixtures\u002Fvalid-package\u002FSKILL.md",[],[84,85,86,87,88,89,90,91,92,93,26,27,33,94,95,96,39,97,98,99],"review","example","example review","actionable","pull requests","with","code","correctness","Bash","you","gh pr","diff","view","code quality","feedback","pull",{"skillNo":101,"name":102,"nameZh":6,"description":103,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":9,"repositoryNo":12,"starsCount":13,"licenseSpdxId":14,"licenseFileUrl":6,"sourceHtmlUrl":104,"categories":105,"keywords":106,"publishedAt":43},"01M71T1RMCD30MAJC954JC7580","bad-skill","Too short","https:\u002F\u002Fgithub.com\u002FClaudfather\u002FclauDNA\u002Fblob\u002Fmain\u002Ftests\u002Ffixtures\u002Ffailing-package\u002FSKILL.md",[],[107,108,109],"bad","bad skill","short",{"skillNo":111,"name":112,"nameZh":6,"description":113,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":9,"repositoryNo":12,"starsCount":13,"licenseSpdxId":14,"licenseFileUrl":6,"sourceHtmlUrl":114,"categories":115,"keywords":116,"publishedAt":43},"01M71T1NS97NJ2MQ993V7FBES7","worktree","Use when starting feature work that needs isolation from the current workspace, or when running multiple Claude sessions in parallel on different branches — creates and manages git worktrees. For fetching latest main into every existing worktree and branch across your sibling repos, use \u002Fclaudna:sync-branches instead.","https:\u002F\u002Fgithub.com\u002FClaudfather\u002FclauDNA\u002Fblob\u002Fmain\u002Fskills\u002Fworktree\u002FSKILL.md",[],[112,117,118,119,120,121,122,123,124,125,126,127,26,128,54,129,130,131,38,132],"sync","repos","git","isolation","running","sessions","worktrees","work","across","needs","git worktrees","claude sessions","branches","branch","parallel","feature",{"skillNo":134,"name":135,"nameZh":6,"description":136,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":9,"repositoryNo":12,"starsCount":13,"licenseSpdxId":14,"licenseFileUrl":6,"sourceHtmlUrl":137,"categories":138,"keywords":139,"publishedAt":43},"01M71T1HNVG1CZY8P904P6RB7P","weigh-development-paths","Use when at a development junction with multiple viable approaches — architecture choices, refactoring strategies, where to put new code, or which pattern to follow. Triggers on 'which approach', 'how should I', 'Option A vs B', or any point where the next step isn't obvious and the wrong choice creates rework.","https:\u002F\u002Fgithub.com\u002FClaudfather\u002FclauDNA\u002Fblob\u002Fmain\u002Fskills\u002Fweigh-development-paths\u002FSKILL.md",[],[140,141,142,143,144,145,146,147,148,149,150,151,152,90,26,29,31,153,154,155],"development","weigh development paths","paths","next step","path","refactoring","choice","pattern","at","how","next","strategies","architecture","junction","option","which",{"skillNo":157,"name":158,"nameZh":6,"description":159,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":9,"repositoryNo":12,"starsCount":13,"licenseSpdxId":14,"licenseFileUrl":6,"sourceHtmlUrl":160,"categories":161,"keywords":162,"publishedAt":43},"01M71T1ECV1T5E168GH70AY5B3","verify-completion","Use when about to claim work is complete, fixed, or passing -- requires running verification commands and confirming output before making any success claims.","https:\u002F\u002Fgithub.com\u002FClaudfather\u002FclauDNA\u002Fblob\u002Fmain\u002Fskills\u002Fverify-completion\u002FSKILL.md",[],[163,164,165,166,121,35,167,168,124,169,170,171,26,27],"verify completion","verify","claim","complete","commands","about","verification","claims","output",{"skillNo":173,"name":174,"nameZh":6,"description":175,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":9,"repositoryNo":12,"starsCount":13,"licenseSpdxId":14,"licenseFileUrl":6,"sourceHtmlUrl":176,"categories":177,"keywords":183,"publishedAt":43},"01M71T1BC1HA7XQH0Q1H574FYS","vercel","Use for Vercel operations — deploy to production or preview (or roll back), view, filter, or debug deployment logs, or check project status (deployments, domains, env vars, config). Replaces \u002Fvercel-deploy, \u002Fvercel-logs, \u002Fvercel-status.","https:\u002F\u002Fgithub.com\u002FClaudfather\u002FclauDNA\u002Fblob\u002Fmain\u002Fskills\u002Fvercel\u002FSKILL.md",[178],{"categoryNo":179,"categoryName":180,"taxonomyType":181,"taxonomyTypeDesc":182},"01JBSEEDCAT000000000000011","运维与部署","SCENARIO","使用场景",[174,184,185,186,187,188,189,190,191,27,192,35,193,194,195,196,38,96,197,198],"inspection","check","filter","env","logs","preview","debug deployment","debug","deployments","domains","deployment","env vars","project","project status","back"]