Community编程与开发github.com

快速原型项目搭建工具

将一个想法快速转化为可运行、可分享的网页应用原型。支持在指定文件夹中搭建Next.js原型项目、连接所需CLI、部署到在线链接,或为现有原型添加新功能。适合非技术背景的创意者。

快速原型项目搭建工具 是什么?

此技能专为快速从想法到可分享网页应用原型而设计,适用于macOS、Windows和Linux系统。它基于Next.js(App Router)+ TypeScript + Tailwind + shadcn/ui等技术栈,使用IndexedDB(Dexie)作为默认本地数据存储,避免早期需要账号或密钥,需要数据共享或用户登录时才升级到Supabase。部署到Vercel,并通过官方CLI(如vercel、supabase、gh、shadcn)和本技能的脚本实现自动化。工作流程分为六个严格步骤(搭建、连接、规格说明、构建、测试、发布),要求AI代理在执行每个命令前获得用户批准,但允许自动升级到最新稳定版本。该技能还包含密钥管理脚本(使用操作系统凭据存储)、跨平台支持(Windows需Git Bash)、同步文件夹处理(如Dropbox)以及详细的错误处理和交互指南,确保非技术用户只需提供方向和判断,而所有技术工作由代理完成。

兼容平台✓Claude Code~Codex CLI~Cursor
npx skills add jayabdulraman/setup-prototype-project

Installed? Explore more 编程与开发 skills: steipete/bluebubbles, steipete/eightctl, steipete/blucli · View all 6 →

在你喜欢的 AI 中提问

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

文档

快速原型项目搭建工具 是做什么的?

从一个想法构建可运行的网页应用,然后以在线链接的形式分享给他人。使用者提供方向和判断;你负责所有的技术工作。

技术栈

层级默认工具
界面(用户看到和点击的部分)Next.js (App Router) + TypeScript + Tailwind + shadcn/ui(基础UI、中性主题、Lucide图标、Sera风格),来自一个shadcn预设
服务端工作(密钥、外部API、AI调用)Next.js Server Actions
数据浏览器端IndexedDB (Dexie)。预装Supabase CLI,以备后用
托管与分享Vercel
搭建与自动化官方CLI(vercel、supabase、gh、shadcn)+ 本技能的脚本

优先使用IndexedDB:无需账号、无需密钥、支持离线工作。仅当数据需要在不同用户或设备间共享、应用需要登录功能、或需要服务器/定时任务读取数据时,才迁移至Supabase(参见 references/7-extend.md)。

始终使用最新的稳定版本(无需询问)

  • 升级操作无需审批,但有一个例外:来自第三方Homebrew tap的工具(例如 supabase/tap)。在搭建期间,首次信任此类tap以及每次从其升级前都需要询问,即使之前已获批。
  • 否则,将所有CLI和包升级到最新的稳定版本:npm i -g <cli>@latest、brew upgrade、winget upgrade、Node.js当前LTS版本,以及在项目中执行 npm outdated --json | jq -r 'keys[] + "@latest"' | xargs npm i。用一句话说明升级了哪些内容。
  • 除非用户明确要求,否则绝不使用canary、beta、rc或next标签。不要凭记忆或根据本文档固定版本。
  • 升级后,运行检查(lint、typecheck、build)。若某一项失败,阅读错误信息找到导致问题的包,仅将该包降级到其上一个主版本的最新发布版(npm i -D <pkg>@^<major-1>),然后重新运行。在 PROTOTYPE.md 的“决策”部分记录该固定版本及其原因。例如:TypeScript 7破坏了ESLint的TypeScript插件,因此固定 typescript@^6,其余保持最新。
  • 恢复现有原型时,在新工作开始前也要执行相同的升级并检查操作。

分步构建流程

当执行到某一步时,请阅读该步骤的参考文件。不要提前阅读所有文件。

步骤使用者操作你执行的操作参考文件
1. 搭建选择文件夹检查工具及其依赖,安装缺失部分,搭建应用脚手架references/1-setup.md
2. 连接审批,在浏览器中登录一次运行每个CLI的登录,确认登录成功,将应用密钥存储到操作系统凭据存储区references/2-connect.md
3. 规格说明形成想法通过简短问答引导需求,编写 SPEC.mdreferences/3-spec.md
4. 构建反馈、调整方向每次构建一个功能,展示运行效果references/4-build.md
5. 测试试用运行检查,在真实浏览器中测试,修复问题references/5-test.md
6. 发布审批、分享同步密钥到Vercel,部署,提供链接references/6-ship.md
随时提出新功能需求查找工具的CLI或技能,询问是否安装,连接该工具references/7-extend.md

结果:先在 localhost 上运行可工作的应用,然后生成一个任何人都能打开的在线链接。

平台支持

macOSWindowsLinux
本技能脚本使用的ShellTerminal (zsh/bash)Git Bash(Git for Windows自带)bash
CLI的包管理器Homebrewwinget(Supabase用Scoop)Linux版Homebrew,或npm
应用密钥存储位置KeychainCredential ManagerSecret Service (secret-tool);否则使用已加入.gitignore的 .env.local
  • 使用 bash <绝对路径> 运行脚本。在Windows上使用PowerShell或cmd时,直接使用 bash 可能会启动WSL;应使用 & "$env:ProgramFiles\Git\bin\bash.exe" <脚本>。Claude Code在Windows上默认在Git Bash中运行其Shell。
  • WSL视为Linux环境,但 secrets.sh 在可访问PowerShell时会通过 powershell.exe 使用Windows Credential Manager。
  • 支持云同步文件夹(Dropbox、OneDrive、iCloud、Google Drive)。如果在Dropbox文件夹中,搭建完成后立即运行 bash SKILL/scripts/ignore-sync.sh <项目>,以便Dropbox跳过 node_modules、.next 和测试输出。

进度文件

每个原型项目的根目录下都有一个 PROTOTYPE.md(模板:templates/PROTOTYPE.md)。它包含步骤检查清单、工具列表(工具名称、版本、全局或项目安装方式)、关键名称(绝对不包含值)、决策和链接。

  • 在每个步骤结束时以及添加新工具时更新该文件。
  • 当在现有原型中被调用时,首先读取 PROTOTYPE.md,并从第一个未勾选的步骤继续。如果用户指定了某个步骤(例如“让我们发布吧”),则跳转到该步骤,但需先执行该步骤的检查。
  • 当所有步骤都勾选完毕,而用户想要新功能时:将其添加到 SPEC.md(必须包含的功能 + 验收检查)以及 PROTOTYPE.md 的“功能”部分;如果新功能需要新工具,则运行 references/7-extend.md;然后针对该功能循环执行 构建 → 测试 → 发布 的流程。

你负责执行所有命令

使用者提供方向和审批;你负责执行每个命令。绝不要让他们输入或粘贴命令。

  • 无需审批的操作:查阅资料、升级(见上文)、安装默认技术栈及其依赖(当用户要求搭建原型时)。用一句话说明你要安装什么及原因,然后执行。
  • 需要先询问(用一句简单的话解释原因,同意后由你执行;一次可涵盖列出的多项操作):
    • 登录到CLI
    • 更改安全设置,例如信任某个Homebrew tap(brew trust supabase/tap),以及升级来自第三方tap的工具
    • 安装默认技术栈之外的工具(references/7-extend.md)
    • 创建云资源(Vercel项目、Supabase项目、GitHub仓库、市场集成)
    • 部署到生产环境
    • 锁定规格说明,从“规格说明”阶段进入“构建”阶段
  • 如果用户的请求已经明确要求完成整个过程(例如“直接发布到在线链接”),则视为对创建Vercel项目和生产部署的批准。但仍需在执行前用一句话说明即将进行的操作。

当某个命令需要用户互动时(浏览器登录、验证码、管理员密码):

  1. 解释将要发生的事情以及用户将看到什么。
  2. 在用户能看到并回应的地方执行命令:如果代理应用有终端面板(“在终端中运行”工具),则在其中执行。为每个登录操作分配一个专用的新标签页,并以该操作命名(例如“Vercel登录”、“GitHub登录”);切勿重复使用已用于其他操作的标签页。将终端面板切换到该标签页(使用“显示面板”工具),并在消息中链接该标签页。如果没有终端面板,则为用户打开一个终端窗口(macOS:osascript -e 'tell application "Terminal" to do script "cd <项目> && <命令>"';Windows:start "" "%ProgramFiles%\Git\git-bash.exe" -c "<命令>; read")。
  3. 等待用户说“完成”,然后自己验证(vercel whoami、gh auth status 等)。不要仅凭用户口头确认就标记步骤已完成。

密钥(API密钥、令牌)的处理顺序如下:

  1. 首选自动方式:使用Vercel Marketplace集成(密钥直接发送到Vercel,然后 secrets.sh pull-vercel),或提供程序CLI的输出直接通过管道传给 secrets.sh set NAME --stdin。用户无需看到或粘贴密钥。
  2. 最后使用对话框:仅当服务不提供以上两种方式时,运行 bash SKILL/scripts/secrets.sh ask NAME "查找位置"。它会在用户屏幕上打开一个隐藏输入的对话框,并将值存储在操作系统凭据存储中;任何信息都不会经过聊天或你的输出。提前告知用户将出现对话框及其原因。 绝不要在聊天中询问密钥,绝不要打印密钥,也绝不要将其写入代码或提交的文件中。

你的Shell工作目录可能在两次调用之间重置:每个项目命令都以 cd "<项目>" && 开头。长时间运行的任务(npm run dev)应在后台运行。

如何与用户沟通

  • 在每个操作之前,用一句话说明该操作将为用户带来什么价值:“添加一个浏览器数据库,这样你的列表在切换页面后仍能保留。”
  • 在每个步骤之后,给出2-3行的总结:现在哪些功能可用、用户可以尝试什么、下一步做什么。
  • 当确实存在选择时,提供2-3个选项并给出推荐。否则选择一个合理的默认选项并说明所选内容。
  • 展示,而非描述:每次可见更改后,打开 localhost(或截图)。
  • 错误处理:先自己尝试修复。只有当需要用户做出决策、审批、或需要他们进行登录、输入密码或密钥等手动操作时,才请用户介入。

捆绑文件

  • scripts/preflight.sh [dir] — 检查工具、依赖、已安装版本与最新版本、登录状态、文件夹情况
  • scripts/secrets.sh — 操作系统凭据存储(ask 打开隐藏输入对话框)、运行并携带密钥、导出 .env.local、Vercel推送/拉取(使用 help 查看用法)
  • scripts/ignore-sync.sh <项目> — 告知Dropbox不要同步 node_modules、.next 和测试输出
  • scripts/wincred.ps1 — Windows Credential Manager辅助工具,由 secrets.sh 调用(不要直接调用)
  • scripts/discover.sh <tool> — 对新工具的CLI、npm包和技能的初步查找
  • scripts/install.sh — 全局安装此技能(如果失败则回退到项目级别)
  • templates/ — PROTOTYPE.md、SPEC.md、AGENTS.section.md、db.ts、actions.ts、smoke.spec.ts、playwright.config.ts

本文档中的 SKILL 指代此技能的文件夹,例如 ~/.agents/skills/setup-prototype-project。运行脚本时,需要将其展开为绝对路径:bash ~/.agents/skills/setup-prototype-project/scripts/preflight.sh。

常见错误

错误正确做法
要求用户运行或粘贴命令解释、获得同意、自己执行(登录操作使用可见的终端)。
因为用户说“完成了”就标记登录为完成使用CLI进行验证(vercel whoami、gh auth status、supabase projects list)。
让Dropbox同步 node_modules搭建完成后立即运行 ignore-sync.sh。
在安装CLI的依赖之前安装CLI按照 1-setup.md 中的安装顺序进行(包管理器 → git → Node.js → npm CLI)。
凭记忆安装(npm i next@15)使用 @latest 稳定版本;只有当检查失败时才降级一个包。
第一天就使用Supabase从IndexedDB开始;只有当需要共享或登录功能时才升级。
在Server Component或Server Action中调用IndexedDBIndexedDB仅存在于浏览器中。应在 "use client" 组件中使用。
将API密钥放在 NEXT_PUBLIC_ 变量中所有 NEXT_PUBLIC_ 变量都会发送给每个访问者。应将密钥保持在服务器端,在Server Actions中使用。
在展示任何内容之前构建所有功能一次构建一个功能,展示运行效果,然后根据反馈调整。
未同步密钥就部署每次部署前运行 secrets.sh diff-vercel。
调度一个读取IndexedDB的任务服务器任务无法访问浏览器数据。需要先将数据迁移到Supabase(7-extend.md)。
未以未登录状态打开链接就提供给用户在分享前,检查生产URL在公开状态下是否返回200(6-ship.md)。
未经检查发布者就从搜索结果中安装工具优先选择供应商的官方CLI、包或技能。询问时需说明发布者信息。

相关技能