Impeccable 发布流程完整解析:release.mjs 六道守卫与 npm prepack 换装技巧
Impeccable 发布流程完整解析release.mjs 六道守卫与 npm prepack 换装技巧【免费下载链接】impeccableThe design language that makes your AI harness better at design.项目地址: https://gitcode.com/GitHub_Trending/im/impeccableImpeccable 是一套让 AI 编码代理更懂设计的项目它的发布流程由 scripts/release.mjs 和 npm prepack 生命周期钩子共同守护。这篇文章带你完整看懂它如何用 330 行脚本管住三个独立版本化的组件又如何用两行prepack/postpack脚本让 npm 包换一套 README 出门。一、为什么这个发布流程值得学大多数仓库的发布靠人肉记步骤打 tag、写 release notes、传安装包、发 npm……少一步就出事故。Impeccable 的答案是把发布规则写进脚本让脚本拒绝一切不合规的发布。核心设计只有两条 三个组件skill / cli / extension独立版本号一个脚本统管 任何前置条件不满足脚本直接fail退出宁可发不出去也不能发错先看整体分工组件版本来源Tag 前缀发布去向Skill.claude-plugin/plugin.jsonskill-vGitHub Release dist/universal.zipCLIpackage.jsoncli-vnpm 注册表Extensionextension/manifest.jsonext-vChrome Web Store / AMO这套配置集中在 scripts/release.mjs 的COMPONENTS对象里每个组件声明自己的 manifest 路径、tag 前缀、构建命令和发布产物。二、一条命令触发发布release.mjs 怎么用发布者的全部操作只有两步——升版本号并写好 changelog然后# 先预演不产生任何副作用 node scripts/release.mjs skill --dry-run # 确认无误后正式发布 bun run release:skill对应的 npm script 定义在 package.json 中release:skill、release:cli、release:ext三个入口最终都指向同一个release.mjs。三、六道守卫脚本如何拒绝危险发布release.mjs的价值不在发布本身git taggh release create三行命令就够而在发布之前的层层拦截。按执行顺序共六道关卡1. 版本号必须一致Skill 的版本同时写在plugin.json和marketplace.json两处脚本会校验两者一致否则报 disagree. Bump both.防止两个 manifest 版本漂移。2. 工作区必须干净→ Checking working tree is clean ✓ clean有未提交改动直接退出并列出脏文件。这是最基础也最救命的一道。3. 构建产物必须与源码零漂移对 skill 和 extension脚本会重新跑一遍构建bun run build:release/bun run build:extension再检查 git 状态。如果重新生成的产物和已提交的文件有 diff说明提交的是旧产物发布被拒。这一步堵住了一个经典事故改了源码忘了重新构建线上拿到的 zip 是过期的。4. HEAD 必须已推送本地 commit 了但没git push拒。tag 会指向远端不存在的提交后续git checkout skill-v1.2.3的人必然踩坑。5. tag 不能被占用本地和git ls-remote远端都查一遍skill-v1.2.3只要在任何一端存在过就拒绝重复发布——版本号只许发一次。6. changelog 必须存在、且结构合法发布说明不是手写的而是从 changelog 页面里自动提取对应版本的条目按v1.2.3/CLI v1.2.3/Extension v1.2.3三种前缀定位转成 Markdown 作为 Release Notes。脚本对条目的解析相当较真见 scripts/release.mjs 中的注释搜索范围限定在本版本的/article之前否则会把下一版的说明当成这一版的发出去——代码注释里记录了这曾真实发生过所有 v4.0.x 的 skill 发布都带着 v4.0.0 的说明出门没有任何东西报错取该条目内所有ul classcf-items列表而非第一个避免长版本被分组后漏发列表没开始和没闭合给出不同的报错信息因为两者的修复方式不同最后还有一道产物校验dist/universal.zip等文件必须真实存在缺一即拒。四、发布之后自动生成的推文与版本漂移检查通过全部守卫后脚本执行打 tag → 推 tag →gh release create附带产物文件然后做两件贴心事自动生成推文草稿从 changelog 每条strong加粗导语中提取亮点贪心填入 280 字符限额附上发布链接直接打印出来供复制。实现见 scripts/release.mjsskill 专属的在线版本校验npx impeccable update的更新源是官网而非 GitHub Release脚本会请求官网的 version API如果线上版本落后于刚发布的版本就大声警告记得重新部署官网——又一次是对真实事故4.0.0 发布后更新用户被卡在旧版的补救CLI 组件则输出下一步提示npm publishextension 输出上传到应用商店的指引。五、npm prepack 技巧两行命令完成 README 换装这是本篇最值得偷师的一个技巧。问题背景仓库里的README.md是面向 GitHub 用户的完整版项目全景、设计理念但impeccable包发布到 npm 后用户看到的是npm 包页面他们更需要 CLI 用法、安装命令、退出码说明——所以另写了一份 README.npm.mdnpm 有个隐藏机制npm pack/npm publish前会自动执行prepack钩子。Impeccable 用它做了一次文件换装全部代码就两行定义在 package.jsonprepack: cp README.md README.repo.md cp README.npm.md README.md, postpack: cp README.repo.md README.md rm README.repo.md执行时序拆解prepack先把原 README 备份为README.repo.md再把 npm 版顶到README.md的位置npm 打包此时 tarball 里装进去的就是README.npm.md的内容postpack打包结束把原版 README 换回来删掉备份——工作区恢复原样效果仓库里永远只有一份 READMEnpm 包却带着另一份 README 出门且整个换装过程对 git 零污染postpack保证了换回来。 这个技巧适用于任何仓库文档 ≠ 包文档的场景monorepo 中的子包、私有 API 与公开 README 分离、不同渠道的发布说明……只要是发布物需要换个面孔prepack/postpack 就是最轻量的方案。六、发布脚本怎么测试用 --dry-run 搭沙盒一个只保护改状态动作的脚本测试它本身就有悖直觉——你总不能真的打 tag 发布一遍来做测试。tests/release.test.mjs 的解法很干净在临时目录git init一个一次性仓库配一个本地 bare 仓库当origin把release.mjs原样拷进去以维护者的方式 spawn 执行全程使用--dry-run所有变更类步骤打 tag、push、gh release create、构建被跳过并打印[dry-run]前缀但所有守卫逻辑照常完整运行于是 12 个测试精确覆盖了每一种拒绝路径脏工作区、未推送的 HEAD、本地 tag 已存在、远端 tag 已存在、两个 manifest 版本不一致、changelog 缺条目、产物缺失外加正向路径Markdown 转换正确性、推文不超 280 字符。--dry-run模式让预演发布成为了一等公民——这也是 AGENTS.md 里明确推荐给每位维护者的习惯正式发布前先 dry-run 一遍。七、核心要点速览机制解决的问题关键文件单脚本多组件三组件独立版本化tag 前缀防混淆release.mjs六道前置守卫拒绝脏树、未推送、旧产物、重复 tag、缺 changelog、缺产物release.mjschangelog 自动提取发布说明零手写且有结构校验防串版release.mjs--dry-run全量守卫可预演且可测试release.test.mjsprepack/postpack 换装npm 包携带专属 README仓库文件零改动package.json发布流程的本质不是自动化而是把每一次事故的教训变成一条fail。读懂release.mjs里的注释你看到的不只是代码而是一本用真实事故写成的发布安全手册。【免费下载链接】impeccableThe design language that makes your AI harness better at design.项目地址: https://gitcode.com/GitHub_Trending/im/impeccable创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

相关新闻

从模型坐标到屏幕坐标:Qt+OpenGL场景管理实战解析

从模型坐标到屏幕坐标:Qt+OpenGL场景管理实战解析

简介:本资源是一个基于Qt框架集成OpenGL三维渲染能力的桌面图形应用开发项目,面向C与Qt初学者及图形编程进阶学习者,解决在跨平台GUI中嵌入高性能3D可视化场景的核心问题。压缩包共14个文件,含3个核心源码文件(opengls…

2026/8/31 19:58:35 阅读更多 →
2018网易Android实习笔试复盘:Handler、HashMap与链表反转全解析

2018网易Android实习笔试复盘:Handler、HashMap与链表反转全解析

前几天整理硬盘,翻出一份2018年网易Android开发实习生的笔试回忆版,忍不住又从头到尾过了一遍。网易当年的题不算难,但筛人效果非常好——它不堆偏题,专挑你平时写项目一定会碰、但又未必认真想过的底子来考。Activity生命周期、H…

2026/8/31 19:58:35 阅读更多 →
DBeaver 数据库结构比较怎么用:3步生成差异报告的完整指南(附避坑清单)

DBeaver 数据库结构比较怎么用:3步生成差异报告的完整指南(附避坑清单)

DBeaver 数据库结构比较怎么用:3步生成差异报告的完整指南(附避坑清单) 【免费下载链接】dbeaver Free universal database tool and SQL client 项目地址: https://gitcode.com/GitHub_Trending/db/dbeaver DBeaver 自带一个常被忽略…

2026/8/31 19:58:35 阅读更多 →

最新新闻

Agent技能路由选型:检索式与大模型混合方案工程实践

Agent技能路由选型:检索式与大模型混合方案工程实践

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/8/31 20:40:08 阅读更多 →
基于STM32的智能灌溉系统:从硬件选型到FreeRTOS软件架构实践

基于STM32的智能灌溉系统:从硬件选型到FreeRTOS软件架构实践

简介:本资源是一套基于STM32微控制器的智能灌溉系统完整开发包,面向嵌入式初学者、课程设计学生及农业物联网实践者,解决土壤湿度感知、自动启停灌溉、低功耗控制等典型应用场景问题。压缩包共92个文件,总大小2.82MB,涵…

2026/8/31 20:40:08 阅读更多 →
conda虚拟环境搭建Python数据分析环境:从numpy到Jupyter完整指南

conda虚拟环境搭建Python数据分析环境:从numpy到Jupyter完整指南

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/8/31 20:40:08 阅读更多 →
新手必看:用AI短片免费制作流程里最容易翻车的三个环节

新手必看:用AI短片免费制作流程里最容易翻车的三个环节

最近很多朋友问:为什么别人用AI做的漫剧、短剧看着挺像那么回事,自己一上手,成品却总透着一股“廉价感”?画面闪个不停,人物左右横跳,配音和嘴型对不上,连自己都不忍直视。 其实,AI短…

2026/8/31 20:40:08 阅读更多 →
NVIDIA Vera CPU规模出货:Arm架构如何重塑AI数据中心与容器部署

NVIDIA Vera CPU规模出货:Arm架构如何重塑AI数据中心与容器部署

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/8/31 20:40:08 阅读更多 →
Django实战:构建高考志愿推荐系统的完整指南

Django实战:构建高考志愿推荐系统的完整指南

简介:本资源是一套面向高中毕业生及教育从业者的高考志愿智能推荐系统完整源码,基于Django框架构建,融合多元智能算法解决志愿填报中院校匹配度低、决策依据模糊、个性化不足等现实痛点。压缩包共631个文件,含93个核心Python后端模…

2026/8/31 20:39:07 阅读更多 →

日新闻

MCU无DAC如何用定时器+DMA 2D输出高保真任意波形

MCU无DAC如何用定时器+DMA 2D输出高保真任意波形

接到一个仪表类项目,要在 LAT1189 上输出几种不同波形:正弦、三角、带可调死区的脉冲,频率和幅度都得能实时改。板子上没有 DAC,就一个定时器加几个 DMA 通道。我一开始觉得在定时器中断里改比较寄存器也能应付,后来把…

2026/8/31 0:00:05 阅读更多 →
Cortex-M3 Flash下载失败?从编程错误标志到供电瞬态排查

Cortex-M3 Flash下载失败?从编程错误标志到供电瞬态排查

前两周调试一块带着Cortex-M3内核的板子,IDE里下载固件时突然弹出一行刺眼的错误: error: flash download failed - cortex-m3 。这种报错在嵌入式开发里太常见了,常见到很多人第一反应就是换根数据线、重插一下调试器,但重启三…

2026/8/31 0:00:05 阅读更多 →
STM32 TouchGFX屏幕切换Transition优化:原理、配置与排障实战

STM32 TouchGFX屏幕切换Transition优化:原理、配置与排障实战

做STM32 GUI开发的朋友应该都有体会——界面搭得再漂亮,一旦屏幕切换卡成PPT,整个产品的档次瞬间就没了。早期我在LAT1212这个基于STM32的GUI工程上用TouchGFX做二次开发,最头疼的不是画界面,而是怎么让切换动画既流畅又自然。Tou…

2026/8/31 0:00:05 阅读更多 →

周新闻

备战数据库管理工程师校招:索引、事务、备份恢复核心考点解析

备战数据库管理工程师校招:索引、事务、备份恢复核心考点解析

每年校招季我都会接触不少准备数据库方向笔试的同学,看到最多的状态就是:简历上写着“熟悉 MySQL”“了解索引优化”,一碰到数据库管理工程师的笔试卷,却在索引、事务、锁、备份恢复这些题目上翻车。网易这套 2018 校园招聘数据库…

2026/8/31 13:13:27 阅读更多 →
数字电路时序基石:深入理解建立时间与保持时间

数字电路时序基石:深入理解建立时间与保持时间

1. 这不是“背公式”的事:时间参数到底在约束什么你翻过数字电路教材,一定见过这两个词:建立时间(Setup Time)和保持时间(Hold Time)。它们常被并列写在触发器(Flip-Flop&#xff09…

2026/8/31 9:02:46 阅读更多 →
蓝桥杯国赛超声波测距机:从单片机原理到嵌入式系统实战

蓝桥杯国赛超声波测距机:从单片机原理到嵌入式系统实战

1. 项目缘起:从赛题到超声波测距机的诞生第八届蓝桥杯单片机设计与开发国赛的题目,我至今记忆犹新。它没有直接给出一个花哨的名字,而是用“超声波测距机”这个朴实无华的功能描述,精准地勾勒出了考核的核心。对于当时备赛的我而言…

2026/8/31 14:32:14 阅读更多 →

月新闻

免费解锁百度网盘SVIP加速:macOS用户必备的下载提速终极指南

免费解锁百度网盘SVIP加速:macOS用户必备的下载提速终极指南

免费解锁百度网盘SVIP加速:macOS用户必备的下载提速终极指南 【免费下载链接】BaiduNetdiskPlugin-macOS For macOS.百度网盘 破解SVIP、下载速度限制~ 项目地址: https://gitcode.com/gh_mirrors/ba/BaiduNetdiskPlugin-macOS 还在为百度网盘macOS版的龟速下…

2026/8/30 21:10:48 阅读更多 →
终极ncmdump指南:3分钟实现网易云NCM音乐解密与格式转换

终极ncmdump指南:3分钟实现网易云NCM音乐解密与格式转换

终极ncmdump指南:3分钟实现网易云NCM音乐解密与格式转换 【免费下载链接】ncmdump 项目地址: https://gitcode.com/gh_mirrors/ncmd/ncmdump 还在为网易云音乐下载的NCM格式文件无法在其他播放器播放而烦恼吗?ncmdump解密工具帮你轻松解决这个困…

2026/8/30 18:07:21 阅读更多 →
HarmonyOS 应用开发《掌上英语》第81篇: 智能体卡片:为英语学习 App 打造桌面级学习助手

HarmonyOS 应用开发《掌上英语》第81篇: 智能体卡片:为英语学习 App 打造桌面级学习助手

AgentCard 智能体卡片:为英语学习 App 打造桌面级学习助手适用平台:HarmonyOS 7.0 (API 26 Beta)一、引言 HarmonyOS 7.0(API 26 Beta)新增了 AgentCard 智能体卡片能力,这是继 HMAF(鸿蒙智能体框架&#x…

2026/8/30 21:10:44 阅读更多 →