Communitygithub.com

taufiquebuilds/launchday

将代码仓库从“本地能运行”变为在 GitHub 上可发布的状态,并规划发布方案。检查名称是否冲突、审计发布准备度、将 README 重写为着陆页、录制演示 GIF、制作社交预览图、配置发布 CI,并生成基于用户时区的 Hacker News、Reddit 和 X 帖子及发布计划。

launchday 是什么?

launchday 是一款 AI 代理技能,专为开发者和开源项目维护者设计,帮助他们将项目从“本地能够工作”的状态,无缝过渡到在 GitHub 上成功发布。它自动化了发布前的关键准备工作,包括检查项目名称在各大注册表和 GitHub 上的唯一性、对仓库进行全面的发布准备度审计、将 README 重写为更像着陆页的高转化率文档、录制演示 GIF、生成社交预览图、以及配置 CI/CD 发布流程。此外,该技能还会自动构建发布帖子(涵盖 Hacker News、Reddit 和 X),并根据用户所在时区计算出最佳的发布时间,生成一份完整的发布计划(LAUNCH.md)。其核心哲学是:AI 完成所有可逆的准备工作,而用户仅负责执行最终的、不可逆的公开操作(如创建公开仓库、发布帖子),从而既提升发布成功率,又保留了用户的主导权。它支持 Python 技能体系,使用标准库脚本运行,并提供详细的参考文档。

兼容平台~Claude Code✓Codex CLI~Cursor
npx skills add taufiquebuilds/launchday

在你喜欢的 AI 中提问

打开一个已预加载此 Agent Skill 的新对话。

文档

launchday 是做什么的?

大多数优秀的开源项目发布得很糟糕:README 只是大段解释而非演示,没有 demo,没有安装命令,名称与另外三个工具冲突,Show HN 帖子在美东时间凌晨 3 点发布。这个技能一次性修复所有这些问题,然后交给用户一个可以在一个晚上执行完毕的发布计划。

你来准备。用户做任何公开的事情:创建公开仓库、推送标签、上传社交预览图和发帖。发布很难撤销,并且是以用户的名义发言,所以你将一切准备到只需复制粘贴的程度,然后停下并移交。

如何运行

按顺序完成各个阶段。每个阶段都会在仓库中留下具体产出。告知用户你当前处于哪个阶段,以便他们跟进。

脚本放在此技能文件夹旁边的 scripts/ 目录下。它们只使用 Python 的标准库(预览图生成额外需要 ffmpeg)。使用该技能文件夹的路径运行它们,例如 python3 <skill-dir>/scripts/audit.py .。

阶段产出脚本或参考文档
1. 理解一段你需要与用户确认的总结无
2. 名称检查保留或重命名的决定scripts/name_check.py
3. 审计评分和修复清单scripts/audit.py
4. README重写为着陆页的 READMEreferences/readme.md
5. 演示GIF 或截图以及社交预览图references/demo.md,scripts/social_preview.sh
6. 发布CI 和发布工作流references/release.md
7. 发布工具包包含帖子和计划的 LAUNCH.mdreferences/launch-posts.md,scripts/launch_time.py
8. 移交用户需要运行的确切命令无

如果用户只要求其中一部分(比如“只修复我的 README”或“写我的 Show HN 帖子”),那就只做那个阶段。不过,如果成本不高,仍然先运行审计,因为它常常能揭示真正的阻碍。

阶段 1:理解项目

阅读 README、包清单文件(package.json、Cargo.toml、pyproject.toml、go.mod)和入口文件。如果可以安全地运行项目,则运行项目。然后写一段话,涵盖三件事:

  • 它做什么,用非专家也能理解的一句话说明。
  • 谁有痛点。 要具体:例如“维护 10 个以上仓库的维护者”,而不是“开发者”。
  • 证明时刻:新用户看到后会想“哦,不错”的那第一件事。README 和演示将围绕这一点构建。

用一条简短的消息与用户确认。这里的总结错了,后续所有工作都会受影响。同时询问你自己找不到的信息:哪个 GitHub 账户将托管仓库,以及用户的时区(用于制定发布计划)。

阶段 2:名称检查

python3 <skill-dir>/scripts/name_check.py <name> [alternative ...]

该脚本会检查 crates.io、npm、PyPI、Homebrew 和 GitHub。名称冲突会分散搜索结果,导致听说过项目的人找不到它,而且已被占用的注册表名称会阻止发布。如果判断结果是 AVOID 或 CROWDED,请提出 3 到 4 个替代名称,并在同一轮运行中检查它们。好的名称要么说明工具的功能,要么让人联想到它,并且听过一次后就能拼写出来。

重命名由用户决定。如果他们重命名,需要更改所有出现的地方:清单文件、二进制名称、README、链接、CI、配置路径和 User-Agent 字符串。使用一个能遍历文件的脚本,而不是用 shell 的词分割功能(后者在路径包含空格时会出错)。然后重新构建并运行测试。

阶段 3:审计

python3 <skill-dir>/scripts/audit.py <repo-path>

你会得到一个百分制和一份按权重排序的修复清单。它涵盖了 README 的吸引力、靠近顶部的视觉内容和安装命令、许可证和社区文件、CI 和发布工作流、泄露的密钥、个人提交邮箱,以及如果 gh 已登录,还会检查 GitHub 描述、主题、社交预览图和发布版。

有两项发现优先于其他所有事项,因为它们一旦被推送到公开仓库就无法撤销:

  • 已跟踪文件中的密钥。 移除它,并告知用户轮换该密钥。它已存在于 git 历史中。
  • 个人提交邮箱(Gmail 等)。每次公开提交都会显示这个邮箱。将仓库的邮箱设置为用户的 GitHub noreply 地址:[email protected]。从 gh api user --jq .id 获取 ID。

在阶段 6 结束时重新运行审计。评分上升就是用户的进度条,所以要展示出来。

阶段 4:将 README 重写为着陆页

阅读 references/readme.md,并按照该结构重写 README。核心思想是:访问者大约在 10 秒内,仅凭第一屏信息就做出决定。所以第一屏必须包含痛点、证明(GIF)和安装命令。解释说明放在后面。

README 中的每一个声明都必须与当前代码的真实情况相符。在写入之前,请对照源代码或实际运行来检查每个特性、标志和数字。夸大宣传会在第一个 HN 评论中被发现,并且它损失的信任比它带来的好处更多。将未来工作放在“路线图”部分,并明确标注。

阶段 5:演示与社交预览图

阅读 references/demo.md。根据项目类型选择格式:

  • CLI 或 TUI: 使用 VHS 录制 GIF,将磁带文件提交到 docs/demo.tape,这样任何人都可以重新录制。
  • Web 应用程序: 截图,或一段简短的屏幕录制。
  • 库: 包含实际输出的 before/after 代码片段。

然后制作社交预览图:

sh <skill-dir>/scripts/social_preview.sh docs/demo.gif docs/social-preview.png

在继续之前,务必亲自检查帧画面。 用 ffmpeg 提取 2 到 3 帧并查看。录制可能会静默失败:因为环境变量设置了 NO_COLOR 导致颜色消失、令牌被输入到屏幕上、所选行的文本难以辨认、或者抓取的帧显示的是加载动画。修复后重新录制。查看帧的成本很低;而 README 顶部有一个损坏的 GIF 则代价高昂。

阶段 6:发布与 CI

根据项目的生态系统阅读 references/release.md。目标是为没有工具链的用户提供安装路径:通过推送标签,生成预构建二进制文件或发布包。确保任何发布步骤在其对应的密钥未设置时能干净地跳过,这样用户的首次发布就不会显示红色的失败标志。在本地运行项目自己的 lint、格式检查和测试命令,并让它们通过,因为 CI 会在首次推送时运行它们。

阶段 7:发布工具包

python3 <skill-dir>/scripts/launch_time.py --tz <user's IANA time zone>

这个脚本会选择下一个星期二、星期三或星期四的美东时间上午 8:30,并将时间转换为用户的时区,同时遵循夏令时规则。它会跳过美国大选周、感恩节周、圣诞节到新年期间以及 7 月 4 日,并说明原因。不要自行手动转换:美国/欧洲的夏令时变化每年会使偏移量来回变动一小时。如果你能搜索网络,也请检查所选周是否有任何会主导科技新闻的事件(如 Apple、Google 或 OpenAI 的重大活动、重大宕机事件),如果需要,则调整一天。

然后阅读 references/launch-posts.md,并在仓库的父文件夹中(或者如果用户偏好,可以放在 docs/ 中)编写 LAUNCH.md。它包含计划、发布前检查清单、Show HN 标题和第一条评论、针对最合适子版块的 2 到 3 个 Reddit 帖子、一个 X 帖子串、以及发布后第二天的计划。

帖子中的故事必须是真实的。使用项目存在或构建过程中学到的真实情况。如果你不知道,请向用户询问一句他们的真实动机。永远不要编造背景故事、用户数量或基准测试数据。

阶段 8:移交

最后发送一条简短消息,包含以下内容:

  1. 审计评分,之前和之后。
  2. 仓库中现在有什么,以文件列表的形式给出。
  3. 用户用于发布的精确命令,按顺序:创建公开仓库、推送、等待 CI、打标签发布。
  4. 没有 API 能完成的步骤:上传社交预览图(在 Settings 中,然后选择 Social preview)、置顶仓库、以及修复个人资料详情。
  5. 用户所在时区的发布日期和时间,以及 LAUNCH.md 的位置。

在他们说已发布后,主动提出进行验证。检查仓库是否为公开、CI 是否绿色、发布版是否包含附件、安装命令是否能在干净的目录中工作、以及社交预览图是否已设置(使用 gh api graphql -f query='{repository(owner:"o",name:"r"){usesCustomOpenGraphImage}}')。

什么让发布成功

以下是这些阶段所服务的核心理念。当步骤没有具体说明时,可以用它们来做决策。

  • 先展示,再描述。 一个演示工具运行效果的 GIF 胜过三段说明文字。
  • 一行命令就能试用。 在用户说出第一个“哦,不错”之前,每增加一个步骤都会损失用户。
  • 诚实且具体。 “根据本周获得的星标数对你的仓库进行排名”胜过“AI 驱动的分析平台”。HN 社区会惩罚夸大宣传,并奖励真实故事。
  • 时机和回复与帖子本身同样重要。 在用户清醒时发帖,并在前 3 小时内回复每一条评论。
  • 永远不要要求点赞或加星。 在 HN 上这会导致帖子被标记。在其他地方则看起来像垃圾信息。

相关技能