骂了吗 · WouldItShip · 开源 CLI

装不起来,就是最狠的差评。

vibecoding 让做产品的门槛塌了,但「做出来」和「有人能用」之间的鸿沟没变小——只是被自己人的乐观掩盖了。npx woulditship 在你的 repo 目录里,像最挑剔的陌生用户那样真的去装、去跑你的产品。如果它连装都装不起来——那本身就是最不可辩驳的骂。

woulditship · ~/my-vibe-app

npx woulditship

→ 识别栈:Node (package.json)

→ 真实安装:npm install …

✗ postinstall 退出码 1:找不到 ./scripts/setup.sh

✗ 安装失败 · 用时 8.2s

README 里写「一行装好」,结果 postinstall 直接挂了。第一次见你的人到这就关掉了——不是嫌弃,是根本进不来。先让它装得起来,再谈别的。

为什么需要被骂

你测着顺,是因为你早就知道答案

你知道每个按钮该点哪、哪些是占位、哪步要手动跳过。陌生用户没有这套内部知识。

盲区 内部知识幻觉

你脑子里有完整地图,所以处处顺。陌生用户第一眼只看到困惑和死链。

盲区 装不起来 = 直接劝退

README 的安装步骤跑不通,没人会去 issue 里问。他们默默离开,你永远不知道。

盲区 自己人的乐观

「在我机器上能跑」掩盖了一切。骂了吗在一台干净环境里,当陌生人替你跑一遍。

它怎么骂你 · 3 步

认栈 → 真装真跑 → 出毒评

不是静态扫 README 挑刺。是真的在你的 repo 里走一遍陌生用户的第一次。

  1. 01 认栈 detectStack

    读 package.json / requirements.txt / go.mod / Cargo.toml,自动判定技术栈。认不出就明确告诉你「不支持」,绝不硬猜。

  2. 02 真装真跑 runInstall

    在目标 repo 里真的执行 install(含 postinstall),像陌生用户一样体验第一次上手。硬超时默认 300s,--no-run 可只静态读。

  3. 03 出毒评 roast

    把安装/运行的真实结果喂给 LLM,生成一针见血的毒评。配 DEEPSEEK_API_KEY 才调模型;没配走离线 mock,照样骂,朴素些。

用法

一个 npx,零安装

Node ≥ 22。在你想被骂的 repo 目录里直接跑——执行前会警告并等你确认。

npx woulditship                 # 在当前 repo 跑;执行前会警告并等你确认
npx woulditship ./some-repo     # 指定目录
npx woulditship --no-run        # 静态模式:只读 README/结构,绝不执行任何脚本
npx woulditship --yes           # 跳过确认(CI / 熟练用户)
npx woulditship --timeout 120   # 安装硬超时秒数(默认 300)

想要更毒的评:配 DEEPSEEK_API_KEY(默认模型 deepseek-chat,可用 DEEPSEEK_MODEL 改)。没配也能用,走离线 mock。源码与 issue 见 GitHub

支持的栈 · v1

四种主流栈,认不出不硬猜

按 repo 里的清单文件判定。不认识的栈会明确说「不支持」,而不是瞎跑。

Nodepackage.json
Pythonrequirements.txt · pyproject.toml
Gogo.mod
RustCargo.toml

认不出的栈 → 明确「不支持」,不硬猜。更多栈在路上。

⚠ 安全 它会真的运行别人的代码

默认会在目标 repo 执行 install / run 脚本(含 postinstall),等于运行里面的代码。这是个骂人工具,你大概率会手痒去骂别人的 repo——而 postinstall 可以是任意代码。

拿别人的 repo 前想清楚。只想看看而不执行任何脚本,用 --no-run 走静态模式:只读 README 和目录结构。

路线

从「装得起来吗」到「真用着行吗」

v1 先解决最硬的那道门槛:装 + 失败即 roast。装不起来是最不可辩驳的差评,先把这块照清楚。下一站是真的把服务跑起来、点页面、走一遍核心流程,给出体验式的吐槽——不只是「能装」,而是「值不值得用」。

  1. NOW v1 · 装 + 失败即 roast
  2. NEXT v2 · run + 真实体验式吐槽
  3. 开源 MIT · 神仙鱼 / HRDAI

骂了吗 (WouldItShip) 开源 MIT。做产品的门槛塌了,但「能用」的门槛没塌——它替你站在陌生用户那一侧,把你看不见的劝退点一句句骂出来。