One command to check if your project is ready to deploy. Don't ship until it's green.
$ /ship my-nextjs-app
📊 部署就绪度:62/100
> 还差口气。2 个致命问题不修别上线,3 个严重问题上线后会后悔。
| 🔑 环境变量 | 🔒 安全 | 🌐 SEO | ⚡ 性能 | 🗄️ 数据库 | 📱 可访问性 | 🧪 测试 |
|------------|----------|----------|----------|----------|-----------|----------|
| ❌ 30/100 | ⚠️ 55/100 | ✅ 85/100 | ⚠️ 60/100 | ❌ 40/100 | ⚠️ 65/100 | ❌ 20/100 |
/ship is a Claude Code Skill that automatically scans your project and tells you if it's ready to deploy.
Every developer knows the anxiety of clicking "Deploy". Did I set up environment variables? Is RLS enabled? Are there any hardcoded secrets?
/ship answers all of these in 30 seconds.
"Don't ship until it's green."
What it checks:
- 🔑 Environment variables (hardcoded secrets, .env templates)
- 🔒 Security (CSRF, rate limiting, SQL injection, OWASP)
- 🌐 SEO (meta tags, OG tags, sitemap, robots.txt)
- ⚡ Performance (image optimization, code splitting, caching)
- 🗄️ Database (migrations, RLS, indexes, connection pooling)
- 📱 Accessibility (alt text, aria labels, responsive design)
- 🧪 Testing (unit tests, E2E, CI/CD)
What you get:
- 📊 Deployment readiness score (0-100)
- 🔧 Fix code for every issue
- ✅ Checkable deployment checklist
- 📋 Step-by-step deployment guide
curl -o .claude/commands/ship.md https://raw.githubusercontent.com/play1216/claude-code-ship/main/.claude/commands/ship.mdcurl -o ~/.claude/commands/ship.md https://raw.githubusercontent.com/play1216/claude-code-ship/main/.claude/commands/ship.mdiex (iwr -UseBasicParsing "https://raw.githubusercontent.com/play1216/claude-code-ship/main/install.ps1").Contentcurl -sL https://raw.githubusercontent.com/play1216/claude-code-ship/main/install.sh | bash/ship # Check current directory
/ship my-project/ # Check specific project
/ship src/ # Check source code only| Dimension | What it checks | Why it matters |
|---|---|---|
| 🔑 Env Vars | Hardcoded secrets, .env templates, .gitignore | Leaked keys = game over |
| 🔒 Security | CSRF, rate limiting, input validation, SQL injection | Get hacked on day 1 |
| 🌐 SEO | Meta tags, OG tags, sitemap, structured data | Nobody finds your site |
| ⚡ Performance | Image optimization, code splitting, caching | Users leave after 3s |
| 🗄️ Database | Migrations, RLS, indexes, connection pooling | Data loss = project death |
| 📱 Accessibility | Alt text, aria labels, responsive design | 15% of users have disabilities |
| 🧪 Testing | Unit tests, E2E, CI/CD, coverage | Deploying without a safety net |
# 🚀 部署就绪报告:`agenthub`
## 📊 部署就绪度:58/100
> 还差口气。2 个致命问题不修别上线,4 个严重问题上线后会后悔。
## 🚨 必须修
### 1. 硬编码 Supabase Service Role Key
- 文件:`src/lib/supabase.ts:12`
- 严重程度:💀 致命
- 问题:Service Role Key 硬编码在代码里。推到 GitHub = 密钥泄露。
- 修复:移至 .env.local,使用 process.env.SUPABASE_SERVICE_ROLE_KEY
## 📋 部署检查清单
### 上线前必须完成
- [ ] 修复硬编码的 Supabase Key
- [ ] 创建 .env.example 文件
- [ ] 在 Supabase 启用 RLS 策略
- [ ] 在 Vercel 配置所有环境变量
- [ ] 运行 npm run build 确认无报错
## 🎯 部署步骤
### Step 1: 修复致命问题
[具体修复代码]
### Step 2: 配置环境变量
[具体配置命令]
### Step 3: 部署
[具体部署命令]
| Framework | Deploy Target | Special Checks |
|---|---|---|
| Next.js | Vercel | SSR/SSG/ISR, API Routes, Middleware, next/image |
| React | Vercel/Netlify | Build config, routing, SPA |
| Vue/Nuxt | Vercel/Netlify | SSR config, auto-imports |
| Python | Railway/Render | WSGI/ASGI, requirements.txt |
| Go | Fly.io/Docker | Build config, CGO |
| Docker | Any | Dockerfile optimization, multi-stage builds |
| Feature | /ship |
Manual Check | CI/CD |
|---|---|---|---|
| Speed | 30 seconds | 30 minutes | Needs setup |
| Coverage | 7 dimensions | Easy to miss | Config only |
| Fix Code | ✅ Complete | ❌ "Fix it yourself" | ❌ |
| Checklist | ✅ Checkable | ❌ | ❌ |
| Deploy Guide | ✅ Step-by-step | ❌ | Needs scripts |
$ /ship my-new-project
→ Found 5 issues, fixed them all, deployed successfully
$ /ship legacy-project/
→ Quickly understand project status, found 3 security issues
$ /ship .
→ All checks passed, click Deploy with confidence
$ /ship src/
→ Found performance and security issues for PR review
- Fork this repo
- Create your branch (
git checkout -b feature/amazing-ship) - Commit your changes (
git commit -m 'add amazing ship') - Push to the branch (
git push origin feature/amazing-ship) - Open a Pull Request
MIT — use it, modify it, share it.
🚀 Don't ship until it's green.