{"_id":"@chancestv/create-android-shell","_rev":"8-f59b4f9f4973d7ad5339a6f846fba13c","name":"@chancestv/create-android-shell","dist-tags":{"latest":"0.8.1"},"versions":{"0.4.0":{"name":"@chancestv/create-android-shell","version":"0.4.0","keywords":["android","webview","scaffold","cli","template","vue","tv"],"_id":"@chancestv/create-android-shell@0.4.0","maintainers":[{"name":"danweiyuancircle","email":"tianxiakesnail@gmail.com"}],"bin":{"create-android-shell":"index.js"},"dist":{"shasum":"39d529c2236467a594409b0635a588cd0856b137","tarball":"https://registry.npmjs.org/@chancestv/create-android-shell/-/create-android-shell-0.4.0.tgz","fileCount":173,"integrity":"sha512-60oxWiqpJ2ZGWWH3T3OBlzmUHhdTS2R8LRtw4DHNlL7cy7YlaHLNzMM4wZCPgWXJOQVnUw+71sawXAVza99B3w==","signatures":[{"sig":"MEYCIQCAmAl3Zqt8e+x3WlATzq8J0t1eXDewsauw148G2C2vYQIhAOGzh/baZl5jtI4kU2u9fEbZHQOtFe3SNG3jAHQ8zBfo","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":656071},"type":"commonjs","engines":{"node":">=18"},"gitHead":"6588525156752829c3bab073fbd40bdc2d89efd2","scripts":{"test":"node --test","prepack":"node -e \"const{copyTree,DEFAULT_EXCLUDES}=require('./lib/copyTree');require('fs').rmSync('template',{recursive:true,force:true});copyTree('../template','template',DEFAULT_EXCLUDES)\"","postpack":"node -e \"require('fs').rmSync('template',{recursive:true,force:true})\""},"_npmUser":{"name":"danweiyuancircle","email":"tianxiakesnail@gmail.com"},"repository":{"url":"https://gitee.com/sh_chances/ai-android.git","type":"git","directory":"cli"},"_npmVersion":"10.9.2","description":"脚手架：生成 Android WebView 套壳 + H5 模板工程","directories":{},"_nodeVersion":"22.14.0","publishConfig":{"access":"public","registry":"https://registry.npmjs.org/"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/create-android-shell_0.4.0_1780639180363_0.8874749308338765","host":"s3://npm-registry-packages-npm-production"}},"0.4.1":{"name":"@chancestv/create-android-shell","version":"0.4.1","keywords":["android","webview","scaffold","cli","template","vue","tv"],"_id":"@chancestv/create-android-shell@0.4.1","maintainers":[{"name":"danweiyuancircle","email":"tianxiakesnail@gmail.com"}],"bin":{"create-android-shell":"index.js"},"dist":{"shasum":"56fd58f11df20b41553bb6841c0e3ece30ce4668","tarball":"https://registry.npmjs.org/@chancestv/create-android-shell/-/create-android-shell-0.4.1.tgz","fileCount":173,"integrity":"sha512-RV3t13eAyfDvQw5veMqfVme1YwD4kMD9u5zraBQyBnKlr99xNh22K3QkPo0hFNuVVDRXh238ztG/PZNJaYzDWg==","signatures":[{"sig":"MEYCIQCrP7OiOKBSkz3rYK/gx4apoLdVHD5r9z6XaP0tdXrgnAIhAM5F44qIY87R4kDB7QUu1n7m80fbBlln7jPDz1YhR2sO","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":654215},"type":"commonjs","engines":{"node":">=18"},"gitHead":"0a624f1a90ecf27b401413e91104e245bdde7170","scripts":{"test":"node --test","prepack":"node -e \"const{copyTree,DEFAULT_EXCLUDES}=require('./lib/copyTree');require('fs').rmSync('template',{recursive:true,force:true});copyTree('../template','template',DEFAULT_EXCLUDES)\"","postpack":"node -e \"require('fs').rmSync('template',{recursive:true,force:true})\""},"_npmUser":{"name":"danweiyuancircle","email":"tianxiakesnail@gmail.com"},"repository":{"url":"https://gitee.com/sh_chances/ai-android.git","type":"git","directory":"cli"},"_npmVersion":"10.9.2","description":"脚手架：生成 Android WebView 套壳 + H5 模板工程","directories":{},"_nodeVersion":"22.14.0","publishConfig":{"access":"public","registry":"https://registry.npmjs.org/"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/create-android-shell_0.4.1_1780640028204_0.8485232441143618","host":"s3://npm-registry-packages-npm-production"}},"0.5.0":{"name":"@chancestv/create-android-shell","version":"0.5.0","keywords":["android","webview","scaffold","cli","template","vue","tv"],"_id":"@chancestv/create-android-shell@0.5.0","maintainers":[{"name":"danweiyuancircle","email":"tianxiakesnail@gmail.com"}],"bin":{"create-android-shell":"index.js"},"dist":{"shasum":"697d59ffbf1ded02473c8356e7f80c0aa1e85211","tarball":"https://registry.npmjs.org/@chancestv/create-android-shell/-/create-android-shell-0.5.0.tgz","fileCount":207,"integrity":"sha512-wn+mFJFLe/11WeO5qjUMj/YF7CngienRqYza7c0GIaRGvfaP/ljNkTyQq7llDnoyp8ceUzetUxXEYS2dYBH7mw==","signatures":[{"sig":"MEUCIFYkTTQQYYlZqLjGDeiyo7Rdb6SPR0oXD5qFUYNhCWcTAiEA+7v+6fXf5E39VrmJUzAibSbeKYe2VF+IG+f91sWWLh0=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":870843},"type":"commonjs","engines":{"node":">=18"},"gitHead":"4340c0f6861b1701ab8d03c0eed6263ec90a46d3","scripts":{"test":"node --test","prepack":"node -e \"const{copyTree,DEFAULT_EXCLUDES}=require('./lib/copyTree');const fs=require('fs');const ex={...DEFAULT_EXCLUDES,names:['.DS_Store',...DEFAULT_EXCLUDES.names]};for(const[s,d]of[['../template','template'],['../claude/rules','rules'],['../claude/skills','skills']]){fs.rmSync(d,{recursive:true,force:true});copyTree(s,d,ex)}\"","postpack":"node -e \"const fs=require('fs');for(const d of['template','rules','skills'])fs.rmSync(d,{recursive:true,force:true})\""},"_npmUser":{"name":"danweiyuancircle","email":"tianxiakesnail@gmail.com"},"repository":{"url":"https://gitee.com/sh_chances/ai-android.git","type":"git","directory":"cli"},"_npmVersion":"10.9.2","description":"脚手架：生成 Android WebView 套壳 + H5 模板工程","directories":{},"_nodeVersion":"22.14.0","publishConfig":{"access":"public","registry":"https://registry.npmjs.org/"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/create-android-shell_0.5.0_1781081251776_0.43751788188108676","host":"s3://npm-registry-packages-npm-production"}},"0.6.0":{"name":"@chancestv/create-android-shell","version":"0.6.0","keywords":["android","webview","scaffold","cli","template","vue","tv"],"_id":"@chancestv/create-android-shell@0.6.0","maintainers":[{"name":"danweiyuancircle","email":"tianxiakesnail@gmail.com"}],"bin":{"create-android-shell":"index.js"},"dist":{"shasum":"59c315712ccf558ca69427c22fd99124e6cddbae","tarball":"https://registry.npmjs.org/@chancestv/create-android-shell/-/create-android-shell-0.6.0.tgz","fileCount":208,"integrity":"sha512-DY10w7BMPDv/MnoIqX3fJfsDt0GRyn0F7fbNCqDm5ARUiq66bp81vaBIhOYPPrxoISYs++ORHTA7/m1Ymn5qMw==","signatures":[{"sig":"MEYCIQD9ENyV6XxtXzj3lVIuraQ3T56oDKm/Z2N/1KAsTa1EIgIhAMe/1r50Ej3Zo4rgR1Qc334VEt+jiZKXLT7j7DStIpG7","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":874944},"type":"commonjs","engines":{"node":">=18"},"gitHead":"38e9a585a4dd81fb3d627f3fb695fe2d7f079ae5","scripts":{"test":"node --test","prepack":"node -e \"const{copyTree,DEFAULT_EXCLUDES}=require('./lib/copyTree');const fs=require('fs');const ex={...DEFAULT_EXCLUDES,names:['.DS_Store',...DEFAULT_EXCLUDES.names]};for(const[s,d]of[['../template','template'],['../claude/rules','rules'],['../claude/skills','skills']]){fs.rmSync(d,{recursive:true,force:true});copyTree(s,d,ex)}\"","postpack":"node -e \"const fs=require('fs');for(const d of['template','rules','skills'])fs.rmSync(d,{recursive:true,force:true})\""},"_npmUser":{"name":"danweiyuancircle","email":"tianxiakesnail@gmail.com"},"repository":{"url":"https://gitee.com/sh_chances/ai-android.git","type":"git","directory":"cli"},"_npmVersion":"10.9.2","description":"脚手架：生成 Android WebView 套壳 + H5 模板工程","directories":{},"_nodeVersion":"22.14.0","dependencies":{"@clack/prompts":"^1.5.1"},"publishConfig":{"access":"public","registry":"https://registry.npmjs.org/"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/create-android-shell_0.6.0_1781083761817_0.802923935123264","host":"s3://npm-registry-packages-npm-production"}},"0.6.2":{"name":"@chancestv/create-android-shell","version":"0.6.2","keywords":["android","webview","scaffold","cli","template","vue","tv"],"_id":"@chancestv/create-android-shell@0.6.2","maintainers":[{"name":"danweiyuancircle","email":"tianxiakesnail@gmail.com"}],"homepage":"https://github.com/danweiyuancircle/ai-android#readme","bugs":{"url":"https://github.com/danweiyuancircle/ai-android/issues"},"bin":{"create-android-shell":"index.js"},"dist":{"shasum":"4cce86f49ca7c11e54f39d5403a2996faf908794","tarball":"https://registry.npmjs.org/@chancestv/create-android-shell/-/create-android-shell-0.6.2.tgz","fileCount":208,"integrity":"sha512-4Z9wWE4GdaiqDQ69gGtACvhjC5bKJqgGAOD89yD7mP1MdnMGCW/utlBr7WOH75sI0yGGhU+6dpfaLlTxLGtMEQ==","signatures":[{"sig":"MEQCIGmRaVhkuPd8RXQC/hKi057FVRwQ+F7QIpGsjoCF9t13AiAnD0aAZsagrJGS7Jz6NiAAwzvmkEREz3UtIHhlztmvHA==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@chancestv%2fcreate-android-shell@0.6.2","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":875680},"type":"commonjs","engines":{"node":">=18"},"gitHead":"b994a4850aa3b6a9a5e4776339edace4a9f08a64","scripts":{"test":"node --test","prepack":"node -e \"const{copyTree,DEFAULT_EXCLUDES}=require('./lib/copyTree');const fs=require('fs');const ex={...DEFAULT_EXCLUDES,names:['.DS_Store',...DEFAULT_EXCLUDES.names]};for(const[s,d]of[['../template','template'],['../claude/rules','rules'],['../claude/skills','skills']]){fs.rmSync(d,{recursive:true,force:true});copyTree(s,d,ex)}\"","postpack":"node -e \"const fs=require('fs');for(const d of['template','rules','skills'])fs.rmSync(d,{recursive:true,force:true})\""},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:6f8a47e5-0cdf-41e6-81b3-bb118e6086f2"}},"repository":{"url":"git+https://github.com/danweiyuancircle/ai-android.git","type":"git","directory":"cli"},"_npmVersion":"11.16.0","description":"脚手架：生成 Android WebView 套壳 + H5 模板工程","directories":{},"_nodeVersion":"22.14.0","dependencies":{"@clack/prompts":"^1.5.1"},"publishConfig":{"access":"public","registry":"https://registry.npmjs.org/"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/create-android-shell_0.6.2_1781143633942_0.5483238239284409","host":"s3://npm-registry-packages-npm-production"}},"0.7.0":{"name":"@chancestv/create-android-shell","version":"0.7.0","keywords":["android","webview","scaffold","cli","template","vue","tv"],"_id":"@chancestv/create-android-shell@0.7.0","maintainers":[{"name":"danweiyuancircle","email":"tianxiakesnail@gmail.com"}],"homepage":"https://github.com/danweiyuancircle/ai-android#readme","bugs":{"url":"https://github.com/danweiyuancircle/ai-android/issues"},"bin":{"create-android-shell":"index.js"},"dist":{"shasum":"e2ee747e39e90045eda0750bf26e6666e937558c","tarball":"https://registry.npmjs.org/@chancestv/create-android-shell/-/create-android-shell-0.7.0.tgz","fileCount":218,"integrity":"sha512-FFChj4XnGEB6kwHyFOPh+WgRFhA0Ot9VvlM7duZgCH1ezgczdwRyH0qPdh6YdAB/7U662LFukYLYLC2EqGTuMA==","signatures":[{"sig":"MEYCIQCl0pj9y4j9C8Y+OT/kP+t47XNMTNY8XcwutaebiMN2AgIhALGztOI3tf7cUMFLHw1iWaWnOpESt70o6Dz+6T08/JBX","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@chancestv%2fcreate-android-shell@0.7.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":902464},"type":"commonjs","engines":{"node":">=18"},"gitHead":"ae8744f3fd5422e83a115d94b3bc05b92362a5db","scripts":{"test":"node --test","prepack":"node -e \"const{copyTree,DEFAULT_EXCLUDES}=require('./lib/copyTree');const fs=require('fs');const ex={...DEFAULT_EXCLUDES,names:['.DS_Store',...DEFAULT_EXCLUDES.names]};for(const[s,d]of[['../template','template'],['../claude/rules','rules'],['../claude/skills','skills']]){fs.rmSync(d,{recursive:true,force:true});copyTree(s,d,ex)}\"","postpack":"node -e \"const fs=require('fs');for(const d of['template','rules','skills'])fs.rmSync(d,{recursive:true,force:true})\""},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:6f8a47e5-0cdf-41e6-81b3-bb118e6086f2"}},"repository":{"url":"git+https://github.com/danweiyuancircle/ai-android.git","type":"git","directory":"cli"},"_npmVersion":"11.19.1","description":"脚手架：生成 Android WebView 套壳 + H5 模板工程","directories":{},"_nodeVersion":"22.14.0","dependencies":{"@clack/prompts":"^1.5.1"},"publishConfig":{"access":"public","registry":"https://registry.npmjs.org/"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/create-android-shell_0.7.0_1788427609073_0.1365849873260907","host":"s3://npm-registry-packages-npm-production"}},"0.8.0":{"name":"@chancestv/create-android-shell","version":"0.8.0","keywords":["android","webview","scaffold","cli","template","vue","tv"],"_id":"@chancestv/create-android-shell@0.8.0","maintainers":[{"name":"danweiyuancircle","email":"tianxiakesnail@gmail.com"}],"homepage":"https://github.com/danweiyuancircle/ai-android#readme","bugs":{"url":"https://github.com/danweiyuancircle/ai-android/issues"},"bin":{"create-android-shell":"index.js"},"dist":{"shasum":"9d8ad79a79488b462f2d3b7fda56d5ba3c5d5748","tarball":"https://registry.npmjs.org/@chancestv/create-android-shell/-/create-android-shell-0.8.0.tgz","fileCount":221,"integrity":"sha512-wnMqZY6MeWmhaxlSL2hQp+C1hAS+Ea+UJZXayxA6Wnfg8JrAKX9rikf+Ltq2HLr9MgbKqHRnFVTA5ZV4r6TCLQ==","signatures":[{"sig":"MEQCIDTABzQmADefAuSlpzJdyDB+OimfcqszPo5ATAnE7BFOAiAbOhcoEKqtmZ99NTv6+8vgsnveqpQqfp0OCGUd1Mibng==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@chancestv%2fcreate-android-shell@0.8.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":908555},"type":"commonjs","engines":{"node":">=18"},"gitHead":"751b7e4d434d0d70de9bf148b25d5e21ccae660f","scripts":{"test":"node --test","prepack":"node -e \"const{copyTree,DEFAULT_EXCLUDES}=require('./lib/copyTree');const fs=require('fs');const ex={...DEFAULT_EXCLUDES,names:['.DS_Store',...DEFAULT_EXCLUDES.names]};for(const[s,d]of[['../template','template'],['../claude/rules','rules'],['../claude/skills','skills']]){fs.rmSync(d,{recursive:true,force:true});copyTree(s,d,ex)}\"","postpack":"node -e \"const fs=require('fs');for(const d of['template','rules','skills'])fs.rmSync(d,{recursive:true,force:true})\""},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:6f8a47e5-0cdf-41e6-81b3-bb118e6086f2"}},"repository":{"url":"git+https://github.com/danweiyuancircle/ai-android.git","type":"git","directory":"cli"},"_npmVersion":"11.19.1","description":"脚手架：生成 Android WebView 套壳 + H5 模板工程","directories":{},"_nodeVersion":"22.14.0","dependencies":{"@clack/prompts":"^1.5.1"},"publishConfig":{"access":"public","registry":"https://registry.npmjs.org/"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/create-android-shell_0.8.0_1788429358581_0.24023836580577673","host":"s3://npm-registry-packages-npm-production"}},"0.8.1":{"name":"@chancestv/create-android-shell","version":"0.8.1","description":"脚手架：生成 Android WebView 套壳 + H5 模板工程","bin":{"create-android-shell":"index.js"},"type":"commonjs","scripts":{"test":"node --test","prepack":"node -e \"const{copyTree,DEFAULT_EXCLUDES}=require('./lib/copyTree');const fs=require('fs');const ex={...DEFAULT_EXCLUDES,names:['.DS_Store',...DEFAULT_EXCLUDES.names]};for(const[s,d]of[['../template','template'],['../claude/rules','rules'],['../claude/skills','skills']]){fs.rmSync(d,{recursive:true,force:true});copyTree(s,d,ex)}\"","postpack":"node -e \"const fs=require('fs');for(const d of['template','rules','skills'])fs.rmSync(d,{recursive:true,force:true})\""},"engines":{"node":">=18"},"repository":{"type":"git","url":"git+https://github.com/danweiyuancircle/ai-android.git","directory":"cli"},"keywords":["android","webview","scaffold","cli","template","vue","tv"],"publishConfig":{"registry":"https://registry.npmjs.org/","access":"public"},"dependencies":{"@clack/prompts":"^1.5.1"},"gitHead":"8908a825e1860cae1b18c965272def21bc9b6742","_id":"@chancestv/create-android-shell@0.8.1","bugs":{"url":"https://github.com/danweiyuancircle/ai-android/issues"},"homepage":"https://github.com/danweiyuancircle/ai-android#readme","_nodeVersion":"22.14.0","_npmVersion":"11.19.1","dist":{"integrity":"sha512-QFbR7tmWsD0TCcZK6iQ+x+BbA0UJzdFPYK3pbfIdi2TUOgK2oEu3t762j2RHdukpJmd1ilDIikvL52oSWQKOxQ==","shasum":"38c2adbae569c68759031f15c00467bd64744a66","tarball":"https://registry.npmjs.org/@chancestv/create-android-shell/-/create-android-shell-0.8.1.tgz","fileCount":221,"unpackedSize":909118,"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@chancestv%2fcreate-android-shell@0.8.1","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEQCIGzsAES0pBqGGFKgljsTPWbeW3+K0COyvFjlHOOmqD2AAiBfiDenJw5v/akKUfawL5kSb6QgMjkGVObtFTegaKjycw=="}]},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:6f8a47e5-0cdf-41e6-81b3-bb118e6086f2"}},"directories":{},"maintainers":[{"name":"danweiyuancircle","email":"tianxiakesnail@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/create-android-shell_0.8.1_1788430260534_0.009438249429380763"},"_hasShrinkwrap":false}},"time":{"created":"2026-06-05T05:59:40.170Z","modified":"2026-09-03T10:11:01.086Z","0.4.0":"2026-06-05T05:59:40.530Z","0.4.1":"2026-06-05T06:13:48.417Z","0.5.0":"2026-06-10T08:47:32.011Z","0.6.0":"2026-06-10T09:29:21.974Z","0.6.2":"2026-06-11T02:07:14.120Z","0.7.0":"2026-09-03T09:26:49.277Z","0.8.0":"2026-09-03T09:55:58.709Z","0.8.1":"2026-09-03T10:11:00.695Z"},"bugs":{"url":"https://github.com/danweiyuancircle/ai-android/issues"},"homepage":"https://github.com/danweiyuancircle/ai-android#readme","keywords":["android","webview","scaffold","cli","template","vue","tv"],"repository":{"type":"git","url":"git+https://github.com/danweiyuancircle/ai-android.git","directory":"cli"},"description":"脚手架：生成 Android WebView 套壳 + H5 模板工程","maintainers":[{"name":"danweiyuancircle","email":"tianxiakesnail@gmail.com"}],"readme":"# @chancestv/create-android-shell\n\n脚手架：按技术栈生成「Android WebView 套壳 + H5」模板工程。\n\n## 安装与用法\n\n需 Node ≥18。\n\n```bash\n# 免安装直接跑（交互补齐 父目录/applicationId/应用名/图标）\nnpm create @chancestv/android-shell@latest\n\n# 等价：npx @chancestv/create-android-shell / pnpm create @chancestv/android-shell / yarn create @chancestv/android-shell\n```\n\n## 发布\n\n仓库采用 GitHub Actions 在 Tag (`vX.Y.Z`) 时发布 `cli`：\n\n1. 更新 `cli/package.json` 版本号；\n2. 打标签 `git tag vX.Y.Z && git push github vX.Y.Z`；\n3. GitHub Actions 自动执行测试并用 OIDC（trusted publishing）发布到 npm，无需 `NPM_TOKEN`。\n\nOIDC 预置要求（`npmjs.com`）：\n\n- `https://www.npmjs.com/package/@chancestv/create-android-shell` 打开后进入 `Settings → Trusted publishing`；\n- 新增 GitHub Actions 入口：`danweiyuancircle` / `ai-android` / `cli-release.yml`；\n- 允许操作：`npm publish`；\n- 本仓库发布时需保留 workflow 的 `permissions: id-token: write` 与 `contents: write`。\n\nWorkflow 文件：`.github/workflows/cli-release.yml`。\n\n## 变更记录\n\n- 本 CLI 的发布日志见：`cli/CHANGELOG.md`\n\n## 本地发布检查（可选）\n\n```bash\ncd /Users/chances/workspace/eng_prod/chances-tv-android/cli\nnpm test\nnpm pack --dry-run\n```\n\n## 发布流程（OIDC）\n\n```bash\ncd /Users/chances/workspace/eng_prod/chances-tv-android\ncd cli\nnpm version patch\ngit add package.json package-lock.json CHANGELOG.md README.md\ngit commit -m 'chore(cli): bump patch version for release'\ngit tag v0.X.Y\ngit push github master v0.X.Y\n```\n","readmeFilename":"README.md"}