{"_id":"release-skill","_rev":"63-0853e9a80ac8c77365004d5a8c791659","name":"release-skill","dist-tags":{"latest":"0.9.23"},"versions":{"0.1.1":{"name":"release-skill","version":"0.1.1","keywords":["release","publish","governance","skill","claude-code","codex"],"license":"MIT","_id":"release-skill@0.1.1","maintainers":[{"name":"mzdbxqh","email":"mzdbxqh@gmail.com"}],"homepage":"https://github.com/mzdbxqh/release-skill#readme","bugs":{"url":"https://github.com/mzdbxqh/release-skill/issues"},"bin":{"release-skill":"./bin/release-skill.mjs"},"dist":{"shasum":"59254d705caaad75af21f4491309df7aa06a6c91","tarball":"https://registry.npmjs.org/release-skill/-/release-skill-0.1.1.tgz","fileCount":125,"integrity":"sha512-8q2xmWJgiOGgawElqJ7S6tZ6eNZyp/AAfVY3OyWKmyvvBpi7iUpyKwxnqLl+qhFEsZgIZpJx2TPtQ/4yohXpGg==","signatures":[{"sig":"MEYCIQCCGWdZ2H64dpA048toqYy1xWhInhTfwVlDTF197tPQlAIhANd4duOX3b7OueAKTIQwbIk1FwSSVUZc2djkj6U8wazi","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":1327351},"type":"module","engines":{"node":">=22.0.0"},"scripts":{"test":"node --test test/*.test.mjs","build":"node --check src/**/*.mjs","typecheck":"node --check src/**/*.mjs bin/*.mjs","native:test":"npm run native:build:test && node --expose-gc --test test/artifacts-safe-fs-native-seam.test.mjs && npm run native:build && RELEASE_SKILL_NATIVE_DEV=1 node --test test/artifacts-safe-fs.test.mjs test/artifacts-transaction-native.test.mjs && node --input-type=module -e \"import {createRequire} from 'node:module';const a=createRequire(import.meta.url)('./native/safe-write/build/Release/safe_write.node');const k=Object.keys(a).sort();const e=['abortTemp','chmod','close','createTemp','fsync','mkdir','openDir','openRoot','readEntry','readFile','rename','rmdir','unlink'];if(k.length!==e.length||k.some((v,i)=>v!==e[i])){console.error('Production exports mismatch:',k);process.exit(1)}console.log('Production exports verified:',k.length,'functions')\"","sync:skills":"node scripts/sync-skills.mjs","native:build":"node-gyp rebuild --directory native/safe-write","build:adapters":"node scripts/build-adapters.mjs","test:no-dogfood":"node --test $(ls test/*.test.mjs | grep -v -E 'dogfood|artifacts-safe-fs-native-seam')","native:build:test":"GYP_DEFINES='test_seam=1' node-gyp rebuild --directory native/safe-write","sync:skills:check":"node scripts/sync-skills.mjs --check","build:adapters:check":"node scripts/build-adapters.mjs --check"},"_npmUser":{"name":"mzdbxqh","email":"mzdbxqh@gmail.com"},"repository":{"url":"git+https://github.com/mzdbxqh/release-skill.git","type":"git"},"description":"Safe preparation and frozen GitHub/npm production publishing with full happy end verification","directories":{},"_nodeVersion":"25.4.0","dependencies":{"ajv":"8.20.0","yaml":"2.9.0","ajv-formats":"3.0.1","libnpmpublish":"11.1.0","npm-registry-fetch":"18.0.2"},"_hasShrinkwrap":false,"devDependencies":{"node-gyp":"12.3.0"},"_npmOperationalInternal":{"tmp":"tmp/release-skill_0.1.1_1784430695512_0.3429588546358777","host":"s3://npm-registry-packages-npm-production"}},"0.1.3":{"name":"release-skill","version":"0.1.3","keywords":["release","publish","governance","skill","claude-code","codex"],"license":"MIT","_id":"release-skill@0.1.3","maintainers":[{"name":"mzdbxqh","email":"mzdbxqh@gmail.com"}],"homepage":"https://github.com/mzdbxqh/release-skill#readme","bugs":{"url":"https://github.com/mzdbxqh/release-skill/issues"},"bin":{"release-skill":"./bin/release-skill.mjs"},"dist":{"shasum":"d334a3342cc36ac63336051579ab8c86352d14b5","tarball":"https://registry.npmjs.org/release-skill/-/release-skill-0.1.3.tgz","fileCount":133,"integrity":"sha512-p7YUOKT2V+mf8ZblRYjkl/jNfKeLIHwZ1TWNuHMa/con30gKz0tbl68mJuw57q9bv6hq4d95jTEPoVFj9sS6sw==","signatures":[{"sig":"MEUCIENSlfDX+wcMXLQDJ97Ex3JpR4wC1Ih7wlvkB0CH6fzKAiEA9W9wv4R23JMweMpD4kCp8M1XvEGIEirCSYiv+CYbpZc=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":1627001},"type":"module","engines":{"node":">=22.0.0"},"scripts":{"test":"node --test test/*.test.mjs","build":"node --check src/**/*.mjs","typecheck":"node --check src/**/*.mjs bin/*.mjs","native:test":"npm run native:build:test && node --expose-gc --test test/artifacts-safe-fs-native-seam.test.mjs && npm run native:build && RELEASE_SKILL_NATIVE_DEV=1 node --test test/artifacts-safe-fs.test.mjs test/artifacts-transaction-native.test.mjs && node --input-type=module -e \"import {createRequire} from 'node:module';const a=createRequire(import.meta.url)('./native/safe-write/build/Release/safe_write.node');const k=Object.keys(a).sort();const e=['abortTemp','chmod','close','createTemp','fsync','mkdir','openDir','openRoot','readEntry','readFile','rename','rmdir','unlink'];if(k.length!==e.length||k.some((v,i)=>v!==e[i])){console.error('Production exports mismatch:',k);process.exit(1)}console.log('Production exports verified:',k.length,'functions')\"","sync:skills":"node scripts/sync-skills.mjs","native:build":"node-gyp rebuild --directory native/safe-write","build:adapters":"node scripts/build-adapters.mjs","test:no-dogfood":"node --test $(ls test/*.test.mjs | grep -v -E 'dogfood|artifacts-safe-fs-native-seam')","native:build:test":"GYP_DEFINES='test_seam=1' node-gyp rebuild --directory native/safe-write","sync:skills:check":"node scripts/sync-skills.mjs --check","build:adapters:check":"node scripts/build-adapters.mjs --check","native:package-current":"node scripts/package-native-prebuild.mjs"},"_npmUser":{"name":"mzdbxqh","email":"mzdbxqh@gmail.com"},"repository":{"url":"git+https://github.com/mzdbxqh/release-skill.git","type":"git"},"description":"Safe preparation and frozen GitHub/npm production publishing with full happy end verification","directories":{},"_nodeVersion":"25.4.0","dependencies":{"ajv":"8.20.0","yaml":"2.9.0","ajv-formats":"3.0.1","libnpmpublish":"11.1.0","npm-registry-fetch":"18.0.2"},"_hasShrinkwrap":false,"devDependencies":{"node-gyp":"12.3.0"},"_npmOperationalInternal":{"tmp":"tmp/release-skill_0.1.3_1784454355893_0.4119751145095476","host":"s3://npm-registry-packages-npm-production"}},"0.1.4":{"name":"release-skill","version":"0.1.4","keywords":["release","publish","governance","skill","claude-code","codex"],"license":"MIT","_id":"release-skill@0.1.4","maintainers":[{"name":"mzdbxqh","email":"mzdbxqh@gmail.com"}],"homepage":"https://github.com/mzdbxqh/release-skill#readme","bugs":{"url":"https://github.com/mzdbxqh/release-skill/issues"},"bin":{"release-skill":"./bin/release-skill.mjs"},"dist":{"shasum":"c90e3c47d24193b8c8e93422a43392df1fa7538c","tarball":"https://registry.npmjs.org/release-skill/-/release-skill-0.1.4.tgz","fileCount":169,"integrity":"sha512-eQb0d8sC31tj58aUfaolOTYr1hG/Dgna1WWgxHg5pphfAXSZQzOHvR3h87Hh9UcSoEtaIBqJS5K0zkzgXZP8Ug==","signatures":[{"sig":"MEYCIQC9pYiHVh2sx0gUDC0uoYU6vZ+VwxNAYr8qt3Oru3ciVQIhAK1i10M3bK7bR+WPrIC0lUEelR862Xxj5cQllQy30G2H","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":12397607},"type":"module","engines":{"node":">=22.0.0"},"scripts":{"test":"node --test test/*.test.mjs","build":"node --check src/**/*.mjs && node scripts/build-bundle.mjs","typecheck":"node --check src/**/*.mjs bin/*.mjs","native:test":"npm run native:build:test && node --expose-gc --test test/artifacts-safe-fs-native-seam.test.mjs && npm run native:build && RELEASE_SKILL_NATIVE_DEV=1 node --test test/artifacts-safe-fs.test.mjs test/artifacts-transaction-native.test.mjs && node --input-type=module -e \"import {createRequire} from 'node:module';const a=createRequire(import.meta.url)('./native/safe-write/build/Release/safe_write.node');const k=Object.keys(a).sort();const e=['abortTemp','chmod','close','createTemp','fsync','mkdir','openDir','openRoot','readEntry','readFile','rename','rmdir','unlink'];if(k.length!==e.length||k.some((v,i)=>v!==e[i])){console.error('Production exports mismatch:',k);process.exit(1)}console.log('Production exports verified:',k.length,'functions')\"","sync:skills":"node scripts/sync-skills.mjs","build:bundle":"node scripts/build-bundle.mjs","native:build":"node-gyp rebuild --directory native/safe-write","build:adapters":"node scripts/build-adapters.mjs","test:no-dogfood":"node --test $(ls test/*.test.mjs | grep -v -E 'dogfood|artifacts-safe-fs-native-seam')","native:build:test":"GYP_DEFINES='test_seam=1' node-gyp rebuild --directory native/safe-write","sync:skills:check":"node scripts/sync-skills.mjs --check","build:bundle:check":"node scripts/build-bundle.mjs --check","build:adapters:check":"node scripts/build-adapters.mjs --check","native:package-current":"node scripts/package-native-prebuild.mjs"},"_npmUser":{"name":"mzdbxqh","email":"mzdbxqh@gmail.com"},"repository":{"url":"git+https://github.com/mzdbxqh/release-skill.git","type":"git"},"description":"Safe preparation and frozen GitHub/npm production publishing with full happy end verification","directories":{},"_nodeVersion":"25.4.0","dependencies":{"ajv":"8.20.0","yaml":"2.9.0","ajv-formats":"3.0.1","libnpmpublish":"11.1.0","npm-registry-fetch":"18.0.2"},"_hasShrinkwrap":false,"devDependencies":{"esbuild":"0.25.8","node-gyp":"12.3.0"},"_npmOperationalInternal":{"tmp":"tmp/release-skill_0.1.4_1784556013935_0.9532741072857349","host":"s3://npm-registry-packages-npm-production"}},"0.1.5":{"name":"release-skill","version":"0.1.5","keywords":["release","publish","governance","skill","claude-code","codex"],"license":"MIT","_id":"release-skill@0.1.5","maintainers":[{"name":"mzdbxqh","email":"mzdbxqh@gmail.com"}],"homepage":"https://github.com/mzdbxqh/release-skill#readme","bugs":{"url":"https://github.com/mzdbxqh/release-skill/issues"},"bin":{"release-skill":"./bin/release-skill.mjs"},"dist":{"shasum":"7350c9a717996dfbb245fc4f6f56918e63b13868","tarball":"https://registry.npmjs.org/release-skill/-/release-skill-0.1.5.tgz","fileCount":169,"integrity":"sha512-mvJ60IaTBGo1yRQTraH28pcIq9p+mIMoSdyBvAinS2XoEJBv8T7Jryauwlnd/Jv2ihmYiqAgXySUZuNP6YtP0A==","signatures":[{"sig":"MEQCIHBVz97xIfsNuadSRFbXzyB0Rgd4TU5J6QEbucBqzECZAiAHHnMoa5JmAGChI5zHXIxvDflzAIIQILMaAtLbNH9RHw==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":12420566},"type":"module","engines":{"node":">=22.0.0"},"scripts":{"test":"node --test test/*.test.mjs","build":"node --check src/**/*.mjs && node scripts/build-bundle.mjs","typecheck":"node --check src/**/*.mjs bin/*.mjs","native:test":"npm run native:build:test && node --expose-gc --test test/artifacts-safe-fs-native-seam.test.mjs && npm run native:build && RELEASE_SKILL_NATIVE_DEV=1 node --test test/artifacts-safe-fs.test.mjs test/artifacts-transaction-native.test.mjs && node --input-type=module -e \"import {createRequire} from 'node:module';const a=createRequire(import.meta.url)('./native/safe-write/build/Release/safe_write.node');const k=Object.keys(a).sort();const e=['abortTemp','chmod','close','createTemp','fsync','mkdir','openDir','openRoot','readEntry','readFile','rename','rmdir','unlink'];if(k.length!==e.length||k.some((v,i)=>v!==e[i])){console.error('Production exports mismatch:',k);process.exit(1)}console.log('Production exports verified:',k.length,'functions')\"","sync:skills":"node scripts/sync-skills.mjs","build:bundle":"node scripts/build-bundle.mjs","native:build":"node-gyp rebuild --directory native/safe-write","build:adapters":"node scripts/build-adapters.mjs","test:no-dogfood":"node --test $(ls test/*.test.mjs | grep -v -E 'dogfood|artifacts-safe-fs-native-seam')","native:build:test":"GYP_DEFINES='test_seam=1' node-gyp rebuild --directory native/safe-write","sync:skills:check":"node scripts/sync-skills.mjs --check","build:bundle:check":"node scripts/build-bundle.mjs --check","build:adapters:check":"node scripts/build-adapters.mjs --check","native:package-current":"node scripts/package-native-prebuild.mjs"},"_npmUser":{"name":"mzdbxqh","email":"mzdbxqh@gmail.com"},"repository":{"url":"git+https://github.com/mzdbxqh/release-skill.git","type":"git"},"description":"Safe preparation and frozen GitHub/npm production publishing with full happy end verification","directories":{},"_nodeVersion":"25.4.0","dependencies":{"ajv":"8.20.0","yaml":"2.9.0","ajv-formats":"3.0.1","libnpmpublish":"11.1.0","npm-registry-fetch":"18.0.2"},"_hasShrinkwrap":false,"devDependencies":{"esbuild":"0.25.8","node-gyp":"12.3.0"},"_npmOperationalInternal":{"tmp":"tmp/release-skill_0.1.5_1784571160811_0.9196485372217653","host":"s3://npm-registry-packages-npm-production"}},"0.1.6":{"name":"release-skill","version":"0.1.6","keywords":["release","publish","governance","skill","claude-code","codex"],"license":"MIT","_id":"release-skill@0.1.6","maintainers":[{"name":"mzdbxqh","email":"mzdbxqh@gmail.com"}],"homepage":"https://github.com/mzdbxqh/release-skill#readme","bugs":{"url":"https://github.com/mzdbxqh/release-skill/issues"},"bin":{"release-skill":"./bin/release-skill.mjs"},"dist":{"shasum":"130f03d4570661960f6f1350263771d16fb38b81","tarball":"https://registry.npmjs.org/release-skill/-/release-skill-0.1.6.tgz","fileCount":178,"integrity":"sha512-Jsq+rYxVVHk9lvgqU0Wmcp0fHhqTzW+VLH91sjPDaNlVCQ4Ii8kHRYoTV5odN/ZCHUPJn7KvuVa9pDsRCwat4A==","signatures":[{"sig":"MEUCIB0inNYxHKhSjXik6hLGUtwZIBdvJab1cb4g6iI1S6QRAiEAjAIIaUGsSmKZfxAlV3WENzWgVRVUv0SQuFQGXeQGOtU=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":13209699},"type":"module","engines":{"node":">=22.0.0"},"scripts":{"test":"node --test test/*.test.mjs","build":"node --check src/**/*.mjs && node scripts/build-bundle.mjs","typecheck":"node --check src/**/*.mjs bin/*.mjs","native:test":"npm run native:build:test && node --expose-gc --test test/artifacts-safe-fs-native-seam.test.mjs && npm run native:build && RELEASE_SKILL_NATIVE_DEV=1 node --test test/artifacts-safe-fs.test.mjs test/artifacts-transaction-native.test.mjs && node --input-type=module -e \"import {createRequire} from 'node:module';const a=createRequire(import.meta.url)('./native/safe-write/build/Release/safe_write.node');const k=Object.keys(a).sort();const e=['abortTemp','chmod','close','createTemp','fsync','mkdir','openDir','openRoot','readEntry','readFile','rename','rmdir','unlink'];if(k.length!==e.length||k.some((v,i)=>v!==e[i])){console.error('Production exports mismatch:',k);process.exit(1)}console.log('Production exports verified:',k.length,'functions')\"","sync:skills":"node scripts/sync-skills.mjs","build:bundle":"node scripts/build-bundle.mjs","native:build":"node-gyp rebuild --directory native/safe-write","build:adapters":"node scripts/build-adapters.mjs","test:no-dogfood":"node --test $(ls test/*.test.mjs | grep -v -E 'dogfood|artifacts-safe-fs-native-seam|setup-live-samples')","native:build:test":"GYP_DEFINES='test_seam=1' node-gyp rebuild --directory native/safe-write","sync:skills:check":"node scripts/sync-skills.mjs --check","build:bundle:check":"node scripts/build-bundle.mjs --check","build:adapters:check":"node scripts/build-adapters.mjs --check","native:package-current":"node scripts/package-native-prebuild.mjs"},"_npmUser":{"name":"mzdbxqh","email":"mzdbxqh@gmail.com"},"repository":{"url":"git+https://github.com/mzdbxqh/release-skill.git","type":"git"},"description":"Safe preparation and frozen GitHub/npm production publishing with full happy end verification","directories":{},"_nodeVersion":"25.4.0","dependencies":{"ajv":"8.20.0","yaml":"2.9.0","ajv-formats":"3.0.1","libnpmpublish":"11.1.0","npm-registry-fetch":"18.0.2"},"_hasShrinkwrap":false,"devDependencies":{"esbuild":"0.25.8","node-gyp":"12.3.0"},"_npmOperationalInternal":{"tmp":"tmp/release-skill_0.1.6_1784732735601_0.7544525306363021","host":"s3://npm-registry-packages-npm-production"}},"0.1.7":{"name":"release-skill","version":"0.1.7","keywords":["release","publish","governance","skill","claude-code","codex"],"author":{"name":"广州市风荷科技有限公司"},"license":"MIT","_id":"release-skill@0.1.7","maintainers":[{"name":"mzdbxqh","email":"mzdbxqh@gmail.com"}],"contributors":[{"name":"release-skill contributors"}],"homepage":"https://github.com/ifoohoo/release-skill#readme","bugs":{"url":"https://github.com/ifoohoo/release-skill/issues"},"bin":{"release-skill":"./bin/release-skill.mjs"},"dist":{"shasum":"94747d7fd8840cab45333e95c521e9e48ae50223","tarball":"https://registry.npmjs.org/release-skill/-/release-skill-0.1.7.tgz","fileCount":178,"integrity":"sha512-PYbTCs8Y96WibGqcVimfrctRCyBjYv9MP7csNTSsQEcmqRXbgvNGFq8FrEGORpDrVXjaLLG62xcQ01dKO3Kf6A==","signatures":[{"sig":"MEYCIQCT+iHElmgKhMHCCm15fC0diar2skmkWtQb76ZwrcYRYAIhAMJKiIH/YfDrnJlVs054dVahyja0Pfyv41kSUA5zvDhw","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":13207963},"type":"module","engines":{"node":">=22.0.0"},"scripts":{"test":"node --test test/*.test.mjs","build":"node --check src/**/*.mjs && node scripts/build-bundle.mjs","typecheck":"node --check src/**/*.mjs bin/*.mjs","native:test":"npm run native:build:test && node --expose-gc --test test/artifacts-safe-fs-native-seam.test.mjs && npm run native:build && RELEASE_SKILL_NATIVE_DEV=1 node --test test/artifacts-safe-fs.test.mjs test/artifacts-transaction-native.test.mjs && node --input-type=module -e \"import {createRequire} from 'node:module';const a=createRequire(import.meta.url)('./native/safe-write/build/Release/safe_write.node');const k=Object.keys(a).sort();const e=['abortTemp','chmod','close','createTemp','fsync','mkdir','openDir','openRoot','readEntry','readFile','rename','rmdir','unlink'];if(k.length!==e.length||k.some((v,i)=>v!==e[i])){console.error('Production exports mismatch:',k);process.exit(1)}console.log('Production exports verified:',k.length,'functions')\"","sync:skills":"node scripts/sync-skills.mjs","build:bundle":"node scripts/build-bundle.mjs","native:build":"node-gyp rebuild --directory native/safe-write","build:adapters":"node scripts/build-adapters.mjs","test:no-dogfood":"node --test $(ls test/*.test.mjs | grep -v -E 'dogfood|artifacts-safe-fs-native-seam|setup-live-samples')","native:build:test":"GYP_DEFINES='test_seam=1' node-gyp rebuild --directory native/safe-write","sync:skills:check":"node scripts/sync-skills.mjs --check","build:bundle:check":"node scripts/build-bundle.mjs --check","build:adapters:check":"node scripts/build-adapters.mjs --check","native:package-current":"node scripts/package-native-prebuild.mjs"},"_npmUser":{"name":"mzdbxqh","email":"mzdbxqh@gmail.com"},"repository":{"url":"git+https://github.com/ifoohoo/release-skill.git","type":"git"},"description":"Safe preparation and frozen GitHub/npm production publishing with full happy end verification","directories":{},"_nodeVersion":"25.4.0","dependencies":{"ajv":"8.20.0","yaml":"2.9.0","ajv-formats":"3.0.1","libnpmpublish":"11.1.0","npm-registry-fetch":"18.0.2"},"_hasShrinkwrap":false,"devDependencies":{"esbuild":"0.25.8","node-gyp":"12.3.0"},"_npmOperationalInternal":{"tmp":"tmp/release-skill_0.1.7_1784740960914_0.8255168255228995","host":"s3://npm-registry-packages-npm-production"}},"0.1.8":{"name":"release-skill","version":"0.1.8","keywords":["release","publish","governance","skill","claude-code","codex","kimi-code"],"author":{"name":"广州市风荷科技有限公司"},"license":"MIT","_id":"release-skill@0.1.8","maintainers":[{"name":"mzdbxqh","email":"mzdbxqh@gmail.com"}],"contributors":[{"name":"release-skill contributors"}],"homepage":"https://github.com/ifoohoo/release-skill#readme","bugs":{"url":"https://github.com/ifoohoo/release-skill/issues"},"bin":{"release-skill":"./bin/release-skill.mjs"},"dist":{"shasum":"c45f861dc025ec037cb5d6aa601fb5cbba40579e","tarball":"https://registry.npmjs.org/release-skill/-/release-skill-0.1.8.tgz","fileCount":202,"integrity":"sha512-YqkdEl/3ZEcKQdI5Oqrsd78/QGdZR0jxg2Np7O/jJpHLpvwcriVAcNLlfxd+4nn2fx+VvMTbTjq62jdsF6n0Cg==","signatures":[{"sig":"MEUCIQClsAxNJSrMoGgtFT8FEM+G8dFzftYXHkuLot9XFMkzawIgcdXKmEowreuZQjklLfAGGsYtT9VvO2aMYbvDntBon/0=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":17277203},"type":"module","engines":{"node":">=22.0.0"},"scripts":{"test":"node --test test/*.test.mjs","build":"node --check src/**/*.mjs && node scripts/build-bundle.mjs","typecheck":"node --check src/**/*.mjs bin/*.mjs","native:test":"npm run native:build:test && node --expose-gc --test test/artifacts-safe-fs-native-seam.test.mjs && npm run native:build && RELEASE_SKILL_NATIVE_DEV=1 node --test test/artifacts-safe-fs.test.mjs test/artifacts-transaction-native.test.mjs && node --input-type=module -e \"import {createRequire} from 'node:module';const a=createRequire(import.meta.url)('./native/safe-write/build/Release/safe_write.node');const k=Object.keys(a).sort();const e=['abortTemp','chmod','close','createTemp','fsync','mkdir','openDir','openRoot','readEntry','readFile','rename','rmdir','unlink'];if(k.length!==e.length||k.some((v,i)=>v!==e[i])){console.error('Production exports mismatch:',k);process.exit(1)}console.log('Production exports verified:',k.length,'functions')\"","sync:skills":"node scripts/sync-skills.mjs","build:bundle":"node scripts/build-bundle.mjs","native:build":"node-gyp rebuild --directory native/safe-write","build:adapters":"node scripts/build-adapters.mjs","test:no-dogfood":"node --test $(ls test/*.test.mjs | grep -v -E 'dogfood|artifacts-safe-fs-native-seam|setup-live-samples')","native:build:test":"GYP_DEFINES='test_seam=1' node-gyp rebuild --directory native/safe-write","sync:skills:check":"node scripts/sync-skills.mjs --check","build:bundle:check":"node scripts/build-bundle.mjs --check","build:adapters:check":"node scripts/build-adapters.mjs --check","native:package-current":"node scripts/package-native-prebuild.mjs"},"_npmUser":{"name":"mzdbxqh","email":"mzdbxqh@gmail.com"},"repository":{"url":"git+https://github.com/ifoohoo/release-skill.git","type":"git"},"description":"Safe preparation and frozen GitHub/npm production publishing with full happy end verification","directories":{},"_nodeVersion":"25.4.0","dependencies":{"ajv":"8.20.0","yaml":"2.9.0","ajv-formats":"3.0.1","libnpmpublish":"11.1.0","npm-registry-fetch":"18.0.2"},"_hasShrinkwrap":false,"devDependencies":{"esbuild":"0.25.8","node-gyp":"12.3.0"},"_npmOperationalInternal":{"tmp":"tmp/release-skill_0.1.8_1784790835005_0.5000382081408075","host":"s3://npm-registry-packages-npm-production"}},"0.1.9":{"name":"release-skill","version":"0.1.9","keywords":["release","publish","governance","skill","claude-code","codex","kimi-code"],"author":{"name":"广州市风荷科技有限公司"},"license":"MIT","_id":"release-skill@0.1.9","maintainers":[{"name":"mzdbxqh","email":"mzdbxqh@gmail.com"}],"contributors":[{"name":"release-skill contributors"}],"homepage":"https://github.com/ifoohoo/release-skill#readme","bugs":{"url":"https://github.com/ifoohoo/release-skill/issues"},"bin":{"release-skill":"./bin/release-skill.mjs"},"dist":{"shasum":"e285943439968dd3a073b4da6420a7eec8b00e36","tarball":"https://registry.npmjs.org/release-skill/-/release-skill-0.1.9.tgz","fileCount":202,"integrity":"sha512-UA41p1uG1gIAzsCODoajQPTRYY66Skd42SsZrsUKdvp3MMZ0ZnVI5X3U3CDhHxjdhNkbPUzmHlNYPleFJ2RYrQ==","signatures":[{"sig":"MEUCIQCanIyuPyHwZ6M1qLtKCSq7ozVdKAzG0IbxrYO65g5CqgIgJD+I7R5nH4u9nLxsxW1HF6yMShiLKZ4ykfMEUDzRrlY=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":17297183},"type":"module","engines":{"node":">=22.0.0"},"scripts":{"test":"node --test test/*.test.mjs","build":"node --check src/**/*.mjs && node scripts/build-bundle.mjs","typecheck":"node --check src/**/*.mjs bin/*.mjs","native:test":"npm run native:build:test && node --expose-gc --test test/artifacts-safe-fs-native-seam.test.mjs && npm run native:build && RELEASE_SKILL_NATIVE_DEV=1 node --test test/artifacts-safe-fs.test.mjs test/artifacts-transaction-native.test.mjs && node --input-type=module -e \"import {createRequire} from 'node:module';const a=createRequire(import.meta.url)('./native/safe-write/build/Release/safe_write.node');const k=Object.keys(a).sort();const e=['abortTemp','chmod','close','createTemp','fsync','mkdir','openDir','openRoot','readEntry','readFile','rename','rmdir','unlink'];if(k.length!==e.length||k.some((v,i)=>v!==e[i])){console.error('Production exports mismatch:',k);process.exit(1)}console.log('Production exports verified:',k.length,'functions')\"","sync:skills":"node scripts/sync-skills.mjs","build:bundle":"node scripts/build-bundle.mjs","native:build":"node-gyp rebuild --directory native/safe-write","build:adapters":"node scripts/build-adapters.mjs","test:no-dogfood":"node --test $(ls test/*.test.mjs | grep -v -E 'dogfood|artifacts-safe-fs-native-seam|setup-live-samples')","native:build:test":"GYP_DEFINES='test_seam=1' node-gyp rebuild --directory native/safe-write","sync:skills:check":"node scripts/sync-skills.mjs --check","build:bundle:check":"node scripts/build-bundle.mjs --check","build:adapters:check":"node scripts/build-adapters.mjs --check","native:package-current":"node scripts/package-native-prebuild.mjs"},"_npmUser":{"name":"mzdbxqh","email":"mzdbxqh@gmail.com"},"repository":{"url":"git+https://github.com/ifoohoo/release-skill.git","type":"git"},"description":"Safe preparation and frozen GitHub/npm production publishing with full happy end verification","directories":{},"_nodeVersion":"25.4.0","dependencies":{"ajv":"8.20.0","yaml":"2.9.0","ajv-formats":"3.0.1","libnpmpublish":"11.1.0","npm-registry-fetch":"18.0.2"},"_hasShrinkwrap":false,"devDependencies":{"esbuild":"0.25.8","node-gyp":"12.3.0"},"_npmOperationalInternal":{"tmp":"tmp/release-skill_0.1.9_1784816303134_0.5273136346779697","host":"s3://npm-registry-packages-npm-production"}},"0.1.10":{"name":"release-skill","version":"0.1.10","keywords":["release","publish","governance","skill","claude-code","codex","kimi-code"],"author":{"name":"广州市风荷科技有限公司"},"license":"MIT","_id":"release-skill@0.1.10","maintainers":[{"name":"mzdbxqh","email":"mzdbxqh@gmail.com"}],"contributors":[{"name":"release-skill contributors"}],"homepage":"https://github.com/ifoohoo/release-skill#readme","bugs":{"url":"https://github.com/ifoohoo/release-skill/issues"},"bin":{"release-skill":"./bin/release-skill.mjs"},"dist":{"shasum":"bed34d1d99716af700349f44351fb8f27338941e","tarball":"https://registry.npmjs.org/release-skill/-/release-skill-0.1.10.tgz","fileCount":202,"integrity":"sha512-jR12vSn8KAQIHWHxsd8W+VarAUgKHLPRuzJ0Vp3LhR/4A27V7mnuVH0OAtO6XcX7IXv0OPcPwN2MVw3BX5DHbA==","signatures":[{"sig":"MEQCIHqhCqTtGPgR83kh3D0OqdsmPUPgMNpOj6MjkT2EobUhAiB0svCSlqZg99w7gA3F+rjVJQc/AQJoUPNwbS3rzNdPiQ==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":17306145},"type":"module","engines":{"node":">=22.0.0"},"scripts":{"test":"node --test test/*.test.mjs","build":"node --check src/**/*.mjs && node scripts/build-bundle.mjs","typecheck":"node --check src/**/*.mjs bin/*.mjs","native:test":"npm run native:build:test && node --expose-gc --test test/artifacts-safe-fs-native-seam.test.mjs && npm run native:build && RELEASE_SKILL_NATIVE_DEV=1 node --test test/artifacts-safe-fs.test.mjs test/artifacts-transaction-native.test.mjs && node --input-type=module -e \"import {createRequire} from 'node:module';const a=createRequire(import.meta.url)('./native/safe-write/build/Release/safe_write.node');const k=Object.keys(a).sort();const e=['abortTemp','chmod','close','createTemp','fsync','mkdir','openDir','openRoot','readEntry','readFile','rename','rmdir','unlink'];if(k.length!==e.length||k.some((v,i)=>v!==e[i])){console.error('Production exports mismatch:',k);process.exit(1)}console.log('Production exports verified:',k.length,'functions')\"","sync:skills":"node scripts/sync-skills.mjs","build:bundle":"node scripts/build-bundle.mjs","native:build":"node-gyp rebuild --directory native/safe-write","build:adapters":"node scripts/build-adapters.mjs","test:no-dogfood":"node --test $(ls test/*.test.mjs | grep -v -E 'dogfood|artifacts-safe-fs-native-seam|setup-live-samples')","native:build:test":"GYP_DEFINES='test_seam=1' node-gyp rebuild --directory native/safe-write","sync:skills:check":"node scripts/sync-skills.mjs --check","build:bundle:check":"node scripts/build-bundle.mjs --check","build:adapters:check":"node scripts/build-adapters.mjs --check","native:package-current":"node scripts/package-native-prebuild.mjs"},"_npmUser":{"name":"mzdbxqh","email":"mzdbxqh@gmail.com"},"repository":{"url":"git+https://github.com/ifoohoo/release-skill.git","type":"git"},"description":"Safe preparation and frozen GitHub/npm production publishing with full happy end verification","directories":{},"_nodeVersion":"25.4.0","dependencies":{"ajv":"8.20.0","yaml":"2.9.0","ajv-formats":"3.0.1","libnpmpublish":"11.1.0","npm-registry-fetch":"18.0.2"},"_hasShrinkwrap":false,"devDependencies":{"esbuild":"0.25.8","node-gyp":"12.3.0"},"_npmOperationalInternal":{"tmp":"tmp/release-skill_0.1.10_1784827186745_0.861255931650724","host":"s3://npm-registry-packages-npm-production"}},"0.2.0":{"name":"release-skill","version":"0.2.0","keywords":["release","publish","governance","skill","claude-code","codex","kimi-code"],"author":{"name":"广州市风荷科技有限公司"},"license":"MIT","_id":"release-skill@0.2.0","maintainers":[{"name":"mzdbxqh","email":"mzdbxqh@gmail.com"}],"contributors":[{"name":"release-skill contributors"}],"homepage":"https://github.com/ifoohoo/release-skill#readme","bugs":{"url":"https://github.com/ifoohoo/release-skill/issues"},"bin":{"release-skill":"./bin/release-skill.mjs"},"dist":{"shasum":"959ac5a390c721d66998cb1ac2ee6ca4bf4b4c9f","tarball":"https://registry.npmjs.org/release-skill/-/release-skill-0.2.0.tgz","fileCount":208,"integrity":"sha512-0y0NEV9N1iARLCLGxz+AJuvw0TG6p5oqLjjjjscWOHBQJx9qgokqMfYaoCf0x+ha+ZIZxA0r2gtMznLktruzLQ==","signatures":[{"sig":"MEQCIDoVc4EK+ySriaVz1Atgf9bYSijQnUr2yf7ommExhUs3AiByiB1svFtXTSRuBvvcAsVL4lxJDkv1rjOHsKBwuf4vFQ==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":17558160},"type":"module","engines":{"node":">=22.0.0"},"scripts":{"test":"node --test test/*.test.mjs","build":"node --check src/**/*.mjs && node scripts/build-bundle.mjs","typecheck":"node --check src/**/*.mjs bin/*.mjs","native:test":"npm run native:build:test && node --expose-gc --test test/artifacts-safe-fs-native-seam.test.mjs && npm run native:build && RELEASE_SKILL_NATIVE_DEV=1 node --test test/artifacts-safe-fs.test.mjs test/artifacts-transaction-native.test.mjs && node --input-type=module -e \"import {createRequire} from 'node:module';const a=createRequire(import.meta.url)('./native/safe-write/build/Release/safe_write.node');const k=Object.keys(a).sort();const e=['abortTemp','chmod','close','createTemp','fsync','mkdir','openDir','openRoot','readEntry','readFile','rename','rmdir','unlink'];if(k.length!==e.length||k.some((v,i)=>v!==e[i])){console.error('Production exports mismatch:',k);process.exit(1)}console.log('Production exports verified:',k.length,'functions')\"","sync:skills":"node scripts/sync-skills.mjs","build:bundle":"node scripts/build-bundle.mjs","native:build":"node-gyp rebuild --directory native/safe-write","sync:version":"node scripts/sync-version.mjs","build:adapters":"node scripts/build-adapters.mjs","test:no-dogfood":"node --test $(ls test/*.test.mjs | grep -v -E 'dogfood|artifacts-safe-fs-native-seam|setup-live-samples|reference-configs')","native:build:test":"GYP_DEFINES='test_seam=1' node-gyp rebuild --directory native/safe-write","sync:public-files":"node scripts/sync-public-files.mjs","sync:skills:check":"node scripts/sync-skills.mjs --check","test:cli-contract":"node --test test/cli-contract.test.mjs","build:bundle:check":"node scripts/build-bundle.mjs --check","sync:version:check":"node scripts/sync-version.mjs --check","build:adapters:check":"node scripts/build-adapters.mjs --check","native:package-current":"node scripts/package-native-prebuild.mjs","sync:public-files:check":"node scripts/sync-public-files.mjs --check"},"_npmUser":{"name":"mzdbxqh","email":"mzdbxqh@gmail.com"},"repository":{"url":"git+https://github.com/ifoohoo/release-skill.git","type":"git"},"description":"Safe preparation and frozen GitHub/npm production publishing with full happy end verification","directories":{},"_nodeVersion":"25.4.0","dependencies":{"ajv":"8.20.0","yaml":"2.9.0","ajv-formats":"3.0.1","libnpmpublish":"11.1.0","npm-registry-fetch":"18.0.2"},"_hasShrinkwrap":false,"devDependencies":{"esbuild":"0.25.8","node-gyp":"12.3.0"},"_npmOperationalInternal":{"tmp":"tmp/release-skill_0.2.0_1784958309839_0.08612364591651378","host":"s3://npm-registry-packages-npm-production"}},"0.2.1":{"name":"release-skill","version":"0.2.1","keywords":["release","publish","governance","skill","claude-code","codex","kimi-code"],"author":{"name":"广州市风荷科技有限公司"},"license":"MIT","_id":"release-skill@0.2.1","maintainers":[{"name":"mzdbxqh","email":"mzdbxqh@gmail.com"}],"contributors":[{"name":"release-skill contributors"}],"homepage":"https://github.com/ifoohoo/release-skill#readme","bugs":{"url":"https://github.com/ifoohoo/release-skill/issues"},"bin":{"release-skill":"./bin/release-skill.mjs"},"dist":{"shasum":"1a175240d4434927f342cd424c4364b2d4320bb4","tarball":"https://registry.npmjs.org/release-skill/-/release-skill-0.2.1.tgz","fileCount":232,"integrity":"sha512-j73iAkzKOL/K/a2kX75Lniecnse/DhB2cb1bv5mnJoqD1Fx7JxtUfMjABcrmixP+YzOI9Up6V24rLQQeKgbByQ==","signatures":[{"sig":"MEUCIQDbKVfI9T/0Hu6ZLNIm70H+cRrvJbIeptyK/9BzHESY1gIge+Q1AvijNord/H1DWKWMof7F1KmVs1/zgKU0I4YQbqs=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":21479505},"type":"module","engines":{"node":">=22.0.0"},"scripts":{"test":"node --test test/*.test.mjs","build":"node --check src/**/*.mjs && node scripts/build-bundle.mjs","typecheck":"node --check src/**/*.mjs bin/*.mjs","native:test":"npm run native:build:test && node --expose-gc --test test/artifacts-safe-fs-native-seam.test.mjs && npm run native:build && RELEASE_SKILL_NATIVE_DEV=1 node --test test/artifacts-safe-fs.test.mjs test/artifacts-transaction-native.test.mjs && node --input-type=module -e \"import {createRequire} from 'node:module';const a=createRequire(import.meta.url)('./native/safe-write/build/Release/safe_write.node');const k=Object.keys(a).sort();const e=['abortTemp','chmod','close','createTemp','fsync','mkdir','openDir','openRoot','readEntry','readFile','rename','rmdir','unlink'];if(k.length!==e.length||k.some((v,i)=>v!==e[i])){console.error('Production exports mismatch:',k);process.exit(1)}console.log('Production exports verified:',k.length,'functions')\"","sync:skills":"node scripts/sync-skills.mjs","build:bundle":"node scripts/build-bundle.mjs","native:build":"node-gyp rebuild --directory native/safe-write","sync:version":"node scripts/sync-version.mjs","build:adapters":"node scripts/build-adapters.mjs","test:no-dogfood":"node --test $(ls test/*.test.mjs | grep -v -E 'dogfood|artifacts-safe-fs-native-seam|setup-live-samples|reference-configs')","native:build:test":"GYP_DEFINES='test_seam=1' node-gyp rebuild --directory native/safe-write","sync:public-files":"node scripts/sync-public-files.mjs","sync:skills:check":"node scripts/sync-skills.mjs --check","test:cli-contract":"node --test test/cli-contract.test.mjs","build:bundle:check":"node scripts/build-bundle.mjs --check","sync:version:check":"node scripts/sync-version.mjs --check","build:adapters:check":"node scripts/build-adapters.mjs --check","native:package-current":"node scripts/package-native-prebuild.mjs","sync:public-files:check":"node scripts/sync-public-files.mjs --check"},"_npmUser":{"name":"mzdbxqh","email":"mzdbxqh@gmail.com"},"repository":{"url":"git+https://github.com/ifoohoo/release-skill.git","type":"git"},"description":"Safe preparation and frozen GitHub/npm production publishing with full happy end verification","directories":{},"_nodeVersion":"25.4.0","dependencies":{"ajv":"8.20.0","yaml":"2.9.0","ajv-formats":"3.0.1","libnpmpublish":"11.1.0","npm-registry-fetch":"18.0.2"},"_hasShrinkwrap":false,"devDependencies":{"esbuild":"0.25.8","node-gyp":"12.3.0"},"_npmOperationalInternal":{"tmp":"tmp/release-skill_0.2.1_1784972579514_0.9841199161858709","host":"s3://npm-registry-packages-npm-production"}},"0.2.2":{"name":"release-skill","version":"0.2.2","keywords":["release","publish","governance","skill","claude-code","codex","kimi-code"],"author":{"name":"广州市风荷科技有限公司"},"license":"MIT","_id":"release-skill@0.2.2","maintainers":[{"name":"mzdbxqh","email":"mzdbxqh@gmail.com"}],"contributors":[{"name":"release-skill contributors"}],"homepage":"https://github.com/ifoohoo/release-skill#readme","bugs":{"url":"https://github.com/ifoohoo/release-skill/issues"},"bin":{"release-skill":"./bin/release-skill.mjs"},"dist":{"shasum":"7393c6c46ab3f679bbd30db131e74743a6adf056","tarball":"https://registry.npmjs.org/release-skill/-/release-skill-0.2.2.tgz","fileCount":233,"integrity":"sha512-+pZcsIAK5E82MP1HeVw+LwHOCv1D2TB+D+o8GVdbXK0GXTY/ROpyGHkz48NLA1aQDIRL4Gyw0BDklWnvXUqMkw==","signatures":[{"sig":"MEYCIQCgnsQTn32G4nf0qG0RrDQEYVOJiTv3jbpVlW+roAcuhQIhAPqsOv/Ge8jlPV6I5QGGoO59DKGeoX2Sl4oi8mhsrKcr","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":21907969},"type":"module","engines":{"node":">=22.0.0"},"scripts":{"test":"node --test test/*.test.mjs","build":"node --check src/**/*.mjs && node scripts/build-bundle.mjs","typecheck":"node --check src/**/*.mjs bin/*.mjs","native:test":"npm run native:build:test && node --expose-gc --test test/artifacts-safe-fs-native-seam.test.mjs && npm run native:build && RELEASE_SKILL_NATIVE_DEV=1 node --test test/artifacts-safe-fs.test.mjs test/artifacts-transaction-native.test.mjs && node --input-type=module -e \"import {createRequire} from 'node:module';const a=createRequire(import.meta.url)('./native/safe-write/build/Release/safe_write.node');const k=Object.keys(a).sort();const e=['abortTemp','chmod','close','createTemp','fsync','mkdir','openDir','openRoot','readEntry','readFile','rename','rmdir','unlink'];if(k.length!==e.length||k.some((v,i)=>v!==e[i])){console.error('Production exports mismatch:',k);process.exit(1)}console.log('Production exports verified:',k.length,'functions')\"","sync:skills":"node scripts/sync-skills.mjs","build:bundle":"node scripts/build-bundle.mjs","native:build":"node-gyp rebuild --directory native/safe-write","sync:version":"node scripts/sync-version.mjs","build:adapters":"node scripts/build-adapters.mjs","test:no-dogfood":"node --test $(ls test/*.test.mjs | grep -v -E 'dogfood|artifacts-safe-fs-native-seam|setup-live-samples|reference-configs')","native:build:test":"GYP_DEFINES='test_seam=1' node-gyp rebuild --directory native/safe-write","sync:public-files":"node scripts/sync-public-files.mjs","sync:skills:check":"node scripts/sync-skills.mjs --check","test:cli-contract":"node --test test/cli-contract.test.mjs","build:bundle:check":"node scripts/build-bundle.mjs --check","sync:version:check":"node scripts/sync-version.mjs --check","build:adapters:check":"node scripts/build-adapters.mjs --check","native:package-current":"node scripts/package-native-prebuild.mjs","sync:public-files:check":"node scripts/sync-public-files.mjs --check"},"_npmUser":{"name":"mzdbxqh","email":"mzdbxqh@gmail.com"},"repository":{"url":"git+https://github.com/ifoohoo/release-skill.git","type":"git"},"description":"Safe preparation and frozen GitHub/npm production publishing with full happy end verification","directories":{},"_nodeVersion":"25.4.0","dependencies":{"ajv":"8.20.0","yaml":"2.9.0","ajv-formats":"3.0.1","libnpmpublish":"11.1.0","npm-registry-fetch":"18.0.2"},"_hasShrinkwrap":false,"devDependencies":{"esbuild":"0.25.8","node-gyp":"12.3.0"},"_npmOperationalInternal":{"tmp":"tmp/release-skill_0.2.2_1785002791416_0.19537834775564278","host":"s3://npm-registry-packages-npm-production"}},"0.2.3":{"name":"release-skill","version":"0.2.3","keywords":["release","publish","governance","skill","claude-code","codex","kimi-code"],"author":{"name":"广州市风荷科技有限公司"},"license":"MIT","_id":"release-skill@0.2.3","maintainers":[{"name":"mzdbxqh","email":"mzdbxqh@gmail.com"}],"contributors":[{"name":"release-skill contributors"}],"homepage":"https://github.com/ifoohoo/release-skill#readme","bugs":{"url":"https://github.com/ifoohoo/release-skill/issues"},"bin":{"release-skill":"./bin/release-skill.mjs"},"dist":{"shasum":"a55bff94122e9391930017bed587c1864eb9d955","tarball":"https://registry.npmjs.org/release-skill/-/release-skill-0.2.3.tgz","fileCount":233,"integrity":"sha512-uVRxMawcSIlLKksApNiRkwrrVzWTzbFBihSWz3m9miU8oYJv7oH1G2BYylG+OIpagLyrYocmclZLcaqtWmWm2w==","signatures":[{"sig":"MEUCIQDP2ExLrylb2NH5M6MAYw7grkwV1REWM2d6XMKhEgIobAIgY0PHsWhgnfOHSdRAMe55VOdB0QvOuPn5wcGhPWQld94=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":22085693},"type":"module","engines":{"node":">=22.0.0"},"scripts":{"test":"node --test test/*.test.mjs","build":"node --check src/**/*.mjs && node scripts/build-bundle.mjs","typecheck":"node --check src/**/*.mjs bin/*.mjs","native:test":"npm run native:build:test && node --expose-gc --test test/artifacts-safe-fs-native-seam.test.mjs && npm run native:build && RELEASE_SKILL_NATIVE_DEV=1 node --test test/artifacts-safe-fs.test.mjs test/artifacts-transaction-native.test.mjs && node --input-type=module -e \"import {createRequire} from 'node:module';const a=createRequire(import.meta.url)('./native/safe-write/build/Release/safe_write.node');const k=Object.keys(a).sort();const e=['abortTemp','chmod','close','createTemp','fsync','mkdir','openDir','openRoot','readEntry','readFile','rename','rmdir','unlink'];if(k.length!==e.length||k.some((v,i)=>v!==e[i])){console.error('Production exports mismatch:',k);process.exit(1)}console.log('Production exports verified:',k.length,'functions')\"","sync:skills":"node scripts/sync-skills.mjs","build:bundle":"node scripts/build-bundle.mjs","native:build":"node-gyp rebuild --directory native/safe-write","sync:version":"node scripts/sync-version.mjs","build:adapters":"node scripts/build-adapters.mjs","test:no-dogfood":"node --test $(ls test/*.test.mjs | grep -v -E 'dogfood|artifacts-safe-fs-native-seam|setup-live-samples|reference-configs')","native:build:test":"GYP_DEFINES='test_seam=1' node-gyp rebuild --directory native/safe-write","sync:public-files":"node scripts/sync-public-files.mjs","sync:skills:check":"node scripts/sync-skills.mjs --check","test:cli-contract":"node --test test/cli-contract.test.mjs","build:bundle:check":"node scripts/build-bundle.mjs --check","sync:version:check":"node scripts/sync-version.mjs --check","build:adapters:check":"node scripts/build-adapters.mjs --check","native:package-current":"node scripts/package-native-prebuild.mjs","sync:public-files:check":"node scripts/sync-public-files.mjs --check"},"_npmUser":{"name":"mzdbxqh","email":"mzdbxqh@gmail.com"},"repository":{"url":"git+https://github.com/ifoohoo/release-skill.git","type":"git"},"description":"Safe preparation and frozen GitHub/npm production publishing with full happy end verification","directories":{},"_nodeVersion":"25.4.0","dependencies":{"ajv":"8.20.0","yaml":"2.9.0","ajv-formats":"3.0.1","libnpmpublish":"11.1.0","npm-registry-fetch":"18.0.2"},"_hasShrinkwrap":false,"devDependencies":{"esbuild":"0.25.8","node-gyp":"12.3.0"},"_npmOperationalInternal":{"tmp":"tmp/release-skill_0.2.3_1785072414597_0.4565295753323948","host":"s3://npm-registry-packages-npm-production"}},"0.2.4":{"name":"release-skill","version":"0.2.4","keywords":["release","publish","governance","skill","claude-code","codex","kimi-code"],"author":{"name":"广州市风荷科技有限公司"},"license":"MIT","_id":"release-skill@0.2.4","maintainers":[{"name":"mzdbxqh","email":"mzdbxqh@gmail.com"}],"contributors":[{"name":"release-skill contributors"}],"homepage":"https://github.com/ifoohoo/release-skill#readme","bugs":{"url":"https://github.com/ifoohoo/release-skill/issues"},"bin":{"release-skill":"./bin/release-skill.mjs"},"dist":{"shasum":"ece6c9839ff3f80c995a493539cab813446e35a6","tarball":"https://registry.npmjs.org/release-skill/-/release-skill-0.2.4.tgz","fileCount":235,"integrity":"sha512-oa/1rfZ18Y9VI+Hd9KcsBBDzrLhCEeGTg1QTK14z6lpG+ZCXTrjHUHdqQjmiC6LNeo9D/V0HTrDNOSz8ZB7Z7g==","signatures":[{"sig":"MEUCIF9E3BHW/Ex7YSZzYNHZ6L7/8iLaUXdf0rCvVJVqpjDdAiEA/xPDDwb9Vmn20m1np9Qan7VosuSj3tp3mpdP+DKcR10=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":22533671},"type":"module","engines":{"node":">=22.0.0"},"scripts":{"test":"node --test test/*.test.mjs","build":"node --check src/**/*.mjs && node scripts/build-bundle.mjs","typecheck":"node --check src/**/*.mjs bin/*.mjs","native:test":"npm run native:build:test && node --expose-gc --test test/artifacts-safe-fs-native-seam.test.mjs && npm run native:build && RELEASE_SKILL_NATIVE_DEV=1 node --test test/artifacts-safe-fs.test.mjs test/artifacts-transaction-native.test.mjs && node --input-type=module -e \"import {createRequire} from 'node:module';const a=createRequire(import.meta.url)('./native/safe-write/build/Release/safe_write.node');const k=Object.keys(a).sort();const e=['abortTemp','chmod','close','createTemp','fsync','mkdir','openDir','openRoot','readEntry','readFile','rename','rmdir','unlink'];if(k.length!==e.length||k.some((v,i)=>v!==e[i])){console.error('Production exports mismatch:',k);process.exit(1)}console.log('Production exports verified:',k.length,'functions')\"","sync:skills":"node scripts/sync-skills.mjs","build:bundle":"node scripts/build-bundle.mjs","native:build":"node-gyp rebuild --directory native/safe-write","sync:version":"node scripts/sync-version.mjs","build:adapters":"node scripts/build-adapters.mjs","test:no-dogfood":"node --test $(ls test/*.test.mjs | grep -v -E 'dogfood|artifacts-safe-fs-native-seam|setup-live-samples|reference-configs')","native:build:test":"GYP_DEFINES='test_seam=1' node-gyp rebuild --directory native/safe-write","sync:public-files":"node scripts/sync-public-files.mjs","sync:skills:check":"node scripts/sync-skills.mjs --check","test:cli-contract":"node --test test/cli-contract.test.mjs","build:bundle:check":"node scripts/build-bundle.mjs --check","sync:version:check":"node scripts/sync-version.mjs --check","build:adapters:check":"node scripts/build-adapters.mjs --check","native:package-current":"node scripts/package-native-prebuild.mjs","sync:public-files:check":"node scripts/sync-public-files.mjs --check"},"_npmUser":{"name":"mzdbxqh","email":"mzdbxqh@gmail.com"},"repository":{"url":"git+https://github.com/ifoohoo/release-skill.git","type":"git"},"description":"Safe preparation and frozen GitHub/npm production publishing with full happy end verification","directories":{},"_nodeVersion":"22.22.0","dependencies":{"ajv":"8.20.0","yaml":"2.9.0","ajv-formats":"3.0.1","libnpmpublish":"11.1.0","npm-registry-fetch":"18.0.2"},"_hasShrinkwrap":false,"devDependencies":{"esbuild":"0.25.8","node-gyp":"12.3.0"},"_npmOperationalInternal":{"tmp":"tmp/release-skill_0.2.4_1785180492203_0.6024308322523337","host":"s3://npm-registry-packages-npm-production"}},"0.2.5":{"name":"release-skill","version":"0.2.5","keywords":["release","publish","governance","skill","claude-code","codex","kimi-code"],"author":{"name":"广州市风荷科技有限公司"},"license":"MIT","_id":"release-skill@0.2.5","maintainers":[{"name":"mzdbxqh","email":"mzdbxqh@gmail.com"}],"contributors":[{"name":"release-skill contributors"}],"homepage":"https://github.com/ifoohoo/release-skill#readme","bugs":{"url":"https://github.com/ifoohoo/release-skill/issues"},"bin":{"release-skill":"./bin/release-skill.mjs"},"dist":{"shasum":"7306fa56c0ea04180136753038729d7111ad4ebd","tarball":"https://registry.npmjs.org/release-skill/-/release-skill-0.2.5.tgz","fileCount":236,"integrity":"sha512-e2/TrosSUAzN/TiGiOaxsoyr4enyyka/nDjHmSfw+EkKHWdhtEcR1DFBytKkSYlS5ExDzf0oOf4hMiNbqdN+Hw==","signatures":[{"sig":"MEYCIQCG2P7tyyGcq5lD2SbjAsPR+FjCdUdR/Fi5fy6y3tRl7AIhAOCuhyUPdxlWhtH9/Da+2aUOV0sZeDKrqUIjAdk7unuo","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":22741725},"type":"module","engines":{"node":">=22.0.0"},"scripts":{"test":"node --test test/*.test.mjs","build":"node --check src/**/*.mjs && node scripts/build-bundle.mjs","typecheck":"node --check src/**/*.mjs bin/*.mjs","native:test":"npm run native:build:test && node --expose-gc --test test/artifacts-safe-fs-native-seam.test.mjs && npm run native:build && RELEASE_SKILL_NATIVE_DEV=1 node --test test/artifacts-safe-fs.test.mjs test/artifacts-transaction-native.test.mjs && node --input-type=module -e \"import {createRequire} from 'node:module';const a=createRequire(import.meta.url)('./native/safe-write/build/Release/safe_write.node');const k=Object.keys(a).sort();const e=['abortTemp','chmod','close','createTemp','fsync','mkdir','openDir','openRoot','readEntry','readFile','rename','rmdir','unlink'];if(k.length!==e.length||k.some((v,i)=>v!==e[i])){console.error('Production exports mismatch:',k);process.exit(1)}console.log('Production exports verified:',k.length,'functions')\"","sync:skills":"node scripts/sync-skills.mjs","build:bundle":"node scripts/build-bundle.mjs","native:build":"node-gyp rebuild --directory native/safe-write","sync:version":"node scripts/sync-version.mjs","build:adapters":"node scripts/build-adapters.mjs","test:no-dogfood":"node --test $(ls test/*.test.mjs | grep -v -E 'dogfood|artifacts-safe-fs-native-seam|setup-live-samples|reference-configs')","native:build:test":"GYP_DEFINES='test_seam=1' node-gyp rebuild --directory native/safe-write","sync:public-files":"node scripts/sync-public-files.mjs","sync:skills:check":"node scripts/sync-skills.mjs --check","test:cli-contract":"node --test test/cli-contract.test.mjs","build:bundle:check":"node scripts/build-bundle.mjs --check","sync:version:check":"node scripts/sync-version.mjs --check","build:adapters:check":"node scripts/build-adapters.mjs --check","native:package-current":"node scripts/package-native-prebuild.mjs","sync:public-files:check":"node scripts/sync-public-files.mjs --check"},"_npmUser":{"name":"mzdbxqh","email":"mzdbxqh@gmail.com"},"repository":{"url":"git+https://github.com/ifoohoo/release-skill.git","type":"git"},"description":"Safe preparation and frozen GitHub/npm production publishing with full happy end verification","directories":{},"_nodeVersion":"25.4.0","dependencies":{"ajv":"8.20.0","yaml":"2.9.0","ajv-formats":"3.0.1","libnpmpublish":"11.1.0","npm-registry-fetch":"18.0.2"},"_hasShrinkwrap":false,"devDependencies":{"esbuild":"0.25.8","node-gyp":"12.3.0"},"_npmOperationalInternal":{"tmp":"tmp/release-skill_0.2.5_1785247435215_0.5919222728846434","host":"s3://npm-registry-packages-npm-production"}},"0.2.6":{"name":"release-skill","version":"0.2.6","keywords":["release","publish","governance","skill","claude-code","codex","kimi-code"],"author":{"name":"广州市风荷科技有限公司"},"license":"MIT","_id":"release-skill@0.2.6","maintainers":[{"name":"mzdbxqh","email":"mzdbxqh@gmail.com"}],"contributors":[{"name":"release-skill contributors"}],"homepage":"https://github.com/ifoohoo/release-skill#readme","bugs":{"url":"https://github.com/ifoohoo/release-skill/issues"},"bin":{"release-skill":"./bin/release-skill.mjs"},"dist":{"shasum":"842c2d808be4c2a7aa76b830c8171b1ac4ce897a","tarball":"https://registry.npmjs.org/release-skill/-/release-skill-0.2.6.tgz","fileCount":237,"integrity":"sha512-CQgxni0fIi0kcak5LjJakaepYMKW9ogTNulWsD3P6elV7LBaJTczSwFqoSh23tayxQBcLzsR+kMxVe+igr/wpw==","signatures":[{"sig":"MEQCIE+2mpfvQkK4WC4HchlTOzFezRGNk6xrTBgX+ct0Ofu0AiAM+bawHYvND2hUcYby/w4adyKE4GJ2w7XLnVivgwtgOA==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":22930541},"type":"module","engines":{"node":">=22.0.0"},"scripts":{"test":"node --test test/*.test.mjs","build":"node --check src/**/*.mjs && node scripts/build-bundle.mjs","typecheck":"node --check src/**/*.mjs bin/*.mjs","native:test":"npm run native:build:test && node --expose-gc --test test/artifacts-safe-fs-native-seam.test.mjs && npm run native:build && RELEASE_SKILL_NATIVE_DEV=1 node --test test/artifacts-safe-fs.test.mjs test/artifacts-transaction-native.test.mjs && node --input-type=module -e \"import {createRequire} from 'node:module';const a=createRequire(import.meta.url)('./native/safe-write/build/Release/safe_write.node');const k=Object.keys(a).sort();const e=['abortTemp','chmod','close','createTemp','fsync','mkdir','openDir','openRoot','readEntry','readFile','rename','rmdir','unlink'];if(k.length!==e.length||k.some((v,i)=>v!==e[i])){console.error('Production exports mismatch:',k);process.exit(1)}console.log('Production exports verified:',k.length,'functions')\"","sync:skills":"node scripts/sync-skills.mjs","build:bundle":"node scripts/build-bundle.mjs","native:build":"node-gyp rebuild --directory native/safe-write","sync:version":"node scripts/sync-version.mjs","build:adapters":"node scripts/build-adapters.mjs","test:no-dogfood":"node --test $(ls test/*.test.mjs | grep -v -E 'dogfood|artifacts-safe-fs-native-seam|setup-live-samples|reference-configs')","native:build:test":"GYP_DEFINES='test_seam=1' node-gyp rebuild --directory native/safe-write","sync:public-files":"node scripts/sync-public-files.mjs","sync:skills:check":"node scripts/sync-skills.mjs --check","test:cli-contract":"node --test test/cli-contract.test.mjs","build:bundle:check":"node scripts/build-bundle.mjs --check","sync:version:check":"node scripts/sync-version.mjs --check","build:adapters:check":"node scripts/build-adapters.mjs --check","native:package-current":"node scripts/package-native-prebuild.mjs","sync:public-files:check":"node scripts/sync-public-files.mjs --check"},"_npmUser":{"name":"mzdbxqh","email":"mzdbxqh@gmail.com"},"repository":{"url":"git+https://github.com/ifoohoo/release-skill.git","type":"git"},"description":"Safe preparation and frozen GitHub/npm production publishing with full happy end verification","directories":{},"_nodeVersion":"25.4.0","dependencies":{"ajv":"8.20.0","yaml":"2.9.0","ajv-formats":"3.0.1","libnpmpublish":"11.1.0","npm-registry-fetch":"18.0.2"},"_hasShrinkwrap":false,"devDependencies":{"esbuild":"0.25.8","node-gyp":"12.3.0"},"_npmOperationalInternal":{"tmp":"tmp/release-skill_0.2.6_1785265180814_0.12070046290724967","host":"s3://npm-registry-packages-npm-production"}},"0.2.7":{"name":"release-skill","version":"0.2.7","keywords":["release","publish","governance","skill","claude-code","codex","kimi-code"],"author":{"name":"广州市风荷科技有限公司"},"license":"MIT","_id":"release-skill@0.2.7","maintainers":[{"name":"mzdbxqh","email":"mzdbxqh@gmail.com"}],"contributors":[{"name":"release-skill contributors"}],"homepage":"https://github.com/ifoohoo/release-skill#readme","bugs":{"url":"https://github.com/ifoohoo/release-skill/issues"},"bin":{"release-skill":"./bin/release-skill.mjs"},"dist":{"shasum":"84724714ae01c8045feef4caea6cc92adef6f185","tarball":"https://registry.npmjs.org/release-skill/-/release-skill-0.2.7.tgz","fileCount":238,"integrity":"sha512-DJEzv5znfEgeF9ZxKDfSn0xTViTAdxrmwq4C5FP5DnmNqZdwWhr+2HfHaHyodkU2mAd17y0k+oqJ5o94YZZaSA==","signatures":[{"sig":"MEYCIQDJytrKOCSnMoMxSpG+eGqWBvJZok/9fwhgAvmxxW8sogIhAKZm4bXwbewNHiwGObd65IAexfBU7lkO4TKLMIfLuYHv","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":23041654},"type":"module","engines":{"node":">=22.0.0"},"scripts":{"test":"node --test test/*.test.mjs","build":"node --check src/**/*.mjs && node scripts/build-bundle.mjs","typecheck":"node --check src/**/*.mjs bin/*.mjs","native:test":"npm run native:build:test && node --expose-gc --test test/artifacts-safe-fs-native-seam.test.mjs && npm run native:build && RELEASE_SKILL_NATIVE_DEV=1 node --test test/artifacts-safe-fs.test.mjs test/artifacts-transaction-native.test.mjs && node --input-type=module -e \"import {createRequire} from 'node:module';const a=createRequire(import.meta.url)('./native/safe-write/build/Release/safe_write.node');const k=Object.keys(a).sort();const e=['abortTemp','chmod','close','createTemp','fsync','mkdir','openDir','openRoot','readEntry','readFile','rename','rmdir','unlink'];if(k.length!==e.length||k.some((v,i)=>v!==e[i])){console.error('Production exports mismatch:',k);process.exit(1)}console.log('Production exports verified:',k.length,'functions')\"","sync:skills":"node scripts/sync-skills.mjs","build:bundle":"node scripts/build-bundle.mjs","native:build":"node-gyp rebuild --directory native/safe-write","sync:version":"node scripts/sync-version.mjs","build:adapters":"node scripts/build-adapters.mjs","test:no-dogfood":"node --test $(ls test/*.test.mjs | grep -v -E 'dogfood|artifacts-safe-fs-native-seam|setup-live-samples|reference-configs')","native:build:test":"GYP_DEFINES='test_seam=1' node-gyp rebuild --directory native/safe-write","sync:public-files":"node scripts/sync-public-files.mjs","sync:skills:check":"node scripts/sync-skills.mjs --check","test:cli-contract":"node --test test/cli-contract.test.mjs","build:bundle:check":"node scripts/build-bundle.mjs --check","sync:version:check":"node scripts/sync-version.mjs --check","build:adapters:check":"node scripts/build-adapters.mjs --check","native:package-current":"node scripts/package-native-prebuild.mjs","sync:public-files:check":"node scripts/sync-public-files.mjs --check"},"_npmUser":{"name":"mzdbxqh","email":"mzdbxqh@gmail.com"},"repository":{"url":"git+https://github.com/ifoohoo/release-skill.git","type":"git"},"description":"Safe preparation and frozen GitHub/npm production publishing with full happy end verification","directories":{},"_nodeVersion":"25.4.0","dependencies":{"ajv":"8.20.0","yaml":"2.9.0","ajv-formats":"3.0.1","libnpmpublish":"11.1.0","npm-registry-fetch":"18.0.2"},"_hasShrinkwrap":false,"devDependencies":{"esbuild":"0.25.8","node-gyp":"12.3.0"},"_npmOperationalInternal":{"tmp":"tmp/release-skill_0.2.7_1785319195447_0.9444091595509707","host":"s3://npm-registry-packages-npm-production"}},"0.2.8":{"name":"release-skill","version":"0.2.8","keywords":["release","publish","governance","skill","claude-code","codex","kimi-code"],"author":{"name":"广州市风荷科技有限公司"},"license":"MIT","_id":"release-skill@0.2.8","maintainers":[{"name":"mzdbxqh","email":"mzdbxqh@gmail.com"}],"contributors":[{"name":"release-skill contributors"}],"homepage":"https://github.com/ifoohoo/release-skill#readme","bugs":{"url":"https://github.com/ifoohoo/release-skill/issues"},"bin":{"release-skill":"./bin/release-skill.mjs"},"dist":{"shasum":"23d65f99edbd6cc6f5e35be8ba9a4806902f604a","tarball":"https://registry.npmjs.org/release-skill/-/release-skill-0.2.8.tgz","fileCount":239,"integrity":"sha512-O+fjy/cnw35P91qMstg5fC/1v4uy9eaT5Xtn5ApJaBaj+wHpQ4advSTQN671OrY1Jo2VQdVpv96rvgjGnbIs5A==","signatures":[{"sig":"MEYCIQCJKflqQHLlawdn+aQXbeG1Dd5BBDnYCTSJIF4UnXm0fwIhAKHGY1LZAkU7IcMwJ8exCqlAI5b0ChmCWvksh/3/GaZ2","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":23159944},"type":"module","engines":{"node":">=22.0.0"},"scripts":{"test":"node --test test/*.test.mjs","build":"node --check src/**/*.mjs && node scripts/build-bundle.mjs","typecheck":"node --check src/**/*.mjs bin/*.mjs","native:test":"npm run native:build:test && node --expose-gc --test test/artifacts-safe-fs-native-seam.test.mjs && npm run native:build && RELEASE_SKILL_NATIVE_DEV=1 node --test test/artifacts-safe-fs.test.mjs test/artifacts-transaction-native.test.mjs && node --input-type=module -e \"import {createRequire} from 'node:module';const a=createRequire(import.meta.url)('./native/safe-write/build/Release/safe_write.node');const k=Object.keys(a).sort();const e=['abortTemp','chmod','close','createTemp','fsync','mkdir','openDir','openRoot','readEntry','readFile','rename','rmdir','unlink'];if(k.length!==e.length||k.some((v,i)=>v!==e[i])){console.error('Production exports mismatch:',k);process.exit(1)}console.log('Production exports verified:',k.length,'functions')\"","sync:skills":"node scripts/sync-skills.mjs","build:bundle":"node scripts/build-bundle.mjs","native:build":"node-gyp rebuild --directory native/safe-write","sync:version":"node scripts/sync-version.mjs","build:adapters":"node scripts/build-adapters.mjs","test:no-dogfood":"node --test $(ls test/*.test.mjs | grep -v -E 'dogfood|artifacts-safe-fs-native-seam|setup-live-samples|reference-configs')","native:build:test":"GYP_DEFINES='test_seam=1' node-gyp rebuild --directory native/safe-write","sync:public-files":"node scripts/sync-public-files.mjs","sync:skills:check":"node scripts/sync-skills.mjs --check","test:cli-contract":"node --test test/cli-contract.test.mjs","build:bundle:check":"node scripts/build-bundle.mjs --check","sync:version:check":"node scripts/sync-version.mjs --check","build:adapters:check":"node scripts/build-adapters.mjs --check","native:package-current":"node scripts/package-native-prebuild.mjs","sync:public-files:check":"node scripts/sync-public-files.mjs --check"},"_npmUser":{"name":"mzdbxqh","email":"mzdbxqh@gmail.com"},"repository":{"url":"git+https://github.com/ifoohoo/release-skill.git","type":"git"},"description":"Safe preparation and frozen GitHub/npm production publishing with full happy end verification","directories":{},"_nodeVersion":"25.4.0","dependencies":{"ajv":"8.20.0","yaml":"2.9.0","ajv-formats":"3.0.1","libnpmpublish":"11.1.0","npm-registry-fetch":"18.0.2"},"_hasShrinkwrap":false,"devDependencies":{"esbuild":"0.25.8","node-gyp":"12.3.0"},"_npmOperationalInternal":{"tmp":"tmp/release-skill_0.2.8_1785424238095_0.242380121557761","host":"s3://npm-registry-packages-npm-production"}},"0.2.9":{"name":"release-skill","version":"0.2.9","keywords":["release","publish","governance","skill","claude-code","codex","kimi-code"],"author":{"name":"广州市风荷科技有限公司"},"license":"MIT","_id":"release-skill@0.2.9","maintainers":[{"name":"mzdbxqh","email":"mzdbxqh@gmail.com"}],"contributors":[{"name":"release-skill contributors"}],"homepage":"https://github.com/ifoohoo/release-skill#readme","bugs":{"url":"https://github.com/ifoohoo/release-skill/issues"},"bin":{"release-skill":"./bin/release-skill.mjs"},"dist":{"shasum":"db1673495c2c290c452ed67959464713af94f46f","tarball":"https://registry.npmjs.org/release-skill/-/release-skill-0.2.9.tgz","fileCount":239,"integrity":"sha512-R3sMkinD9syAMQti79WlDNqa8Ac+9FAHrAvWYocfTK8slX3r3nE5LRUypdSJ2VgbccdW+xxewz56J8MYD9FR2g==","signatures":[{"sig":"MEUCIQD+tIoTKH0BYlH33xTUcAQbTx1i3nXxPUaasMvoWUnzXQIgVFz5lgAjN3xw7bcPCZO7XNhjbWdceWK4CtZOL3mE4gg=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":23169787},"type":"module","engines":{"node":">=22.0.0"},"scripts":{"test":"node --test test/*.test.mjs","build":"node --check src/**/*.mjs && node scripts/build-bundle.mjs","typecheck":"node --check src/**/*.mjs bin/*.mjs","native:test":"npm run native:build:test && node --expose-gc --test test/artifacts-safe-fs-native-seam.test.mjs && npm run native:build && RELEASE_SKILL_NATIVE_DEV=1 node --test test/artifacts-safe-fs.test.mjs test/artifacts-transaction-native.test.mjs && node --input-type=module -e \"import {createRequire} from 'node:module';const a=createRequire(import.meta.url)('./native/safe-write/build/Release/safe_write.node');const k=Object.keys(a).sort();const e=['abortTemp','chmod','close','createTemp','fsync','mkdir','openDir','openRoot','readEntry','readFile','rename','rmdir','unlink'];if(k.length!==e.length||k.some((v,i)=>v!==e[i])){console.error('Production exports mismatch:',k);process.exit(1)}console.log('Production exports verified:',k.length,'functions')\"","sync:skills":"node scripts/sync-skills.mjs","build:bundle":"node scripts/build-bundle.mjs","native:build":"node-gyp rebuild --directory native/safe-write","sync:version":"node scripts/sync-version.mjs","build:adapters":"node scripts/build-adapters.mjs","test:no-dogfood":"node --test $(ls test/*.test.mjs | grep -v -E 'dogfood|artifacts-safe-fs-native-seam|setup-live-samples|reference-configs')","native:build:test":"GYP_DEFINES='test_seam=1' node-gyp rebuild --directory native/safe-write","sync:public-files":"node scripts/sync-public-files.mjs","sync:skills:check":"node scripts/sync-skills.mjs --check","test:cli-contract":"node --test test/cli-contract.test.mjs","build:bundle:check":"node scripts/build-bundle.mjs --check","sync:version:check":"node scripts/sync-version.mjs --check","build:adapters:check":"node scripts/build-adapters.mjs --check","native:package-current":"node scripts/package-native-prebuild.mjs","sync:public-files:check":"node scripts/sync-public-files.mjs --check"},"_npmUser":{"name":"mzdbxqh","email":"mzdbxqh@gmail.com"},"repository":{"url":"git+https://github.com/ifoohoo/release-skill.git","type":"git"},"description":"Safe preparation and frozen GitHub/npm production publishing with full happy end verification","directories":{},"_nodeVersion":"25.4.0","dependencies":{"ajv":"8.20.0","yaml":"2.9.0","ajv-formats":"3.0.1","libnpmpublish":"11.1.0","npm-registry-fetch":"18.0.2"},"_hasShrinkwrap":false,"devDependencies":{"esbuild":"0.25.8","node-gyp":"12.3.0"},"_npmOperationalInternal":{"tmp":"tmp/release-skill_0.2.9_1785434652186_0.6804571760406362","host":"s3://npm-registry-packages-npm-production"}},"0.3.0":{"name":"release-skill","version":"0.3.0","keywords":["release","publish","governance","skill","claude-code","codex","kimi-code"],"author":{"name":"广州市风荷科技有限公司"},"license":"MIT","_id":"release-skill@0.3.0","maintainers":[{"name":"mzdbxqh","email":"mzdbxqh@gmail.com"}],"contributors":[{"name":"release-skill contributors"}],"homepage":"https://github.com/ifoohoo/release-skill#readme","bugs":{"url":"https://github.com/ifoohoo/release-skill/issues"},"bin":{"release-skill":"./bin/release-skill.mjs"},"dist":{"shasum":"ef127f81b9c579ead407d13d95eae36d92cf00f5","tarball":"https://registry.npmjs.org/release-skill/-/release-skill-0.3.0.tgz","fileCount":244,"integrity":"sha512-16GuvkxXg0HdppbKruBIS81jfBYY53T1kqEJHqrx8seWIRpkCSp5NB9UWXE1Y7oTRq4/XdmG63hJN5rth81Yog==","signatures":[{"sig":"MEYCIQC72eZK8nSzT0ELpKYeBrNL4PdyApqmBJnAAz6nCtfPWwIhAPAwqQVJXAzAA3HRrbGdeLE1TZjRI1CFAmEXWi+G7ecK","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":23416107},"type":"module","engines":{"node":">=22.0.0"},"scripts":{"test":"node --test test/*.test.mjs","build":"node --check src/**/*.mjs && node scripts/build-bundle.mjs","typecheck":"node --check src/**/*.mjs bin/*.mjs","native:test":"npm run native:build:test && node --expose-gc --test test/artifacts-safe-fs-native-seam.test.mjs && npm run native:build && RELEASE_SKILL_NATIVE_DEV=1 node --test test/artifacts-safe-fs.test.mjs test/artifacts-transaction-native.test.mjs && node --input-type=module -e \"import {createRequire} from 'node:module';const a=createRequire(import.meta.url)('./native/safe-write/build/Release/safe_write.node');const k=Object.keys(a).sort();const e=['abortTemp','chmod','close','createTemp','fsync','mkdir','openDir','openRoot','readEntry','readFile','rename','rmdir','unlink'];if(k.length!==e.length||k.some((v,i)=>v!==e[i])){console.error('Production exports mismatch:',k);process.exit(1)}console.log('Production exports verified:',k.length,'functions')\"","sync:skills":"node scripts/sync-skills.mjs","build:bundle":"node scripts/build-bundle.mjs","native:build":"node-gyp rebuild --directory native/safe-write","sync:version":"node scripts/sync-version.mjs","build:adapters":"node scripts/build-adapters.mjs","test:no-dogfood":"node --test $(ls test/*.test.mjs | grep -v -E 'dogfood|artifacts-safe-fs-native-seam|setup-live-samples|reference-configs')","native:build:test":"GYP_DEFINES='test_seam=1' node-gyp rebuild --directory native/safe-write","sync:public-files":"node scripts/sync-public-files.mjs","sync:skills:check":"node scripts/sync-skills.mjs --check","test:cli-contract":"node --test test/cli-contract.test.mjs","build:bundle:check":"node scripts/build-bundle.mjs --check","sync:version:check":"node scripts/sync-version.mjs --check","build:adapters:check":"node scripts/build-adapters.mjs --check","native:package-current":"node scripts/package-native-prebuild.mjs","sync:public-files:check":"node scripts/sync-public-files.mjs --check"},"_npmUser":{"name":"mzdbxqh","email":"mzdbxqh@gmail.com"},"repository":{"url":"git+https://github.com/ifoohoo/release-skill.git","type":"git"},"description":"Safe preparation and frozen GitHub/npm production publishing with full happy end verification","directories":{},"_nodeVersion":"25.4.0","dependencies":{"ajv":"8.20.0","yaml":"2.9.0","ajv-formats":"3.0.1","libnpmpublish":"11.1.0","npm-registry-fetch":"18.0.2"},"_hasShrinkwrap":false,"devDependencies":{"esbuild":"0.25.8","node-gyp":"12.3.0"},"_npmOperationalInternal":{"tmp":"tmp/release-skill_0.3.0_1785457606966_0.9932566294711569","host":"s3://npm-registry-packages-npm-production"}},"0.4.0":{"name":"release-skill","version":"0.4.0","keywords":["release","publish","governance","skill","claude-code","codex","kimi-code"],"author":{"name":"广州市风荷科技有限公司"},"license":"MIT","_id":"release-skill@0.4.0","maintainers":[{"name":"mzdbxqh","email":"mzdbxqh@gmail.com"}],"contributors":[{"name":"release-skill contributors"}],"homepage":"https://github.com/ifoohoo/release-skill#readme","bugs":{"url":"https://github.com/ifoohoo/release-skill/issues"},"bin":{"release-skill":"./bin/release-skill.mjs"},"dist":{"shasum":"18e4f80eaeede326337a3a4ecc76697830fb8e1a","tarball":"https://registry.npmjs.org/release-skill/-/release-skill-0.4.0.tgz","fileCount":244,"integrity":"sha512-hDHz13p2qjvKPmtftPjzPXjNny532GCK8bXcLC+4eHY4GVDGdqA2nJHvqd7pf9ALA6i0ViMWTnq6Os9ElnS6HQ==","signatures":[{"sig":"MEUCIQCkcUXHr/6NGAb7HuuhPkhYntC+FReJMTWC3ZQdAUFKrwIgWQpbqPotY1UB8SVZMjO0vQEX4YpOkMT/P6KSrli/+z4=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":23383078},"type":"module","engines":{"node":">=22.0.0"},"scripts":{"test":"node --test test/*.test.mjs","build":"node --check src/**/*.mjs && node scripts/build-bundle.mjs","typecheck":"node --check src/**/*.mjs bin/*.mjs","native:test":"npm run native:build:test && node --expose-gc --test test/artifacts-safe-fs-native-seam.test.mjs && npm run native:build && RELEASE_SKILL_NATIVE_DEV=1 node --test test/artifacts-safe-fs.test.mjs test/artifacts-transaction-native.test.mjs && node --input-type=module -e \"import {createRequire} from 'node:module';const a=createRequire(import.meta.url)('./native/safe-write/build/Release/safe_write.node');const k=Object.keys(a).sort();const e=['abortTemp','chmod','close','createTemp','fsync','mkdir','openDir','openRoot','readEntry','readFile','rename','rmdir','unlink'];if(k.length!==e.length||k.some((v,i)=>v!==e[i])){console.error('Production exports mismatch:',k);process.exit(1)}console.log('Production exports verified:',k.length,'functions')\"","sync:skills":"node scripts/sync-skills.mjs","build:bundle":"node scripts/build-bundle.mjs","native:build":"node-gyp rebuild --directory native/safe-write","sync:version":"node scripts/sync-version.mjs","build:adapters":"node scripts/build-adapters.mjs","test:no-dogfood":"node --test $(ls test/*.test.mjs | grep -v -E 'dogfood|artifacts-safe-fs-native-seam|setup-live-samples|reference-configs')","native:build:test":"GYP_DEFINES='test_seam=1' node-gyp rebuild --directory native/safe-write","sync:public-files":"node scripts/sync-public-files.mjs","sync:skills:check":"node scripts/sync-skills.mjs --check","test:cli-contract":"node --test test/cli-contract.test.mjs","build:bundle:check":"node scripts/build-bundle.mjs --check","sync:version:check":"node scripts/sync-version.mjs --check","build:adapters:check":"node scripts/build-adapters.mjs --check","native:package-current":"node scripts/package-native-prebuild.mjs","sync:public-files:check":"node scripts/sync-public-files.mjs --check"},"_npmUser":{"name":"mzdbxqh","email":"mzdbxqh@gmail.com"},"repository":{"url":"git+https://github.com/ifoohoo/release-skill.git","type":"git"},"description":"Safe preparation and frozen GitHub/npm production publishing with full happy end verification","directories":{},"_nodeVersion":"25.4.0","dependencies":{"ajv":"8.20.0","yaml":"2.9.0","ajv-formats":"3.0.1","libnpmpublish":"11.1.0","npm-registry-fetch":"18.0.2"},"_hasShrinkwrap":false,"devDependencies":{"esbuild":"0.25.8","node-gyp":"12.3.0"},"_npmOperationalInternal":{"tmp":"tmp/release-skill_0.4.0_1785656873773_0.9040097453418257","host":"s3://npm-registry-packages-npm-production"}},"0.4.1":{"name":"release-skill","version":"0.4.1","keywords":["release","publish","governance","skill","claude-code","codex","kimi-code"],"author":{"name":"广州市风荷科技有限公司"},"license":"Apache-2.0","_id":"release-skill@0.4.1","maintainers":[{"name":"mzdbxqh","email":"mzdbxqh@gmail.com"}],"contributors":[{"name":"release-skill contributors"}],"homepage":"https://github.com/ifoohoo/release-skill#readme","bugs":{"url":"https://github.com/ifoohoo/release-skill/issues"},"bin":{"release-skill":"./bin/release-skill.mjs"},"dist":{"shasum":"f8407f7383fbb07f3eb7247c1195727815018d99","tarball":"https://registry.npmjs.org/release-skill/-/release-skill-0.4.1.tgz","fileCount":244,"integrity":"sha512-tMFo7oXwLQdBGDDi1brxSDO2RZ51B06hjd1vXvl8gEyAwfX/6MyiCMcZlFeRWvAbbU8daSFZjUAezaXwU4e+Ug==","signatures":[{"sig":"MEYCIQCTv055CXX7OhjzmvgZ1IAy0Ctz9Z05GaVhye8QCpgfaAIhAIsgs19wh5T6X+kZxpX4GZzL3cNy3/qZjt3Fk9FqgIIq","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":23406105},"type":"module","engines":{"node":">=22.0.0"},"scripts":{"test":"node --test test/*.test.mjs","build":"node --check src/**/*.mjs && node scripts/build-bundle.mjs","typecheck":"node --check src/**/*.mjs bin/*.mjs","native:test":"npm run native:build:test && node --expose-gc --test test/artifacts-safe-fs-native-seam.test.mjs && npm run native:build && RELEASE_SKILL_NATIVE_DEV=1 node --test test/artifacts-safe-fs.test.mjs test/artifacts-transaction-native.test.mjs && node --input-type=module -e \"import {createRequire} from 'node:module';const a=createRequire(import.meta.url)('./native/safe-write/build/Release/safe_write.node');const k=Object.keys(a).sort();const e=['abortTemp','chmod','close','createTemp','fsync','mkdir','openDir','openRoot','readEntry','readFile','rename','rmdir','unlink'];if(k.length!==e.length||k.some((v,i)=>v!==e[i])){console.error('Production exports mismatch:',k);process.exit(1)}console.log('Production exports verified:',k.length,'functions')\"","sync:skills":"node scripts/sync-skills.mjs","build:bundle":"node scripts/build-bundle.mjs","native:build":"node-gyp rebuild --directory native/safe-write","sync:version":"node scripts/sync-version.mjs","build:adapters":"node scripts/build-adapters.mjs","test:no-dogfood":"node --test $(ls test/*.test.mjs | grep -v -E 'dogfood|artifacts-safe-fs-native-seam|setup-live-samples|reference-configs')","native:build:test":"GYP_DEFINES='test_seam=1' node-gyp rebuild --directory native/safe-write","sync:public-files":"node scripts/sync-public-files.mjs","sync:skills:check":"node scripts/sync-skills.mjs --check","test:cli-contract":"node --test test/cli-contract.test.mjs","build:bundle:check":"node scripts/build-bundle.mjs --check","sync:version:check":"node scripts/sync-version.mjs --check","build:adapters:check":"node scripts/build-adapters.mjs --check","native:package-current":"node scripts/package-native-prebuild.mjs","sync:public-files:check":"node scripts/sync-public-files.mjs --check"},"_npmUser":{"name":"mzdbxqh","email":"mzdbxqh@gmail.com"},"repository":{"url":"git+https://github.com/ifoohoo/release-skill.git","type":"git"},"description":"Safe preparation and frozen GitHub/npm production publishing with full happy end verification","directories":{},"_nodeVersion":"25.4.0","dependencies":{"ajv":"8.20.0","yaml":"2.9.0","ajv-formats":"3.0.1","libnpmpublish":"11.1.0","npm-registry-fetch":"18.0.2"},"_hasShrinkwrap":false,"devDependencies":{"esbuild":"0.25.8","node-gyp":"12.3.0"},"_npmOperationalInternal":{"tmp":"tmp/release-skill_0.4.1_1786246675267_0.616215300218877","host":"s3://npm-registry-packages-npm-production"}},"0.4.2":{"name":"release-skill","version":"0.4.2","keywords":["release","publish","governance","skill","claude-code","codex","kimi-code"],"author":{"name":"广州市风荷科技有限公司"},"license":"Apache-2.0","_id":"release-skill@0.4.2","maintainers":[{"name":"mzdbxqh","email":"mzdbxqh@gmail.com"}],"contributors":[{"name":"release-skill contributors"}],"homepage":"https://github.com/ifoohoo/release-skill#readme","bugs":{"url":"https://github.com/ifoohoo/release-skill/issues"},"bin":{"release-skill":"./bin/release-skill.mjs"},"dist":{"shasum":"89f158d7bfef9d798c4fa910efdeae2148f59734","tarball":"https://registry.npmjs.org/release-skill/-/release-skill-0.4.2.tgz","fileCount":244,"integrity":"sha512-20WaBYoatAylMu/eDPVf6nl2g8xGD4gdVl0Unhz52BJ/21gs9nUkCiTJapaDBK7ZmdAA5ZOjJVOu1sC1aawyLA==","signatures":[{"sig":"MEYCIQCTCWT7q9pHF4N1cONEP+BTunvAVqL5vQ1eswjCjvCbQQIhAOvhkRzUQ2E9ez6obM1YrPGTWItXhlTVkT4FDnLK0p5V","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":23429493},"type":"module","engines":{"node":">=22.0.0"},"scripts":{"test":"node --test test/*.test.mjs","build":"node --check src/**/*.mjs && node scripts/build-bundle.mjs","typecheck":"node --check src/**/*.mjs bin/*.mjs","native:test":"npm run native:build:test && node --expose-gc --test test/artifacts-safe-fs-native-seam.test.mjs && npm run native:build && RELEASE_SKILL_NATIVE_DEV=1 node --test test/artifacts-safe-fs.test.mjs test/artifacts-transaction-native.test.mjs && node --input-type=module -e \"import {createRequire} from 'node:module';const a=createRequire(import.meta.url)('./native/safe-write/build/Release/safe_write.node');const k=Object.keys(a).sort();const e=['abortTemp','chmod','close','createTemp','fsync','mkdir','openDir','openRoot','readEntry','readFile','rename','rmdir','unlink'];if(k.length!==e.length||k.some((v,i)=>v!==e[i])){console.error('Production exports mismatch:',k);process.exit(1)}console.log('Production exports verified:',k.length,'functions')\"","sync:skills":"node scripts/sync-skills.mjs","build:bundle":"node scripts/build-bundle.mjs","native:build":"node-gyp rebuild --directory native/safe-write","sync:version":"node scripts/sync-version.mjs","build:adapters":"node scripts/build-adapters.mjs","test:no-dogfood":"node --test $(ls test/*.test.mjs | grep -v -E 'dogfood|artifacts-safe-fs-native-seam|setup-live-samples|reference-configs')","native:build:test":"GYP_DEFINES='test_seam=1' node-gyp rebuild --directory native/safe-write","sync:public-files":"node scripts/sync-public-files.mjs","sync:skills:check":"node scripts/sync-skills.mjs --check","test:cli-contract":"node --test test/cli-contract.test.mjs","build:bundle:check":"node scripts/build-bundle.mjs --check","sync:version:check":"node scripts/sync-version.mjs --check","build:adapters:check":"node scripts/build-adapters.mjs --check","native:package-current":"node scripts/package-native-prebuild.mjs","sync:public-files:check":"node scripts/sync-public-files.mjs --check"},"_npmUser":{"name":"mzdbxqh","email":"mzdbxqh@gmail.com"},"repository":{"url":"git+https://github.com/ifoohoo/release-skill.git","type":"git"},"description":"Safe preparation and frozen GitHub/npm production publishing with full happy end verification","directories":{},"_nodeVersion":"25.4.0","dependencies":{"ajv":"8.20.0","yaml":"2.9.0","ajv-formats":"3.0.1","libnpmpublish":"11.1.0","npm-registry-fetch":"18.0.2"},"_hasShrinkwrap":false,"devDependencies":{"esbuild":"0.25.8","node-gyp":"12.3.0"},"_npmOperationalInternal":{"tmp":"tmp/release-skill_0.4.2_1786513019283_0.47143827361490453","host":"s3://npm-registry-packages-npm-production"}},"0.5.0":{"name":"release-skill","version":"0.5.0","keywords":["release","publish","governance","skill","claude-code","codex","kimi-code"],"author":{"name":"广州市风荷科技有限公司"},"license":"Apache-2.0","_id":"release-skill@0.5.0","maintainers":[{"name":"mzdbxqh","email":"mzdbxqh@gmail.com"}],"contributors":[{"name":"release-skill contributors"}],"homepage":"https://github.com/ifoohoo/release-skill#readme","bugs":{"url":"https://github.com/ifoohoo/release-skill/issues"},"bin":{"release-skill":"./bin/release-skill.mjs"},"dist":{"shasum":"a88ca78f52f9243f4476402345e8938b8271cb29","tarball":"https://registry.npmjs.org/release-skill/-/release-skill-0.5.0.tgz","fileCount":265,"integrity":"sha512-v4Kk3dY6RfCtczXOlUhSMOGUsWCH3cOusvYdLJg5PziPFNRFIBYsRNsmwCd0vU8cBuUkyeSYDVGW+ARLlLtWEQ==","signatures":[{"sig":"MEUCIQClxrojWlajlQkYxfYQlCE/FGl5potlUHhajep8WjNP4AIgDJW184FUWULbWGKp34s01n/RA2+14P6kgsIp0C0EUk8=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":24013127},"type":"module","engines":{"node":">=22.0.0"},"scripts":{"test":"node --test test/*.test.mjs","build":"node --check src/**/*.mjs && node scripts/build-bundle.mjs","typecheck":"node --check src/**/*.mjs bin/*.mjs","native:test":"npm run native:build:test && node --expose-gc --test test/artifacts-safe-fs-native-seam.test.mjs && npm run native:build && RELEASE_SKILL_NATIVE_DEV=1 node --test test/artifacts-safe-fs.test.mjs test/artifacts-transaction-native.test.mjs && node --input-type=module -e \"import {createRequire} from 'node:module';const a=createRequire(import.meta.url)('./native/safe-write/build/Release/safe_write.node');const k=Object.keys(a).sort();const e=['abortTemp','chmod','close','createTemp','fsync','mkdir','openDir','openRoot','readEntry','readFile','rename','rmdir','unlink'];if(k.length!==e.length||k.some((v,i)=>v!==e[i])){console.error('Production exports mismatch:',k);process.exit(1)}console.log('Production exports verified:',k.length,'functions')\"","sync:skills":"node scripts/sync-skills.mjs","build:bundle":"node scripts/build-bundle.mjs","native:build":"node-gyp rebuild --directory native/safe-write","sync:version":"node scripts/sync-version.mjs","build:adapters":"node scripts/build-adapters.mjs","test:no-dogfood":"node --test $(ls test/*.test.mjs | grep -v -E 'dogfood|artifacts-safe-fs-native-seam|setup-live-samples|reference-configs')","native:build:test":"GYP_DEFINES='test_seam=1' node-gyp rebuild --directory native/safe-write","sync:public-files":"node scripts/sync-public-files.mjs","sync:skills:check":"node scripts/sync-skills.mjs --check","test:cli-contract":"node --test test/cli-contract.test.mjs","build:bundle:check":"node scripts/build-bundle.mjs --check","sync:version:check":"node scripts/sync-version.mjs --check","build:adapters:check":"node scripts/build-adapters.mjs --check","native:package-current":"node scripts/package-native-prebuild.mjs","sync:public-files:check":"node scripts/sync-public-files.mjs --check"},"_npmUser":{"name":"mzdbxqh","email":"mzdbxqh@gmail.com"},"repository":{"url":"git+https://github.com/ifoohoo/release-skill.git","type":"git"},"description":"Safe preparation and frozen GitHub/npm production publishing with full happy end verification","directories":{},"_nodeVersion":"22.23.2","dependencies":{"ajv":"8.20.0","yaml":"2.9.0","ajv-formats":"3.0.1","libnpmpublish":"11.1.0","npm-registry-fetch":"18.0.2","skill-family-contracts":"0.4.0","skill-family-harness-node":"0.4.0"},"_hasShrinkwrap":false,"devDependencies":{"esbuild":"0.25.8","node-gyp":"12.3.0"},"_npmOperationalInternal":{"tmp":"tmp/release-skill_0.5.0_1786856453014_0.8751259847172057","host":"s3://npm-registry-packages-npm-production"}},"0.5.1":{"name":"release-skill","version":"0.5.1","keywords":["release","publish","governance","skill","claude-code","codex","kimi-code"],"author":{"name":"广州市风荷科技有限公司"},"license":"Apache-2.0","_id":"release-skill@0.5.1","maintainers":[{"name":"mzdbxqh","email":"mzdbxqh@gmail.com"}],"contributors":[{"name":"release-skill contributors"}],"homepage":"https://github.com/ifoohoo/release-skill#readme","bugs":{"url":"https://github.com/ifoohoo/release-skill/issues"},"bin":{"release-skill":"./bin/release-skill.mjs"},"dist":{"shasum":"9cea71f8b15aea6cb1dc1781331c665d7df941d6","tarball":"https://registry.npmjs.org/release-skill/-/release-skill-0.5.1.tgz","fileCount":265,"integrity":"sha512-3J0yQT41aahmIrvnHAwiR8jtZFMyok6WVkrO+K6B2X8cw1N2e+BaU+ZeculvcwYSzmv2aWkvBColCbEKTO6+YA==","signatures":[{"sig":"MEYCIQD6ZlfR13H7+5micGmUDa7cEKDrU+R93Iz/C1SCTQGyyAIhAJxP6E/R3GGfWBlhKTpb6x/bzvA5ms9evfsV6Q15MJTx","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":26353510},"type":"module","engines":{"node":">=22.0.0"},"scripts":{"test":"node --test test/*.test.mjs","build":"node --check src/**/*.mjs && node scripts/build-bundle.mjs","typecheck":"node --check src/**/*.mjs bin/*.mjs","native:test":"npm run native:build:test && node --expose-gc --test test/artifacts-safe-fs-native-seam.test.mjs && npm run native:build && RELEASE_SKILL_NATIVE_DEV=1 node --test test/artifacts-safe-fs.test.mjs test/artifacts-transaction-native.test.mjs && node --input-type=module -e \"import {createRequire} from 'node:module';const a=createRequire(import.meta.url)('./native/safe-write/build/Release/safe_write.node');const k=Object.keys(a).sort();const e=['abortTemp','chmod','close','createTemp','fsync','mkdir','openDir','openRoot','readEntry','readFile','rename','rmdir','unlink'];if(k.length!==e.length||k.some((v,i)=>v!==e[i])){console.error('Production exports mismatch:',k);process.exit(1)}console.log('Production exports verified:',k.length,'functions')\"","sync:skills":"node scripts/sync-skills.mjs","build:bundle":"node scripts/build-bundle.mjs","native:build":"node-gyp rebuild --directory native/safe-write","sync:version":"node scripts/sync-version.mjs","build:adapters":"node scripts/build-adapters.mjs","test:no-dogfood":"node --test $(ls test/*.test.mjs | grep -v -E 'dogfood|artifacts-safe-fs-native-seam|setup-live-samples|reference-configs')","native:build:test":"GYP_DEFINES='test_seam=1' node-gyp rebuild --directory native/safe-write","sync:public-files":"node scripts/sync-public-files.mjs","sync:skills:check":"node scripts/sync-skills.mjs --check","test:cli-contract":"node --test test/cli-contract.test.mjs","build:bundle:check":"node scripts/build-bundle.mjs --check","sync:version:check":"node scripts/sync-version.mjs --check","build:adapters:check":"node scripts/build-adapters.mjs --check","native:package-current":"node scripts/package-native-prebuild.mjs","sync:public-files:check":"node scripts/sync-public-files.mjs --check"},"_npmUser":{"name":"mzdbxqh","email":"mzdbxqh@gmail.com"},"repository":{"url":"git+https://github.com/ifoohoo/release-skill.git","type":"git"},"description":"Safe preparation and frozen GitHub/npm production publishing with full happy end verification","directories":{},"_nodeVersion":"26.7.0","dependencies":{"ajv":"8.20.0","yaml":"2.9.0","ajv-formats":"3.0.1","libnpmpublish":"11.1.0","npm-registry-fetch":"18.0.2","skill-family-contracts":"0.5.0","skill-family-harness-node":"0.5.0"},"_hasShrinkwrap":false,"devDependencies":{"esbuild":"0.25.8","node-gyp":"12.3.0"},"_npmOperationalInternal":{"tmp":"tmp/release-skill_0.5.1_1786970944682_0.9988571330332079","host":"s3://npm-registry-packages-npm-production"}},"0.6.0":{"name":"release-skill","version":"0.6.0","keywords":["release","publish","governance","skill","claude-code","codex","kimi-code"],"author":{"name":"广州市风荷科技有限公司"},"license":"Apache-2.0","_id":"release-skill@0.6.0","maintainers":[{"name":"mzdbxqh","email":"mzdbxqh@gmail.com"}],"contributors":[{"name":"release-skill contributors"}],"homepage":"https://github.com/ifoohoo/release-skill#readme","bugs":{"url":"https://github.com/ifoohoo/release-skill/issues"},"bin":{"release-skill":"./bin/release-skill.mjs"},"dist":{"shasum":"ee85e875715493548b732f8c5bd66e6f43ec21a8","tarball":"https://registry.npmjs.org/release-skill/-/release-skill-0.6.0.tgz","fileCount":290,"integrity":"sha512-1RvSdimrhFHRwc7XOECIPRtJMPXwk9cno44GnxY++ARymifgJFLfVopzjul2thCqa2Fis9tOlR4S6GhRDeQ9Dg==","signatures":[{"sig":"MEUCIHrg8WHjYMg3sdQ0tkAiQ1FwFK1Y01D96Qn7RnvYpns2AiEApa0x+8pIIJeLFGfgluljkJQ+zZhsAOS+JYW8M8U/nZw=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":27339351},"type":"module","engines":{"node":">=22.0.0"},"scripts":{"test":"node --test $(ls test/*.test.mjs | grep -v -E 'artifacts-safe-fs-native-seam')","build":"node --check src/**/*.mjs && node scripts/build-bundle.mjs","typecheck":"node --check src/**/*.mjs bin/*.mjs","native:test":"npm run native:build:test && node --expose-gc --test test/artifacts-safe-fs-native-seam.test.mjs && npm run native:build && RELEASE_SKILL_NATIVE_DEV=1 node --test test/artifacts-safe-fs.test.mjs test/artifacts-transaction-native.test.mjs && node --input-type=module -e \"import {createRequire} from 'node:module';const a=createRequire(import.meta.url)('./native/safe-write/build/Release/safe_write.node');const k=Object.keys(a).sort();const e=['abortTemp','chmod','close','createTemp','fsync','mkdir','openDir','openRoot','readEntry','readFile','rename','rmdir','unlink'];if(k.length!==e.length||k.some((v,i)=>v!==e[i])){console.error('Production exports mismatch:',k);process.exit(1)}console.log('Production exports verified:',k.length,'functions')\"","sync:skills":"node scripts/sync-skills.mjs","build:bundle":"node scripts/build-bundle.mjs","native:build":"node-gyp rebuild --directory native/safe-write","sync:version":"node scripts/sync-version.mjs","build:adapters":"node scripts/build-adapters.mjs","test:no-dogfood":"node --test $(ls test/*.test.mjs | grep -v -E 'dogfood|artifacts-safe-fs-native-seam|setup-live-samples|reference-configs')","native:build:test":"GYP_DEFINES='test_seam=1' node-gyp rebuild --directory native/safe-write","sync:public-files":"node scripts/sync-public-files.mjs","sync:skills:check":"node scripts/sync-skills.mjs --check","test:cli-contract":"node --test test/cli-contract.test.mjs","build:bundle:check":"node scripts/build-bundle.mjs --check","sync:version:check":"node scripts/sync-version.mjs --check","build:adapters:check":"node scripts/build-adapters.mjs --check","native:package-current":"node scripts/package-native-prebuild.mjs","sync:public-files:check":"node scripts/sync-public-files.mjs --check"},"_npmUser":{"name":"mzdbxqh","email":"mzdbxqh@gmail.com"},"repository":{"url":"git+https://github.com/ifoohoo/release-skill.git","type":"git"},"description":"Safe preparation and frozen GitHub/npm production publishing with full happy end verification","directories":{},"_nodeVersion":"26.7.0","dependencies":{"ajv":"8.20.0","yaml":"2.9.0","ajv-formats":"3.0.1","libnpmpublish":"11.1.0","npm-registry-fetch":"18.0.2","skill-family-contracts":"0.5.0","skill-family-harness-node":"0.5.0"},"_hasShrinkwrap":false,"devDependencies":{"esbuild":"0.25.8","node-gyp":"12.3.0"},"_npmOperationalInternal":{"tmp":"tmp/release-skill_0.6.0_1787023810306_0.7290423185514121","host":"s3://npm-registry-packages-npm-production"}},"0.6.1":{"name":"release-skill","version":"0.6.1","keywords":["release","publish","governance","skill","claude-code","codex","kimi-code"],"author":{"name":"广州市风荷科技有限公司"},"license":"Apache-2.0","_id":"release-skill@0.6.1","maintainers":[{"name":"mzdbxqh","email":"mzdbxqh@gmail.com"}],"contributors":[{"name":"release-skill contributors"}],"homepage":"https://github.com/ifoohoo/release-skill#readme","bugs":{"url":"https://github.com/ifoohoo/release-skill/issues"},"bin":{"release-skill":"./bin/release-skill.mjs"},"dist":{"shasum":"d43d8588884f93df76581c4d22850fa430125b6d","tarball":"https://registry.npmjs.org/release-skill/-/release-skill-0.6.1.tgz","fileCount":292,"integrity":"sha512-zzqDmSkjwXxtm8LMCK4JP4/WqcJFp44K7YjAOiRBTHH8hEqevaoZZ3pFMC7yzk3G90ydFwJOLFzyB6obQAgxIQ==","signatures":[{"sig":"MEUCIDUWSXV1FX4EYoCMnYvaB/1MRg0FL/yKCyE0XFI+FxK9AiEAxL9OVS+gi4HOD2Xqfd0TxKmqsCy8TlpvS9oidgQiJO8=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":27434137},"type":"module","engines":{"node":">=22.0.0"},"scripts":{"test":"node --test $(ls test/*.test.mjs | grep -v -E 'artifacts-safe-fs-native-seam')","build":"node --check src/**/*.mjs && node scripts/build-bundle.mjs","typecheck":"node --check src/**/*.mjs bin/*.mjs","native:test":"npm run native:build:test && node --expose-gc --test test/artifacts-safe-fs-native-seam.test.mjs && npm run native:build && RELEASE_SKILL_NATIVE_DEV=1 node --test test/artifacts-safe-fs.test.mjs test/artifacts-transaction-native.test.mjs && node --input-type=module -e \"import {createRequire} from 'node:module';const a=createRequire(import.meta.url)('./native/safe-write/build/Release/safe_write.node');const k=Object.keys(a).sort();const e=['abortTemp','chmod','close','createTemp','fsync','mkdir','openDir','openRoot','readEntry','readFile','rename','rmdir','unlink'];if(k.length!==e.length||k.some((v,i)=>v!==e[i])){console.error('Production exports mismatch:',k);process.exit(1)}console.log('Production exports verified:',k.length,'functions')\"","sync:skills":"node scripts/sync-skills.mjs","build:bundle":"node scripts/build-bundle.mjs","native:build":"node-gyp rebuild --directory native/safe-write","sync:version":"node scripts/sync-version.mjs","build:adapters":"node scripts/build-adapters.mjs","test:no-dogfood":"node --test $(ls test/*.test.mjs | grep -v -E 'dogfood|artifacts-safe-fs-native-seam|setup-live-samples|reference-configs')","native:build:test":"GYP_DEFINES='test_seam=1' node-gyp rebuild --directory native/safe-write","sync:public-files":"node scripts/sync-public-files.mjs","sync:skills:check":"node scripts/sync-skills.mjs --check","test:cli-contract":"node --test test/cli-contract.test.mjs","build:bundle:check":"node scripts/build-bundle.mjs --check","sync:version:check":"node scripts/sync-version.mjs --check","build:adapters:check":"node scripts/build-adapters.mjs --check","native:package-current":"node scripts/package-native-prebuild.mjs","sync:public-files:check":"node scripts/sync-public-files.mjs --check"},"_npmUser":{"name":"mzdbxqh","email":"mzdbxqh@gmail.com"},"repository":{"url":"git+https://github.com/ifoohoo/release-skill.git","type":"git"},"description":"Safe preparation and frozen GitHub/npm production publishing with full happy end verification","directories":{},"_nodeVersion":"26.7.0","dependencies":{"ajv":"8.20.0","yaml":"2.9.0","ajv-formats":"3.0.1","libnpmpublish":"11.1.0","npm-registry-fetch":"18.0.2","skill-family-contracts":"0.5.0","skill-family-harness-node":"0.5.0"},"_hasShrinkwrap":false,"devDependencies":{"esbuild":"0.25.8","node-gyp":"12.3.0"},"_npmOperationalInternal":{"tmp":"tmp/release-skill_0.6.1_1787043715786_0.680039901124577","host":"s3://npm-registry-packages-npm-production"}},"0.6.2":{"name":"release-skill","version":"0.6.2","keywords":["release","publish","governance","skill","claude-code","codex","kimi-code"],"author":{"name":"广州市风荷科技有限公司"},"license":"Apache-2.0","_id":"release-skill@0.6.2","maintainers":[{"name":"mzdbxqh","email":"mzdbxqh@gmail.com"}],"contributors":[{"name":"release-skill contributors"}],"homepage":"https://github.com/ifoohoo/release-skill#readme","bugs":{"url":"https://github.com/ifoohoo/release-skill/issues"},"bin":{"release-skill":"./bin/release-skill.mjs"},"dist":{"shasum":"ae6f55a359ec1882be101ebd73e49b9e2ba676a4","tarball":"https://registry.npmjs.org/release-skill/-/release-skill-0.6.2.tgz","fileCount":292,"integrity":"sha512-U5Dl//SiE73/y3IvX3FxBnprA9PARHY9DT6FtJZvGJnecIP+GVYSzbDjs8LFgyEm5QjcMUihDBgDOgeZWsK1bw==","signatures":[{"sig":"MEYCIQDqOo7U1qxiiGj4BHnFRnHuEO2XJvBofwv1on/jklfCRQIhAJf0+jcnhO9NCVTNfNbQ5ejATAXtUhmdVdxtEH7OESZe","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":27517914},"type":"module","engines":{"node":">=22.0.0"},"scripts":{"test":"node --test $(ls test/*.test.mjs | grep -v -E 'artifacts-safe-fs-native-seam')","build":"node --check src/**/*.mjs && node scripts/build-bundle.mjs","typecheck":"node --check src/**/*.mjs bin/*.mjs","native:test":"npm run native:build:test && node --expose-gc --test test/artifacts-safe-fs-native-seam.test.mjs && npm run native:build && RELEASE_SKILL_NATIVE_DEV=1 node --test test/artifacts-safe-fs.test.mjs test/artifacts-transaction-native.test.mjs && node --input-type=module -e \"import {createRequire} from 'node:module';const a=createRequire(import.meta.url)('./native/safe-write/build/Release/safe_write.node');const k=Object.keys(a).sort();const e=['abortTemp','chmod','close','createTemp','fsync','mkdir','openDir','openRoot','readEntry','readFile','rename','rmdir','unlink'];if(k.length!==e.length||k.some((v,i)=>v!==e[i])){console.error('Production exports mismatch:',k);process.exit(1)}console.log('Production exports verified:',k.length,'functions')\"","sync:skills":"node scripts/sync-skills.mjs","build:bundle":"node scripts/build-bundle.mjs","native:build":"node-gyp rebuild --directory native/safe-write","sync:version":"node scripts/sync-version.mjs","build:adapters":"node scripts/build-adapters.mjs","test:no-dogfood":"node --test $(ls test/*.test.mjs | grep -v -E 'dogfood|artifacts-safe-fs-native-seam|setup-live-samples|reference-configs')","native:build:test":"GYP_DEFINES='test_seam=1' node-gyp rebuild --directory native/safe-write","sync:public-files":"node scripts/sync-public-files.mjs","sync:skills:check":"node scripts/sync-skills.mjs --check","test:cli-contract":"node --test test/cli-contract.test.mjs","build:bundle:check":"node scripts/build-bundle.mjs --check","sync:version:check":"node scripts/sync-version.mjs --check","build:adapters:check":"node scripts/build-adapters.mjs --check","native:package-current":"node scripts/package-native-prebuild.mjs","sync:public-files:check":"node scripts/sync-public-files.mjs --check"},"_npmUser":{"name":"mzdbxqh","email":"mzdbxqh@gmail.com"},"repository":{"url":"git+https://github.com/ifoohoo/release-skill.git","type":"git"},"description":"Safe preparation and frozen GitHub/npm production publishing with full happy end verification","directories":{},"_nodeVersion":"26.7.0","dependencies":{"ajv":"8.20.0","yaml":"2.9.0","ajv-formats":"3.0.1","libnpmpublish":"11.1.0","npm-registry-fetch":"18.0.2","skill-family-contracts":"0.5.0","skill-family-harness-node":"0.5.0"},"_hasShrinkwrap":false,"devDependencies":{"esbuild":"0.25.8","node-gyp":"12.3.0"},"_npmOperationalInternal":{"tmp":"tmp/release-skill_0.6.2_1787107622567_0.05985124457595736","host":"s3://npm-registry-packages-npm-production"}},"0.6.3":{"name":"release-skill","version":"0.6.3","keywords":["release","publish","governance","skill","claude-code","codex","kimi-code"],"author":{"name":"广州市风荷科技有限公司"},"license":"Apache-2.0","_id":"release-skill@0.6.3","maintainers":[{"name":"mzdbxqh","email":"mzdbxqh@gmail.com"}],"contributors":[{"name":"release-skill contributors"}],"homepage":"https://github.com/ifoohoo/release-skill#readme","bugs":{"url":"https://github.com/ifoohoo/release-skill/issues"},"bin":{"release-skill":"./bin/release-skill.mjs"},"dist":{"shasum":"f6c4879c3fe28ae21df3068e0f3667c891173394","tarball":"https://registry.npmjs.org/release-skill/-/release-skill-0.6.3.tgz","fileCount":308,"integrity":"sha512-I1rdOmvyqXah92kKHhTqFro0NJUp29y55NymJdVW2mCjg9UEPKKL+wpGQunxizo5s7fL3pqCu07w0J+i4qDChQ==","signatures":[{"sig":"MEUCIQCskZDfeW5jl2XdIXL7hctdKnBHGKH/BRqPJ8Ygu2ARjQIgQ7sxmFMGgu5S+wzMvDXtyUVF5vuiebul5qGV0eG5TU4=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":28838388},"type":"module","engines":{"node":">=22.0.0"},"scripts":{"test":"node --test $(ls test/*.test.mjs | grep -v -E 'artifacts-safe-fs-native-seam')","build":"node --check src/**/*.mjs && node scripts/build-bundle.mjs","typecheck":"node --check src/**/*.mjs bin/*.mjs","native:test":"npm run native:build:test && node --expose-gc --test test/artifacts-safe-fs-native-seam.test.mjs && npm run native:build && RELEASE_SKILL_NATIVE_DEV=1 node --test test/artifacts-safe-fs.test.mjs test/artifacts-transaction-native.test.mjs && node --input-type=module -e \"import {createRequire} from 'node:module';const a=createRequire(import.meta.url)('./native/safe-write/build/Release/safe_write.node');const k=Object.keys(a).sort();const e=['abortTemp','chmod','close','createTemp','fsync','mkdir','openDir','openRoot','readEntry','readFile','rename','rmdir','unlink'];if(k.length!==e.length||k.some((v,i)=>v!==e[i])){console.error('Production exports mismatch:',k);process.exit(1)}console.log('Production exports verified:',k.length,'functions')\"","sync:skills":"node scripts/sync-skills.mjs","build:bundle":"node scripts/build-bundle.mjs","native:build":"node-gyp rebuild --directory native/safe-write","sync:version":"node scripts/sync-version.mjs","build:adapters":"node scripts/build-adapters.mjs","test:no-dogfood":"node --test $(ls test/*.test.mjs | grep -v -E 'dogfood|artifacts-safe-fs-native-seam|setup-live-samples|reference-configs')","native:build:test":"GYP_DEFINES='test_seam=1' node-gyp rebuild --directory native/safe-write","sync:public-files":"node scripts/sync-public-files.mjs","sync:skills:check":"node scripts/sync-skills.mjs --check","test:cli-contract":"node --test test/cli-contract.test.mjs","build:bundle:check":"node scripts/build-bundle.mjs --check","sync:version:check":"node scripts/sync-version.mjs --check","build:adapters:apply":"node scripts/build-adapters.mjs --apply","build:adapters:check":"node scripts/build-adapters.mjs --check","native:package-current":"node scripts/package-native-prebuild.mjs","sync:public-files:check":"node scripts/sync-public-files.mjs --check"},"_npmUser":{"name":"mzdbxqh","email":"mzdbxqh@gmail.com"},"repository":{"url":"git+https://github.com/ifoohoo/release-skill.git","type":"git"},"description":"Safe preparation and frozen GitHub/npm production publishing with full happy end verification","directories":{},"_nodeVersion":"26.7.0","dependencies":{"ajv":"8.20.0","yaml":"2.9.0","ajv-formats":"3.0.1","libnpmpublish":"11.1.0","npm-registry-fetch":"18.0.2","skill-family-contracts":"0.5.0","skill-family-harness-node":"0.5.0"},"_hasShrinkwrap":false,"devDependencies":{"esbuild":"0.25.8","node-gyp":"12.3.0"},"_npmOperationalInternal":{"tmp":"tmp/release-skill_0.6.3_1787204161547_0.659180164185629","host":"s3://npm-registry-packages-npm-production"}},"0.7.0":{"name":"release-skill","version":"0.7.0","keywords":["release","publish","governance","skill","claude-code","codex","kimi-code"],"author":{"name":"广州市风荷科技有限公司"},"license":"Apache-2.0","_id":"release-skill@0.7.0","maintainers":[{"name":"mzdbxqh","email":"mzdbxqh@gmail.com"}],"contributors":[{"name":"release-skill contributors"}],"homepage":"https://github.com/ifoohoo/release-skill#readme","bugs":{"url":"https://github.com/ifoohoo/release-skill/issues"},"bin":{"release-skill":"./bin/release-skill.mjs"},"dist":{"shasum":"b152e94c17e47e3cb1781c6410f8a16468c3f880","tarball":"https://registry.npmjs.org/release-skill/-/release-skill-0.7.0.tgz","fileCount":321,"integrity":"sha512-W92ypPC2031+oFMuljgKadGnls5tniByaVmExsUVB3UUUyGxgzRyaDvt12zPIwRqkuHiT8odCTEeMaszaScICw==","signatures":[{"sig":"MEQCIH/oFhNOoKbVBjKM/G33yy5ezGqbQP+u4njm+3Zn6AwEAiB6LOxCHS3bM/U3JMAhp+pj2OC7RAHrxFazRmTe1b4d8g==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":29805092},"type":"module","engines":{"node":">=22.22.2 <23"},"scripts":{"test":"node --test $(ls test/*.test.mjs | grep -v -E 'artifacts-safe-fs-native-seam')","build":"node --check src/**/*.mjs && node scripts/build-bundle.mjs","typecheck":"node --check src/**/*.mjs bin/*.mjs","native:test":"npm run native:build:test && node --expose-gc --test test/artifacts-safe-fs-native-seam.test.mjs && npm run native:build && RELEASE_SKILL_NATIVE_DEV=1 node --test test/artifacts-safe-fs.test.mjs test/artifacts-transaction-native.test.mjs && node --input-type=module -e \"import {createRequire} from 'node:module';const a=createRequire(import.meta.url)('./native/safe-write/build/Release/safe_write.node');const k=Object.keys(a).sort();const e=['abortTemp','chmod','close','createTemp','fsync','mkdir','openDir','openRoot','readEntry','readFile','rename','rmdir','unlink'];if(k.length!==e.length||k.some((v,i)=>v!==e[i])){console.error('Production exports mismatch:',k);process.exit(1)}console.log('Production exports verified:',k.length,'functions')\"","sync:skills":"node scripts/sync-skills.mjs","build:bundle":"node scripts/build-bundle.mjs","native:build":"node-gyp rebuild --directory native/safe-write","sync:version":"node scripts/sync-version.mjs","build:adapters":"node scripts/build-adapters.mjs","test:no-dogfood":"node --test $(ls test/*.test.mjs | grep -v -E 'dogfood|artifacts-safe-fs-native-seam|setup-live-samples|reference-configs')","native:build:test":"GYP_DEFINES='test_seam=1' node-gyp rebuild --directory native/safe-write","sync:public-files":"node scripts/sync-public-files.mjs","sync:skills:check":"node scripts/sync-skills.mjs --check","test:cli-contract":"node --test test/cli-contract.test.mjs","build:bundle:check":"node scripts/build-bundle.mjs --check","sync:version:check":"node scripts/sync-version.mjs --check","build:adapters:apply":"node scripts/build-adapters.mjs --apply","build:adapters:check":"node scripts/build-adapters.mjs --check","native:package-current":"node scripts/package-native-prebuild.mjs","sync:public-files:check":"node scripts/sync-public-files.mjs --check"},"_npmUser":{"name":"mzdbxqh","email":"mzdbxqh@gmail.com"},"repository":{"url":"git+https://github.com/ifoohoo/release-skill.git","type":"git"},"description":"Safe preparation and frozen GitHub/npm production publishing with full happy end verification","directories":{},"_nodeVersion":"22.22.2","dependencies":{"ajv":"8.20.0","yaml":"2.9.0","ajv-formats":"3.0.1","libnpmpublish":"11.1.0","npm-registry-fetch":"18.0.2","skill-family-contracts":"0.8.0","skill-family-harness-node":"0.8.0","skill-family-engineering-kit":"0.8.0"},"_hasShrinkwrap":false,"devDependencies":{"esbuild":"0.25.8","node-gyp":"12.3.0"},"_npmOperationalInternal":{"tmp":"tmp/release-skill_0.7.0_1787342466007_0.10564282228381239","host":"s3://npm-registry-packages-npm-production"}},"0.7.1":{"name":"release-skill","version":"0.7.1","keywords":["release","publish","governance","skill","claude-code","codex","kimi-code"],"author":{"name":"广州市风荷科技有限公司"},"license":"Apache-2.0","_id":"release-skill@0.7.1","maintainers":[{"name":"mzdbxqh","email":"mzdbxqh@gmail.com"}],"contributors":[{"name":"release-skill contributors"}],"homepage":"https://github.com/ifoohoo/release-skill#readme","bugs":{"url":"https://github.com/ifoohoo/release-skill/issues"},"bin":{"release-skill":"./bin/release-skill.mjs"},"dist":{"shasum":"dc34d346675df5a0f821533f117eb00748d88311","tarball":"https://registry.npmjs.org/release-skill/-/release-skill-0.7.1.tgz","fileCount":321,"integrity":"sha512-NRFvjohcyYi+ggBPYBFC6WwDNKLTei/Kcs2qgW65mXdy4rFw0cW/BorxX7wub5uK4Uc4YtoWJ4Mdk94olkbHzw==","signatures":[{"sig":"MEUCIQDLxXkCdkr97hkuNoHZJfTHIaAe/BBt/zMTQFmyFIF5XgIgV53F8ouc8U0uY7k7D0FIdtfCo7/5cxywuCq7vsfdo4Q=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":29803358},"type":"module","engines":{"node":">=22.22.2 <23"},"scripts":{"test":"node --test $(ls test/*.test.mjs | grep -v -E 'artifacts-safe-fs-native-seam')","build":"node --check src/**/*.mjs && node scripts/build-bundle.mjs","typecheck":"node --check src/**/*.mjs bin/*.mjs","native:test":"npm run native:build:test && node --expose-gc --test test/artifacts-safe-fs-native-seam.test.mjs && npm run native:build && RELEASE_SKILL_NATIVE_DEV=1 node --test test/artifacts-safe-fs.test.mjs test/artifacts-transaction-native.test.mjs && node --input-type=module -e \"import {createRequire} from 'node:module';const a=createRequire(import.meta.url)('./native/safe-write/build/Release/safe_write.node');const k=Object.keys(a).sort();const e=['abortTemp','chmod','close','createTemp','fsync','mkdir','openDir','openRoot','readEntry','readFile','rename','rmdir','unlink'];if(k.length!==e.length||k.some((v,i)=>v!==e[i])){console.error('Production exports mismatch:',k);process.exit(1)}console.log('Production exports verified:',k.length,'functions')\"","sync:skills":"node scripts/sync-skills.mjs","build:bundle":"node scripts/build-bundle.mjs","native:build":"node-gyp rebuild --directory native/safe-write","sync:version":"node scripts/sync-version.mjs","build:adapters":"node scripts/build-adapters.mjs","test:no-dogfood":"node --test $(ls test/*.test.mjs | grep -v -E 'dogfood|artifacts-safe-fs-native-seam|setup-live-samples|reference-configs')","native:build:test":"GYP_DEFINES='test_seam=1' node-gyp rebuild --directory native/safe-write","sync:public-files":"node scripts/sync-public-files.mjs","sync:skills:check":"node scripts/sync-skills.mjs --check","test:cli-contract":"node --test test/cli-contract.test.mjs","build:bundle:check":"node scripts/build-bundle.mjs --check","sync:version:check":"node scripts/sync-version.mjs --check","build:adapters:apply":"node scripts/build-adapters.mjs --apply","build:adapters:check":"node scripts/build-adapters.mjs --check","native:package-current":"node scripts/package-native-prebuild.mjs","sync:public-files:check":"node scripts/sync-public-files.mjs --check"},"_npmUser":{"name":"mzdbxqh","email":"mzdbxqh@gmail.com"},"repository":{"url":"git+https://github.com/ifoohoo/release-skill.git","type":"git"},"description":"Safe preparation and frozen GitHub/npm production publishing with full happy end verification","directories":{},"_nodeVersion":"22.23.2","dependencies":{"ajv":"8.20.0","yaml":"2.9.0","ajv-formats":"3.0.1","libnpmpublish":"11.1.0","npm-registry-fetch":"18.0.2","skill-family-contracts":"0.8.0","skill-family-harness-node":"0.8.0","skill-family-engineering-kit":"0.8.0"},"_hasShrinkwrap":false,"devDependencies":{"esbuild":"0.25.8","node-gyp":"12.3.0"},"_npmOperationalInternal":{"tmp":"tmp/release-skill_0.7.1_1787355552780_0.6328572215633439","host":"s3://npm-registry-packages-npm-production"}},"0.7.2":{"name":"release-skill","version":"0.7.2","keywords":["release","publish","governance","skill","claude-code","codex","kimi-code"],"author":{"name":"广州市风荷科技有限公司"},"license":"Apache-2.0","_id":"release-skill@0.7.2","maintainers":[{"name":"mzdbxqh","email":"mzdbxqh@gmail.com"}],"contributors":[{"name":"release-skill contributors"}],"homepage":"https://github.com/ifoohoo/release-skill#readme","bugs":{"url":"https://github.com/ifoohoo/release-skill/issues"},"bin":{"release-skill":"./bin/release-skill.mjs"},"dist":{"shasum":"17f60f6cbd2e67b36aa4c7f02a97c67f95d7cb44","tarball":"https://registry.npmjs.org/release-skill/-/release-skill-0.7.2.tgz","fileCount":321,"integrity":"sha512-Va1vbyOzb0z5/vlLW65c+OMu0iu9Ok/zh7NbVuD8ZZJ9EkgNL8vyYMk9NrIzlW2d6XPlBsChOyyZnGCfQtE9Rg==","signatures":[{"sig":"MEQCIDo38tO4Hq8lkKZZLSG5Wm+HuRWwnkQ200k9bczdBvnjAiBXMcBRhzbwPeOOrWoJtNWRH7Y//+oNL0Zu+ijNExkYxw==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":29804237},"type":"module","engines":{"node":">=22.22.2 <23"},"scripts":{"test":"node --test $(ls test/*.test.mjs | grep -v -E 'artifacts-safe-fs-native-seam')","build":"node --check src/**/*.mjs && node scripts/build-bundle.mjs","typecheck":"node --check src/**/*.mjs bin/*.mjs","native:test":"npm run native:build:test && node --expose-gc --test test/artifacts-safe-fs-native-seam.test.mjs && npm run native:build && RELEASE_SKILL_NATIVE_DEV=1 node --test test/artifacts-safe-fs.test.mjs test/artifacts-transaction-native.test.mjs && node --input-type=module -e \"import {createRequire} from 'node:module';const a=createRequire(import.meta.url)('./native/safe-write/build/Release/safe_write.node');const k=Object.keys(a).sort();const e=['abortTemp','chmod','close','createTemp','fsync','mkdir','openDir','openRoot','readEntry','readFile','rename','rmdir','unlink'];if(k.length!==e.length||k.some((v,i)=>v!==e[i])){console.error('Production exports mismatch:',k);process.exit(1)}console.log('Production exports verified:',k.length,'functions')\"","sync:skills":"node scripts/sync-skills.mjs","build:bundle":"node scripts/build-bundle.mjs","native:build":"node-gyp rebuild --directory native/safe-write","sync:version":"node scripts/sync-version.mjs","build:adapters":"node scripts/build-adapters.mjs","test:no-dogfood":"node --test $(ls test/*.test.mjs | grep -v -E 'dogfood|artifacts-safe-fs-native-seam|setup-live-samples|reference-configs')","native:build:test":"GYP_DEFINES='test_seam=1' node-gyp rebuild --directory native/safe-write","sync:public-files":"node scripts/sync-public-files.mjs","sync:skills:check":"node scripts/sync-skills.mjs --check","test:cli-contract":"node --test test/cli-contract.test.mjs","build:bundle:check":"node scripts/build-bundle.mjs --check","sync:version:check":"node scripts/sync-version.mjs --check","build:adapters:apply":"node scripts/build-adapters.mjs --apply","build:adapters:check":"node scripts/build-adapters.mjs --check","native:package-current":"node scripts/package-native-prebuild.mjs","sync:public-files:check":"node scripts/sync-public-files.mjs --check"},"_npmUser":{"name":"mzdbxqh","email":"mzdbxqh@gmail.com"},"repository":{"url":"git+https://github.com/ifoohoo/release-skill.git","type":"git"},"description":"Safe preparation and frozen GitHub/npm production publishing with full happy end verification","directories":{},"_nodeVersion":"22.23.2","dependencies":{"ajv":"8.20.0","yaml":"2.9.0","ajv-formats":"3.0.1","libnpmpublish":"11.1.0","npm-registry-fetch":"18.0.2","skill-family-contracts":"0.8.0","skill-family-harness-node":"0.8.0","skill-family-engineering-kit":"0.8.0"},"_hasShrinkwrap":false,"devDependencies":{"esbuild":"0.25.8","node-gyp":"12.3.0"},"_npmOperationalInternal":{"tmp":"tmp/release-skill_0.7.2_1787357264788_0.44375348081595023","host":"s3://npm-registry-packages-npm-production"}},"0.7.3":{"name":"release-skill","version":"0.7.3","keywords":["release","publish","governance","skill","claude-code","codex","kimi-code"],"author":{"name":"广州市风荷科技有限公司"},"license":"Apache-2.0","_id":"release-skill@0.7.3","maintainers":[{"name":"mzdbxqh","email":"mzdbxqh@gmail.com"}],"contributors":[{"name":"release-skill contributors"}],"homepage":"https://github.com/ifoohoo/release-skill#readme","bugs":{"url":"https://github.com/ifoohoo/release-skill/issues"},"bin":{"release-skill":"./bin/release-skill.mjs"},"dist":{"shasum":"fe538f6f6ec7d654db67440a1f4d919ae79f422b","tarball":"https://registry.npmjs.org/release-skill/-/release-skill-0.7.3.tgz","fileCount":321,"integrity":"sha512-6ppgGLlJr5pck5yQIoMAU2Y1mkuuX+2NwdVPXTGNMdBnGsHno+moi11B0OBtM/erECy0ZUGvo1yqG2Y52h36Lw==","signatures":[{"sig":"MEYCIQCLZUrZKPLgRUWpztc6O9bR5Ie0NxxKL2w6nViHPIVH5gIhAJt3Cs96tBApyFJdLF7tq7nDmEMTH/3KIRsooWvCyIIr","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":29825229},"type":"module","engines":{"node":">=22.22.2 <23"},"scripts":{"test":"node --test $(ls test/*.test.mjs | grep -v -E 'artifacts-safe-fs-native-seam')","build":"node --check src/**/*.mjs && node scripts/build-bundle.mjs","typecheck":"node --check src/**/*.mjs bin/*.mjs","native:test":"npm run native:build:test && node --expose-gc --test test/artifacts-safe-fs-native-seam.test.mjs && npm run native:build && RELEASE_SKILL_NATIVE_DEV=1 node --test test/artifacts-safe-fs.test.mjs test/artifacts-transaction-native.test.mjs && node --input-type=module -e \"import {createRequire} from 'node:module';const a=createRequire(import.meta.url)('./native/safe-write/build/Release/safe_write.node');const k=Object.keys(a).sort();const e=['abortTemp','chmod','close','createTemp','fsync','mkdir','openDir','openRoot','readEntry','readFile','rename','rmdir','unlink'];if(k.length!==e.length||k.some((v,i)=>v!==e[i])){console.error('Production exports mismatch:',k);process.exit(1)}console.log('Production exports verified:',k.length,'functions')\"","sync:skills":"node scripts/sync-skills.mjs","build:bundle":"node scripts/build-bundle.mjs","native:build":"node-gyp rebuild --directory native/safe-write","sync:version":"node scripts/sync-version.mjs","build:adapters":"node scripts/build-adapters.mjs","test:no-dogfood":"node --test $(ls test/*.test.mjs | grep -v -E 'dogfood|artifacts-safe-fs-native-seam|setup-live-samples|reference-configs')","native:build:test":"GYP_DEFINES='test_seam=1' node-gyp rebuild --directory native/safe-write","sync:public-files":"node scripts/sync-public-files.mjs","sync:skills:check":"node scripts/sync-skills.mjs --check","test:cli-contract":"node --test test/cli-contract.test.mjs","build:bundle:check":"node scripts/build-bundle.mjs --check","sync:version:check":"node scripts/sync-version.mjs --check","build:adapters:apply":"node scripts/build-adapters.mjs --apply","build:adapters:check":"node scripts/build-adapters.mjs --check","native:package-current":"node scripts/package-native-prebuild.mjs","sync:public-files:check":"node scripts/sync-public-files.mjs --check"},"_npmUser":{"name":"mzdbxqh","email":"mzdbxqh@gmail.com"},"repository":{"url":"git+https://github.com/ifoohoo/release-skill.git","type":"git"},"description":"Safe preparation and frozen GitHub/npm production publishing with full happy end verification","directories":{},"_nodeVersion":"22.23.2","dependencies":{"ajv":"8.20.0","yaml":"2.9.0","ajv-formats":"3.0.1","libnpmpublish":"11.1.0","npm-registry-fetch":"18.0.2","skill-family-contracts":"0.8.1","skill-family-harness-node":"0.8.1","skill-family-engineering-kit":"0.8.1"},"_hasShrinkwrap":false,"devDependencies":{"esbuild":"0.25.8","node-gyp":"12.3.0"},"_npmOperationalInternal":{"tmp":"tmp/release-skill_0.7.3_1787364845446_0.5455837787814333","host":"s3://npm-registry-packages-npm-production"}},"0.7.4":{"name":"release-skill","version":"0.7.4","keywords":["release","publish","governance","skill","claude-code","codex","kimi-code"],"author":{"name":"广州市风荷科技有限公司"},"license":"Apache-2.0","_id":"release-skill@0.7.4","maintainers":[{"name":"mzdbxqh","email":"mzdbxqh@gmail.com"}],"contributors":[{"name":"release-skill contributors"}],"homepage":"https://github.com/ifoohoo/release-skill#readme","bugs":{"url":"https://github.com/ifoohoo/release-skill/issues"},"bin":{"release-skill":"./bin/release-skill.mjs"},"dist":{"shasum":"3fdb9715edbb1dab9294ccdfe28acbce2feab287","tarball":"https://registry.npmjs.org/release-skill/-/release-skill-0.7.4.tgz","fileCount":321,"integrity":"sha512-0bIBS9dk1qfkXYYCtaTpYohXlh4hziinRqhCYMUYEij0sMWolzAEU1Lj31ydeYuWAAEsf5Fm9mM5JGRZBjBIEg==","signatures":[{"sig":"MEUCIQDIkr38gLh3fF/XDPWc4aqirlMPnYpDuVhqRIbrStL3oQIgCSobJ0U+OVnnOTzuHxWALObOm//+LpjI72q724WLIAE=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":29841581},"type":"module","engines":{"node":">=22.22.2 <23"},"scripts":{"test":"node --test $(ls test/*.test.mjs | grep -v -E 'artifacts-safe-fs-native-seam')","build":"node --check src/**/*.mjs && node scripts/build-bundle.mjs","typecheck":"node --check src/**/*.mjs bin/*.mjs","native:test":"npm run native:build:test && node --expose-gc --test test/artifacts-safe-fs-native-seam.test.mjs && npm run native:build && RELEASE_SKILL_NATIVE_DEV=1 node --test test/artifacts-safe-fs.test.mjs test/artifacts-transaction-native.test.mjs && node --input-type=module -e \"import {createRequire} from 'node:module';const a=createRequire(import.meta.url)('./native/safe-write/build/Release/safe_write.node');const k=Object.keys(a).sort();const e=['abortTemp','chmod','close','createTemp','fsync','mkdir','openDir','openRoot','readEntry','readFile','rename','rmdir','unlink'];if(k.length!==e.length||k.some((v,i)=>v!==e[i])){console.error('Production exports mismatch:',k);process.exit(1)}console.log('Production exports verified:',k.length,'functions')\"","sync:skills":"node scripts/sync-skills.mjs","build:bundle":"node scripts/build-bundle.mjs","native:build":"node-gyp rebuild --directory native/safe-write","sync:version":"node scripts/sync-version.mjs","build:adapters":"node scripts/build-adapters.mjs","test:no-dogfood":"node --test $(ls test/*.test.mjs | grep -v -E 'dogfood|artifacts-safe-fs-native-seam|setup-live-samples|reference-configs')","native:build:test":"GYP_DEFINES='test_seam=1' node-gyp rebuild --directory native/safe-write","sync:public-files":"node scripts/sync-public-files.mjs","sync:skills:check":"node scripts/sync-skills.mjs --check","test:cli-contract":"node --test test/cli-contract.test.mjs","build:bundle:check":"node scripts/build-bundle.mjs --check","sync:version:check":"node scripts/sync-version.mjs --check","build:adapters:apply":"node scripts/build-adapters.mjs --apply","build:adapters:check":"node scripts/build-adapters.mjs --check","native:package-current":"node scripts/package-native-prebuild.mjs","sync:public-files:check":"node scripts/sync-public-files.mjs --check"},"_npmUser":{"name":"mzdbxqh","email":"mzdbxqh@gmail.com"},"repository":{"url":"git+https://github.com/ifoohoo/release-skill.git","type":"git"},"description":"Safe preparation and frozen GitHub/npm production publishing with full happy end verification","directories":{},"_nodeVersion":"22.23.2","dependencies":{"ajv":"8.20.0","yaml":"2.9.0","ajv-formats":"3.0.1","libnpmpublish":"11.1.0","npm-registry-fetch":"18.0.2","skill-family-contracts":"0.8.1","skill-family-harness-node":"0.8.1","skill-family-engineering-kit":"0.8.1"},"_hasShrinkwrap":false,"devDependencies":{"esbuild":"0.25.8","node-gyp":"12.3.0"},"_npmOperationalInternal":{"tmp":"tmp/release-skill_0.7.4_1787369499216_0.24149578387938675","host":"s3://npm-registry-packages-npm-production"}},"0.7.5":{"name":"release-skill","version":"0.7.5","keywords":["release","publish","governance","skill","claude-code","codex","kimi-code"],"author":{"name":"广州市风荷科技有限公司"},"license":"Apache-2.0","_id":"release-skill@0.7.5","maintainers":[{"name":"mzdbxqh","email":"mzdbxqh@gmail.com"}],"contributors":[{"name":"release-skill contributors"}],"homepage":"https://github.com/ifoohoo/release-skill#readme","bugs":{"url":"https://github.com/ifoohoo/release-skill/issues"},"bin":{"release-skill":"./bin/release-skill.mjs"},"dist":{"shasum":"41bee146ef56ebc6d3e7c8c109d5390a5d002545","tarball":"https://registry.npmjs.org/release-skill/-/release-skill-0.7.5.tgz","fileCount":321,"integrity":"sha512-oyVL5F3etz/71+x3raFlHFe0+xmZYcsi75DwlPwb28XpLlSKSD//9xRp2a3eEm6fduXgTK8Y5zhuj1rzdvY8wQ==","signatures":[{"sig":"MEUCIQD3qu2cZwZYLDoDRJE6IEhwcWhEjZlx69045lV+srnSPAIgQ8PeITr2HtaZmw9xREjdQwggQ0RpiRW2I+gyKPOcryY=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":29845436},"type":"module","engines":{"node":">=22.22.2 <23"},"scripts":{"test":"node --test $(ls test/*.test.mjs | grep -v -E 'artifacts-safe-fs-native-seam')","build":"node --check src/**/*.mjs && node scripts/build-bundle.mjs","typecheck":"node --check src/**/*.mjs bin/*.mjs","native:test":"npm run native:build:test && node --expose-gc --test test/artifacts-safe-fs-native-seam.test.mjs && npm run native:build && RELEASE_SKILL_NATIVE_DEV=1 node --test test/artifacts-safe-fs.test.mjs test/artifacts-transaction-native.test.mjs && node --input-type=module -e \"import {createRequire} from 'node:module';const a=createRequire(import.meta.url)('./native/safe-write/build/Release/safe_write.node');const k=Object.keys(a).sort();const e=['abortTemp','chmod','close','createTemp','fsync','mkdir','openDir','openRoot','readEntry','readFile','rename','rmdir','unlink'];if(k.length!==e.length||k.some((v,i)=>v!==e[i])){console.error('Production exports mismatch:',k);process.exit(1)}console.log('Production exports verified:',k.length,'functions')\"","sync:skills":"node scripts/sync-skills.mjs","build:bundle":"node scripts/build-bundle.mjs","native:build":"node-gyp rebuild --directory native/safe-write","sync:version":"node scripts/sync-version.mjs","build:adapters":"node scripts/build-adapters.mjs","test:no-dogfood":"node --test $(ls test/*.test.mjs | grep -v -E 'dogfood|artifacts-safe-fs-native-seam|setup-live-samples|reference-configs')","native:build:test":"GYP_DEFINES='test_seam=1' node-gyp rebuild --directory native/safe-write","sync:public-files":"node scripts/sync-public-files.mjs","sync:skills:check":"node scripts/sync-skills.mjs --check","test:cli-contract":"node --test test/cli-contract.test.mjs","build:bundle:check":"node scripts/build-bundle.mjs --check","sync:version:check":"node scripts/sync-version.mjs --check","build:adapters:apply":"node scripts/build-adapters.mjs --apply","build:adapters:check":"node scripts/build-adapters.mjs --check","native:package-current":"node scripts/package-native-prebuild.mjs","sync:public-files:check":"node scripts/sync-public-files.mjs --check"},"_npmUser":{"name":"mzdbxqh","email":"mzdbxqh@gmail.com"},"repository":{"url":"git+https://github.com/ifoohoo/release-skill.git","type":"git"},"description":"Safe preparation and frozen GitHub/npm production publishing with full happy end verification","directories":{},"_nodeVersion":"22.23.2","dependencies":{"ajv":"8.20.0","yaml":"2.9.0","ajv-formats":"3.0.1","libnpmpublish":"11.1.0","npm-registry-fetch":"18.0.2","skill-family-contracts":"0.8.1","skill-family-harness-node":"0.8.1","skill-family-engineering-kit":"0.8.1"},"_hasShrinkwrap":false,"devDependencies":{"esbuild":"0.25.8","node-gyp":"12.3.0"},"_npmOperationalInternal":{"tmp":"tmp/release-skill_0.7.5_1787391236682_0.6332637169094391","host":"s3://npm-registry-packages-npm-production"}},"0.7.6":{"name":"release-skill","version":"0.7.6","keywords":["release","publish","governance","skill","claude-code","codex","kimi-code"],"author":{"name":"广州市风荷科技有限公司"},"license":"Apache-2.0","_id":"release-skill@0.7.6","maintainers":[{"name":"mzdbxqh","email":"mzdbxqh@gmail.com"}],"contributors":[{"name":"release-skill contributors"}],"homepage":"https://github.com/ifoohoo/release-skill#readme","bugs":{"url":"https://github.com/ifoohoo/release-skill/issues"},"bin":{"release-skill":"./bin/release-skill.mjs"},"dist":{"shasum":"9121fea04a1075e7729b8256ab7ecc25e2f4c84e","tarball":"https://registry.npmjs.org/release-skill/-/release-skill-0.7.6.tgz","fileCount":321,"integrity":"sha512-0g9gwXNBL6jdQXDXD+OrShUQ1kcRlDo+vJIjW37j4NPEP24aBaypPSZE5cDcJ96jzqy0YElAKA5LzbVA5pYyGw==","signatures":[{"sig":"MEUCICh3ksIM9adgkYHqD7YsZOnTDLBIWCNK7yzB/tDwM9DwAiEA5Oc7Nocaqy3bhhgaT24Rw8ORw6elZ9G2FJdolum9L7Y=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":29851751},"type":"module","engines":{"node":">=22.22.2 <23"},"scripts":{"test":"node --test $(ls test/*.test.mjs | grep -v -E 'artifacts-safe-fs-native-seam')","build":"node --check src/**/*.mjs && node scripts/build-bundle.mjs","typecheck":"node --check src/**/*.mjs bin/*.mjs","native:test":"npm run native:build:test && node --expose-gc --test test/artifacts-safe-fs-native-seam.test.mjs && npm run native:build && RELEASE_SKILL_NATIVE_DEV=1 node --test test/artifacts-safe-fs.test.mjs test/artifacts-transaction-native.test.mjs && node --input-type=module -e \"import {createRequire} from 'node:module';const a=createRequire(import.meta.url)('./native/safe-write/build/Release/safe_write.node');const k=Object.keys(a).sort();const e=['abortTemp','chmod','close','createTemp','fsync','mkdir','openDir','openRoot','readEntry','readFile','rename','rmdir','unlink'];if(k.length!==e.length||k.some((v,i)=>v!==e[i])){console.error('Production exports mismatch:',k);process.exit(1)}console.log('Production exports verified:',k.length,'functions')\"","sync:skills":"node scripts/sync-skills.mjs","build:bundle":"node scripts/build-bundle.mjs","native:build":"node-gyp rebuild --directory native/safe-write","sync:version":"node scripts/sync-version.mjs","build:adapters":"node scripts/build-adapters.mjs","test:no-dogfood":"node --test $(ls test/*.test.mjs | grep -v -E 'dogfood|artifacts-safe-fs-native-seam|setup-live-samples|reference-configs')","native:build:test":"GYP_DEFINES='test_seam=1' node-gyp rebuild --directory native/safe-write","sync:public-files":"node scripts/sync-public-files.mjs","sync:skills:check":"node scripts/sync-skills.mjs --check","test:cli-contract":"node --test test/cli-contract.test.mjs","build:bundle:check":"node scripts/build-bundle.mjs --check","sync:version:check":"node scripts/sync-version.mjs --check","build:adapters:apply":"node scripts/build-adapters.mjs --apply","build:adapters:check":"node scripts/build-adapters.mjs --check","native:package-current":"node scripts/package-native-prebuild.mjs","sync:public-files:check":"node scripts/sync-public-files.mjs --check"},"_npmUser":{"name":"mzdbxqh","email":"mzdbxqh@gmail.com"},"repository":{"url":"git+https://github.com/ifoohoo/release-skill.git","type":"git"},"description":"Safe preparation and frozen GitHub/npm production publishing with full happy end verification","directories":{},"_nodeVersion":"22.23.2","dependencies":{"ajv":"8.20.0","yaml":"2.9.0","ajv-formats":"3.0.1","libnpmpublish":"11.1.0","npm-registry-fetch":"18.0.2","skill-family-contracts":"0.8.1","skill-family-harness-node":"0.8.1","skill-family-engineering-kit":"0.8.1"},"_hasShrinkwrap":false,"devDependencies":{"esbuild":"0.25.8","node-gyp":"12.3.0"},"_npmOperationalInternal":{"tmp":"tmp/release-skill_0.7.6_1787415664618_0.8595876552352104","host":"s3://npm-registry-packages-npm-production"}},"0.7.7":{"name":"release-skill","version":"0.7.7","keywords":["release","publish","governance","skill","claude-code","codex","kimi-code"],"author":{"name":"广州市风荷科技有限公司"},"license":"Apache-2.0","_id":"release-skill@0.7.7","maintainers":[{"name":"mzdbxqh","email":"mzdbxqh@gmail.com"}],"contributors":[{"name":"release-skill contributors"}],"homepage":"https://github.com/ifoohoo/release-skill#readme","bugs":{"url":"https://github.com/ifoohoo/release-skill/issues"},"bin":{"release-skill":"./bin/release-skill.mjs"},"dist":{"shasum":"197708c0df78e9e18110bbaf21bf366c2703a3af","tarball":"https://registry.npmjs.org/release-skill/-/release-skill-0.7.7.tgz","fileCount":322,"integrity":"sha512-pPYoVakGYoMuoWMdxY4KSRoYKzUzukLjRiSCg5QMGkGFGVViU1NmAeXlMdAo5kYJBKswkR4stUI3GqQ3pyPvkg==","signatures":[{"sig":"MEQCIAMpq6hUb85cP2QaEOss2ZLXx2+B1DJvXEc4KI+qkaP1AiAqt1rbXsD/uQ2Uim5h2+0/cMXgNEW3hggsLLyjX0BTSA==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":30021645},"type":"module","engines":{"node":">=22.22.2 <23"},"scripts":{"test":"node --test $(ls test/*.test.mjs | grep -v -E 'artifacts-safe-fs-native-seam')","build":"node --check src/**/*.mjs && node scripts/build-bundle.mjs","typecheck":"node --check src/**/*.mjs bin/*.mjs","native:test":"npm run native:build:test && node --expose-gc --test test/artifacts-safe-fs-native-seam.test.mjs && npm run native:build && RELEASE_SKILL_NATIVE_DEV=1 node --test test/artifacts-safe-fs.test.mjs test/artifacts-transaction-native.test.mjs && node --input-type=module -e \"import {createRequire} from 'node:module';const a=createRequire(import.meta.url)('./native/safe-write/build/Release/safe_write.node');const k=Object.keys(a).sort();const e=['abortTemp','chmod','close','createTemp','fsync','mkdir','openDir','openRoot','readEntry','readFile','rename','rmdir','unlink'];if(k.length!==e.length||k.some((v,i)=>v!==e[i])){console.error('Production exports mismatch:',k);process.exit(1)}console.log('Production exports verified:',k.length,'functions')\"","sync:skills":"node scripts/sync-skills.mjs","build:bundle":"node scripts/build-bundle.mjs","native:build":"node-gyp rebuild --directory native/safe-write","sync:version":"node scripts/sync-version.mjs","build:adapters":"node scripts/build-adapters.mjs","test:no-dogfood":"node --test $(ls test/*.test.mjs | grep -v -E 'dogfood|artifacts-safe-fs-native-seam|setup-live-samples|reference-configs')","native:build:test":"GYP_DEFINES='test_seam=1' node-gyp rebuild --directory native/safe-write","sync:public-files":"node scripts/sync-public-files.mjs","sync:skills:check":"node scripts/sync-skills.mjs --check","test:cli-contract":"node --test test/cli-contract.test.mjs","build:bundle:check":"node scripts/build-bundle.mjs --check","sync:version:check":"node scripts/sync-version.mjs --check","build:adapters:apply":"node scripts/build-adapters.mjs --apply","build:adapters:check":"node scripts/build-adapters.mjs --check","native:package-current":"node scripts/package-native-prebuild.mjs","sync:public-files:check":"node scripts/sync-public-files.mjs --check"},"_npmUser":{"name":"mzdbxqh","email":"mzdbxqh@gmail.com"},"repository":{"url":"git+https://github.com/ifoohoo/release-skill.git","type":"git"},"description":"Safe preparation and frozen GitHub/npm production publishing with full happy end verification","directories":{},"_nodeVersion":"26.7.0","dependencies":{"ajv":"8.20.0","yaml":"2.9.0","ajv-formats":"3.0.1","libnpmpublish":"11.1.0","npm-registry-fetch":"18.0.2","skill-family-contracts":"0.8.1","skill-family-harness-node":"0.8.1","skill-family-engineering-kit":"0.8.1"},"_hasShrinkwrap":false,"devDependencies":{"esbuild":"0.25.8","node-gyp":"12.3.0"},"_npmOperationalInternal":{"tmp":"tmp/release-skill_0.7.7_1787511319914_0.929420856655345","host":"s3://npm-registry-packages-npm-production"}},"0.7.8":{"name":"release-skill","version":"0.7.8","keywords":["release","publish","governance","skill","claude-code","codex","kimi-code"],"author":{"name":"广州市风荷科技有限公司"},"license":"Apache-2.0","_id":"release-skill@0.7.8","maintainers":[{"name":"mzdbxqh","email":"mzdbxqh@gmail.com"}],"contributors":[{"name":"release-skill contributors"}],"homepage":"https://github.com/ifoohoo/release-skill#readme","bugs":{"url":"https://github.com/ifoohoo/release-skill/issues"},"bin":{"release-skill":"./bin/release-skill.mjs"},"dist":{"shasum":"800678a1fbe02a97aa4e98aeea2dd19305c34c95","tarball":"https://registry.npmjs.org/release-skill/-/release-skill-0.7.8.tgz","fileCount":322,"integrity":"sha512-CaT4r78WbPi6TxPySEE7GNXUCy+FK02DYspbYwJrUSlMVJusiqdS7cd4TCMclOoppXvEGOFN/nfy3rYrEW1K+A==","signatures":[{"sig":"MEUCIQDEKpS00vrouSQticulJx+5xGxo7ojxOisJAuDvHdD1NgIgQMibkUxrHgb7O+P6ekgPDCEiDTW7lrPted6IOe15cpg=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":30032153},"type":"module","engines":{"node":">=22.22.2 <23"},"scripts":{"test":"node --test $(ls test/*.test.mjs | grep -v -E 'artifacts-safe-fs-native-seam')","build":"node --check src/**/*.mjs && node scripts/build-bundle.mjs","typecheck":"node --check src/**/*.mjs bin/*.mjs","native:test":"npm run native:build:test && node --expose-gc --test test/artifacts-safe-fs-native-seam.test.mjs && npm run native:build && RELEASE_SKILL_NATIVE_DEV=1 node --test test/artifacts-safe-fs.test.mjs test/artifacts-transaction-native.test.mjs && node --input-type=module -e \"import {createRequire} from 'node:module';const a=createRequire(import.meta.url)('./native/safe-write/build/Release/safe_write.node');const k=Object.keys(a).sort();const e=['abortTemp','chmod','close','createTemp','fsync','mkdir','openDir','openRoot','readEntry','readFile','rename','rmdir','unlink'];if(k.length!==e.length||k.some((v,i)=>v!==e[i])){console.error('Production exports mismatch:',k);process.exit(1)}console.log('Production exports verified:',k.length,'functions')\"","sync:skills":"node scripts/sync-skills.mjs","build:bundle":"node scripts/build-bundle.mjs","native:build":"node-gyp rebuild --directory native/safe-write","sync:version":"node scripts/sync-version.mjs","build:adapters":"node scripts/build-adapters.mjs","test:no-dogfood":"node --test $(ls test/*.test.mjs | grep -v -E 'dogfood|artifacts-safe-fs-native-seam|setup-live-samples|reference-configs')","native:build:test":"GYP_DEFINES='test_seam=1' node-gyp rebuild --directory native/safe-write","sync:public-files":"node scripts/sync-public-files.mjs","sync:skills:check":"node scripts/sync-skills.mjs --check","test:cli-contract":"node --test test/cli-contract.test.mjs","build:bundle:check":"node scripts/build-bundle.mjs --check","sync:version:check":"node scripts/sync-version.mjs --check","build:adapters:apply":"node scripts/build-adapters.mjs --apply","build:adapters:check":"node scripts/build-adapters.mjs --check","native:package-current":"node scripts/package-native-prebuild.mjs","sync:public-files:check":"node scripts/sync-public-files.mjs --check"},"_npmUser":{"name":"mzdbxqh","email":"mzdbxqh@gmail.com"},"repository":{"url":"git+https://github.com/ifoohoo/release-skill.git","type":"git"},"description":"Safe preparation and frozen GitHub/npm production publishing with full happy end verification","directories":{},"_nodeVersion":"22.23.2","dependencies":{"ajv":"8.20.0","yaml":"2.9.0","ajv-formats":"3.0.1","libnpmpublish":"11.1.0","npm-registry-fetch":"18.0.2","skill-family-contracts":"0.8.1","skill-family-harness-node":"0.8.1","skill-family-engineering-kit":"0.8.1"},"_hasShrinkwrap":false,"devDependencies":{"esbuild":"0.25.8","node-gyp":"12.3.0"},"_npmOperationalInternal":{"tmp":"tmp/release-skill_0.7.8_1787561778948_0.8117122624155007","host":"s3://npm-registry-packages-npm-production"}},"0.8.0":{"name":"release-skill","version":"0.8.0","keywords":["release","publish","governance","skill","claude-code","codex","kimi-code"],"author":{"name":"广州市风荷科技有限公司"},"license":"Apache-2.0","_id":"release-skill@0.8.0","maintainers":[{"name":"mzdbxqh","email":"mzdbxqh@gmail.com"}],"contributors":[{"name":"release-skill contributors"}],"homepage":"https://github.com/ifoohoo/release-skill#readme","bugs":{"url":"https://github.com/ifoohoo/release-skill/issues"},"bin":{"release-skill":"./bin/release-skill.mjs"},"dist":{"shasum":"9f574f2439ec351706797554e921c8be7dce428f","tarball":"https://registry.npmjs.org/release-skill/-/release-skill-0.8.0.tgz","fileCount":647,"integrity":"sha512-bd3sNBlIAPwNT/IqhrOGI3ad6kDq1kyMBOu7XGoDtzzAZ6/Oz1lTNh03fnwbPZJIMZf7pLmW1yq4Rv5qvFrQiQ==","signatures":[{"sig":"MEUCIQCl6ZNjuXvz1Crci847mEijjjDAioYztmdX3FQkpwc7uQIgMaDpfxog7drUHGFRVnzB0x2eUlfabkJeInerNg2+6wc=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":38696284},"type":"module","engines":{"node":">=22.22.2 <23"},"scripts":{"test":"node --test $(ls test/*.test.mjs | grep -v -E 'artifacts-safe-fs-native-seam')","build":"node --check src/**/*.mjs && node scripts/build-bundle.mjs","typecheck":"node --check src/**/*.mjs bin/*.mjs","native:test":"npm run native:build:test && node --expose-gc --test test/artifacts-safe-fs-native-seam.test.mjs && npm run native:build && RELEASE_SKILL_NATIVE_DEV=1 node --test test/artifacts-safe-fs.test.mjs test/artifacts-transaction-native.test.mjs && node --input-type=module -e \"import {createRequire} from 'node:module';const a=createRequire(import.meta.url)('./native/safe-write/build/Release/safe_write.node');const k=Object.keys(a).sort();const e=['abortTemp','chmod','close','createTemp','fsync','mkdir','openDir','openRoot','readEntry','readFile','rename','rmdir','unlink'];if(k.length!==e.length||k.some((v,i)=>v!==e[i])){console.error('Production exports mismatch:',k);process.exit(1)}console.log('Production exports verified:',k.length,'functions')\"","sync:skills":"node scripts/sync-skills.mjs","build:bundle":"node scripts/build-bundle.mjs","native:build":"node-gyp rebuild --directory native/safe-write","sync:version":"node scripts/sync-version.mjs","build:adapters":"node scripts/build-adapters.mjs","test:no-dogfood":"node --test $(ls test/*.test.mjs | grep -v -E 'dogfood|artifacts-safe-fs-native-seam|setup-live-samples|reference-configs')","native:build:test":"GYP_DEFINES='test_seam=1' node-gyp rebuild --directory native/safe-write","sync:public-files":"node scripts/sync-public-files.mjs","sync:skills:check":"node scripts/sync-skills.mjs --check","test:cli-contract":"node --test test/cli-contract.test.mjs","build:bundle:check":"node scripts/build-bundle.mjs --check","sync:version:check":"node scripts/sync-version.mjs --check","build:adapters:apply":"node scripts/build-adapters.mjs --apply","build:adapters:check":"node scripts/build-adapters.mjs --check","native:package-current":"node scripts/package-native-prebuild.mjs","sync:public-files:check":"node scripts/sync-public-files.mjs --check"},"_npmUser":{"name":"mzdbxqh","email":"mzdbxqh@gmail.com"},"repository":{"url":"git+https://github.com/ifoohoo/release-skill.git","type":"git"},"description":"Safe preparation and frozen GitHub/npm production publishing with full happy end verification","directories":{},"_nodeVersion":"22.23.2","dependencies":{"ajv":"8.20.0","yaml":"2.9.0","ajv-formats":"3.0.1","libnpmpublish":"11.2.0","npm-registry-fetch":"18.0.2","skill-family-contracts":"0.12.0","skill-family-harness-node":"0.12.0","skill-family-engineering-kit":"0.12.0"},"_hasShrinkwrap":false,"devDependencies":{"esbuild":"0.25.8","node-gyp":"12.3.0"},"_npmOperationalInternal":{"tmp":"tmp/release-skill_0.8.0_1787749808933_0.48464915789626883","host":"s3://npm-registry-packages-npm-production"}},"0.8.1":{"name":"release-skill","version":"0.8.1","keywords":["release","publish","governance","skill","claude-code","codex","kimi-code"],"author":{"name":"广州市风荷科技有限公司"},"license":"Apache-2.0","_id":"release-skill@0.8.1","maintainers":[{"name":"mzdbxqh","email":"mzdbxqh@gmail.com"}],"contributors":[{"name":"release-skill contributors"}],"homepage":"https://github.com/ifoohoo/release-skill#readme","bugs":{"url":"https://github.com/ifoohoo/release-skill/issues"},"bin":{"release-skill":"./bin/release-skill.mjs"},"dist":{"shasum":"86704af293295b0e6a20b31e7ed76d77d411ff27","tarball":"https://registry.npmjs.org/release-skill/-/release-skill-0.8.1.tgz","fileCount":663,"integrity":"sha512-dsnletk0y8hrK3yqQ5JPdqatglpYC5pE/N0T/ClDp5sC2QC8BKIsAL044q/Yt7ZTwS/bx/pTFs6rWFcFPLpUAA==","signatures":[{"sig":"MEUCIQDit7/Ym8Qe3FglpbCabIrSADPubCN+F3A2XsUJqY+YhwIgNOFyDBSKTaAR3JW/bo0e6hvnhnMw4Y0vv0B5tA4wXdE=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":39413640},"type":"module","engines":{"node":">=22.22.2 <23"},"scripts":{"test":"node --test $(ls test/*.test.mjs | grep -v -E 'artifacts-safe-fs-native-seam')","build":"node --check src/**/*.mjs && node scripts/build-bundle.mjs","typecheck":"node --check src/**/*.mjs bin/*.mjs","native:test":"npm run native:build:test && node --expose-gc --test test/artifacts-safe-fs-native-seam.test.mjs && npm run native:build && RELEASE_SKILL_NATIVE_DEV=1 node --test test/artifacts-safe-fs.test.mjs test/artifacts-transaction-native.test.mjs && node --input-type=module -e \"import {createRequire} from 'node:module';const a=createRequire(import.meta.url)('./native/safe-write/build/Release/safe_write.node');const k=Object.keys(a).sort();const e=['abortTemp','chmod','close','createTemp','fsync','mkdir','openDir','openRoot','readEntry','readFile','rename','rmdir','unlink'];if(k.length!==e.length||k.some((v,i)=>v!==e[i])){console.error('Production exports mismatch:',k);process.exit(1)}console.log('Production exports verified:',k.length,'functions')\"","sync:skills":"node scripts/sync-skills.mjs","build:bundle":"node scripts/build-bundle.mjs","native:build":"node-gyp rebuild --directory native/safe-write","sync:version":"node scripts/sync-version.mjs","build:adapters":"node scripts/build-adapters.mjs","test:no-dogfood":"node --test $(ls test/*.test.mjs | grep -v -E 'dogfood|artifacts-safe-fs-native-seam|setup-live-samples|reference-configs')","native:build:test":"GYP_DEFINES='test_seam=1' node-gyp rebuild --directory native/safe-write","sync:public-files":"node scripts/sync-public-files.mjs","sync:skills:check":"node scripts/sync-skills.mjs --check","test:cli-contract":"node --test test/cli-contract.test.mjs","build:bundle:check":"node scripts/build-bundle.mjs --check","sync:version:check":"node scripts/sync-version.mjs --check","build:adapters:apply":"node scripts/build-adapters.mjs --apply","build:adapters:check":"node scripts/build-adapters.mjs --check","native:package-current":"node scripts/package-native-prebuild.mjs","sync:public-files:check":"node scripts/sync-public-files.mjs --check"},"_npmUser":{"name":"mzdbxqh","email":"mzdbxqh@gmail.com"},"repository":{"url":"git+https://github.com/ifoohoo/release-skill.git","type":"git"},"description":"Safe preparation and frozen GitHub/npm production publishing with full happy end verification","directories":{},"_nodeVersion":"22.23.2","dependencies":{"ajv":"8.20.0","yaml":"2.9.0","ajv-formats":"3.0.1","libnpmpublish":"11.2.0","npm-registry-fetch":"18.0.2","skill-family-contracts":"0.13.0","skill-family-harness-node":"0.13.0","skill-family-engineering-kit":"0.13.0"},"_hasShrinkwrap":false,"devDependencies":{"esbuild":"0.25.8","node-gyp":"12.3.0"},"_npmOperationalInternal":{"tmp":"tmp/release-skill_0.8.1_1787796949963_0.13597332757210645","host":"s3://npm-registry-packages-npm-production"}},"0.9.0":{"name":"release-skill","version":"0.9.0","keywords":["release","publish","governance","skill","claude-code","codex","kimi-code"],"author":{"name":"广州市风荷科技有限公司"},"license":"Apache-2.0","_id":"release-skill@0.9.0","maintainers":[{"name":"mzdbxqh","email":"mzdbxqh@gmail.com"}],"contributors":[{"name":"release-skill contributors"}],"homepage":"https://github.com/ifoohoo/release-skill#readme","bugs":{"url":"https://github.com/ifoohoo/release-skill/issues"},"bin":{"release-skill":"./bin/release-skill.mjs"},"dist":{"shasum":"fe0fdd2327ce1a33ad1ef123c41dcba512f0d8a2","tarball":"https://registry.npmjs.org/release-skill/-/release-skill-0.9.0.tgz","fileCount":675,"integrity":"sha512-uPw8lAnzyRqQrGZ7worqeD61qC+laawEZx7GlJ/bvkpwHZL7bVeAFIj4MOedw4Hn6Sk6lV6eu8xOJg0x3U0P4Q==","signatures":[{"sig":"MEUCIBt+pjQSzENZVMn4wRIpLlXltvWX7jgRHAKCyFr7rjk2AiEA9k0Nk07wE4z0oFIiXswJRrbCUPNnw7ho5s0ExL/ioeE=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":39775441},"type":"module","engines":{"node":">=22.22.2 <23"},"scripts":{"test":"node --test $(ls test/*.test.mjs | grep -v -E 'artifacts-safe-fs-native-seam')","build":"node --check src/**/*.mjs && node scripts/build-bundle.mjs","typecheck":"node --check src/**/*.mjs bin/*.mjs","native:test":"npm run native:build:test && node --expose-gc --test test/artifacts-safe-fs-native-seam.test.mjs && npm run native:build && RELEASE_SKILL_NATIVE_DEV=1 node --test test/artifacts-safe-fs.test.mjs test/artifacts-transaction-native.test.mjs && node --input-type=module -e \"import {createRequire} from 'node:module';const a=createRequire(import.meta.url)('./native/safe-write/build/Release/safe_write.node');const k=Object.keys(a).sort();const e=['abortTemp','chmod','close','createTemp','fsync','mkdir','openDir','openRoot','readEntry','readFile','rename','rmdir','unlink'];if(k.length!==e.length||k.some((v,i)=>v!==e[i])){console.error('Production exports mismatch:',k);process.exit(1)}console.log('Production exports verified:',k.length,'functions')\"","sync:skills":"node scripts/sync-skills.mjs","build:bundle":"node scripts/build-bundle.mjs","native:build":"node-gyp rebuild --directory native/safe-write","sync:version":"node scripts/sync-version.mjs","build:adapters":"node scripts/build-adapters.mjs","test:no-dogfood":"node --test $(ls test/*.test.mjs | grep -v -E 'dogfood|artifacts-safe-fs-native-seam|setup-live-samples|reference-configs')","native:build:test":"GYP_DEFINES='test_seam=1' node-gyp rebuild --directory native/safe-write","sync:public-files":"node scripts/sync-public-files.mjs","sync:skills:check":"node scripts/sync-skills.mjs --check","test:cli-contract":"node --test test/cli-contract.test.mjs","build:bundle:check":"node scripts/build-bundle.mjs --check","sync:version:check":"node scripts/sync-version.mjs --check","build:adapters:apply":"node scripts/build-adapters.mjs --apply","build:adapters:check":"node scripts/build-adapters.mjs --check","native:package-current":"node scripts/package-native-prebuild.mjs","sync:public-files:check":"node scripts/sync-public-files.mjs --check"},"_npmUser":{"name":"mzdbxqh","email":"mzdbxqh@gmail.com"},"repository":{"url":"git+https://github.com/ifoohoo/release-skill.git","type":"git"},"description":"Safe preparation and frozen GitHub/npm production publishing with full happy end verification","directories":{},"_nodeVersion":"22.23.2","dependencies":{"ajv":"8.20.0","yaml":"2.9.0","ajv-formats":"3.0.1","libnpmpublish":"11.2.0","npm-registry-fetch":"18.0.2","skill-family-contracts":"0.13.0","skill-family-harness-node":"0.13.0","skill-family-engineering-kit":"0.13.0"},"_hasShrinkwrap":false,"devDependencies":{"esbuild":"0.25.8","node-gyp":"12.3.0"},"_npmOperationalInternal":{"tmp":"tmp/release-skill_0.9.0_1787855868381_0.023950576322819828","host":"s3://npm-registry-packages-npm-production"}},"0.9.1":{"name":"release-skill","version":"0.9.1","keywords":["release","publish","governance","skill","claude-code","codex","kimi-code"],"author":{"name":"广州市风荷科技有限公司"},"license":"Apache-2.0","_id":"release-skill@0.9.1","maintainers":[{"name":"mzdbxqh","email":"mzdbxqh@gmail.com"}],"contributors":[{"name":"release-skill contributors"}],"homepage":"https://github.com/ifoohoo/release-skill#readme","bugs":{"url":"https://github.com/ifoohoo/release-skill/issues"},"bin":{"release-skill":"./bin/release-skill.mjs"},"dist":{"shasum":"8927200ce006fdd94859c7148dc2cd12ec91346c","tarball":"https://registry.npmjs.org/release-skill/-/release-skill-0.9.1.tgz","fileCount":685,"integrity":"sha512-Uv0duz0UTq6n9Kye9p7ZQjf24LvcXFsJkt/nMfkS3OpEuV1MgxZFJuV0jwxpxrLLGlBiPFR19UnnFW9wxil5qQ==","signatures":[{"sig":"MEQCIE/5r8VI+bVoWQkP8G+w0U5/dc6FZ0dmnZoPWX4vO0J8AiA3rkaXg6VGlP8FsGitcWJOxUMTswRoiL5MfIPizUva8A==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":40009013},"type":"module","engines":{"node":">=22.22.2 <23"},"scripts":{"test":"node --test $(ls test/*.test.mjs | grep -v -E 'artifacts-safe-fs-native-seam')","build":"node --check src/**/*.mjs && node scripts/build-bundle.mjs","typecheck":"node --check src/**/*.mjs bin/*.mjs","native:test":"npm run native:build:test && node --expose-gc --test test/artifacts-safe-fs-native-seam.test.mjs && npm run native:build && RELEASE_SKILL_NATIVE_DEV=1 node --test test/artifacts-safe-fs.test.mjs test/artifacts-transaction-native.test.mjs && node --input-type=module -e \"import {createRequire} from 'node:module';const a=createRequire(import.meta.url)('./native/safe-write/build/Release/safe_write.node');const k=Object.keys(a).sort();const e=['abortTemp','chmod','close','createTemp','fsync','mkdir','openDir','openRoot','readEntry','readFile','rename','rmdir','unlink'];if(k.length!==e.length||k.some((v,i)=>v!==e[i])){console.error('Production exports mismatch:',k);process.exit(1)}console.log('Production exports verified:',k.length,'functions')\"","sync:skills":"node scripts/sync-skills.mjs","build:bundle":"node scripts/build-bundle.mjs","native:build":"node-gyp rebuild --directory native/safe-write","sync:version":"node scripts/sync-version.mjs","build:adapters":"node scripts/build-adapters.mjs","test:no-dogfood":"node --test $(ls test/*.test.mjs | grep -v -E 'dogfood|artifacts-safe-fs-native-seam|setup-live-samples|reference-configs')","native:build:test":"GYP_DEFINES='test_seam=1' node-gyp rebuild --directory native/safe-write","sync:public-files":"node scripts/sync-public-files.mjs","sync:skills:check":"node scripts/sync-skills.mjs --check","test:cli-contract":"node --test test/cli-contract.test.mjs","build:bundle:check":"node scripts/build-bundle.mjs --check","sync:version:check":"node scripts/sync-version.mjs --check","build:adapters:apply":"node scripts/build-adapters.mjs --apply","build:adapters:check":"node scripts/build-adapters.mjs --check","native:package-current":"node scripts/package-native-prebuild.mjs","sync:public-files:check":"node scripts/sync-public-files.mjs --check"},"_npmUser":{"name":"mzdbxqh","email":"mzdbxqh@gmail.com"},"repository":{"url":"git+https://github.com/ifoohoo/release-skill.git","type":"git"},"description":"Safe preparation and frozen GitHub/npm production publishing with full happy end verification","directories":{},"_nodeVersion":"22.23.2","dependencies":{"ajv":"8.20.0","yaml":"2.9.0","ajv-formats":"3.0.1","libnpmpublish":"11.2.0","npm-registry-fetch":"18.0.2","skill-family-contracts":"0.14.0","skill-family-harness-node":"0.14.0","skill-family-engineering-kit":"0.14.0"},"_hasShrinkwrap":false,"devDependencies":{"esbuild":"0.25.8","node-gyp":"12.3.0"},"_npmOperationalInternal":{"tmp":"tmp/release-skill_0.9.1_1788020310879_0.6570494741347848","host":"s3://npm-registry-packages-npm-production"}},"0.9.3":{"name":"release-skill","version":"0.9.3","keywords":["release","publish","governance","skill","claude-code","codex","kimi-code"],"author":{"name":"广州市风荷科技有限公司"},"license":"Apache-2.0","_id":"release-skill@0.9.3","maintainers":[{"name":"mzdbxqh","email":"mzdbxqh@gmail.com"}],"contributors":[{"name":"release-skill contributors"}],"homepage":"https://github.com/ifoohoo/release-skill#readme","bugs":{"url":"https://github.com/ifoohoo/release-skill/issues"},"bin":{"release-skill":"./bin/release-skill.mjs"},"dist":{"shasum":"54aa788b65639040dcf82383770fcbb1cb8de55a","tarball":"https://registry.npmjs.org/release-skill/-/release-skill-0.9.3.tgz","fileCount":700,"integrity":"sha512-WO7JxGTmQ9AmQCPQy3wgTtNQQDQUTlaTH9ZSzNrGrSvhMkoLt3iYZTiOnp76dTeWeHbxJJ8GAU3p6YY1wqOOMg==","signatures":[{"sig":"MEYCIQDUECf7HCEyRyTDaQTpUPJ652YZpWRj8pOoX5B3Wm0tIAIhAPNLkl1ZqgaSDBLGc7pSWFWhQl+PiJ6OMkJfbeLXruzf","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":40854810},"type":"module","engines":{"node":">=22.22.2 <23"},"scripts":{"test":"node --test $(ls test/*.test.mjs | grep -v -E 'artifacts-safe-fs-native-seam')","build":"node --check src/**/*.mjs && node scripts/build-bundle.mjs","typecheck":"node --check src/**/*.mjs bin/*.mjs","native:test":"npm run native:build:test && node --expose-gc --test test/artifacts-safe-fs-native-seam.test.mjs && npm run native:build && RELEASE_SKILL_NATIVE_DEV=1 node --test test/artifacts-safe-fs.test.mjs test/artifacts-transaction-native.test.mjs && node --input-type=module -e \"import {createRequire} from 'node:module';const a=createRequire(import.meta.url)('./native/safe-write/build/Release/safe_write.node');const k=Object.keys(a).sort();const e=['abortTemp','chmod','close','createTemp','fsync','mkdir','openDir','openRoot','readEntry','readFile','rename','rmdir','unlink'];if(k.length!==e.length||k.some((v,i)=>v!==e[i])){console.error('Production exports mismatch:',k);process.exit(1)}console.log('Production exports verified:',k.length,'functions')\"","sync:skills":"node scripts/sync-skills.mjs","build:bundle":"node scripts/build-bundle.mjs","native:build":"node-gyp rebuild --directory native/safe-write","sync:version":"node scripts/sync-version.mjs","build:adapters":"node scripts/build-adapters.mjs","test:no-dogfood":"node --test $(ls test/*.test.mjs | grep -v -E 'dogfood|artifacts-safe-fs-native-seam|setup-live-samples|reference-configs|readme-contract') && node --test test/readme-contract.test.mjs","native:build:test":"GYP_DEFINES='test_seam=1' node-gyp rebuild --directory native/safe-write","sync:public-files":"node scripts/sync-public-files.mjs","sync:skills:check":"node scripts/sync-skills.mjs --check","test:cli-contract":"node --test test/cli-contract.test.mjs","build:bundle:check":"node scripts/build-bundle.mjs --check","sync:version:check":"node scripts/sync-version.mjs --check","build:adapters:apply":"node scripts/build-adapters.mjs --apply","build:adapters:check":"node scripts/build-adapters.mjs --check","native:package-current":"node scripts/package-native-prebuild.mjs","sync:public-files:check":"node scripts/sync-public-files.mjs --check"},"_npmUser":{"name":"mzdbxqh","email":"mzdbxqh@gmail.com"},"repository":{"url":"git+https://github.com/ifoohoo/release-skill.git","type":"git"},"description":"Safe preparation and frozen GitHub/npm production publishing with full happy end verification","directories":{},"_nodeVersion":"22.23.2","dependencies":{"ajv":"8.20.0","yaml":"2.9.0","ajv-formats":"3.0.1","libnpmpublish":"11.2.0","npm-registry-fetch":"18.0.2","skill-family-contracts":"0.15.0","skill-family-harness-node":"0.15.0","skill-family-engineering-kit":"0.15.0"},"_hasShrinkwrap":false,"devDependencies":{"esbuild":"0.25.8","node-gyp":"12.3.0"},"_npmOperationalInternal":{"tmp":"tmp/release-skill_0.9.3_1788179334134_0.3440586644676591","host":"s3://npm-registry-packages-npm-production"}},"0.9.4":{"name":"release-skill","version":"0.9.4","keywords":["release","publish","governance","skill","claude-code","codex","kimi-code"],"author":{"name":"广州市风荷科技有限公司"},"license":"Apache-2.0","_id":"release-skill@0.9.4","maintainers":[{"name":"mzdbxqh","email":"mzdbxqh@gmail.com"}],"contributors":[{"name":"release-skill contributors"}],"homepage":"https://github.com/ifoohoo/release-skill#readme","bugs":{"url":"https://github.com/ifoohoo/release-skill/issues"},"bin":{"release-skill":"./bin/release-skill.mjs"},"dist":{"shasum":"1cbbdcf55bd31e02144f3c5ee96e23d7614b47af","tarball":"https://registry.npmjs.org/release-skill/-/release-skill-0.9.4.tgz","fileCount":700,"integrity":"sha512-JvFq62YTlxHR8FQfRJJTeqwWo/lw4J/aBEr+tlUYEbiVJjGseEHDKjK6S4Ur7pmkIpkC05IvXmJD5Ewygbx04A==","signatures":[{"sig":"MEUCIAjI9cV97xlqu4DZRteAGuceEqWjcNjOWVNde6tBcW85AiEA5dViR/mc5uTst55NAV6/eqbGhaAMXC9aT0SpVXQOGZ4=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":41003644},"type":"module","engines":{"node":">=22.22.2 <23"},"scripts":{"test":"node --test $(ls test/*.test.mjs | grep -v -E 'artifacts-safe-fs-native-seam')","build":"node --check src/**/*.mjs && node scripts/build-bundle.mjs","typecheck":"node --check src/**/*.mjs bin/*.mjs","native:test":"npm run native:build:test && node --expose-gc --test test/artifacts-safe-fs-native-seam.test.mjs && npm run native:build && RELEASE_SKILL_NATIVE_DEV=1 node --test test/artifacts-safe-fs.test.mjs test/artifacts-transaction-native.test.mjs && node --input-type=module -e \"import {createRequire} from 'node:module';const a=createRequire(import.meta.url)('./native/safe-write/build/Release/safe_write.node');const k=Object.keys(a).sort();const e=['abortTemp','chmod','close','createTemp','fsync','mkdir','openDir','openRoot','readEntry','readFile','rename','rmdir','unlink'];if(k.length!==e.length||k.some((v,i)=>v!==e[i])){console.error('Production exports mismatch:',k);process.exit(1)}console.log('Production exports verified:',k.length,'functions')\"","sync:skills":"node scripts/sync-skills.mjs","build:bundle":"node scripts/build-bundle.mjs","native:build":"node-gyp rebuild --directory native/safe-write","sync:version":"node scripts/sync-version.mjs","build:adapters":"node scripts/build-adapters.mjs","test:no-dogfood":"node --test $(ls test/*.test.mjs | grep -v -E 'dogfood|artifacts-safe-fs-native-seam|setup-live-samples|reference-configs|readme-contract') && node --test test/readme-contract.test.mjs","native:build:test":"GYP_DEFINES='test_seam=1' node-gyp rebuild --directory native/safe-write","sync:public-files":"node scripts/sync-public-files.mjs","sync:skills:check":"node scripts/sync-skills.mjs --check","test:cli-contract":"node --test test/cli-contract.test.mjs","build:bundle:check":"node scripts/build-bundle.mjs --check","sync:version:check":"node scripts/sync-version.mjs --check","build:adapters:apply":"node scripts/build-adapters.mjs --apply","build:adapters:check":"node scripts/build-adapters.mjs --check","native:package-current":"node scripts/package-native-prebuild.mjs","sync:public-files:check":"node scripts/sync-public-files.mjs --check"},"_npmUser":{"name":"mzdbxqh","email":"mzdbxqh@gmail.com"},"repository":{"url":"git+https://github.com/ifoohoo/release-skill.git","type":"git"},"description":"Safe preparation and frozen GitHub/npm production publishing with full happy end verification","directories":{},"_nodeVersion":"22.23.2","dependencies":{"ajv":"8.20.0","yaml":"2.9.0","ajv-formats":"3.0.1","libnpmpublish":"11.2.0","npm-registry-fetch":"18.0.2","skill-family-contracts":"0.16.0","skill-family-harness-node":"0.16.0","skill-family-engineering-kit":"0.16.0"},"_hasShrinkwrap":false,"devDependencies":{"esbuild":"0.25.8","node-gyp":"12.3.0"},"_npmOperationalInternal":{"tmp":"tmp/release-skill_0.9.4_1788210663077_0.9538961940531137","host":"s3://npm-registry-packages-npm-production"}},"0.9.5":{"name":"release-skill","version":"0.9.5","keywords":["release","publish","governance","skill","claude-code","codex","kimi-code"],"author":{"name":"广州市风荷科技有限公司"},"license":"Apache-2.0","_id":"release-skill@0.9.5","maintainers":[{"name":"mzdbxqh","email":"mzdbxqh@gmail.com"}],"contributors":[{"name":"release-skill contributors"}],"homepage":"https://github.com/ifoohoo/release-skill#readme","bugs":{"url":"https://github.com/ifoohoo/release-skill/issues"},"bin":{"release-skill":"./bin/release-skill.mjs"},"dist":{"shasum":"60084c250b736cfe3b4e10881c20c34eddfaaefe","tarball":"https://registry.npmjs.org/release-skill/-/release-skill-0.9.5.tgz","fileCount":700,"integrity":"sha512-NUcMejFGn6aZmA6dTwmeJRvK+LNcrEKZVWrd+qNQsBCKwVaN2o8fmSnR4TFiedobAnvyyphEwF2ZCT1c9ehtiw==","signatures":[{"sig":"MEUCIQCMXDXo7iGcJHCxlZUMCmAOnTvIn13WN+qXv0jp5DiZiQIgJxZXCK+VRoDzijNo0O0afwClTn0yOUeg1HzDKj2X/Z4=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":41225065},"type":"module","engines":{"node":">=22.22.2 <23"},"scripts":{"test":"node --test $(ls test/*.test.mjs | grep -v -E 'artifacts-safe-fs-native-seam')","build":"node --check src/**/*.mjs && node scripts/build-bundle.mjs","typecheck":"node --check src/**/*.mjs bin/*.mjs","native:test":"npm run native:build:test && node --expose-gc --test test/artifacts-safe-fs-native-seam.test.mjs && npm run native:build && RELEASE_SKILL_NATIVE_DEV=1 node --test test/artifacts-safe-fs.test.mjs test/artifacts-transaction-native.test.mjs && node --input-type=module -e \"import {createRequire} from 'node:module';const a=createRequire(import.meta.url)('./native/safe-write/build/Release/safe_write.node');const k=Object.keys(a).sort();const e=['abortTemp','chmod','close','createTemp','fsync','mkdir','openDir','openRoot','readEntry','readFile','rename','rmdir','unlink'];if(k.length!==e.length||k.some((v,i)=>v!==e[i])){console.error('Production exports mismatch:',k);process.exit(1)}console.log('Production exports verified:',k.length,'functions')\"","sync:skills":"node scripts/sync-skills.mjs","build:bundle":"node scripts/build-bundle.mjs","native:build":"node-gyp rebuild --directory native/safe-write","sync:version":"node scripts/sync-version.mjs","build:adapters":"node scripts/build-adapters.mjs","test:no-dogfood":"node --test $(ls test/*.test.mjs | grep -v -E 'dogfood|artifacts-safe-fs-native-seam|setup-live-samples|reference-configs|readme-contract') && node --test test/readme-contract.test.mjs","native:build:test":"GYP_DEFINES='test_seam=1' node-gyp rebuild --directory native/safe-write","sync:public-files":"node scripts/sync-public-files.mjs","sync:skills:check":"node scripts/sync-skills.mjs --check","test:cli-contract":"node --test test/cli-contract.test.mjs","build:bundle:check":"node scripts/build-bundle.mjs --check","sync:version:check":"node scripts/sync-version.mjs --check","build:adapters:apply":"node scripts/build-adapters.mjs --apply","build:adapters:check":"node scripts/build-adapters.mjs --check","native:package-current":"node scripts/package-native-prebuild.mjs","sync:public-files:check":"node scripts/sync-public-files.mjs --check"},"_npmUser":{"name":"mzdbxqh","email":"mzdbxqh@gmail.com"},"repository":{"url":"git+https://github.com/ifoohoo/release-skill.git","type":"git"},"description":"Safe preparation and frozen GitHub/npm production publishing with full happy end verification","directories":{},"_nodeVersion":"22.23.2","dependencies":{"ajv":"8.20.0","yaml":"2.9.0","ajv-formats":"3.0.1","libnpmpublish":"11.2.0","npm-registry-fetch":"18.0.2","skill-family-contracts":"0.16.0","skill-family-harness-node":"0.16.0","skill-family-engineering-kit":"0.16.0"},"_hasShrinkwrap":false,"devDependencies":{"esbuild":"0.25.8","node-gyp":"12.3.0"},"_npmOperationalInternal":{"tmp":"tmp/release-skill_0.9.5_1788305404561_0.8512826122369248","host":"s3://npm-registry-packages-npm-production"}},"0.9.6":{"name":"release-skill","version":"0.9.6","keywords":["release","publish","governance","skill","claude-code","codex","kimi-code"],"author":{"name":"广州市风荷科技有限公司"},"license":"Apache-2.0","_id":"release-skill@0.9.6","maintainers":[{"name":"mzdbxqh","email":"mzdbxqh@gmail.com"}],"contributors":[{"name":"release-skill contributors"}],"homepage":"https://github.com/ifoohoo/release-skill#readme","bugs":{"url":"https://github.com/ifoohoo/release-skill/issues"},"bin":{"release-skill":"./bin/release-skill.mjs"},"dist":{"shasum":"839a257337359388e088e12194795fa333df1fbf","tarball":"https://registry.npmjs.org/release-skill/-/release-skill-0.9.6.tgz","fileCount":700,"integrity":"sha512-2kscM81H+UG1RpaOHquEc6NmcQC4jiGY/N6NIW9ffjZ1ypFLDa2jmNlJf/GLcg+uZWjCeUeGoNhq30dQ9J/Bfg==","signatures":[{"sig":"MEYCIQCNVA0mIG7hop70PZoSvT9VGd5IXYVM3pV71wP3anJgywIhANq3h6dtwdgzqOKLL2zD22kJz1jUE6RDsjSTuW4kpXls","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":41274977},"type":"module","engines":{"node":">=22.22.2 <23"},"scripts":{"test":"node --test $(ls test/*.test.mjs | grep -v -E 'artifacts-safe-fs-native-seam')","build":"node --check src/**/*.mjs && node scripts/build-bundle.mjs","typecheck":"node --check src/**/*.mjs bin/*.mjs","native:test":"npm run native:build:test && node --expose-gc --test test/artifacts-safe-fs-native-seam.test.mjs && npm run native:build && RELEASE_SKILL_NATIVE_DEV=1 node --test test/artifacts-safe-fs.test.mjs test/artifacts-transaction-native.test.mjs && node --input-type=module -e \"import {createRequire} from 'node:module';const a=createRequire(import.meta.url)('./native/safe-write/build/Release/safe_write.node');const k=Object.keys(a).sort();const e=['abortTemp','chmod','close','createTemp','fsync','mkdir','openDir','openRoot','readEntry','readFile','rename','rmdir','unlink'];if(k.length!==e.length||k.some((v,i)=>v!==e[i])){console.error('Production exports mismatch:',k);process.exit(1)}console.log('Production exports verified:',k.length,'functions')\"","sync:skills":"node scripts/sync-skills.mjs","build:bundle":"node scripts/build-bundle.mjs","native:build":"node-gyp rebuild --directory native/safe-write","sync:version":"node scripts/sync-version.mjs","build:adapters":"node scripts/build-adapters.mjs","test:no-dogfood":"node --test $(ls test/*.test.mjs | grep -v -E 'dogfood|artifacts-safe-fs-native-seam|setup-live-samples|reference-configs|readme-contract') && node --test test/readme-contract.test.mjs","native:build:test":"GYP_DEFINES='test_seam=1' node-gyp rebuild --directory native/safe-write","sync:public-files":"node scripts/sync-public-files.mjs","sync:skills:check":"node scripts/sync-skills.mjs --check","test:cli-contract":"node --test test/cli-contract.test.mjs","build:bundle:check":"node scripts/build-bundle.mjs --check","sync:version:check":"node scripts/sync-version.mjs --check","build:adapters:apply":"node scripts/build-adapters.mjs --apply","build:adapters:check":"node scripts/build-adapters.mjs --check","native:package-current":"node scripts/package-native-prebuild.mjs","sync:public-files:check":"node scripts/sync-public-files.mjs --check"},"_npmUser":{"name":"mzdbxqh","email":"mzdbxqh@gmail.com"},"repository":{"url":"git+https://github.com/ifoohoo/release-skill.git","type":"git"},"description":"Safe preparation and frozen GitHub/npm production publishing with full happy end verification","directories":{},"_nodeVersion":"22.23.2","dependencies":{"ajv":"8.20.0","yaml":"2.9.0","ajv-formats":"3.0.1","libnpmpublish":"11.2.0","npm-registry-fetch":"18.0.2","skill-family-contracts":"0.16.0","skill-family-harness-node":"0.16.0","skill-family-engineering-kit":"0.16.0"},"_hasShrinkwrap":false,"devDependencies":{"esbuild":"0.25.8","node-gyp":"12.3.0"},"_npmOperationalInternal":{"tmp":"tmp/release-skill_0.9.6_1788328419744_0.6129409368672221","host":"s3://npm-registry-packages-npm-production"}},"0.9.7":{"name":"release-skill","version":"0.9.7","keywords":["release","publish","governance","skill","claude-code","codex","kimi-code"],"author":{"name":"广州市风荷科技有限公司"},"license":"Apache-2.0","_id":"release-skill@0.9.7","maintainers":[{"name":"mzdbxqh","email":"mzdbxqh@gmail.com"}],"contributors":[{"name":"release-skill contributors"}],"homepage":"https://github.com/ifoohoo/release-skill#readme","bugs":{"url":"https://github.com/ifoohoo/release-skill/issues"},"bin":{"release-skill":"./bin/release-skill.mjs"},"dist":{"shasum":"c45cba2a69c4e65a1d5b916e331d6495cb8bb66e","tarball":"https://registry.npmjs.org/release-skill/-/release-skill-0.9.7.tgz","fileCount":700,"integrity":"sha512-boxr92M3avR+67Bn8D4JHXpkkNxYvWfvoFGy4TXhyUN+3FhYHV9TCqT4qTuu2rrsbVv9zXJTRfH9tCsC6K4eJw==","signatures":[{"sig":"MEUCIFZqFPRVPlC3gNOcgdd6NUfZlOBLI80H42hxMCslWtCLAiEAiAAzUfdT3uG3Kdb8fDFIcExmZCCl7PhH7+wGAoCvGKo=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":41302492},"type":"module","engines":{"node":">=22.22.2 <23"},"scripts":{"test":"node --test $(ls test/*.test.mjs | grep -v -E 'artifacts-safe-fs-native-seam')","build":"node --check src/**/*.mjs && node scripts/build-bundle.mjs","typecheck":"node --check src/**/*.mjs bin/*.mjs","native:test":"npm run native:build:test && node --expose-gc --test test/artifacts-safe-fs-native-seam.test.mjs && npm run native:build && RELEASE_SKILL_NATIVE_DEV=1 node --test test/artifacts-safe-fs.test.mjs test/artifacts-transaction-native.test.mjs && node --input-type=module -e \"import {createRequire} from 'node:module';const a=createRequire(import.meta.url)('./native/safe-write/build/Release/safe_write.node');const k=Object.keys(a).sort();const e=['abortTemp','chmod','close','createTemp','fsync','mkdir','openDir','openRoot','readEntry','readFile','rename','rmdir','unlink'];if(k.length!==e.length||k.some((v,i)=>v!==e[i])){console.error('Production exports mismatch:',k);process.exit(1)}console.log('Production exports verified:',k.length,'functions')\"","sync:skills":"node scripts/sync-skills.mjs","build:bundle":"node scripts/build-bundle.mjs","native:build":"node-gyp rebuild --directory native/safe-write","sync:version":"node scripts/sync-version.mjs","build:adapters":"node scripts/build-adapters.mjs","test:no-dogfood":"node --test $(ls test/*.test.mjs | grep -v -E 'dogfood|artifacts-safe-fs-native-seam|setup-live-samples|reference-configs|readme-contract') && node --test test/readme-contract.test.mjs","native:build:test":"GYP_DEFINES='test_seam=1' node-gyp rebuild --directory native/safe-write","sync:public-files":"node scripts/sync-public-files.mjs","sync:skills:check":"node scripts/sync-skills.mjs --check","test:cli-contract":"node --test test/cli-contract.test.mjs","build:bundle:check":"node scripts/build-bundle.mjs --check","sync:version:check":"node scripts/sync-version.mjs --check","build:adapters:apply":"node scripts/build-adapters.mjs --apply","build:adapters:check":"node scripts/build-adapters.mjs --check","native:package-current":"node scripts/package-native-prebuild.mjs","sync:public-files:check":"node scripts/sync-public-files.mjs --check"},"_npmUser":{"name":"mzdbxqh","email":"mzdbxqh@gmail.com"},"repository":{"url":"git+https://github.com/ifoohoo/release-skill.git","type":"git"},"description":"Safe preparation and frozen GitHub/npm production publishing with full happy end verification","directories":{},"_nodeVersion":"22.23.2","dependencies":{"ajv":"8.20.0","yaml":"2.9.0","ajv-formats":"3.0.1","libnpmpublish":"11.2.0","npm-registry-fetch":"18.0.2","skill-family-contracts":"0.16.0","skill-family-harness-node":"0.16.0","skill-family-engineering-kit":"0.16.0"},"_hasShrinkwrap":false,"devDependencies":{"esbuild":"0.25.8","node-gyp":"12.3.0"},"_npmOperationalInternal":{"tmp":"tmp/release-skill_0.9.7_1788361878830_0.8275525161075561","host":"s3://npm-registry-packages-npm-production"}},"0.9.8":{"name":"release-skill","version":"0.9.8","keywords":["release","publish","governance","skill","claude-code","codex","kimi-code"],"author":{"name":"广州市风荷科技有限公司"},"license":"Apache-2.0","_id":"release-skill@0.9.8","maintainers":[{"name":"mzdbxqh","email":"mzdbxqh@gmail.com"}],"contributors":[{"name":"release-skill contributors"}],"homepage":"https://github.com/ifoohoo/release-skill#readme","bugs":{"url":"https://github.com/ifoohoo/release-skill/issues"},"bin":{"release-skill":"./bin/release-skill.mjs"},"dist":{"shasum":"d325477d81082e39a834a2bdacf902e7ce7b24f3","tarball":"https://registry.npmjs.org/release-skill/-/release-skill-0.9.8.tgz","fileCount":700,"integrity":"sha512-GP0EpD0ZiW0Ve0O7cDF4rDPCg0TxUbfBbKV3UZkm4pCGkcaGHbVysfKP8y4AnU/TzjXsOgFtspckJ2pz9YyXSg==","signatures":[{"sig":"MEUCIBiVstMV6svl0LdYgPhPP9hy8JMOpARI/mpvEuM+TjG3AiEAyO3vUvb2DS4t3flPhD7dRb1zCUA6izZI+TI2f47OsR8=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":41370536},"type":"module","engines":{"node":">=22.22.2 <23"},"scripts":{"test":"node --test $(ls test/*.test.mjs | grep -v -E 'artifacts-safe-fs-native-seam')","build":"node --check src/**/*.mjs && node scripts/build-bundle.mjs","typecheck":"node --check src/**/*.mjs bin/*.mjs","native:test":"npm run native:build:test && node --expose-gc --test test/artifacts-safe-fs-native-seam.test.mjs && npm run native:build && RELEASE_SKILL_NATIVE_DEV=1 node --test test/artifacts-safe-fs.test.mjs test/artifacts-transaction-native.test.mjs && node --input-type=module -e \"import {createRequire} from 'node:module';const a=createRequire(import.meta.url)('./native/safe-write/build/Release/safe_write.node');const k=Object.keys(a).sort();const e=['abortTemp','chmod','close','createTemp','fsync','mkdir','openDir','openRoot','readEntry','readFile','rename','rmdir','unlink'];if(k.length!==e.length||k.some((v,i)=>v!==e[i])){console.error('Production exports mismatch:',k);process.exit(1)}console.log('Production exports verified:',k.length,'functions')\"","sync:skills":"node scripts/sync-skills.mjs","build:bundle":"node scripts/build-bundle.mjs","native:build":"node-gyp rebuild --directory native/safe-write","sync:version":"node scripts/sync-version.mjs","build:adapters":"node scripts/build-adapters.mjs","test:no-dogfood":"node --test $(ls test/*.test.mjs | grep -v -E 'dogfood|artifacts-safe-fs-native-seam|setup-live-samples|reference-configs|readme-contract') && node --test test/readme-contract.test.mjs","native:build:test":"GYP_DEFINES='test_seam=1' node-gyp rebuild --directory native/safe-write","sync:public-files":"node scripts/sync-public-files.mjs","sync:skills:check":"node scripts/sync-skills.mjs --check","test:cli-contract":"node --test test/cli-contract.test.mjs","build:bundle:check":"node scripts/build-bundle.mjs --check","sync:version:check":"node scripts/sync-version.mjs --check","build:adapters:apply":"node scripts/build-adapters.mjs --apply","build:adapters:check":"node scripts/build-adapters.mjs --check","native:package-current":"node scripts/package-native-prebuild.mjs","sync:public-files:check":"node scripts/sync-public-files.mjs --check"},"_npmUser":{"name":"mzdbxqh","email":"mzdbxqh@gmail.com"},"repository":{"url":"git+https://github.com/ifoohoo/release-skill.git","type":"git"},"description":"Safe preparation and frozen GitHub/npm production publishing with full happy end verification","directories":{},"_nodeVersion":"22.23.2","dependencies":{"ajv":"8.20.0","yaml":"2.9.0","ajv-formats":"3.0.1","libnpmpublish":"11.2.0","npm-registry-fetch":"18.0.2","skill-family-contracts":"0.16.0","skill-family-harness-node":"0.16.0","skill-family-engineering-kit":"0.16.0"},"_hasShrinkwrap":false,"devDependencies":{"esbuild":"0.25.8","node-gyp":"12.3.0"},"_npmOperationalInternal":{"tmp":"tmp/release-skill_0.9.8_1788501839412_0.8907724698385149","host":"s3://npm-registry-packages-npm-production"}},"0.9.9":{"name":"release-skill","version":"0.9.9","keywords":["release","publish","governance","skill","claude-code","codex","kimi-code"],"author":{"name":"广州市风荷科技有限公司"},"license":"Apache-2.0","_id":"release-skill@0.9.9","maintainers":[{"name":"mzdbxqh","email":"mzdbxqh@gmail.com"}],"contributors":[{"name":"release-skill contributors"}],"homepage":"https://github.com/ifoohoo/release-skill#readme","bugs":{"url":"https://github.com/ifoohoo/release-skill/issues"},"bin":{"release-skill":"./bin/release-skill.mjs"},"dist":{"shasum":"51f3fd99708f9749eed105a52b66e3120d679125","tarball":"https://registry.npmjs.org/release-skill/-/release-skill-0.9.9.tgz","fileCount":700,"integrity":"sha512-I6atHptw+LOMfu61d55o0P7JmxZ8503HAnWG/ekVzcw8BKT9i9/Ww4OWpNYa1EiRdOxiVZpE8/fYpr+N0BQYlA==","signatures":[{"sig":"MEUCIDrvYEILX9e0EiPopEp1ot6VyK1XKDUWM0bINfHrNrzOAiEApopDivXXbm+eo+3acZf7xpR6nIPozfDXEZZLKTGTbQQ=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":41377066},"type":"module","engines":{"node":">=22.22.2 <23"},"scripts":{"test":"node --test $(ls test/*.test.mjs | grep -v -E 'artifacts-safe-fs-native-seam')","build":"node --check src/**/*.mjs && node scripts/build-bundle.mjs","typecheck":"node --check src/**/*.mjs bin/*.mjs","native:test":"npm run native:build:test && node --expose-gc --test test/artifacts-safe-fs-native-seam.test.mjs && npm run native:build && RELEASE_SKILL_NATIVE_DEV=1 node --test test/artifacts-safe-fs.test.mjs test/artifacts-transaction-native.test.mjs && node --input-type=module -e \"import {createRequire} from 'node:module';const a=createRequire(import.meta.url)('./native/safe-write/build/Release/safe_write.node');const k=Object.keys(a).sort();const e=['abortTemp','chmod','close','createTemp','fsync','mkdir','openDir','openRoot','readEntry','readFile','rename','rmdir','unlink'];if(k.length!==e.length||k.some((v,i)=>v!==e[i])){console.error('Production exports mismatch:',k);process.exit(1)}console.log('Production exports verified:',k.length,'functions')\"","sync:skills":"node scripts/sync-skills.mjs","build:bundle":"node scripts/build-bundle.mjs","native:build":"node-gyp rebuild --directory native/safe-write","sync:version":"node scripts/sync-version.mjs","build:adapters":"node scripts/build-adapters.mjs","test:no-dogfood":"node --test $(ls test/*.test.mjs | grep -v -E 'dogfood|artifacts-safe-fs-native-seam|setup-live-samples|reference-configs|readme-contract') && node --test test/readme-contract.test.mjs","native:build:test":"GYP_DEFINES='test_seam=1' node-gyp rebuild --directory native/safe-write","sync:public-files":"node scripts/sync-public-files.mjs","sync:skills:check":"node scripts/sync-skills.mjs --check","test:cli-contract":"node --test test/cli-contract.test.mjs","build:bundle:check":"node scripts/build-bundle.mjs --check","sync:version:check":"node scripts/sync-version.mjs --check","build:adapters:apply":"node scripts/build-adapters.mjs --apply","build:adapters:check":"node scripts/build-adapters.mjs --check","native:package-current":"node scripts/package-native-prebuild.mjs","sync:public-files:check":"node scripts/sync-public-files.mjs --check"},"_npmUser":{"name":"mzdbxqh","email":"mzdbxqh@gmail.com"},"repository":{"url":"git+https://github.com/ifoohoo/release-skill.git","type":"git"},"description":"Safe preparation and frozen GitHub/npm production publishing with full happy end verification","directories":{},"_nodeVersion":"22.23.2","dependencies":{"ajv":"8.20.0","yaml":"2.9.0","ajv-formats":"3.0.1","libnpmpublish":"11.2.0","npm-registry-fetch":"18.0.2","skill-family-contracts":"0.16.0","skill-family-harness-node":"0.16.0","skill-family-engineering-kit":"0.16.0"},"_hasShrinkwrap":false,"devDependencies":{"esbuild":"0.25.8","node-gyp":"12.3.0"},"_npmOperationalInternal":{"tmp":"tmp/release-skill_0.9.9_1788509548966_0.6552027903419928","host":"s3://npm-registry-packages-npm-production"}},"0.9.10":{"name":"release-skill","version":"0.9.10","keywords":["release","publish","governance","skill","claude-code","codex","kimi-code"],"author":{"name":"广州市风荷科技有限公司"},"license":"Apache-2.0","_id":"release-skill@0.9.10","maintainers":[{"name":"mzdbxqh","email":"mzdbxqh@gmail.com"}],"contributors":[{"name":"release-skill contributors"}],"homepage":"https://github.com/ifoohoo/release-skill#readme","bugs":{"url":"https://github.com/ifoohoo/release-skill/issues"},"bin":{"release-skill":"./bin/release-skill.mjs"},"dist":{"shasum":"0fa2906c76c49f49740b8ff1a2d046d872257856","tarball":"https://registry.npmjs.org/release-skill/-/release-skill-0.9.10.tgz","fileCount":697,"integrity":"sha512-TmM0/IUHTQ8n3JHjPeyUt9CrJkF2DpVpTfU83qGJrHv9OFQRjJGn7rN1LO1VSv8OEEeFgzGh+lY4HDCMLDox4w==","signatures":[{"sig":"MEUCIAQFs7mt68l6V/jWBcs+K1vbZrR8GyN/SlDwQUSPd/fwAiEAn/L5cnyLCmt3z2EcDXjiKQ019KZYfUEbUlgj4KistWA=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":41372559},"type":"module","engines":{"node":">=22.22.2 <23"},"scripts":{"test":"node --test $(ls test/*.test.mjs | grep -v -E 'artifacts-safe-fs-native-seam')","build":"node --check src/**/*.mjs && node scripts/build-bundle.mjs","typecheck":"node --check src/**/*.mjs bin/*.mjs","native:test":"npm run native:build:test && node --expose-gc --test test/artifacts-safe-fs-native-seam.test.mjs && npm run native:build && RELEASE_SKILL_NATIVE_DEV=1 node --test test/artifacts-safe-fs.test.mjs test/artifacts-transaction-native.test.mjs && node --input-type=module -e \"import {createRequire} from 'node:module';const a=createRequire(import.meta.url)('./native/safe-write/build/Release/safe_write.node');const k=Object.keys(a).sort();const e=['abortTemp','chmod','close','createTemp','fsync','mkdir','openDir','openRoot','readEntry','readFile','rename','rmdir','unlink'];if(k.length!==e.length||k.some((v,i)=>v!==e[i])){console.error('Production exports mismatch:',k);process.exit(1)}console.log('Production exports verified:',k.length,'functions')\"","sync:skills":"node scripts/sync-skills.mjs","build:bundle":"node scripts/build-bundle.mjs","native:build":"node-gyp rebuild --directory native/safe-write","sync:version":"node scripts/sync-version.mjs","build:adapters":"node scripts/build-adapters.mjs","test:no-dogfood":"node --test $(ls test/*.test.mjs | grep -v -E 'dogfood|artifacts-safe-fs-native-seam|setup-live-samples|reference-configs|readme-contract') && node --test test/readme-contract.test.mjs","native:build:test":"GYP_DEFINES='test_seam=1' node-gyp rebuild --directory native/safe-write","sync:public-files":"node scripts/sync-public-files.mjs","sync:skills:check":"node scripts/sync-skills.mjs --check","test:cli-contract":"node --test test/cli-contract.test.mjs","build:bundle:check":"node scripts/build-bundle.mjs --check","sync:version:check":"node scripts/sync-version.mjs --check","build:adapters:apply":"node scripts/build-adapters.mjs --apply","build:adapters:check":"node scripts/build-adapters.mjs --check","native:package-current":"node scripts/package-native-prebuild.mjs","sync:public-files:check":"node scripts/sync-public-files.mjs --check"},"_npmUser":{"name":"mzdbxqh","email":"mzdbxqh@gmail.com"},"repository":{"url":"git+https://github.com/ifoohoo/release-skill.git","type":"git"},"description":"Safe preparation and frozen GitHub/npm production publishing with full happy end verification","directories":{},"_nodeVersion":"22.23.2","dependencies":{"ajv":"8.20.0","yaml":"2.9.0","ajv-formats":"3.0.1","libnpmpublish":"11.2.0","npm-registry-fetch":"18.0.2","skill-family-contracts":"0.16.0","skill-family-harness-node":"0.16.0","skill-family-engineering-kit":"0.16.0"},"_hasShrinkwrap":false,"devDependencies":{"esbuild":"0.25.8","node-gyp":"12.3.0"},"_npmOperationalInternal":{"tmp":"tmp/release-skill_0.9.10_1788516800302_0.8006761744087854","host":"s3://npm-registry-packages-npm-production"}},"0.9.11":{"name":"release-skill","version":"0.9.11","keywords":["release","publish","governance","skill","claude-code","codex","kimi-code"],"author":{"name":"广州市风荷科技有限公司"},"license":"Apache-2.0","_id":"release-skill@0.9.11","maintainers":[{"name":"mzdbxqh","email":"mzdbxqh@gmail.com"}],"contributors":[{"name":"release-skill contributors"}],"homepage":"https://github.com/ifoohoo/release-skill#readme","bugs":{"url":"https://github.com/ifoohoo/release-skill/issues"},"bin":{"release-skill":"./bin/release-skill.mjs"},"dist":{"shasum":"f7716ea08d7a1e78e1bdc7fa33071cfd819113a9","tarball":"https://registry.npmjs.org/release-skill/-/release-skill-0.9.11.tgz","fileCount":702,"integrity":"sha512-8HVsca+qDJ1jnKPGPSTVCl3CCM3CwngjKqrxY0EnsNOr/+u3NGJBg/2BNb76oFp6OuuIxjPRT269BD1hSCgo9w==","signatures":[{"sig":"MEUCIEnGO68+aw0YS/fTsD0R0OukPmooEf2F8OpFnk2uVDpKAiEAhDz9DKv2HqReAWg+PKJoDIxgWAKJeCXgCCIEGGdQkPQ=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":41424941},"type":"module","engines":{"node":">=22.22.2 <23"},"scripts":{"test":"node --test $(ls test/*.test.mjs | grep -v -E 'artifacts-safe-fs-native-seam')","build":"node --check src/**/*.mjs && node scripts/build-bundle.mjs","typecheck":"node --check src/**/*.mjs bin/*.mjs","native:test":"npm run native:build:test && node --expose-gc --test test/artifacts-safe-fs-native-seam.test.mjs && npm run native:build && RELEASE_SKILL_NATIVE_DEV=1 node --test test/artifacts-safe-fs.test.mjs test/artifacts-transaction-native.test.mjs && node --input-type=module -e \"import {createRequire} from 'node:module';const a=createRequire(import.meta.url)('./native/safe-write/build/Release/safe_write.node');const k=Object.keys(a).sort();const e=['abortTemp','chmod','close','createTemp','fsync','mkdir','openDir','openRoot','readEntry','readFile','rename','rmdir','unlink'];if(k.length!==e.length||k.some((v,i)=>v!==e[i])){console.error('Production exports mismatch:',k);process.exit(1)}console.log('Production exports verified:',k.length,'functions')\"","sync:skills":"node scripts/sync-skills.mjs","build:bundle":"node scripts/build-bundle.mjs","native:build":"node-gyp rebuild --directory native/safe-write","sync:version":"node scripts/sync-version.mjs","build:adapters":"node scripts/build-adapters.mjs","test:no-dogfood":"node --test $(ls test/*.test.mjs | grep -v -E 'dogfood|artifacts-safe-fs-native-seam|setup-live-samples|reference-configs|readme-contract') && node --test test/readme-contract.test.mjs","native:build:test":"GYP_DEFINES='test_seam=1' node-gyp rebuild --directory native/safe-write","sync:public-files":"node scripts/sync-public-files.mjs","sync:skills:check":"node scripts/sync-skills.mjs --check","test:cli-contract":"node --test test/cli-contract.test.mjs","build:bundle:check":"node scripts/build-bundle.mjs --check","sync:version:check":"node scripts/sync-version.mjs --check","build:adapters:apply":"node scripts/build-adapters.mjs --apply","build:adapters:check":"node scripts/build-adapters.mjs --check","native:package-current":"node scripts/package-native-prebuild.mjs","sync:public-files:check":"node scripts/sync-public-files.mjs --check"},"_npmUser":{"name":"mzdbxqh","email":"mzdbxqh@gmail.com"},"repository":{"url":"git+https://github.com/ifoohoo/release-skill.git","type":"git"},"description":"Safe preparation and frozen GitHub/npm production publishing with full happy end verification","directories":{},"_nodeVersion":"22.23.2","dependencies":{"ajv":"8.20.0","yaml":"2.9.0","ajv-formats":"3.0.1","libnpmpublish":"11.2.0","npm-registry-fetch":"18.0.2","skill-family-contracts":"0.17.0","skill-family-harness-node":"0.17.0","skill-family-engineering-kit":"0.17.0"},"_hasShrinkwrap":false,"devDependencies":{"esbuild":"0.25.8","node-gyp":"12.3.0"},"_npmOperationalInternal":{"tmp":"tmp/release-skill_0.9.11_1788530704582_0.2783079780226132","host":"s3://npm-registry-packages-npm-production"}},"0.9.12":{"name":"release-skill","version":"0.9.12","keywords":["release","publish","governance","skill","claude-code","codex","kimi-code"],"author":{"name":"广州市风荷科技有限公司"},"license":"Apache-2.0","_id":"release-skill@0.9.12","maintainers":[{"name":"mzdbxqh","email":"mzdbxqh@gmail.com"}],"contributors":[{"name":"release-skill contributors"}],"homepage":"https://github.com/ifoohoo/release-skill#readme","bugs":{"url":"https://github.com/ifoohoo/release-skill/issues"},"bin":{"release-skill":"./bin/release-skill.mjs"},"dist":{"shasum":"7aabf32a4aedacc0758279c8bb049c1711e68e7c","tarball":"https://registry.npmjs.org/release-skill/-/release-skill-0.9.12.tgz","fileCount":703,"integrity":"sha512-Ht+LYYBPTqtQUD9QfugrJVKm8Fy/iK53b3K3lEiMmPzSS0yrxMpOdPpqsn4bezKiM4wZxLDmQF8Wdgs5MfFe6Q==","signatures":[{"sig":"MEYCIQCFkY27tfTZBQwHLE1FrPy4pbQsPi1u+zmgCrU2T53FzQIhAJlulGHlhnJ8TCJ24Z3kit2Ev1hGRG5d82WZUoKFB7k8","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":41425479},"type":"module","engines":{"node":">=22.22.2 <23"},"scripts":{"test":"node --test $(ls test/*.test.mjs | grep -v -E 'artifacts-safe-fs-native-seam')","build":"node --check src/**/*.mjs && node scripts/build-bundle.mjs","typecheck":"node --check src/**/*.mjs bin/*.mjs","native:test":"npm run native:build:test && node --expose-gc --test test/artifacts-safe-fs-native-seam.test.mjs && npm run native:build && RELEASE_SKILL_NATIVE_DEV=1 node --test test/artifacts-safe-fs.test.mjs test/artifacts-transaction-native.test.mjs && node --input-type=module -e \"import {createRequire} from 'node:module';const a=createRequire(import.meta.url)('./native/safe-write/build/Release/safe_write.node');const k=Object.keys(a).sort();const e=['abortTemp','chmod','close','createTemp','fsync','mkdir','openDir','openRoot','readEntry','readFile','rename','rmdir','unlink'];if(k.length!==e.length||k.some((v,i)=>v!==e[i])){console.error('Production exports mismatch:',k);process.exit(1)}console.log('Production exports verified:',k.length,'functions')\"","sync:skills":"node scripts/sync-skills.mjs","build:bundle":"node scripts/build-bundle.mjs","native:build":"node-gyp rebuild --directory native/safe-write","sync:version":"node scripts/sync-version.mjs","build:adapters":"node scripts/build-adapters.mjs","test:no-dogfood":"node --test $(ls test/*.test.mjs | grep -v -E 'dogfood|artifacts-safe-fs-native-seam|setup-live-samples|reference-configs|readme-contract') && node --test test/readme-contract.test.mjs","native:build:test":"GYP_DEFINES='test_seam=1' node-gyp rebuild --directory native/safe-write","sync:public-files":"node scripts/sync-public-files.mjs","sync:skills:check":"node scripts/sync-skills.mjs --check","test:cli-contract":"node --test test/cli-contract.test.mjs","build:bundle:check":"node scripts/build-bundle.mjs --check","sync:version:check":"node scripts/sync-version.mjs --check","build:adapters:apply":"node scripts/build-adapters.mjs --apply","build:adapters:check":"node scripts/build-adapters.mjs --check","native:package-current":"node scripts/package-native-prebuild.mjs","sync:public-files:check":"node scripts/sync-public-files.mjs --check"},"_npmUser":{"name":"mzdbxqh","email":"mzdbxqh@gmail.com"},"repository":{"url":"git+https://github.com/ifoohoo/release-skill.git","type":"git"},"description":"Safe preparation and frozen GitHub/npm production publishing with full happy end verification","directories":{},"_nodeVersion":"22.23.2","dependencies":{"ajv":"8.20.0","yaml":"2.9.0","ajv-formats":"3.0.1","libnpmpublish":"11.2.0","npm-registry-fetch":"18.0.2","skill-family-contracts":"0.17.0","skill-family-harness-node":"0.17.0","skill-family-engineering-kit":"0.17.0"},"_hasShrinkwrap":false,"devDependencies":{"esbuild":"0.25.8","node-gyp":"12.3.0"},"_npmOperationalInternal":{"tmp":"tmp/release-skill_0.9.12_1788532683631_0.10243878562098963","host":"s3://npm-registry-packages-npm-production"}},"0.9.13":{"name":"release-skill","version":"0.9.13","keywords":["release","publish","governance","skill","claude-code","codex","kimi-code"],"author":{"name":"广州市风荷科技有限公司"},"license":"Apache-2.0","_id":"release-skill@0.9.13","maintainers":[{"name":"mzdbxqh","email":"mzdbxqh@gmail.com"}],"contributors":[{"name":"release-skill contributors"}],"homepage":"https://github.com/ifoohoo/release-skill#readme","bugs":{"url":"https://github.com/ifoohoo/release-skill/issues"},"bin":{"release-skill":"./bin/release-skill.mjs"},"dist":{"shasum":"3abd97aa17fc027ce89a839c752915c97ff0f237","tarball":"https://registry.npmjs.org/release-skill/-/release-skill-0.9.13.tgz","fileCount":703,"integrity":"sha512-u4wVbDVSp8AHRNNKgMUUFyyfoaKY8BO2ZwPmUc7H5wSH7IN0ymH/P8xfGK0YsOgomigVmAyBIQHDSU0ABGAuHg==","signatures":[{"sig":"MEYCIQCkovGXvVn7EclIxP8PuFv1hZ40N4fHUrNvdNY/C+pheAIhAJy2JNbLPN46gw/NJ6cUHQqsBml8BNSCF5tpFKoXzzXb","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":41428756},"type":"module","engines":{"node":">=22.22.2 <23"},"scripts":{"test":"node --test $(ls test/*.test.mjs | grep -v -E 'artifacts-safe-fs-native-seam')","build":"node --check src/**/*.mjs && node scripts/build-bundle.mjs","typecheck":"node --check src/**/*.mjs bin/*.mjs","native:test":"npm run native:build:test && node --expose-gc --test test/artifacts-safe-fs-native-seam.test.mjs && npm run native:build && RELEASE_SKILL_NATIVE_DEV=1 node --test test/artifacts-safe-fs.test.mjs test/artifacts-transaction-native.test.mjs && node --input-type=module -e \"import {createRequire} from 'node:module';const a=createRequire(import.meta.url)('./native/safe-write/build/Release/safe_write.node');const k=Object.keys(a).sort();const e=['abortTemp','chmod','close','createTemp','fsync','mkdir','openDir','openRoot','readEntry','readFile','rename','rmdir','unlink'];if(k.length!==e.length||k.some((v,i)=>v!==e[i])){console.error('Production exports mismatch:',k);process.exit(1)}console.log('Production exports verified:',k.length,'functions')\"","sync:skills":"node scripts/sync-skills.mjs","build:bundle":"node scripts/build-bundle.mjs","native:build":"node-gyp rebuild --directory native/safe-write","sync:version":"node scripts/sync-version.mjs","build:adapters":"node scripts/build-adapters.mjs","test:no-dogfood":"node --test $(ls test/*.test.mjs | grep -v -E 'dogfood|artifacts-safe-fs-native-seam|setup-live-samples|reference-configs|readme-contract') && node --test test/readme-contract.test.mjs","native:build:test":"GYP_DEFINES='test_seam=1' node-gyp rebuild --directory native/safe-write","sync:public-files":"node scripts/sync-public-files.mjs","sync:skills:check":"node scripts/sync-skills.mjs --check","test:cli-contract":"node --test test/cli-contract.test.mjs","build:bundle:check":"node scripts/build-bundle.mjs --check","sync:version:check":"node scripts/sync-version.mjs --check","build:adapters:apply":"node scripts/build-adapters.mjs --apply","build:adapters:check":"node scripts/build-adapters.mjs --check","native:package-current":"node scripts/package-native-prebuild.mjs","sync:public-files:check":"node scripts/sync-public-files.mjs --check"},"_npmUser":{"name":"mzdbxqh","email":"mzdbxqh@gmail.com"},"repository":{"url":"git+https://github.com/ifoohoo/release-skill.git","type":"git"},"description":"Safe preparation and frozen GitHub/npm production publishing with full happy end verification","directories":{},"_nodeVersion":"22.23.2","dependencies":{"ajv":"8.20.0","yaml":"2.9.0","ajv-formats":"3.0.1","libnpmpublish":"11.2.0","npm-registry-fetch":"18.0.2","skill-family-contracts":"0.17.0","skill-family-harness-node":"0.17.0","skill-family-engineering-kit":"0.17.0"},"_hasShrinkwrap":false,"devDependencies":{"esbuild":"0.25.8","node-gyp":"12.3.0"},"_npmOperationalInternal":{"tmp":"tmp/release-skill_0.9.13_1788573234840_0.8607994946638717","host":"s3://npm-registry-packages-npm-production"}},"0.9.14":{"name":"release-skill","version":"0.9.14","keywords":["release","publish","governance","skill","claude-code","codex","kimi-code"],"author":{"name":"广州市风荷科技有限公司"},"license":"Apache-2.0","_id":"release-skill@0.9.14","maintainers":[{"name":"mzdbxqh","email":"mzdbxqh@gmail.com"}],"contributors":[{"name":"release-skill contributors"}],"homepage":"https://github.com/ifoohoo/release-skill#readme","bugs":{"url":"https://github.com/ifoohoo/release-skill/issues"},"bin":{"release-skill":"./bin/release-skill.mjs"},"dist":{"shasum":"179cbfca60147895c8bae3042014e789894b2533","tarball":"https://registry.npmjs.org/release-skill/-/release-skill-0.9.14.tgz","fileCount":704,"integrity":"sha512-46TPtXJEmW1sQsYp25M6CprbpO7Bogm0tb7qajiLbLxHW0Ngn6taZfPzEmeoKJBf7B2ZndOFDlMKeaFbMGiC6A==","signatures":[{"sig":"MEQCIBoLAeStIx8B272l1xdhdJ7ow4+5VV2Yo28lPkBFa8nwAiBDv0hdswDtGmFkbycA3flYgYG7quEKm9b6r66NQslYpQ==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":41584591},"type":"module","engines":{"node":">=22.22.2 <23"},"scripts":{"test":"node --test $(ls test/*.test.mjs | grep -v -E 'artifacts-safe-fs-native-seam')","build":"node --check src/**/*.mjs && node scripts/build-bundle.mjs","typecheck":"node --check src/**/*.mjs bin/*.mjs","native:test":"npm run native:build:test && node --expose-gc --test test/artifacts-safe-fs-native-seam.test.mjs && npm run native:build && RELEASE_SKILL_NATIVE_DEV=1 node --test test/artifacts-safe-fs.test.mjs test/artifacts-transaction-native.test.mjs && node --input-type=module -e \"import {createRequire} from 'node:module';const a=createRequire(import.meta.url)('./native/safe-write/build/Release/safe_write.node');const k=Object.keys(a).sort();const e=['abortTemp','chmod','close','createTemp','fsync','mkdir','openDir','openRoot','readEntry','readFile','rename','rmdir','unlink'];if(k.length!==e.length||k.some((v,i)=>v!==e[i])){console.error('Production exports mismatch:',k);process.exit(1)}console.log('Production exports verified:',k.length,'functions')\"","sync:skills":"node scripts/sync-skills.mjs","build:bundle":"node scripts/build-bundle.mjs","native:build":"node-gyp rebuild --directory native/safe-write","sync:version":"node scripts/sync-version.mjs","build:adapters":"node scripts/build-adapters.mjs","test:no-dogfood":"node --test $(ls test/*.test.mjs | grep -v -E 'dogfood|artifacts-safe-fs-native-seam|setup-live-samples|reference-configs|readme-contract') && node --test test/readme-contract.test.mjs","native:build:test":"GYP_DEFINES='test_seam=1' node-gyp rebuild --directory native/safe-write","sync:public-files":"node scripts/sync-public-files.mjs","sync:skills:check":"node scripts/sync-skills.mjs --check","test:cli-contract":"node --test test/cli-contract.test.mjs","build:bundle:check":"node scripts/build-bundle.mjs --check","sync:version:check":"node scripts/sync-version.mjs --check","build:adapters:apply":"node scripts/build-adapters.mjs --apply","build:adapters:check":"node scripts/build-adapters.mjs --check","native:package-current":"node scripts/package-native-prebuild.mjs","sync:public-files:check":"node scripts/sync-public-files.mjs --check"},"_npmUser":{"name":"mzdbxqh","email":"mzdbxqh@gmail.com"},"repository":{"url":"git+https://github.com/ifoohoo/release-skill.git","type":"git"},"description":"Safe preparation and frozen GitHub/npm production publishing with full happy end verification","directories":{},"_nodeVersion":"22.23.2","dependencies":{"ajv":"8.20.0","yaml":"2.9.0","ajv-formats":"3.0.1","libnpmpublish":"11.2.0","npm-registry-fetch":"18.0.2","skill-family-contracts":"0.17.0","skill-family-harness-node":"0.17.0","skill-family-engineering-kit":"0.17.0"},"_hasShrinkwrap":false,"devDependencies":{"esbuild":"0.25.8","node-gyp":"12.3.0"},"_npmOperationalInternal":{"tmp":"tmp/release-skill_0.9.14_1788594914528_0.42789968361396546","host":"s3://npm-registry-packages-npm-production"}},"0.9.15":{"name":"release-skill","version":"0.9.15","keywords":["release","publish","governance","skill","claude-code","codex","kimi-code"],"author":{"name":"广州市风荷科技有限公司"},"license":"Apache-2.0","_id":"release-skill@0.9.15","maintainers":[{"name":"mzdbxqh","email":"mzdbxqh@gmail.com"}],"contributors":[{"name":"release-skill contributors"}],"homepage":"https://github.com/ifoohoo/release-skill#readme","bugs":{"url":"https://github.com/ifoohoo/release-skill/issues"},"bin":{"release-skill":"./bin/release-skill.mjs"},"dist":{"shasum":"ec61b0ae490daf4e3b0227aa81f9175550d429b1","tarball":"https://registry.npmjs.org/release-skill/-/release-skill-0.9.15.tgz","fileCount":704,"integrity":"sha512-TNDokwgTcwvwvpqVE4OqyTrxF2+g9MkKaKRL1zSpkqJIaXCjYEDsVl0fGfEj6DdKqFQbNBSP64BCj7UFh9Y40A==","signatures":[{"sig":"MEQCIEV1x5h1JLmJPoXDUOpfEO4DaXtADyRLWFvKqwwsx0IOAiBtfjdwrM85Y/SEHssox5rkqLIkHhJxxwp9biCxUlVnDw==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":41640921},"type":"module","engines":{"node":">=22.22.2 <23"},"scripts":{"test":"node --test $(ls test/*.test.mjs | grep -v -E 'artifacts-safe-fs-native-seam')","build":"node --check src/**/*.mjs && node scripts/build-bundle.mjs","typecheck":"node --check src/**/*.mjs bin/*.mjs","native:test":"npm run native:build:test && node --expose-gc --test test/artifacts-safe-fs-native-seam.test.mjs && npm run native:build && RELEASE_SKILL_NATIVE_DEV=1 node --test test/artifacts-safe-fs.test.mjs test/artifacts-transaction-native.test.mjs && node --input-type=module -e \"import {createRequire} from 'node:module';const a=createRequire(import.meta.url)('./native/safe-write/build/Release/safe_write.node');const k=Object.keys(a).sort();const e=['abortTemp','chmod','close','createTemp','fsync','mkdir','openDir','openRoot','readEntry','readFile','rename','rmdir','unlink'];if(k.length!==e.length||k.some((v,i)=>v!==e[i])){console.error('Production exports mismatch:',k);process.exit(1)}console.log('Production exports verified:',k.length,'functions')\"","sync:skills":"node scripts/sync-skills.mjs","build:bundle":"node scripts/build-bundle.mjs","native:build":"node-gyp rebuild --directory native/safe-write","sync:version":"node scripts/sync-version.mjs","build:adapters":"node scripts/build-adapters.mjs","test:no-dogfood":"node --test $(ls test/*.test.mjs | grep -v -E 'dogfood|artifacts-safe-fs-native-seam|setup-live-samples|reference-configs|readme-contract') && node --test test/readme-contract.test.mjs","native:build:test":"GYP_DEFINES='test_seam=1' node-gyp rebuild --directory native/safe-write","sync:public-files":"node scripts/sync-public-files.mjs","sync:skills:check":"node scripts/sync-skills.mjs --check","test:cli-contract":"node --test test/cli-contract.test.mjs","build:bundle:check":"node scripts/build-bundle.mjs --check","sync:version:check":"node scripts/sync-version.mjs --check","build:adapters:apply":"node scripts/build-adapters.mjs --apply","build:adapters:check":"node scripts/build-adapters.mjs --check","native:package-current":"node scripts/package-native-prebuild.mjs","sync:public-files:check":"node scripts/sync-public-files.mjs --check"},"_npmUser":{"name":"mzdbxqh","email":"mzdbxqh@gmail.com"},"repository":{"url":"git+https://github.com/ifoohoo/release-skill.git","type":"git"},"description":"Safe preparation and frozen GitHub/npm production publishing with full happy end verification","directories":{},"_nodeVersion":"22.22.2","dependencies":{"ajv":"8.20.0","yaml":"2.9.0","ajv-formats":"3.0.1","libnpmpublish":"11.2.0","npm-registry-fetch":"18.0.2","skill-family-contracts":"0.17.0","skill-family-harness-node":"0.17.0","skill-family-engineering-kit":"0.17.0"},"_hasShrinkwrap":false,"devDependencies":{"esbuild":"0.25.8","node-gyp":"12.3.0"},"_npmOperationalInternal":{"tmp":"tmp/release-skill_0.9.15_1788796892968_0.5799732577695875","host":"s3://npm-registry-packages-npm-production"}},"0.9.16":{"name":"release-skill","version":"0.9.16","keywords":["release","publish","governance","skill","claude-code","codex","kimi-code"],"author":{"name":"广州市风荷科技有限公司"},"license":"Apache-2.0","_id":"release-skill@0.9.16","maintainers":[{"name":"mzdbxqh","email":"mzdbxqh@gmail.com"}],"contributors":[{"name":"release-skill contributors"}],"homepage":"https://github.com/ifoohoo/release-skill#readme","bugs":{"url":"https://github.com/ifoohoo/release-skill/issues"},"bin":{"release-skill":"./bin/release-skill.mjs"},"dist":{"shasum":"d7637df9b1c2a61921ffc1dffb01e29a5325ca06","tarball":"https://registry.npmjs.org/release-skill/-/release-skill-0.9.16.tgz","fileCount":704,"integrity":"sha512-7Rm7ixKfShONUhSKifbq7EdAstOZIWIrDXwo390oDM3FtC606P1j3mP5Ko2bVKv3fUeEdqhRiHaqZ8OcysJ+eQ==","signatures":[{"sig":"MEYCIQDNryg0vNZTyKwJPRUOfTPWEh+THrbU+V8Lo8lMwJqnywIhAPFfmiV1TVkvo+i8Xy728e183pnF8A7EBLlFV1pnEbm2","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":41684596},"type":"module","engines":{"node":">=22.22.2 <23"},"scripts":{"test":"node --test $(ls test/*.test.mjs | grep -v -E 'artifacts-safe-fs-native-seam')","build":"node --check src/**/*.mjs && node scripts/build-bundle.mjs","typecheck":"node --check src/**/*.mjs bin/*.mjs","native:test":"npm run native:build:test && node --expose-gc --test test/artifacts-safe-fs-native-seam.test.mjs && npm run native:build && RELEASE_SKILL_NATIVE_DEV=1 node --test test/artifacts-safe-fs.test.mjs test/artifacts-transaction-native.test.mjs && node --input-type=module -e \"import {createRequire} from 'node:module';const a=createRequire(import.meta.url)('./native/safe-write/build/Release/safe_write.node');const k=Object.keys(a).sort();const e=['abortTemp','chmod','close','createTemp','fsync','mkdir','openDir','openRoot','readEntry','readFile','rename','rmdir','unlink'];if(k.length!==e.length||k.some((v,i)=>v!==e[i])){console.error('Production exports mismatch:',k);process.exit(1)}console.log('Production exports verified:',k.length,'functions')\"","sync:skills":"node scripts/sync-skills.mjs","build:bundle":"node scripts/build-bundle.mjs","native:build":"node-gyp rebuild --directory native/safe-write","sync:version":"node scripts/sync-version.mjs","build:adapters":"node scripts/build-adapters.mjs","test:no-dogfood":"node --test $(ls test/*.test.mjs | grep -v -E 'dogfood|artifacts-safe-fs-native-seam|setup-live-samples|reference-configs|readme-contract') && node --test test/readme-contract.test.mjs","native:build:test":"GYP_DEFINES='test_seam=1' node-gyp rebuild --directory native/safe-write","sync:public-files":"node scripts/sync-public-files.mjs","sync:skills:check":"node scripts/sync-skills.mjs --check","test:cli-contract":"node --test test/cli-contract.test.mjs","build:bundle:check":"node scripts/build-bundle.mjs --check","sync:version:check":"node scripts/sync-version.mjs --check","build:adapters:apply":"node scripts/build-adapters.mjs --apply","build:adapters:check":"node scripts/build-adapters.mjs --check","native:package-current":"node scripts/package-native-prebuild.mjs","sync:public-files:check":"node scripts/sync-public-files.mjs --check"},"_npmUser":{"name":"mzdbxqh","email":"mzdbxqh@gmail.com"},"repository":{"url":"git+https://github.com/ifoohoo/release-skill.git","type":"git"},"description":"Safe preparation and frozen GitHub/npm production publishing with full happy end verification","directories":{},"_nodeVersion":"22.22.2","dependencies":{"ajv":"8.20.0","yaml":"2.9.0","ajv-formats":"3.0.1","libnpmpublish":"11.2.0","npm-registry-fetch":"18.0.2","skill-family-contracts":"0.17.0","skill-family-harness-node":"0.17.0","skill-family-engineering-kit":"0.17.0"},"_hasShrinkwrap":false,"devDependencies":{"esbuild":"0.25.8","node-gyp":"12.3.0"},"_npmOperationalInternal":{"tmp":"tmp/release-skill_0.9.16_1788914127326_0.01150193251531273","host":"s3://npm-registry-packages-npm-production"}},"0.9.17":{"name":"release-skill","version":"0.9.17","keywords":["release","publish","governance","skill","claude-code","codex","kimi-code","qoder"],"author":{"name":"广州市风荷科技有限公司"},"license":"Apache-2.0","_id":"release-skill@0.9.17","maintainers":[{"name":"mzdbxqh","email":"mzdbxqh@gmail.com"}],"contributors":[{"name":"release-skill contributors"}],"homepage":"https://github.com/ifoohoo/release-skill#readme","bugs":{"url":"https://github.com/ifoohoo/release-skill/issues"},"bin":{"release-skill":"./bin/release-skill.mjs"},"dist":{"shasum":"e8b2b826de1ed3a6123a95aa2c953eb46fdf1597","tarball":"https://registry.npmjs.org/release-skill/-/release-skill-0.9.17.tgz","fileCount":814,"integrity":"sha512-eyK8tzKNqbYcK3Df8oVv7CTzuQq/KJfHdGOJRMuX8TkEloM8UjdpdLyYh77fMNIE7EUetzZVlRBXy2hoSNECHw==","signatures":[{"sig":"MEQCIHg9rd/jjQ6ETxwSbsqSnP/oQ3zYNhwtzChnJIoxYrdpAiAqzmGcSZE9gBjgY3iv1t+pHuUD0UfjWMh0CKQIzFIpnQ==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":49588457},"type":"module","engines":{"node":">=22.22.2 <23"},"scripts":{"test":"node --test $(ls test/*.test.mjs | grep -v -E 'artifacts-safe-fs-native-seam')","build":"node --check src/**/*.mjs && node scripts/build-bundle.mjs","typecheck":"node --check src/**/*.mjs bin/*.mjs","native:test":"npm run native:build:test && node --expose-gc --test test/artifacts-safe-fs-native-seam.test.mjs && npm run native:build && RELEASE_SKILL_NATIVE_DEV=1 node --test test/artifacts-safe-fs.test.mjs test/artifacts-transaction-native.test.mjs && node --input-type=module -e \"import {createRequire} from 'node:module';const a=createRequire(import.meta.url)('./native/safe-write/build/Release/safe_write.node');const k=Object.keys(a).sort();const e=['abortTemp','chmod','close','createTemp','fsync','mkdir','openDir','openRoot','readEntry','readFile','rename','rmdir','unlink'];if(k.length!==e.length||k.some((v,i)=>v!==e[i])){console.error('Production exports mismatch:',k);process.exit(1)}console.log('Production exports verified:',k.length,'functions')\"","sync:skills":"node scripts/sync-skills.mjs","build:bundle":"node scripts/build-bundle.mjs","native:build":"node-gyp rebuild --directory native/safe-write","sync:version":"node scripts/sync-version.mjs","build:adapters":"node scripts/build-adapters.mjs","test:no-dogfood":"node --test $(ls test/*.test.mjs | grep -v -E 'dogfood|artifacts-safe-fs-native-seam|setup-live-samples|reference-configs|readme-contract') && node --test test/readme-contract.test.mjs","native:build:test":"GYP_DEFINES='test_seam=1' node-gyp rebuild --directory native/safe-write","sync:public-files":"node scripts/sync-public-files.mjs","sync:skills:check":"node scripts/sync-skills.mjs --check","test:cli-contract":"node --test test/cli-contract.test.mjs","build:bundle:check":"node scripts/build-bundle.mjs --check","sync:version:check":"node scripts/sync-version.mjs --check","build:adapters:apply":"node scripts/build-adapters.mjs --apply","build:adapters:check":"node scripts/build-adapters.mjs --check","native:package-current":"node scripts/package-native-prebuild.mjs","sync:public-files:check":"node scripts/sync-public-files.mjs --check"},"_npmUser":{"name":"mzdbxqh","email":"mzdbxqh@gmail.com"},"repository":{"url":"git+https://github.com/ifoohoo/release-skill.git","type":"git"},"description":"Safe preparation and frozen GitHub/npm production publishing with full happy end verification","directories":{},"_nodeVersion":"22.22.2","dependencies":{"ajv":"8.20.0","yaml":"2.9.0","ajv-formats":"3.0.1","libnpmpublish":"11.2.0","npm-registry-fetch":"18.0.2","skill-family-contracts":"0.17.0","skill-family-harness-node":"0.17.0","skill-family-engineering-kit":"0.17.0"},"_hasShrinkwrap":false,"devDependencies":{"esbuild":"0.25.8","node-gyp":"12.3.0"},"_npmOperationalInternal":{"tmp":"tmp/release-skill_0.9.17_1788963166915_0.30906856126054416","host":"s3://npm-registry-packages-npm-production"}},"0.9.18":{"name":"release-skill","version":"0.9.18","keywords":["release","publish","governance","skill","claude-code","codex","kimi-code","qoder","cursor"],"author":{"name":"广州市风荷科技有限公司"},"license":"Apache-2.0","_id":"release-skill@0.9.18","maintainers":[{"name":"mzdbxqh","email":"mzdbxqh@gmail.com"}],"contributors":[{"name":"release-skill contributors"}],"homepage":"https://github.com/ifoohoo/release-skill#readme","bugs":{"url":"https://github.com/ifoohoo/release-skill/issues"},"bin":{"release-skill":"./bin/release-skill.mjs"},"dist":{"shasum":"9224f41a45ff03c682f53610fd1ea84810932923","tarball":"https://registry.npmjs.org/release-skill/-/release-skill-0.9.18.tgz","fileCount":931,"integrity":"sha512-/2b/8aMsnRBJ81dPXx7suydjrQNal06mepjHD08blbPKKK1oRiPIXP0q33MwDH3+zIa0ht4NEkD3/K36Ht39jA==","signatures":[{"sig":"MEYCIQCakjvV/l2TkDPRi11PoTfpxk76K5MXEv8dob5Hc90cUwIhAJWigxgb1dbT9rT2N3dNddBIGa0/kqBIfPD8C5oExIBl","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":58398972},"type":"module","engines":{"node":">=22.22.2 <23"},"scripts":{"test":"node --test $(ls test/*.test.mjs | grep -v -E 'artifacts-safe-fs-native-seam')","build":"node --check src/**/*.mjs && node scripts/build-bundle.mjs","typecheck":"node --check src/**/*.mjs bin/*.mjs","native:test":"npm run native:build:test && node --expose-gc --test test/artifacts-safe-fs-native-seam.test.mjs && npm run native:build && RELEASE_SKILL_NATIVE_DEV=1 node --test test/artifacts-safe-fs.test.mjs test/artifacts-transaction-native.test.mjs && node --input-type=module -e \"import {createRequire} from 'node:module';const a=createRequire(import.meta.url)('./native/safe-write/build/Release/safe_write.node');const k=Object.keys(a).sort();const e=['abortTemp','chmod','close','createTemp','fsync','mkdir','openDir','openRoot','readEntry','readFile','rename','rmdir','unlink'];if(k.length!==e.length||k.some((v,i)=>v!==e[i])){console.error('Production exports mismatch:',k);process.exit(1)}console.log('Production exports verified:',k.length,'functions')\"","sync:skills":"node scripts/sync-skills.mjs","build:bundle":"node scripts/build-bundle.mjs","native:build":"node-gyp rebuild --directory native/safe-write","sync:version":"node scripts/sync-version.mjs","build:adapters":"node scripts/build-adapters.mjs","test:no-dogfood":"node --test $(ls test/*.test.mjs | grep -v -E 'dogfood|artifacts-safe-fs-native-seam|setup-live-samples|reference-configs|readme-contract') && node --test test/readme-contract.test.mjs","native:build:test":"GYP_DEFINES='test_seam=1' node-gyp rebuild --directory native/safe-write","sync:public-files":"node scripts/sync-public-files.mjs","sync:skills:check":"node scripts/sync-skills.mjs --check","test:cli-contract":"node --test test/cli-contract.test.mjs","build:bundle:check":"node scripts/build-bundle.mjs --check","sync:version:check":"node scripts/sync-version.mjs --check","build:adapters:apply":"node scripts/build-adapters.mjs --apply","build:adapters:check":"node scripts/build-adapters.mjs --check","native:package-current":"node scripts/package-native-prebuild.mjs","sync:public-files:check":"node scripts/sync-public-files.mjs --check"},"_npmUser":{"name":"mzdbxqh","email":"mzdbxqh@gmail.com"},"repository":{"url":"git+https://github.com/ifoohoo/release-skill.git","type":"git"},"description":"Safe preparation and frozen GitHub/npm production publishing with full happy end verification","directories":{},"_nodeVersion":"22.23.2","dependencies":{"ajv":"8.20.0","yaml":"2.9.0","ajv-formats":"3.0.1","libnpmpublish":"11.2.0","npm-registry-fetch":"18.0.2","skill-family-contracts":"0.21.0","skill-family-harness-node":"0.21.0","skill-family-engineering-kit":"0.21.0"},"_hasShrinkwrap":false,"devDependencies":{"esbuild":"0.25.8","node-gyp":"12.3.0"},"_npmOperationalInternal":{"tmp":"tmp/release-skill_0.9.18_1789141876201_0.5406819384909944","host":"s3://npm-registry-packages-npm-production"}},"0.9.19":{"name":"release-skill","version":"0.9.19","keywords":["release","publish","governance","skill","claude-code","codex","kimi-code","qoder","cursor"],"author":{"name":"广州市风荷科技有限公司"},"license":"Apache-2.0","_id":"release-skill@0.9.19","maintainers":[{"name":"mzdbxqh","email":"mzdbxqh@gmail.com"}],"contributors":[{"name":"release-skill contributors"}],"homepage":"https://github.com/ifoohoo/release-skill#readme","bugs":{"url":"https://github.com/ifoohoo/release-skill/issues"},"bin":{"release-skill":"./bin/release-skill.mjs"},"dist":{"shasum":"6456f496ba0ad32be470af3eedbe29186f1238f0","tarball":"https://registry.npmjs.org/release-skill/-/release-skill-0.9.19.tgz","fileCount":932,"integrity":"sha512-DyY6pBoJtWUAq7KOoG/48EqVT4Wns9TrOjuU4UHiQk3lm5Bmsx42bB10GKcCa+8zTJNaRcz1ezjw9ASaY+Lytg==","signatures":[{"sig":"MEUCIBNJic0uPs3WQ5BUPQodOKwKrwLNY2Z1ley+1CX+tz/6AiEAuOIakune47ME21Ee9zzlE1O3rhlnZtmlsY+qUMAB274=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":58594512},"type":"module","engines":{"node":">=22.22.2 <23"},"scripts":{"test":"node --test $(ls test/*.test.mjs | grep -v -E 'artifacts-safe-fs-native-seam')","build":"node --check src/**/*.mjs && node scripts/build-bundle.mjs","typecheck":"node --check src/**/*.mjs bin/*.mjs","native:test":"npm run native:build:test && node --expose-gc --test test/artifacts-safe-fs-native-seam.test.mjs && npm run native:build && RELEASE_SKILL_NATIVE_DEV=1 node --test test/artifacts-safe-fs.test.mjs test/artifacts-transaction-native.test.mjs && node --input-type=module -e \"import {createRequire} from 'node:module';const a=createRequire(import.meta.url)('./native/safe-write/build/Release/safe_write.node');const k=Object.keys(a).sort();const e=['abortTemp','chmod','close','createTemp','fsync','mkdir','openDir','openRoot','readEntry','readFile','rename','rmdir','unlink'];if(k.length!==e.length||k.some((v,i)=>v!==e[i])){console.error('Production exports mismatch:',k);process.exit(1)}console.log('Production exports verified:',k.length,'functions')\"","sync:skills":"node scripts/sync-skills.mjs","build:bundle":"node scripts/build-bundle.mjs","native:build":"node-gyp rebuild --directory native/safe-write","sync:version":"node scripts/sync-version.mjs","build:adapters":"node scripts/build-adapters.mjs","test:no-dogfood":"node --test $(ls test/*.test.mjs | grep -v -E 'dogfood|artifacts-safe-fs-native-seam|setup-live-samples|reference-configs|readme-contract') && node --test test/readme-contract.test.mjs","native:build:test":"GYP_DEFINES='test_seam=1' node-gyp rebuild --directory native/safe-write","sync:public-files":"node scripts/sync-public-files.mjs","sync:skills:check":"node scripts/sync-skills.mjs --check","test:cli-contract":"node --test test/cli-contract.test.mjs","build:bundle:check":"node scripts/build-bundle.mjs --check","sync:version:check":"node scripts/sync-version.mjs --check","build:adapters:apply":"node scripts/build-adapters.mjs --apply","build:adapters:check":"node scripts/build-adapters.mjs --check","native:package-current":"node scripts/package-native-prebuild.mjs","sync:public-files:check":"node scripts/sync-public-files.mjs --check"},"_npmUser":{"name":"mzdbxqh","email":"mzdbxqh@gmail.com"},"repository":{"url":"git+https://github.com/ifoohoo/release-skill.git","type":"git"},"description":"Safe preparation and frozen GitHub/npm production publishing with full happy end verification","directories":{},"_nodeVersion":"22.22.2","dependencies":{"ajv":"8.20.0","yaml":"2.9.0","ajv-formats":"3.0.1","libnpmpublish":"11.2.0","npm-registry-fetch":"18.0.2","skill-family-contracts":"0.21.0","skill-family-harness-node":"0.21.0","skill-family-engineering-kit":"0.21.0"},"_hasShrinkwrap":false,"devDependencies":{"esbuild":"0.25.8","node-gyp":"12.3.0"},"_npmOperationalInternal":{"tmp":"tmp/release-skill_0.9.19_1789376447559_0.17219813735656575","host":"s3://npm-registry-packages-npm-production"}},"0.9.20":{"name":"release-skill","version":"0.9.20","keywords":["release","publish","governance","skill","claude-code","codex","kimi-code","qoder","cursor"],"author":{"name":"广州市风荷科技有限公司"},"license":"Apache-2.0","_id":"release-skill@0.9.20","maintainers":[{"name":"mzdbxqh","email":"mzdbxqh@gmail.com"}],"contributors":[{"name":"release-skill contributors"}],"homepage":"https://github.com/ifoohoo/release-skill#readme","bugs":{"url":"https://github.com/ifoohoo/release-skill/issues"},"bin":{"release-skill":"./bin/release-skill.mjs"},"dist":{"shasum":"03dbca552c81fe0a132503dd6d732f30ee59fa7f","tarball":"https://registry.npmjs.org/release-skill/-/release-skill-0.9.20.tgz","fileCount":932,"integrity":"sha512-0sOB83gD95pm3yVbm78Qch82q/By9vGPARpj5l3YHILMbIFqJqW92r7F3sA4GpPigLES674JYh8vWNyRoCJ9yg==","signatures":[{"sig":"MEYCIQDmPoGnoY46+nCvU/VlinQHO7KmkKnSPwHzhj4EzSCWzQIhAJwmkNh8RFz7LnsQgTfrIGAIL+oegRg16I/TSi9MU0nl","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEQCIAO49E8retygOZ8W4EvV2SfKniZevY/TPTHNfHxh9hTzAiB36MMzDPA6NeBx3LXW6kuvl+3TdzTVGrFsBaAczwmv3A==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":58630872},"type":"module","engines":{"node":">=22.22.2 <23"},"scripts":{"test":"node --test $(ls test/*.test.mjs | grep -v -E 'artifacts-safe-fs-native-seam')","build":"node --check src/**/*.mjs && node scripts/build-bundle.mjs","typecheck":"node --check src/**/*.mjs bin/*.mjs","native:test":"npm run native:build:test && node --expose-gc --test test/artifacts-safe-fs-native-seam.test.mjs && npm run native:build && RELEASE_SKILL_NATIVE_DEV=1 node --test test/artifacts-safe-fs.test.mjs test/artifacts-transaction-native.test.mjs && node --input-type=module -e \"import {createRequire} from 'node:module';const a=createRequire(import.meta.url)('./native/safe-write/build/Release/safe_write.node');const k=Object.keys(a).sort();const e=['abortTemp','chmod','close','createTemp','fsync','mkdir','openDir','openRoot','readEntry','readFile','rename','rmdir','unlink'];if(k.length!==e.length||k.some((v,i)=>v!==e[i])){console.error('Production exports mismatch:',k);process.exit(1)}console.log('Production exports verified:',k.length,'functions')\"","sync:skills":"node scripts/sync-skills.mjs","build:bundle":"node scripts/build-bundle.mjs","native:build":"node-gyp rebuild --directory native/safe-write","sync:version":"node scripts/sync-version.mjs","build:adapters":"node scripts/build-adapters.mjs","test:no-dogfood":"node --test $(ls test/*.test.mjs | grep -v -E 'dogfood|artifacts-safe-fs-native-seam|setup-live-samples|reference-configs|readme-contract') && node --test test/readme-contract.test.mjs","native:build:test":"GYP_DEFINES='test_seam=1' node-gyp rebuild --directory native/safe-write","sync:public-files":"node scripts/sync-public-files.mjs","sync:skills:check":"node scripts/sync-skills.mjs --check","test:cli-contract":"node --test test/cli-contract.test.mjs","build:bundle:check":"node scripts/build-bundle.mjs --check","sync:version:check":"node scripts/sync-version.mjs --check","build:adapters:apply":"node scripts/build-adapters.mjs --apply","build:adapters:check":"node scripts/build-adapters.mjs --check","native:package-current":"node scripts/package-native-prebuild.mjs","sync:public-files:check":"node scripts/sync-public-files.mjs --check"},"_npmUser":{"name":"mzdbxqh","email":"mzdbxqh@gmail.com"},"repository":{"url":"git+https://github.com/ifoohoo/release-skill.git","type":"git"},"description":"Safe preparation and frozen GitHub/npm production publishing with full happy end verification","directories":{},"_nodeVersion":"22.22.2","dependencies":{"ajv":"8.20.0","yaml":"2.9.0","ajv-formats":"3.0.1","libnpmpublish":"11.2.0","npm-registry-fetch":"18.0.2","skill-family-contracts":"0.21.0","skill-family-harness-node":"0.21.0","skill-family-engineering-kit":"0.21.0"},"_hasShrinkwrap":false,"devDependencies":{"esbuild":"0.25.8","node-gyp":"12.3.0"},"_npmOperationalInternal":{"tmp":"tmp/release-skill_0.9.20_1789628896986_0.9638367958489495","host":"s3://npm-registry-packages-npm-production"}},"0.9.21":{"name":"release-skill","version":"0.9.21","keywords":["release","publish","governance","skill","claude-code","codex","kimi-code","qoder","cursor"],"author":{"name":"广州市风荷科技有限公司"},"license":"Apache-2.0","_id":"release-skill@0.9.21","maintainers":[{"name":"mzdbxqh","email":"mzdbxqh@gmail.com"}],"contributors":[{"name":"release-skill contributors"}],"homepage":"https://github.com/ifoohoo/release-skill#readme","bugs":{"url":"https://github.com/ifoohoo/release-skill/issues"},"bin":{"release-skill":"./bin/release-skill.mjs"},"dist":{"shasum":"21d97f29b5fafdae939dcdaaf84d93917e9b3455","tarball":"https://registry.npmjs.org/release-skill/-/release-skill-0.9.21.tgz","fileCount":932,"integrity":"sha512-1KHRyp/j47LuVyhOyY3NDALCDn18yMdFViRhTn9udEMn5NqYxEI6EQ08ptjOI2rHhGglBnnUOWjtfRt+7d8hcA==","signatures":[{"sig":"MEYCIQC3YpvgSuyBH6PkBf+zIvaewDu2Hv0+5kaAAEJ/yP0wHAIhAKcSt6x+iE74aXp97Y7WoTixME4/c++N95rIw5IXXqR5","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEQCICaVb3N8+3FcT368ggRXdh7+I+r1LxSJyDpCnT6EXkseAiA9yfr4xTorDctyNR5wskiKTJDB6fOL0MpV1euRXFL4VQ==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":58730430},"type":"module","engines":{"node":">=22.22.2 <23"},"scripts":{"test":"node --test $(ls test/*.test.mjs | grep -v -E 'artifacts-safe-fs-native-seam')","build":"node --check src/**/*.mjs && node scripts/build-bundle.mjs","typecheck":"node --check src/**/*.mjs bin/*.mjs","native:test":"npm run native:build:test && node --expose-gc --test test/artifacts-safe-fs-native-seam.test.mjs && npm run native:build && RELEASE_SKILL_NATIVE_DEV=1 node --test test/artifacts-safe-fs.test.mjs test/artifacts-transaction-native.test.mjs && node --input-type=module -e \"import {createRequire} from 'node:module';const a=createRequire(import.meta.url)('./native/safe-write/build/Release/safe_write.node');const k=Object.keys(a).sort();const e=['abortTemp','chmod','close','createTemp','fsync','mkdir','openDir','openRoot','readEntry','readFile','rename','rmdir','unlink'];if(k.length!==e.length||k.some((v,i)=>v!==e[i])){console.error('Production exports mismatch:',k);process.exit(1)}console.log('Production exports verified:',k.length,'functions')\"","sync:skills":"node scripts/sync-skills.mjs","build:bundle":"node scripts/build-bundle.mjs","native:build":"node-gyp rebuild --directory native/safe-write","sync:version":"node scripts/sync-version.mjs","build:adapters":"node scripts/build-adapters.mjs","test:no-dogfood":"node --test $(ls test/*.test.mjs | grep -v -E 'dogfood|artifacts-safe-fs-native-seam|setup-live-samples|reference-configs|readme-contract') && node --test test/readme-contract.test.mjs","native:build:test":"GYP_DEFINES='test_seam=1' node-gyp rebuild --directory native/safe-write","sync:public-files":"node scripts/sync-public-files.mjs","sync:skills:check":"node scripts/sync-skills.mjs --check","test:cli-contract":"node --test test/cli-contract.test.mjs","build:bundle:check":"node scripts/build-bundle.mjs --check","sync:version:check":"node scripts/sync-version.mjs --check","build:adapters:apply":"node scripts/build-adapters.mjs --apply","build:adapters:check":"node scripts/build-adapters.mjs --check","native:package-current":"node scripts/package-native-prebuild.mjs","sync:public-files:check":"node scripts/sync-public-files.mjs --check"},"_npmUser":{"name":"mzdbxqh","email":"mzdbxqh@gmail.com"},"repository":{"url":"git+https://github.com/ifoohoo/release-skill.git","type":"git"},"description":"Safe preparation and frozen GitHub/npm production publishing with full happy end verification","directories":{},"_nodeVersion":"22.22.2","dependencies":{"ajv":"8.20.0","yaml":"2.9.0","ajv-formats":"3.0.1","libnpmpublish":"11.2.0","npm-registry-fetch":"18.0.2","skill-family-contracts":"0.21.0","skill-family-harness-node":"0.21.0","skill-family-engineering-kit":"0.21.0"},"_hasShrinkwrap":false,"devDependencies":{"esbuild":"0.25.8","node-gyp":"12.3.0"},"_npmOperationalInternal":{"tmp":"tmp/release-skill_0.9.21_1789637067395_0.030736949836193128","host":"s3://npm-registry-packages-npm-production"}},"0.9.22":{"name":"release-skill","version":"0.9.22","keywords":["release","publish","governance","skill","claude-code","codex","kimi-code","qoder","cursor"],"author":{"name":"广州市风荷科技有限公司"},"license":"Apache-2.0","_id":"release-skill@0.9.22","maintainers":[{"name":"mzdbxqh","email":"mzdbxqh@gmail.com"}],"contributors":[{"name":"release-skill contributors"}],"homepage":"https://github.com/ifoohoo/release-skill#readme","bugs":{"url":"https://github.com/ifoohoo/release-skill/issues"},"bin":{"release-skill":"./bin/release-skill.mjs"},"dist":{"shasum":"acd58341bd38cea2ff38e76fc276dee0cafee2c9","tarball":"https://registry.npmjs.org/release-skill/-/release-skill-0.9.22.tgz","fileCount":932,"integrity":"sha512-9Lj1A+KXOGvdTYrXGr0lYqaiTWIUEKliMbOWjmkgjPpDRlVETGlpan9J4uMcxyqe6TEEnErUUDS9jxzAXRetLw==","signatures":[{"sig":"MEUCIQCjhdhKrmcLozbqPgUR3kOA+ezswEXD1Kth1A+NQLqIJAIgFkVY9g9EVrh6YIu1ZhyYzHw8kvu9nsHNQ6vM588ybGg=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEQCIERkkQ8kTF1c0k813llrCoAe9hZHMaa69146bRoHSX//AiA5JgR25S7SzN2c6DbaMytUD+I8oaazn6eyztWJ58yfew==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":58732238},"type":"module","engines":{"node":">=22.22.2 <23"},"scripts":{"test":"node --test $(ls test/*.test.mjs | grep -v -E 'artifacts-safe-fs-native-seam')","build":"node --check src/**/*.mjs && node scripts/build-bundle.mjs","typecheck":"node --check src/**/*.mjs bin/*.mjs","native:test":"npm run native:build:test && node --expose-gc --test test/artifacts-safe-fs-native-seam.test.mjs && npm run native:build && RELEASE_SKILL_NATIVE_DEV=1 node --test test/artifacts-safe-fs.test.mjs test/artifacts-transaction-native.test.mjs && node --input-type=module -e \"import {createRequire} from 'node:module';const a=createRequire(import.meta.url)('./native/safe-write/build/Release/safe_write.node');const k=Object.keys(a).sort();const e=['abortTemp','chmod','close','createTemp','fsync','mkdir','openDir','openRoot','readEntry','readFile','rename','rmdir','unlink'];if(k.length!==e.length||k.some((v,i)=>v!==e[i])){console.error('Production exports mismatch:',k);process.exit(1)}console.log('Production exports verified:',k.length,'functions')\"","sync:skills":"node scripts/sync-skills.mjs","build:bundle":"node scripts/build-bundle.mjs","native:build":"node-gyp rebuild --directory native/safe-write","sync:version":"node scripts/sync-version.mjs","build:adapters":"node scripts/build-adapters.mjs","test:no-dogfood":"node --test $(ls test/*.test.mjs | grep -v -E 'dogfood|artifacts-safe-fs-native-seam|setup-live-samples|reference-configs|readme-contract') && node --test test/readme-contract.test.mjs","native:build:test":"GYP_DEFINES='test_seam=1' node-gyp rebuild --directory native/safe-write","sync:public-files":"node scripts/sync-public-files.mjs","sync:skills:check":"node scripts/sync-skills.mjs --check","test:cli-contract":"node --test test/cli-contract.test.mjs","build:bundle:check":"node scripts/build-bundle.mjs --check","sync:version:check":"node scripts/sync-version.mjs --check","build:adapters:apply":"node scripts/build-adapters.mjs --apply","build:adapters:check":"node scripts/build-adapters.mjs --check","native:package-current":"node scripts/package-native-prebuild.mjs","sync:public-files:check":"node scripts/sync-public-files.mjs --check"},"_npmUser":{"name":"mzdbxqh","email":"mzdbxqh@gmail.com"},"repository":{"url":"git+https://github.com/ifoohoo/release-skill.git","type":"git"},"description":"Safe preparation and frozen GitHub/npm production publishing with full happy end verification","directories":{},"_nodeVersion":"22.22.2","dependencies":{"ajv":"8.20.0","yaml":"2.9.0","ajv-formats":"3.0.1","libnpmpublish":"11.2.0","npm-registry-fetch":"18.0.2","skill-family-contracts":"0.21.0","skill-family-harness-node":"0.21.0","skill-family-engineering-kit":"0.21.0"},"_hasShrinkwrap":false,"devDependencies":{"esbuild":"0.25.8","node-gyp":"12.3.0"},"_npmOperationalInternal":{"tmp":"tmp/release-skill_0.9.22_1789657334072_0.35278349074703463","host":"s3://npm-registry-packages-npm-production"}},"0.9.23":{"_id":"release-skill@0.9.23","bin":{"release-skill":"./bin/release-skill.mjs"},"bugs":{"url":"https://github.com/ifoohoo/release-skill/issues"},"dist":{"shasum":"e1308bd50d97b0d018fff6a8f6d8a76d5826ac48","tarball":"https://registry.npmjs.org/release-skill/-/release-skill-0.9.23.tgz","fileCount":982,"integrity":"sha512-Yuski5FzJgRbfZojkevTba5G9r5Zs9dq7uN78jI2Q4t1SgSnKKIp9X+kmmyosA917RC0wFuRfe0JEwUsColgQg==","signatures":[{"sig":"MEQCIAFmIQM6vCrmSYvftEDgI3wj2fryQYn6yb1f061dSdmxAiBqkGXWaglu7OiW726CVOsC0O+xf8bqn8mEbAKaF3SXcA==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEUCIQDiu7jph2ah8DGkMsA+/sFnSGIDIqiJHIzO5x9Ibda2mgIgNZ2toz57Rfvlc9fC9N9XdgLx6+Vfd4DOQ3yFKN3uGEc="}],"unpackedSize":59260546},"name":"release-skill","type":"module","author":{"name":"广州市风荷科技有限公司"},"engines":{"node":">=22.22.2 <23"},"license":"Apache-2.0","scripts":{"test":"node --test $(ls test/*.test.mjs | grep -v -E 'artifacts-safe-fs-native-seam')","build":"node --check src/**/*.mjs && node scripts/build-bundle.mjs","typecheck":"node --check src/**/*.mjs bin/*.mjs","native:test":"npm run native:build:test && node --expose-gc --test test/artifacts-safe-fs-native-seam.test.mjs && npm run native:build && RELEASE_SKILL_NATIVE_DEV=1 node --test test/artifacts-safe-fs.test.mjs test/artifacts-transaction-native.test.mjs && node --input-type=module -e \"import {createRequire} from 'node:module';const a=createRequire(import.meta.url)('./native/safe-write/build/Release/safe_write.node');const k=Object.keys(a).sort();const e=['abortTemp','chmod','close','createTemp','fsync','mkdir','openDir','openRoot','readEntry','readFile','rename','rmdir','unlink'];if(k.length!==e.length||k.some((v,i)=>v!==e[i])){console.error('Production exports mismatch:',k);process.exit(1)}console.log('Production exports verified:',k.length,'functions')\"","sync:skills":"node scripts/sync-skills.mjs","build:bundle":"node scripts/build-bundle.mjs","native:build":"node-gyp rebuild --directory native/safe-write","sync:version":"node scripts/sync-version.mjs","build:adapters":"node scripts/build-adapters.mjs","test:no-dogfood":"node --test $(ls test/*.test.mjs | grep -v -E 'dogfood|artifacts-safe-fs-native-seam|setup-live-samples|reference-configs|readme-contract') && node --test test/readme-contract.test.mjs","native:build:test":"GYP_DEFINES='test_seam=1' node-gyp rebuild --directory native/safe-write","sync:public-files":"node scripts/sync-public-files.mjs","sync:skills:check":"node scripts/sync-skills.mjs --check","test:cli-contract":"node --test test/cli-contract.test.mjs","build:bundle:check":"node scripts/build-bundle.mjs --check","sync:version:check":"node scripts/sync-version.mjs --check","build:adapters:apply":"node scripts/build-adapters.mjs --apply","build:adapters:check":"node scripts/build-adapters.mjs --check","native:package-current":"node scripts/package-native-prebuild.mjs","sync:public-files:check":"node scripts/sync-public-files.mjs --check"},"version":"0.9.23","_npmUser":{"name":"mzdbxqh","email":"mzdbxqh@gmail.com"},"homepage":"https://github.com/ifoohoo/release-skill#readme","keywords":["release","publish","governance","skill","claude-code","codex","kimi-code","qoder","cursor"],"repository":{"url":"git+https://github.com/ifoohoo/release-skill.git","type":"git"},"description":"Safe preparation and frozen GitHub/npm production publishing with full happy end verification","directories":{},"maintainers":[{"name":"mzdbxqh","email":"mzdbxqh@gmail.com"}],"_nodeVersion":"22.23.2","contributors":[{"name":"release-skill contributors"}],"dependencies":{"ajv":"8.20.0","yaml":"2.9.0","ajv-formats":"3.0.1","libnpmpublish":"11.2.0","npm-registry-fetch":"18.0.2","skill-family-contracts":"0.22.0","skill-family-harness-node":"0.22.0","skill-family-engineering-kit":"0.22.0"},"_hasShrinkwrap":false,"devDependencies":{"esbuild":"0.25.8","node-gyp":"12.3.0"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/release-skill_0.9.23_1790469689982_0.5930538481220733"}}},"time":{"created":"2026-07-19T03:11:35.350Z","modified":"2026-09-27T00:41:30.647Z","0.1.1":"2026-07-19T03:11:35.704Z","0.1.3":"2026-07-19T09:45:56.076Z","0.1.4":"2026-07-20T14:00:14.176Z","0.1.5":"2026-07-20T18:12:41.069Z","0.1.6":"2026-07-22T15:05:35.837Z","0.1.7":"2026-07-22T17:22:41.173Z","0.1.8":"2026-07-23T07:13:55.216Z","0.1.9":"2026-07-23T14:18:23.433Z","0.1.10":"2026-07-23T17:19:47.010Z","0.2.0":"2026-07-25T05:45:10.198Z","0.2.1":"2026-07-25T09:42:59.735Z","0.2.2":"2026-07-25T18:06:31.640Z","0.2.3":"2026-07-26T13:26:54.896Z","0.2.4":"2026-07-27T19:28:12.511Z","0.2.5":"2026-07-28T14:03:55.568Z","0.2.6":"2026-07-28T18:59:41.024Z","0.2.7":"2026-07-29T09:59:55.675Z","0.2.8":"2026-07-30T15:10:38.354Z","0.2.9":"2026-07-30T18:04:12.667Z","0.3.0":"2026-07-31T00:26:47.226Z","0.4.0":"2026-08-02T07:47:54.048Z","0.4.1":"2026-08-09T03:37:55.523Z","0.4.2":"2026-08-12T05:36:59.568Z","0.5.0":"2026-08-16T05:00:53.295Z","0.5.1":"2026-08-17T12:49:04.945Z","0.6.0":"2026-08-18T03:30:10.651Z","0.6.1":"2026-08-18T09:01:56.155Z","0.6.2":"2026-08-19T02:47:02.808Z","0.6.3":"2026-08-20T05:36:01.870Z","0.7.0":"2026-08-21T20:01:06.268Z","0.7.1":"2026-08-21T23:39:13.028Z","0.7.2":"2026-08-22T00:07:45.051Z","0.7.3":"2026-08-22T02:14:05.691Z","0.7.4":"2026-08-22T03:31:39.486Z","0.7.5":"2026-08-22T09:33:56.964Z","0.7.6":"2026-08-22T16:21:04.879Z","0.7.7":"2026-08-23T18:55:20.198Z","0.7.8":"2026-08-24T08:56:19.220Z","0.8.0":"2026-08-26T13:10:09.226Z","0.8.1":"2026-08-27T02:15:50.275Z","0.9.0":"2026-08-27T18:37:48.763Z","0.9.1":"2026-08-29T16:18:31.166Z","0.9.3":"2026-08-31T12:28:54.365Z","0.9.4":"2026-08-31T21:11:03.431Z","0.9.5":"2026-09-01T23:30:04.864Z","0.9.6":"2026-09-02T05:53:40.006Z","0.9.7":"2026-09-02T15:11:19.126Z","0.9.8":"2026-09-04T06:03:59.705Z","0.9.9":"2026-09-04T08:12:29.225Z","0.9.10":"2026-09-04T10:13:20.559Z","0.9.11":"2026-09-04T14:05:04.865Z","0.9.12":"2026-09-04T14:38:03.943Z","0.9.13":"2026-09-05T01:53:55.151Z","0.9.14":"2026-09-05T07:55:14.851Z","0.9.15":"2026-09-07T16:01:33.233Z","0.9.16":"2026-09-09T00:35:27.645Z","0.9.17":"2026-09-09T14:12:47.277Z","0.9.18":"2026-09-11T15:51:16.997Z","0.9.19":"2026-09-14T09:00:47.871Z","0.9.20":"2026-09-17T07:08:17.279Z","0.9.21":"2026-09-17T09:24:27.684Z","0.9.22":"2026-09-17T15:02:14.364Z","0.9.23":"2026-09-27T00:41:30.218Z"},"bugs":{"url":"https://github.com/ifoohoo/release-skill/issues"},"author":{"name":"广州市风荷科技有限公司"},"license":"Apache-2.0","homepage":"https://github.com/ifoohoo/release-skill#readme","keywords":["release","publish","governance","skill","claude-code","codex","kimi-code","qoder","cursor"],"repository":{"url":"git+https://github.com/ifoohoo/release-skill.git","type":"git"},"description":"Safe preparation and frozen GitHub/npm production publishing with full happy end verification","contributors":[{"name":"release-skill contributors"}],"maintainers":[{"name":"mzdbxqh","email":"mzdbxqh@gmail.com"}],"readme":"# release-skill\n\n[简体中文](README.zh-CN.md) · Installation: [English](INSTALL.md) / [简体中文](INSTALL.zh-CN.md)\n\n<!-- release-skill:release-version: 0.9.23 -->\nRelease preparation for Claude Code, CodeBuddy, WorkBuddy, Codex, and Kimi Code, with human-edited files kept intact.\n\nrelease-skill helps a maintainer answer three questions: what will be released,\nwhich checks still fail, and which exact bytes will reach users. release-skill\ndoes not regenerate or rewrite project source files. `prepare` copies each\nconfigured public file into an isolated snapshot and verifies the copied bytes —\nit freezes the reviewed artifacts first and publishes those same artifacts later.\nSetup surfaces only the deterministic `compactSummary` review view; the full\nreport stays in a temporary session directory.\n\n<!-- release-skill:managed:start id=latest-release -->\n**0.9.23** (2026-09-26)\n\n0.9.23 is a local source candidate. The adoption check, offline static readiness, and historical record consistency can issue a shared family proof and read an existing proof. Prepare and publish skill text now builds the human-readable approval summary from the immutable plan. The three Foundation dependencies stay pinned to 0.22.0. A static-readiness pass does not mean the release is published. Consistent records do not mean the release succeeded or that it is verified. This note is not evidence of publication, real-host acceptance, consumer installation verification, or independent acceptance.\n\n**Security**\n\n- Hub publication remains a compare-and-swap operation bound to the observed branch head. A partial Hub publication is never rolled back or force-pushed automatically.\n\n**Added**\n\n- setup --assess-adoption, assess --offline, and verify-records accept an optional --conclusion-output <absolute-path>. On a successful write, the command exclusively creates one new family proof and keeps the original domain status and exit code; conclusionPath is added only then. Omitting the option writes no proof file.\n- read-proof --proof-root <root> --proof <relative> --json reads one existing release-skill proof under that root. It does not rescan the target, follow details, or turn a failed or incomplete check into a pass.\n- When the declared scope is complete, ASSESSED means the static readiness check finished. Under the same condition, CONSISTENT means the supplied historical records agree, and historicalTerminalStatus stays as recorded. A native pass code is not a professional pass while that scope is incomplete. PUBLISHED and VERIFIED still use the existing conditions of the publish and verify phases.\n- Exclusive writing and professional-conclusion schema checks call Foundation 0.22.0. Reading also uses Foundation to keep the proof path inside the given root. Release-skill keeps the domain mapping for the three entries.\n\n**Changed**\n\n- Skill Family Hub remains the central marketplace. After release verification, its release entry still uses the existing GitHub Git Data API through the postVerify Hook.\n\n**Fixed**\n\n- The prepare and publish skills read the immutable plan and build the human-readable approval summary only from the units, externalActions, waivers, and postPublish values actually present. Versions and public targets come only from values already written there. Missing fields stay missing.\n- Successful prepare returns the immutable planPath, planDigest, and its other result fields. Approval stays bound to that plan, and copying planDigest is not required. A postPublish checkpoint that needs its own approval remains a separate approval. The publish authorization gate uses the same reading.\n\n**Upgrade Notes**\n\nCompared with 0.9.22, this candidate needs no additional configuration migration. An installation still using the old release-skill standalone marketplace should remove it and use the ifoohoo/skill-family-hub repository with the Hub-qualified plugin id release-skill@skill-family-hub. The three checks keep their previous commands, and a proof file is written only when --conclusion-output is set. Reading an existing proof does not advance release state. This file describes the local source candidate; publication, host loading, and acceptance remain separate later authorizations.\n<!-- release-skill:managed:end id=latest-release -->\n\n<!-- release-skill:capability:external-write-boundary -->\n> **Current boundary:** v0.9.23 is the current source candidate. This README\n> records intended scope and verification boundaries; it is not evidence of\n> publication, consumer-installation verification, or independent acceptance.\n> Release availability must be established from the corresponding release records\n> and post-publish verification results.\n> v0.4.1 was an earlier published milestone;\n> v0.2.2 previously held published status before the platform verification\n> convergence fix was added.\n> v0.1.1 completed a real production release to GitHub and npm — the first\n> production-verified milestone — followed by\n> exact npm installation and Claude/Codex consumer installation verification\n> from the frozen Git ref; \"current release\" and \"first production-verified\n> milestone\" are two distinct facts and must not be conflated. The same\n> workflow also has a local production-equivalent protocol suite using the\n> real release-skill CLI and frozen artifacts, local bare Git remotes, and\n> protocol fakes for `gh`, `npm`, Claude, and Codex. The suite does not\n> provide OS-level network isolation, and it does not prove that another\n> project's credentials, permissions, rate limits, or eventual-consistency\n> behavior will match this release. Treat each project's first production run\n> as a monitored canary. `prepare --online` observes bound previous-public\n> baselines and fails closed on drift; remote uniqueness checks run during\n> publish global preflight.\n\n<!-- release-skill:capability:safe-first-command -->\n> **Production path verified since the v0.1.1 milestone; v0.9.23 is the current\n> source candidate. Its README does not establish publication,\n> consumer-installation verification, or independent acceptance.**\n> The npm-installed CLI is the supported user entry. Source checkout\n> is the development/contributor fallback.\n>\n> **Start here:**\n> - npm install: `npm install -g release-skill` → `release-skill help`\n> - source checkout: `node \"$RELEASE_SKILL_HOME/packages/release-skill/bin/release-skill.mjs\" help`\n\n### 0.8.0 scope and verification boundaries\n\nFor `prepare --workflow config`, public-byte comparison selects the branch:\n\n- Branch A (`no-publish-needed`) has no external actions and no `sourceAuthority`,\n  even with a configured public source receipt. It ends without approve/publish/verify.\n- Branch B (`publish-needed`) must freeze `plan.sourceAuthority` in production.\n  Docs production has the same requirement; publish/reconcile/verify retain\n  frozen-source and remote consistency checks.\n\nMarketplace delegation to the target workspace is unchanged.\n\nOld production plans missing `sourceAuthority` are rejected before external writes.\nPlans with no external writes must be prepared again and receive approval for the\nnew digest; do not patch old plans or migrate approvals. Existing `PARTIAL`\ncheckpoints remain intact and use matching-version recovery. Evidence v1 stays\nread-only; v2 uses a closed top level with phase extensions in `details`.\nSummaries and recovery suggestions are diagnostic, never publication authority.\n\nThe current 0.9.23 candidate includes the narrow R-05 Hook cache v2 consumer\npath, the public `postverify` path, and the stable isolated install-tree record\npath (A2/A3). It also adds the explicit-input `verify-records` command and a\nself-contained Qoder projection, first-class Cursor packaging, and the\nFoundation-backed host verification bridge. Skill Family Hub remains the single\nmarketplace source. The candidate\nalso makes the `release-prepare` Skill organize existing assessment, refresh,\nfocused-check, and prepare entry points without adding another execution\nengine. `prepare --help` and `prepare -h` now return before configuration,\nlocks, runs, or hooks can observe the request. The `release-finish` Skill can\nalso report the source branch and continue into a configured setup entry after\nthe selected host has loaded the released plugin. This candidate still excludes\nR-02 safe full-tree inventory. Marketplace installation and live invocation\nremain host-level post-release checks; Cursor is distributed through its\nsupported local-plugin directory rather than a Hub marketplace entry.\nFoundation dependencies are pinned to the three released 0.22.0 packages.\nFor Kimi/CodeBuddy plans that still use the bundled-family distribution form,\nverify calls the released\n`runPluginVerification` entry with the complete frozen payload and records a\nminimal `install-only` observation receipt. Kimi maps to `kimi-code`; CodeBuddy\nmaps to the compatible `workbuddy` host. `observed` and `payloadMatches` are\nmechanism facts, not remote publication or release-domain VERIFIED facts.\nReal marketplace installation and host invocation remain post-release host\noperations.\nThis scope summary is not a remote publication record or a consumer upgrade instruction.\n\n<!-- release-skill:maturity:distribute-v1 -->\n<!-- release-skill:capability:distribute -->\n> **Distribute maturity v1.0 (W2 closure):** postPublish distribution is available as a separate `distribute` command for mirror and marketplace-index actions. After `publish` reaches PUBLISHED status, run `ship distribute` or manually invoke `release-skill distribute --plan <path> --approval <path> --json`. The distribute action implements fail-closed semantics: NO_CHANGE on empty diff (no commit/tag/push), REMOTE_CONFLICT on tag move attempts (never force-push), AUTH_MISSING when external writes are not authorized. Supported modes: `--dry-run` (local commit+tag only), `--json` (structured output), `--help` (command reference). Tag commitment guarantees version consistency — distributed plugin.json.version must match input tag. See [docs/design/2026-08-17-postpublish-distribution.md](../../docs/design/2026-08-17-postpublish-distribution.md) for detailed architecture.\n<!-- release-skill:capability:distribute -->\n\n<!-- release-skill:maturity:postpublish-hooks-v2 -->\n<!-- release-skill:capability:postpublish-hooks -->\n> **postPublish hooks v2:** `releaseUnit.postPublish` accepts a declarative\n> `hooks` array alongside the existing `targets`. Each hook is either a named\n> preset or a custom command hook; custom command hooks follow the same rules\n> as prepare hooks — executable/argument arrays, relative cwd, timeout, and an\n> environment allowlist, with shell strings rejected — and, like all\n> configured hooks and gates, they run as unsandboxed processes. Every\n> declaration is normalized into the frozen plan, so a hook change changes the\n> plan digest and invalidates existing approvals. A hook with\n> `requiresApproval: true` (the default for public-write presets; projects may\n> tighten this, never loosen it) needs its own checkpoint-level approval\n> before execution: mint one with\n> `release-skill approve --plan <plan> --hook <hookId> --actor <name>`, then\n> consume it with `distribute --hook-approval <record>` or\n> `ship --hook-approval <record>` (24-hour expiry, bound to the plan digest\n> and the hook id). Git credentials come only from the host credential\n> helper / OS keychain; release-skill never reads, stores, or prints them.\n<!-- release-skill:capability:postpublish-hooks -->\n\n<!-- release-skill:capability:postpublish-presets -->\n> **postPublish presets:** six built-in presets ship with the bundle and are\n> enumerated by `release-skill distribute --list-presets`: `git-mirror` and\n> `marketplace-index-render` (declared in `targets` form), plus\n> `proposal-inbox`, `marketplace-registry-entry`, `docs-refresh`, and\n> `notify-handoff` (declared in `hooks` form). `proposal-inbox` delivers a\n> machine-readable update proposal through a git-push or local-file transport\n> and records the delivery result. The receiver applies, renders, and publicly\n> synchronizes the proposal under the receiver's own runbook and governance;\n> delivery does not prove those receiver-side steps. Without a target it degrades to\n> `notify-handoff` behavior instead of failing. `notify-handoff` is the\n> zero-write floor: it only renders a deterministic manual sync checklist.\n<!-- release-skill:capability:postpublish-presets -->\n\n<!-- release-skill:capability:postverify-stage -->\n> **postVerify stage:** hooks declared with `phase: postVerify` run only after\n> the main run reaches VERIFIED; `ship` routes them into an independent\n> postVerify run whose hook context carries the verification evidence\n> (`verifyEvidence`, present in this phase only). A failed postVerify run\n> stays PARTIAL and can be reconciled, but it never rolls the main run back\n> from VERIFIED — the failure is recorded prominently in evidence, never\n> silently.\n<!-- release-skill:capability:postverify-stage -->\n\n<!-- release-skill:maturity:v0.1-boundary -->\n<!-- release-skill:maturity:boundary -->\n> **Safe defaults:** the recommended path is `help → assess → prepare --offline →\n> human review`. `help` and `assess` are read-only. The release-skill-owned part of\n> `prepare --offline` writes only under `.release-skill/` and does not call remote\n> publish adapters, but configured hooks and gates are unsandboxed processes: they\n> may write outside the project, access credentials, make network calls, or publish.\n> Treat `prepare` as local-only only when those processes are absent or separately\n> audited and explicitly acknowledged. Production publishing uses\n> `ship --target-version <ver> → ship --approve --actor <name>`.\n> Frozen-plan approval is the only normal release-level human gate.\n> Here, “only human gate” means the only normal release-level approval. A postPublish hook whose effective\n> `requiresApproval` is true still needs a separate checkpoint approval bound\n> to the plan digest and hook id; that approval expires after at most 24 hours.\n> For bundled-family Kimi/CodeBuddy releases, Foundation first observes the\n> complete frozen payload in a fresh local installation. Real marketplace\n> installation and host invocation remain non-blocking manual follow-up tasks.\n\n## Table of contents\n\n- [Quick start](#quick-start)\n- [Release workflow](#release-workflow)\n- [Documentation](#documentation)\n- [Skills](#skills)\n- [Platform distribution](#platform-distribution)\n- [License](#license)\n\n## Quick start\n\nA release unit is a release object with independently configured version, public files, and distribution targets.\n\n### Selecting a release scope\n\nMulti-unit projects can repeat `--unit <id>` before the plan is frozen. Omitting\nthe option keeps the existing full-scope behavior:\n\n```bash\nrelease-skill prepare --root \"$PROJECT\" --offline \\\n  --unit runtime --unit plugin --json\nrelease-skill ship --root \"$PROJECT\" --target-version 1.2.3 \\\n  --unit runtime --unit plugin --json\n```\n\nThe selected IDs are normalized to project configuration order. Unit-scoped\nversion, documentation, snapshot, distribution, and verification-gate work runs\nonly for that scope. Full configuration validation, generated-artifact freshness\nchecks, and top-level hooks still cover the whole project.\n\nAn explicit scope that includes any unit named by\n`publicSourceAuthorityReceipt` must include its coordinator and every subject.\nrelease-skill reports the missing units and stops before hooks or plan writes; it\ndoes not expand the scope automatically. A successful explicit selection reports\n`releaseScope.selectedUnitIds`, `releaseScope.deferredUnitIds`, and the exact next\nprepare command for the deferred units.\n\nAfter freeze, `plan.units` is the only release-scope authority. Approval covers\nevery action in that plan. `publish`, `reconcile`, `verify`, and `distribute` do\nnot accept `--unit`; a partial external write remains `PARTIAL` and resumes\nforward within the same frozen plan. A resumed ship state may omit `--unit` and\nreuse its saved request, but cannot change that request or add it to a legacy\nfull-scope state.\n\n### Install\n\n- Node.js 22+, Git 2.30+, a target Git repository with at least one commit.\n\n**npm (recommended):**\n\n```bash\nnpm install -g release-skill\nrelease-skill help\n```\n\nOr run directly without installing:\n\n```bash\nnpx release-skill help\n```\n\n**Plugin (Claude Code / CodeBuddy / WorkBuddy / Codex):**\n\nClaude Code, CodeBuddy, WorkBuddy, and Codex install from the central\nSkill Family Hub marketplace:\n\n```\n/plugin marketplace add ifoohoo/skill-family-hub\n/plugin install release-skill@skill-family-hub\n```\n\n> **Prerequisite: GitHub access.** The `owner/repo` shorthand makes Claude Code\n> clone via SSH. If you do not use SSH, pass the full HTTPS URL —\n> `/plugin marketplace add https://github.com/ifoohoo/skill-family-hub` — or set\n> `CLAUDE_CODE_PLUGIN_PREFER_HTTPS=1`.\n\n**Kimi Code:** release-skill currently invokes no scriptable install API for\nKimi Code. It uses the version-pinned interactive TUI path described in\n[INSTALL.md](INSTALL.md#install-as-a-kimi-code-plugin).\n\n**Qoder:** the package ships `.qoder-plugin/plugin.json` and the self-contained\n`adapters/qoder/` projection. A user-scope marketplace install is available only\nafter the central Hub's root `marketplace.json` has accepted the release-skill\nQoder entry; the generated adapter alone does not prove Hub consumption. See\n[INSTALL.md](INSTALL.md#install-as-a-qoder-plugin) for the bounded install and\npost-release update contract.\n\n**Cursor:** `adapters/cursor/` is a complete Local plugin. After release verification,\n`release-finish` can install or atomically upgrade its frozen tree on macOS while\nCursor is closed. It requires an explicit `--cursor-plugins-root` and preserves\nthe displaced version outside `local/`. Restart and real Skill invocation remain\nseparate checks. See [the Cursor instructions](INSTALL.md#install-as-a-cursor-local-plugin).\n\nSee [INSTALL.md](INSTALL.md) for CodeBuddy, Codex, Kimi Code, Qoder, and Cursor commands.\n\n### Read-only governance diagnosis\n\nUse the existing Skills and choose only the check the request needs:\n\n- adoption status: `setup --assess-adoption --root <path> --json`;\n- local configuration and release-readiness gaps: `assess --root <path> --offline --json`;\n- explicit historical plan, approval, and run consistency: `verify-records`, using the full input form in the next section.\n\nThese entry points run release-skill's read-only analyzers. Governance diagnosis does not run target Skills, hooks, builds, or release actions, and it does not treat `prepare`, `verify`, or `release-finish` as static governance checks. When a maintainer asks to set up or publish instead, continue through the existing product Skill with the authorization and safety contract for that action.\n\nAll three entry points accept the optional `--conclusion-output <absolute-path>`\nto save a proof of the check. Without it, no proof is written. With it, the\ncommand exclusively creates a new file and preserves the original domain result\nand exit code. For example:\n\n```text\nrelease-skill assess --root <project-root> --offline --conclusion-output <absolute-path> --json\nrelease-skill read-proof --proof-root <root> --proof <relative> --json\n```\n\n`read-proof` reads an existing release-skill proof beneath the specified root.\nIt does not follow `details` references, check the current target again, or\nauthenticate the author or publication. A readable proof may record a failed or\nincomplete check; reading it successfully does not make that check pass. To\nrefresh the conclusion, rerun the original check with a new output path and\nretain the old proof.\n\n### Offline historical record verification\n\nUse the public command below when a consumer already has an explicit plan,\napproval, target run, and every predecessor run referenced by that target:\n\n```text\nrelease-skill verify-records --plan <path> --approval <path> --target-run <path> --source-run <path>... --unit <id> --target-version <version> --json\n```\n\nThe command reads only those paths and emits one JSON object. `CONSISTENT`\nexits 0, `CONTRADICTED` exits 1, and `INSUFFICIENT` exits 2. It does not scan\n`.release-skill`, follow paths embedded in a record, contact a remote, or advance\nrelease state. Without `--conclusion-output`, it does not write a file. A\nconsistent historical chain does not mean `VERIFIED` or that the current target\npasses all checks; it does not prove that its records are globally latest or\nthat remote objects still exist.\n\n### Main workflow\n\nFor routine releases, use the durable fast path. It persists authoritative\npaths and resumes safely. Frozen plan approval is the only normal\nrelease-level approval. `ship` runs configured hooks and verification gates\nautomatically. A gated postPublish hook still needs its independent checkpoint\napproval; plan approval does not include it. For bundled-family Kimi/CodeBuddy releases, Foundation first\nobserves the complete frozen payload in a fresh local installation. Real\nmarketplace installation and host invocation remain non-blocking post-release\nmanual tasks; the system does not verify their completion.\n\nA release plan is a record for review before approval, linking target versions, frozen artifacts, and proposed external actions; see the [human review and approval steps](#release-plan-review).\n\n```bash\nrelease-skill ship --root \"$PROJECT\" --target-version 1.2.3 --json\nrelease-skill ship --root \"$PROJECT\" --approve --actor \"$ACTOR\" --json\n```\n\nDuring development, `release-skill hooks validate` runs declared hooks and\nwrites the same content-bound cache receipts that `prepare` consumes.\n\nRun these steps in order. Steps 1-3 are read-only. In step 4, release-skill's own\nprepare pipeline is local-only and never invokes remote publish adapters; configured\nhooks and gates remain arbitrary unsandboxed processes and can perform local or remote\nside effects. Step 4 is therefore local-only only when those processes are absent or\nseparately audited and explicitly acknowledged. Steps 5-9 require explicit human gates.\n\n```bash\nCLI=(release-skill)           # or: CLI=(node \"$RELEASE_SKILL_HOME/packages/release-skill/bin/release-skill.mjs\")\nPROJECT=/absolute/path/to/my-project\nACTOR=your-name\n```\n\n1. **help** — check the environment:\n   ```bash\n   \"${CLI[@]}\" help --json\n   ```\n   Local preparation requires both `status: \"READY\"` and exit code 0. Check\n   `readiness.localPreparation` for local gaps and `readiness.productionPublish`\n   for production requirements. `AUTH_CHECK_REQUIRED` still requires authentication\n   and permission checks; local readiness does not establish those checks or\n   release approval.\n2. **setup** — first-use only (read-only discovery, then create-once config):\n   ```bash\n   SETUP_SESSION=\"$(mktemp -d \"${TMPDIR:-/tmp}/release-setup.XXXXXX\")\"\n   REPORT=\"$SETUP_SESSION/discovery.json\"\n   ANSWERS=\"$SETUP_SESSION/answers.json\"\n   printf 'SETUP_SESSION=%s\\nPROJECT=%s\\n' \"$SETUP_SESSION\" \"$PROJECT\"\n   \"${CLI[@]}\" setup --root \"$PROJECT\" --json > \"$REPORT\" || test \"$?\" -eq 2\n   ```\n   If `proposalConflicts` is non-empty, stop and let a human correct the\n   conflicting repository or mapping authority. With no conflicts, extract\n   `recommendedAnswers` mechanically (never hand-write complete answers):\n   ```bash\n   SETUP_SESSION='<session-directory-absolute-path-printed-above>'\n   node -e 'const fs=require(\"node:fs\");const r=JSON.parse(fs.readFileSync(process.argv[1],\"utf8\"));if((r.proposalConflicts??[]).length){console.error(\"proposal conflicts require human resolution\");process.exit(2)}if(!r.recommendedAnswers){console.error(\"recommendedAnswers missing\");process.exit(2)}fs.writeFileSync(process.argv[2],JSON.stringify(r.recommendedAnswers,null,2)+\"\\n\",{flag:\"wx\",mode:0o600})' \"$REPORT\" \"$ANSWERS\"\n   ```\n   Confirm the bound `setupDigest` once, then create the config:\n   ```bash\n   SETUP_SESSION='<session-directory-absolute-path-printed-above>'\n   PROJECT='<project-absolute-path-printed-above>'\n   ANSWERS=\"$SETUP_SESSION/answers.json\"\n   CREATED_REPORT=\"$SETUP_SESSION/created.json\"\n   POST_REPORT=\"$SETUP_SESSION/post-setup.json\"\n   ASSESS_REPORT=\"$SETUP_SESSION/assess.json\"\n   \"${CLI[@]}\" setup --root \"$PROJECT\" --answers \"$ANSWERS\" \\\n     --write --confirm-setup <confirmed-setupDigest> --json > \"$CREATED_REPORT\"\n   \"${CLI[@]}\" setup --root \"$PROJECT\" --json > \"$POST_REPORT\"\n   set +e\n   \"${CLI[@]}\" assess --root \"$PROJECT\" --offline --json > \"$ASSESS_REPORT\"\n   ASSESS_EXIT=$?\n   set -e\n   [ \"$ASSESS_EXIT\" -eq 0 ] || [ \"$ASSESS_EXIT\" -eq 1 ] || exit \"$ASSESS_EXIT\"\n   node -e 'const fs=require(\"node:fs\");const [c,p,a]=process.argv.slice(1).map(x=>JSON.parse(fs.readFileSync(x,\"utf8\")));if(c.status!==\"CONFIG_CREATED\"||p.status!==\"ALREADY_CONFIGURED\"||![\"ASSESSED\",\"NEEDS_INPUT\",\"BLOCKED\"].includes(a.status)){process.exit(2)}' \"$CREATED_REPORT\" \"$POST_REPORT\" \"$ASSESS_REPORT\"\n   node -e 'require(\"node:fs\").rmSync(process.argv[1],{recursive:true,force:false})' \"$SETUP_SESSION\"\n   ```\n   The write must return `CONFIG_CREATED`; the next setup must return\n   `ALREADY_CONFIGURED`. Existing configuration is never regenerated — make only\n   reviewed incremental edits. For npm units, setup also reports each concrete\n   `bin`/`main`/`module`/`types`/`typings`/`exports` target and legacy\n   `npmRequiredPackagePaths` as tracked, untracked, ignored, missing, or\n   non-regular. These are review candidates only: setup never copies them into\n   `publicFiles` or `requiredPublicFiles`. Discovered scripts are\n   `SIDE_EFFECTS_UNPROVEN`.\n   Add a project-specific hook or gate only after human review: edit\n   `projectConfig.hooks`, or edit `verificationGates` and add the same id to\n   `selectedGateIds`, then rerun the bound dry-run.\n   Downstream postPublish guidance is also read-only until confirmed:\n   `setup --discover-downstream` enumerates downstream candidates (git\n   remotes, neighboring marketplace/docs repositories,\n   `artifact-graph.config.yaml`, and a foundation profile when present), and\n   `setup --propose-hooks` turns those cues into postPublish hook declaration\n   drafts bound by a `setupDigest`. For an already-configured project,\n   `setup --propose-hooks --write --confirm-setup <digest>` appends only the\n   target release unit's `postPublish.hooks` block and never regenerates or\n   rewrites any other part of the configuration (create-once is untouched). A\n   foundation profile is one proposal input among several and never\n   auto-applies.\n   See [INSTALL.md](INSTALL.md#first-use-setup) for the full multi-step flow.\n   **Adoption assessment (read-only):** for an already-configured project,\n   `setup --assess-adoption` reports satisfied items, mandatory gaps, optional\n   suggestions, and not-applicable items without writing anything; a\n   not-yet-configured project returns `NOT_CONFIGURED` with a pointer to\n   first-time setup. Hook-duration suggestions are derived only from events\n   produced by the current version; the tool never guesses or writes\n   `cacheInputs` for a project. `gateSuggestions` contains only actionable,\n   not-yet-configured drafts; other discoveries remain in `gateDiagnostics`\n   without changing adoption status or the routine summary.\n3. **assess** — read-only readiness:\n   ```bash\n   \"${CLI[@]}\" assess --root \"$PROJECT\" --offline --json\n   ```\n4. **prepare** — local snapshot and plan freeze:\n   ```bash\n   \"${CLI[@]}\" prepare --root \"$PROJECT\" --offline --json\n   ```\n5. <a id=\"release-plan-review\"></a>**Human review:** inspect `planPath`, `externalActions`, `targetVersion`, and `planDigest`.\n6. **prepare --production** — freeze the production plan:\n   ```bash\n   PLAN_JSON=$(\"${CLI[@]}\" prepare --root \"$PROJECT\" --online --production --json)\n   PLAN_PATH=$(printf '%s\\n' \"$PLAN_JSON\" | jq -r '.planPath')\n   PLAN_DIGEST=$(printf '%s\\n' \"$PLAN_JSON\" | jq -r '.planDigest')\n   ```\n7. **approve** — human approval (digest auto-read from plan, 24-hour expiry):\n   ```bash\n   APPROVAL_JSON=$(\"${CLI[@]}\" approve --plan \"$PLAN_PATH\" \\\n     --actor \"$ACTOR\" --json)\n   APPROVAL_PATH=$(printf '%s\\n' \"$APPROVAL_JSON\" | jq -r '.approvalPath')\n   ```\n   Approval binds the plan digest (`planDigest`), each release unit's target version,\n   and the approved action set. Changes to these bindings require a new approval.\n\n   `planVersion: 2` binds the frozen artifacts, configuration, and actions through the digest.\n   Workspace baseline drift is record-layer audit data and does not by itself invalidate\n   approval; frozen artifacts must still be reverified before publishing.\n   `planVersion: 1` retains the legacy binding, including the workspace baseline.\n\n   `--actor` is an unauthenticated local audit string. It is not identity\n   verification, a signature, or proof that a particular human approved the plan;\n   use an external authenticated approval system when that assurance is required.\n8. **publish** — remote writes start here:\n   ```bash\n   PUBLISH_JSON=$(\"${CLI[@]}\" publish --root \"$PROJECT\" \\\n     --plan \"$PLAN_PATH\" --approval \"$APPROVAL_PATH\" --json)\n   PUBLISH_RUN_PATH=$(printf '%s\\n' \"$PUBLISH_JSON\" | jq -r '.runPath')\n   ```\n   A valid approved production plan may enter `publish` directly; `route` is only a workflow suggestion. `publish` still requires the plan, approval, frozen digest and artifact identity, remote preflight, and fail-closed `PARTIAL` checkpoint rules.\n   `PUBLISHED` is **not** the terminal state.\n9. **verify** — consumer install check:\n   ```bash\n   \"${CLI[@]}\" verify --root \"$PROJECT\" \\\n     --plan \"$PLAN_PATH\" --run \"$PUBLISH_RUN_PATH\" --json\n   ```\n\nThe handoff example requires `jq`. Without it, copy the returned JSON fields\nexactly; do not pass angle-bracket labels as shell syntax.\n\n### PARTIAL recovery and reconcile\n\nWhen `publish` succeeds at some checkpoints but fails at others, the run enters\n`PARTIAL` status. **Do not restart from scratch and do not delete remote state.**\n\n```bash\nRECONCILE_JSON=$(\"${CLI[@]}\" reconcile --root \"$PROJECT\" \\\n  --run \"$PUBLISH_RUN_PATH\" \\\n  --plan \"$PLAN_PATH\" \\\n  --approval \"$APPROVAL_PATH\" --json)\nRECONCILE_RUN_PATH=$(printf '%s\\n' \"$RECONCILE_JSON\" | jq -r '.runPath')\n\"${CLI[@]}\" verify --root \"$PROJECT\" \\\n  --plan \"$PLAN_PATH\" --run \"$RECONCILE_RUN_PATH\" --json\n```\n\n`reconcile` queries the actual remote state, skips already-consistent steps,\nand retries only safe incomplete actions. Remote conflicts require human\ndecision. Successful reconcile returns `PUBLISHED`, not `VERIFIED`.\n\n## Release workflow\n\nrelease-skill models the release lifecycle as a strict state machine\n(normative definition: `references/01-state-machine.md`):\n\n```text\nDISCOVERED -> ASSESSED -> PREPARED -> APPROVED -> PUBLISHING -> PUBLISHED -> VERIFIED\n                                   exception states: NEEDS_INPUT / BLOCKED / PARTIAL\n```\n\nEach CLI command maps to one transition. `PUBLISHED` is **not** the terminal\nstate — only a fresh `verify` that confirms remote state and consumer installs\nmatch the frozen plan reaches `VERIFIED`.\n\n**Preservation contract:** release-skill does not regenerate or rewrite project\nsource files. `prepare` copies each configured public file into an isolated\nsnapshot and verifies the copied bytes. A later prepare reads the current file\nagain; it never rebuilds from a template. Only files listed in `publicFiles` are\ncopied. `prepare` never refreshes or rewrites human docs — maintainers update\nREADME, INSTALL, and CHANGELOG first, then prepare, review, and approve.\n\n**Workspace source authority:** production config names the workspace source\nrepository with `project.sourceRepository` and its real remote default branch\nwith `project.defaultBranch`. Prepare binds the content and Git mode of every\nexpanded `publicFiles.from` input plus each `version.source`; publish compares\nthat frozen closure with the remote default branch before the first adapter\nwrite. The check accepts merge, squash, and rebase when the bytes still match,\nbut blocks a lost or reverted README by path. It never merges, switches\nbranches, pushes, or creates a PR.\n\n**Write safety:** `setup` is read-only by default (create-once after digest\nconfirmation). Release-skill's own `prepare` pipeline writes only under\n`.release-skill/` and does not invoke remote publish adapters. Project hooks and\ngates are acknowledged processes without an OS sandbox; they may write outside the\nproject, access credentials, make network calls, or publish. `publish` is the\nrelease-skill-owned production write entry and requires both approval and the current\nplan digest.\n\n## Documentation\n\n| Document | Description |\n|---|---|\n| [INSTALL.md](INSTALL.md) / [INSTALL.zh-CN.md](INSTALL.zh-CN.md) | Full installation guide: npm, plugin, source checkout, setup flow, branch strategies |\n| [CHANGELOG.md](CHANGELOG.md) | Release history |\n| [CONTRIBUTING.md](CONTRIBUTING.md) | How to contribute (includes generated-artifact rules) |\n| [SECURITY.md](SECURITY.md) | Security policy |\n| `references/01-state-machine.md` | Normative state machine definition |\n| `references/02-project-config.md` | Project configuration schema reference |\n| `references/05-evidence-and-errors.md` | Evidence format and error codes |\n| `references/06-adapter-contract.md` | Adapter and marketplace contract details |\n| [GitHub Issues](https://github.com/ifoohoo/release-skill/issues) | Bug reports and feature requests |\n\n## Configuration\n\nA minimal human-authored configuration (see [INSTALL.md](INSTALL.md) for the\nfull schema and setup flow):\n\n```yaml\napiVersion: release-skill/v1\nkind: ReleaseProject\nproject:\n  name: my-project\n  defaultBranch: main\n  sourceRepository: owner/my-workspace\nreleaseFinish:\n  sourceBranchCheck: remind\n  setupSkill: release-setup\nreleaseUnits:\n  - id: my-project\n    source: .\n    publicRepo: owner/my-project\n    version:\n      source: package.json\n      tagTemplate: v{version}\n    publicFiles:\n      - from: README.md\n        to: README.md\n        mode: preserve\n      - from: package.json\n        to: package.json\n        mode: preserve\n    requiredPublicFiles: [README.md, package.json]\n    previousPublicBaseline:\n      mode: none\n    distributions:\n      - type: npm\n        package: my-project\n        access: public\n        provenance: false\n        tag: latest\n        registry: https://registry.npmjs.org\n        publisher: my-npm-username\n    production:\n      branchTemplate: release/{tag}\n      branchStrategy: create-release-branch\n```\n\n`releaseFinish` controls only local post-release work. `sourceBranchCheck`\ndefaults to `remind`; set it to `skip` to suppress the read-only source-branch\nreminder. `setupSkill` is optional and names an already installed and loaded\nsetup entry such as `release-setup` or `plugin:skill`; it is never executed as\na shell command. After host updates, release-finish runs that setup entry\nagainst the current release project root passed through `--root`; it does not\nrequest a separate project directory. The two settings are independent.\n\nUse `release-skill post-release --finish` for the complete local finish. It\nalways reports merge, host update, actual host loading, setup, and source-branch\nsteps. Exit 0 means every applicable step completed or was explicitly skipped;\nexit 2 means caller work remains; exit 1 means a deterministic failure. Pass\nagent observations back through an absolute `--finish-feedback` JSON file bound\nto the reported plan digest, config digest, and canonical project root. Feedback\nis data only: the command does not execute its strings or treat it as new write\nauthority. `--skip-local-hosts` explicitly skips host update, loading, and setup\nand cannot be combined with `--hosts` or `--update-local-hosts`.\n\n`distributions` is required but may be an explicit empty array. Use\n`distributions: []` when release-skill should publish only the unit's GitHub\nsnapshot, tag, and GitHub Release, with no npm publish or marketplace consumer\naction. A `postPublish` declaration, including hooks whose phase is\n`postVerify`, remains active. This is the intended shape for a plugin that is\nadded to a central Hub only after the release has reached `VERIFIED`.\n\n`version.source` is resolved relative to that release unit's `source` directory\n(`version.source` 相对于该发布单元的 `source` 目录解析). A monorepo with\nseparate npm and plugin units defines multiple release units:\n\n```yaml\napiVersion: release-skill/v1\nkind: ReleaseProject\nproject:\n  name: my-workspace\n  defaultBranch: main\n  sourceRepository: owner/my-workspace\nreleaseUnits:\n  - id: my-app\n    source: packages/app\n    publicRepo: owner/my-app\n    version:\n      source: package.json\n      tagTemplate: my-app-v{version}\n    distributions:\n      - type: npm\n        package: my-app\n        access: public\n        provenance: false\n        tag: latest\n        registry: https://registry.npmjs.org\n        publisher: my-npm-username\n    publicFiles:\n      - from: packages/app/package.json\n        to: package.json\n        mode: preserve\n    requiredPublicFiles: [package.json]\n    previousPublicBaseline:\n      mode: none\n    production:\n      branchTemplate: release/{tag}\n      branchStrategy: create-release-branch\n  - id: my-plugin\n    source: packages/plugin\n    publicRepo: owner/my-plugin\n    version:\n      source: package.json\n      tagTemplate: my-plugin-v{version}\n    distributions:\n      - type: claude-plugin\n        plugin: my-plugin\n        marketplace: my-plugin\n        entrySkill: my-plugin-help\n        marketplaceSourceType: bundled-family\n    publicFiles:\n      - from: packages/plugin/package.json\n        to: package.json\n        mode: preserve\n      - from: packages/plugin/.claude-plugin/marketplace.json\n        to: .claude-plugin/marketplace.json\n        mode: preserve\n      - from: packages/plugin/.claude-plugin/plugin.json\n        to: .claude-plugin/plugin.json\n        mode: preserve\n      - from: packages/plugin/skills/my-plugin-help/SKILL.md\n        to: skills/my-plugin-help/SKILL.md\n        mode: preserve\n    requiredPublicFiles:\n      - package.json\n      - .claude-plugin/marketplace.json\n      - .claude-plugin/plugin.json\n      - skills/my-plugin-help/SKILL.md\n    previousPublicBaseline:\n      mode: none\n    production:\n      branchTemplate: release/{tag}\n      branchStrategy: create-release-branch\n```\n\nThis example places the plugin at the snapshot root. Create the four mapped source files\nunder `packages/plugin` before preparing:\n\n- In `.claude-plugin/marketplace.json`, name the marketplace `my-plugin` and set its `my-plugin` entry's `source` to `\"./\"`.\n- In `.claude-plugin/plugin.json`, set `name` to `my-plugin`, match `version` to `package.json`, and set `skills` to `\"./skills/\"`.\n- The entry file is `skills/my-plugin-help/SKILL.md`, with frontmatter `name: my-plugin-help`.\n\nThis minimal Skill references no other files; map any\nrequired resources explicitly if references are added.\n\nAdd a gate to the extracted `recommendedAnswers` by editing `verificationGates`\nand binding the same id in `selectedGateIds`:\n\n```json\n{\n  \"projectConfig\": {\n    \"apiVersion\": \"release-skill/v1\",\n    \"kind\": \"ReleaseProject\",\n    \"project\": {\n      \"name\": \"my-project\",\n      \"defaultBranch\": \"main\",\n      \"sourceRepository\": \"owner/my-workspace\"\n    },\n    \"releaseUnits\": [{\n      \"id\": \"my-project\",\n      \"source\": \".\",\n      \"publicRepo\": \"owner/my-project\",\n      \"version\": { \"source\": \"package.json\", \"tagTemplate\": \"v{version}\" },\n      \"distributions\": [{\n        \"type\": \"npm\", \"package\": \"my-project\", \"access\": \"public\",\n        \"provenance\": false, \"tag\": \"latest\",\n        \"registry\": \"https://registry.npmjs.org\", \"publisher\": \"my-npm-username\"\n      }],\n      \"publicFiles\": [{ \"from\": \"package.json\", \"to\": \"package.json\", \"mode\": \"preserve\" }],\n      \"requiredPublicFiles\": [\"package.json\"],\n      \"previousPublicBaseline\": { \"mode\": \"none\" },\n      \"production\": { \"branchTemplate\": \"release/{tag}\", \"branchStrategy\": \"create-release-branch\" }\n    }],\n    \"verificationGates\": [{\n      \"id\": \"my-project-script-test\",\n      \"phase\": \"snapshot-verify\",\n      \"scope\": { \"unit\": \"my-project\" },\n      \"command\": [\"node\", \"-e\", \"const p=require('./package.json');if(!p.name)process.exit(1)\"],\n      \"cwd\": \".\",\n      \"timeoutMs\": 30000,\n      \"envAllowlist\": []\n    }]\n  },\n  \"selectedGateIds\": [\"my-project-script-test\"]\n}\n```\n\n### Hooks and gates\n\n`hooks.docs/build/test/typecheck/lint` run before the snapshot is frozen. Each\nhook is an object. `command` is an executable/argument array, not a shell string\n(`command` 是可执行文件/参数数组，不是 shell 字符串):\n\n```yaml\nhooks:\n  build:\n    command: [node, scripts/build.mjs]\n    cwd: .\n    timeoutMs: 120000\n    envAllowlist: [CI]\n  test:\n    command: [node, --test, test/]\n    cwd: .\n    timeoutMs: 300000\n    envAllowlist: []\n```\n\nHooks run when `prepare` is invoked. Configuring the command and invoking the\nworkflow authorizes execution without an extra confirmation point. The legacy\n`--acknowledge-hook-side-effects` and `--acknowledge-gate-side-effects` flags\nremain accepted as no-effect compatibility inputs. Gates are the controlled\nextension point for release calibration (see `references/02-project-config.md`).\n\n### postPublish hooks\n\n`postPublish.hooks` declares downstream delivery actions that run after\n`publish`; each entry is a named preset or a custom command hook and follows\nthe same command rules as above (executable/argument arrays, not shell\nstrings). Presets receive a read-only projection of the frozen plan; custom\ncommand hooks run in the frozen tag worktree. The `materialize` hook is\noptional: when it is omitted, `distribute` stages the payload from the\nrelease unit's frozen `publicFiles` mapping through a Foundation managed\nprojection — a fresh payload root with full preflight, zero-write refusal,\nand complete closure rollback — and live project configuration is never\nre-read after the plan is frozen:\n\n```yaml\npostPublish:\n  materialize:\n    command: [node, scripts/materialize-payload.mjs]\n    cwd: .\n    timeoutMs: 600000\n    outputMarker: \"payload dir: \"\n  commitIdentity:\n    name: release-bot\n    email: mzdbxqh@example.com\n  hooks:\n    - id: mirror-downstream\n      preset: git-mirror\n      config:\n        target:\n          remoteUrl: https://gitlab.example.internal/team/my-project.git\n          branch: main\n    - id: hub-entry-proposal\n      preset: proposal-inbox\n      phase: postVerify\n      requiresApproval: true\n      config:\n        delivery: git-push\n        target:\n          remoteUrl: https://github.com/example/hub.git\n          branch: main\n    - id: custom-notify\n      command: [node, scripts/notify-downstream.mjs]\n      timeoutMs: 300000\n      envAllowlist: [CI]\n```\n\nA hook with `requiresApproval: true` parks at `AWAITING_APPROVAL` until a\ncheckpoint approval is minted and consumed. The approval record is bound to\nthe plan digest and the hook id, and expires after 24 hours. Frozen plan\napproval never includes this checkpoint approval:\n\n```bash\nrelease-skill approve --plan \"$PLAN_PATH\" --hook hub-entry-proposal --actor \"$ACTOR\" --json\nrelease-skill ship --root \"$PROJECT\" --hook-approval \"$HOOK_APPROVAL_PATH\" --json\n```\n\nFor an already-configured project, `setup --discover-downstream` and\n`setup --propose-hooks` draft these declarations for human review; the\nappend-only incremental flow is described in the setup step above and in\n[INSTALL.md](INSTALL.md#first-use-setup).\n\n## Skills\n\n- `release-help`: environment check and next-step guidance.\n- `release-setup`: read-only discovery, human calibration, create-once configuration, and read-only adoption assessment (`setup --assess-adoption`).\n- `release-assess`: read-only release readiness report.\n- `release-prepare`: organizes existing project prerequisites and focused repairs, then freezes a local snapshot and reviewable release plan through the formal prepare entry.\n- `release-publish`: approved frozen GitHub+npm publishing; the internal digest is checked automatically.\n- `release-reconcile`: evidence-based PARTIAL recovery with human intervention on conflicts.\n- `release-verify`: post-publish verification; only `VERIFIED` is the happy end.\n\n## Platform distribution\n\nOne deterministic core engine ships to several targets through build-only adapter\nclosures. A release unit declares what reaches users via `distributions`:\n\n| `distributions` type | Physical artifact | Install |\n|---|---|---|\n| `npm` | npm package with CLI entry | `npm install -g release-skill` |\n| `claude-plugin` | self-contained closure under `adapters/claude/` | automated marketplace checkpoint |\n| `codex-plugin` | self-contained closure under `adapters/codex/` | automated marketplace checkpoint |\n| `kimi-plugin` | self-contained closure (release-skill invokes no scriptable install API) | non-blocking post-release manual task |\n| `codebuddy-plugin` | generated `adapters/workbuddy/` with `.codebuddy-plugin/plugin.json` | non-blocking post-release manual task |\n\nQoder is intentionally outside this `distributions` table: it is a build-only\npublic projection at `adapters/qoder/`, with root manifest\n`.qoder-plugin/plugin.json`. It does not add a `qoder-plugin` plan type or an\nautomated publish, reconcile, or verify checkpoint.\n\nEach adapter closure bundles its own CLI, skills, and schemas for zero external\ndependency after installation. `publish` only publishes frozen Git objects and\nnpm tarballs, then checks remote commit/tree/tag integrity. Claude/Codex\nverification is automated. Kimi Code and CodeBuddy/WorkBuddy are returned as\n`manualFollowUps` with `verifiedBySystem: false`; their completion is not a\ncondition for the automated release to reach `VERIFIED`.\n\nAfter `VERIFIED`, the optional `release-finish` workflow can update Claude and\nCodex from the frozen marketplace identity. When either marketplace needs\nrebinding, a read-only remote check must prove the frozen repository, ref, and\ncommit before that host's first write; a failed check leaves that host unchanged\nwithout stopping other selected hosts. The workflow can also migrate or update\nKimi through one controlled TUI session and verify its real managed payload, or update an existing\nbundled-family CodeBuddy/WorkBuddy entry when the frozen tag and mutable branch\nboth resolve to the frozen commit. For an explicitly selected Qoder host, it can\nupdate only an existing user-scope installation after proving the configured Hub\nsource and frozen payload; it never adds a marketplace or performs first install.\nAn `UPDATED` installation is not treated as loaded: reload or start a new Qoder\nsession, then complete one read-only release-skill business call before claiming\nthe new version is active. It requires explicit user confirmation and\ndoes not change release status. Kimi uses one effective configuration root:\nexplicit `kimiHome`, then `KIMI_CODE_HOME`, then `~/.kimi-code`. The TUI and\npost-operation observation share that root, and the TUI working directory is the\nresolved release project root passed through `--root`. After the user confirms\nthe frozen plan and explicitly selects Kimi for update, release-finish accepts\nonly the initial standard `Trust this folder?` dialog with `No, exit` selected\nand `Trust this folder` available. It moves to that target, verifies the new\nselection, confirms it, and waits for the known command prompt before sending\nthe plugin command. An unknown row or selection, a failed move, timeout, early\nexit, or any folder-trust dialog after the plugin command fails closed. The\nfrozen plugin identity and `Trust and install` checks remain unchanged. Missing, standalone, inaccessible, or ambiguous\nCodeBuddy/WorkBuddy targets remain manual and receive no host mutation.\nWorkBuddy local updates are macOS-only; on other platforms they are skipped as\nunsupported. When a plan declares postVerify hooks, release-finish must receive\nthe completed postVerify run produced by `ship`, rather than the earlier verify\nrun. The core prepare, publish, and verify workflow remains cross-platform.\n\nA release unit may also declare `postPublish.localHostUpdate` for a plugin that\nis delivered through a project-selected Hub by a `postVerify` hook. After that\nhook reaches `DISTRIBUTED`, `ship`, `verify`, `post-release`, and\n`release-finish` display the declared Hub, plugin, and hosts. Version 0.9.22\nmakes Claude, Codex, Kimi, CodeBuddy, WorkBuddy, and Qoder executable after\nexplicit host selection and plan-digest confirmation. Claude and Codex require\nan existing matching Hub marketplace and verify its host-specific entry before\nplugin writes. CodeBuddy and WorkBuddy only upgrade existing installations,\nchecking the Hub branch again after refresh. Kimi uses the frozen GitHub Release\nand controlled terminal interaction, preserving all three proxy variables;\nits repository-only Hub file is not tag or commit evidence. Every successful\nupdate verifies the installed payload against the frozen snapshot. Claude can\nverify an exact current installation offline; Codex reinstalls when its list\ndoes not expose an installation root. Existing frozen installation actions\nand the Qoder and Cursor paths remain supported without duplicate execution.\n\nProduction `prepare` also performs one best-effort retention pass after its new\nrun evidence exists and before expensive snapshot and hook work. It removes\nonly superseded complete run lineages and sealed failed prepare directories\nthat have no valid plan or external-write trace. The current plan, the newest\ncomplete lineage, and every non-terminal, partial, corrupt, ambiguous, or\nout-of-bounds lineage remain protected. Retention failures never change the\nprepare result.\n\nNew `codebuddy-plugin` project configurations must declare `marketplace`\nexplicitly so product families cannot silently inherit another family's Hub.\n`marketplaceSource`, the URL consumers use to add that marketplace, remains\noptional. Only already-frozen historical plans that lack `marketplace` retain\nthe legacy `artifact-skill-set` interpretation so reconcile can replay them.\n\nFor every npm distribution, `prepare` statically checks the exact packed\ntarball against concrete `package.json` entry targets. `publish` and\n`reconcile` repeat the same check on the frozen tarball before any remote\naction, and `verify` repeats it against the exact installed package before\nallowing `VERIFIED`. `smokeBin` remains optional: when configured it adds an\nauthorized runtime smoke test; when absent, the static entry-closure check is\nstill mandatory. Wildcard exports and fallback arrays are deliberately outside\nthe first minimal semantic boundary, so the static gate fails closed until the\ndeclaration is narrowed to concrete targets.\n\n<!-- release-skill:capability:unsupported-scope -->\n- **not in the current version:** full consumer install-tree scanning (R-02) — the current implementation handles only the declared public surface and the stable isolated install-tree record; and a real-host (Kimi/WorkBuddy/Qoder) verification gate — host verification and Qoder activation stay outside release `PASS`/`VERIFIED` evidence;\n- no automatic README generation or source-file overwrite;\n- no automatic conflict merge or rollback workflow;\n- no claim that a real production canary has run for marketplace verification;\n- `prepare --online` observes previous public baselines (bound mode) and defers\n  remote uniqueness checks to publish global preflight;\n- no overwrite of branches/tags/releases or npm unpublish; create-only refs use\n  `--force-with-lease=<ref>:` solely as an atomic compare-and-set assertion that\n  the ref is absent, while existing branches use an ordinary non-force push;\n- no Kimi, CodeBuddy/WorkBuddy, or Qoder marketplace install checkpoint in the release\n  state machine — optional release-finish can drive and re-check Kimi locally,\n  or update an existing CodeBuddy/WorkBuddy entry under strict frozen-identity\n  checks, or update an existing user-scope Qoder entry after equivalent source\n  and payload checks, but those results do not become publication evidence;\n- no promise of Windows or broad multi-platform native write support;\n- no hidden commit, push, tag, release, or package publication.\n\n## License\n\nApache License 2.0. See [LICENSE](LICENSE) and [NOTICE](NOTICE).\n","readmeFilename":"README.md"}