Client Onboard — Freelance Project Onboarding Generator
Why This Exists
Kevin closes a client → now needs to look professional and get the project moving within 24 hours. Manual onboarding prep = 2 hours of doc writing. This skill turns a project description into a full onboarding package in one shot.
Trigger
Use when: "onboard a new client", "I just got a project", "set up client files for", "new client [description]", or any time a new freelance project is starting.
Invoked as: /client-onboard [project description]
Process
Step 1: Parse the Project
From $ARGUMENTS, extract:
- - Project type: web app, API, automation, audit, mobile, data pipeline, etc.
- Client industry: SaaS, ecommerce, healthcare, finance, creator economy, etc.
- Timeline hints: "need this in 2 weeks", "no rush", "ASAP", specific dates mentioned
- Budget hints: hourly rate mentioned, fixed price, "small budget", enterprise
- Tech constraints: "must use React", "we're on AWS", "no vendor lock-in"
- Team context: "solo founder", "we have a dev team", "replacing a contractor"
Default assumptions when not specified:
- - Timeline: 4-6 weeks (reasonable for most web projects)
- Budget: $75/hr or $2,000-5,000 fixed (Kevin's standard range)
- Stack: Next.js + Supabase + Stripe + Python (Kevin's default)
- Deployment: Vercel (frontend) + Railway or Supabase (backend)
Step 2: Create the Output Directory
Create CLIENT_ONBOARD/ in the current directory.
CODEBLOCK0
If a client name is identifiable from $ARGUMENTS, use: [ClientName]_ONBOARD/ instead.
Step 3: Write PROJECT_BRIEF.md
CODEBLOCK1
Step 4: Write TECH_STACK.md
CODEBLOCK2
Customize the stack to the project — if the client specifies AWS, remove Vercel; if they need mobile, add React Native; etc.
Step 5: Write MILESTONES.md
CODEBLOCK3
Adjust milestone count and timeline to match project scope. Small projects (1-2 weeks): 2 milestones. Large projects (8+ weeks): 5-6 milestones.
Step 6: Write FOLDER_STRUCTURE.md
Generate a proposed directory layout tailored to the project. Standard Next.js + Supabase layout:
CODEBLOCK4
[project-name]/
├── src/
│ ├── app/ # Next.js App Router pages
│ │ ├── (auth)/ # Auth-gated routes
│ │ │ ├── dashboard/
│ │ │ └── settings/
│ │ ├── (public)/ # Public routes
│ │ │ ├── page.tsx # Landing page
│ │ │ └── pricing/
│ │ ├── api/ # API routes
│ │ │ └── webhooks/
│ │ ├── layout.tsx
│ │ └── globals.css
│ ├── components/
│ │ ├── ui/ # Shadcn/UI base components
│ │ └── [feature]/ # Feature-specific components
│ ├── lib/
│ │ ├── supabase/ # DB client + type-safe helpers
│ │ ├── stripe/ # Stripe client + webhook handlers
│ │ └── utils.ts
│ ├── hooks/ # Custom React hooks
│ └── types/ # Shared TypeScript types
├── supabase/
│ ├── migrations/ # SQL migration files
│ └── functions/ # Edge functions
├── scripts/ # One-off scripts + automation
├── docs/ # Client-facing documentation
│ └── ADMIN_GUIDE.md
├── .env.local # Local env vars (not committed)
├── .env.example # Template for env vars
├── CLAUDE.md # Claude Code context for this project
├── SPEC.md # Project specification
└── package.json
CODEBLOCK5
Adjust to the actual stack. Python-only projects get a different layout.
Step 7: Write CLAUDE.md (Project Starter)
CODEBLOCK6 bash
npm run dev # start local dev server (localhost:3000)
npm run build # production build
npm run lint # ESLint check
supabase start # start local Supabase (Docker required)
supabase db push # apply migrations to remote
## Environment Variables
See `.env.example` for required vars. Local values in `.env.local` (not committed).
## Conventions
- TypeScript strict mode — no `any`, no unchecked nulls
- Components: PascalCase, one component per file
- DB types: generate from Supabase dashboard → TypeScript types
- API routes: validate input with Zod before touching DB
- RLS: every table has Row Level Security enabled
## Current Status
[Today's date] — Project just started. Milestone 1 in progress.
## Known Gotchas
- [Any project-specific things Claude should know]
Step 8: Write KICKOFF_MSG.md
Write a message Kevin can send directly to the client — professional, warm, no fluff:
CODEBLOCK8
Step 9: Print Summary
CODEBLOCK9
Error Handling
- - Very vague description ("build me an app"): Generate with defaults + add 5 open questions to PROJECTBRIEF.md under "Open Questions" — flag that client answers are required before kicking off
- Multiple possible stacks: Choose Kevin's default stack, add "Alternatives Considered" section explaining why alternatives were skipped
- Unclear budget: Leave payment schedule with placeholder percentages, note "confirm rate with client before sending"
- CLIENTONBOARD/ already exists: Add timestamp suffix
CLIENT_ONBOARD_[YYYY-MM-DD]/ to avoid overwriting - Missing tech details: Generate best-guess and mark assumptions clearly with
[ASSUMED] inline
Kevin's Voice — Don't Forget
- - Direct, confident, no corporate fluff
- "I'll build X using Y because Z" — not "I would suggest potentially leveraging..."
- Milestones are concrete with clear handoff criteria, not vague "phase" labels
- Kickoff message reads like a text from a capable contractor, not a formal business letter
客户入职 — 自由职业项目启动生成器
为什么存在
Kevin 谈下一个客户 → 现在需要在 24 小时内显得专业并推动项目进展。手动准备入职材料 = 2 小时的文档编写。这个技能将项目描述一次性转化为完整的入职包。
触发条件
在以下情况使用:为新客户办理入职、我刚接了一个项目、为客户设置文件、新客户[描述],或任何新的自由职业项目开始时。
调用方式:/client-onboard [项目描述]
流程
第 1 步:解析项目
从 $ARGUMENTS 中提取:
- - 项目类型:Web 应用、API、自动化、审计、移动端、数据管道等
- 客户行业:SaaS、电商、医疗、金融、创作者经济等
- 时间线提示:两周内需要、不急、尽快、提到的具体日期
- 预算提示:提到的时薪、固定价格、小预算、企业级
- 技术约束:必须使用 React、我们在 AWS 上、无供应商锁定
- 团队背景:独立创始人、我们有一个开发团队、替换承包商
未指定时的默认假设:
- - 时间线:4-6 周(对大多数 Web 项目合理)
- 预算:$75/小时 或 $2,000-5,000 固定价格(Kevin 的标准范围)
- 技术栈:Next.js + Supabase + Stripe + Python(Kevin 的默认配置)
- 部署:Vercel(前端)+ Railway 或 Supabase(后端)
第 2 步:创建输出目录
在当前目录下创建 CLIENT_ONBOARD/。
bash
mkdir -p CLIENT_ONBOARD
如果从 $ARGUMENTS 中可以识别出客户名称,则使用 [客户名称]_ONBOARD/ 代替。
第 3 步:编写 PROJECT_BRIEF.md
markdown
项目简报 — [项目名称]
客户:[客户名称 或 待定]
日期:[今天的日期]
状态:草稿 — 等待客户确认
项目概述
[2-3 句话。正在构建什么、为谁构建、以及为什么对客户的业务重要。要具体 — 不要使用稳健的可扩展解决方案这类语言。]
业务目标
[客户实际上需要这个为他们的业务做什么?收入影响?节省时间?用户增长?]
成功标准
- - [ ] [具体的可衡量结果 1]
- [ ] [具体的可衡量结果 2]
- [ ] [具体的可衡量结果 3]
- [ ] 本简报中的所有功能均已交付并测试
- [ ] 客户签署最终交付物
关键用户
- - 主要用户:[谁最常使用这个,他们需要什么]
- 次要用户:[任何其他用户]
- 管理员:[Kevin 或客户管理这个]
核心功能(范围内)
- 1. [功能 1 — 简要描述]
- [功能 2 — 简要描述]
- [功能 3 — 简要描述]
[...继续列出所有核心功能...]
范围外(v1)
- - [听起来相关但未包含的功能] — 推迟到 v2
- [功能] — 上线后可作为附加功能
- [功能] — 客户可在上线后自行管理
已知风险
- - [风险 1]:[缓解措施]
- [风险 2]:[缓解措施]
待解决问题
- - [ ] [需要客户在开始前回答的问题]
- [ ] [问题]
本简报为动态文档。变更需双方书面同意。
第 4 步:编写 TECH_STACK.md
markdown
技术栈 — [项目名称]
决策日期:[今天的日期]
推荐技术栈
前端
- - 框架:Next.js 14+(App Router)
-
原因:[针对此项目的具体原因 — 例如需要 SEO、快速迭代、Kevin 熟悉]
- - UI:Tailwind CSS + Shadcn/UI 组件
-
原因:比自定义 CSS 更快交付,一致的设计系统
- - 状态管理:Zustand(客户端状态)+ React Query(服务端状态)
- TypeScript:是 — 在问题到达客户之前捕获错误
后端
- - 数据库 + 认证 + 存储:Supabase(Postgres)
-
原因:[具体原因 — 例如开箱即用处理认证、需要实时订阅、MVP 慷慨的免费套餐]
- - 边缘函数:Supabase 边缘函数(Deno)
-
原因:与数据库同位置,Vercel hobby 计划无冷启动
- - [如果需要] Python API:FastAPI
-
原因:[例如AI/ML 工作负载、批量处理、较重计算]
支付(如适用)
-
原因:行业标准,出色的开发者体验,处理 PCI 合规
部署
- - 前端:Vercel(git 推送自动部署)
- 后端:Supabase 托管(无需运维)
- [如果需要] Workers:Railway(简单、便宜、无 k8s)
AI/自动化(如适用)
- - LLM:Anthropic Claude API(claude-sonnet-4-6)
- 编排:自定义 Python 代理或 Claude Code 技能
已考虑的替代方案
| 选项 | 拒绝原因 |
|---|
| [替代方案 1] | [原因] |
| [替代方案 2] |
[原因] |
技术栈风险与缓解措施
- - Supabase 供应商锁定:Postgres 是标准 — 必要时可自托管
- Vercel 大规模定价:设置支出限制,流量激增时切换到 Railway
根据项目定制技术栈 — 如果客户指定 AWS,移除 Vercel;如果需要移动端,添加 React Native 等。
第 5 步:编写 MILESTONES.md
markdown
里程碑 — [项目名称]
预计总时间线:[X] 周
开始日期:[今天 或 待定]
目标完成日期:[日期 或 待定]
里程碑 1:基础 — 第 1-2 周
目标: 项目结构、认证和核心数据模型就位。尚未实现端到端功能,但脚手架已稳固。
交付物:
- - [ ] 仓库设置含 CI/CD(Vercel 自动部署)
- [ ] Supabase 项目 + 模式(表、RLS 策略)
- [ ] 认证流程(登录、注册、会话管理)
- [ ] 基本导航外壳
- [ ] CLAUDE.md 更新项目约定
交接标准: Kevin 演示可工作的登录 → 仪表盘骨架。客户确认模式正确。
里程碑 2:核心功能 — 第 2-4 周
目标: 客户付费的主要功能已构建并可工作。
交付物:
- - [ ] [核心功能 1] — 构建并测试
- [ ] [核心功能 2] — 构建并测试
- [ ] [核心功能 3] — 构建并测试
- [ ] 错误状态和加载状态已实现
- [ ] 移动端响应式
交接标准: 客户可以端到端使用应用完成主要用例。
里程碑 3:打磨 + 集成 — 第 4-5 周
目标: 第三方集成、边缘情况处理、UI 打磨。
交付物:
- - [ ] [支付/邮件/分析集成]
- [ ] 测试中的边缘情况已处理
- [ ] 性能检查(Lighthouse 分数 > 85)
- [ ] 安全审查(RLS 策略、输入验证、环境变量)
交接标准: 应用达到生产就绪状态。无已知错误。
里程碑 4:上线 + 交接 — 第 5-6 周
目标: 在生产环境中运行,客户可操作。
交付物:
- - [ ] 生产部署(自定义域名、SSL)
- [ ] 监控设置(Sentry 或基本错误日志)
- [ ] 客户操作演示录制(Loom)
- [ ] 管理文档(如何管理用户、内容等)
- [ ] 代码仓库访问权限转移
交接标准: 客户签署。发送最终发票。
付款计划(建议)
- - 25% 预付款(项目启动)
- 25% 里程碑 2 完成
- 25% 里程碑 3 完成
- 25% 最终交付 + 签署
调整里程碑数量和时间线以匹配项目范围。小型项目(1-2 周):2 个里程碑。大型项目(8 周以上):5-6 个里程碑。
###