mj-deploy
一键部署工作流。用户说"部署"时自动完成 commit → push → lint/build 检查 → 修复错误 → 部署。自动检测项目类型(静态站点、Node.js、Cloudflare Workers/Pages、Vercel 等)。触发词:部署、发布、发版、ship、deploy、提交发布、推送。
用 Codex 或 Claude 帮你安装 复制这段 Prompt,粘贴到 Codex、Claude 或其他助手里,让它检查 Skill 页面并帮你完成安装。
菜单
一键部署工作流。用户说"部署"时自动完成 commit → push → lint/build 检查 → 修复错误 → 部署。自动检测项目类型(静态站点、Node.js、Cloudflare Workers/Pages、Vercel 等)。触发词:部署、发布、发版、ship、deploy、提交发布、推送。
用 Codex 或 Claude 帮你安装 复制这段 Prompt,粘贴到 Codex、Claude 或其他助手里,让它检查 Skill 页面并帮你完成安装。
基于 SOC 职业分类
MakerJackie 多平台内容适配工具:将已完成的文章适配到不同发布平台,使用极简硬核风格排版,比如微信公众号,小红书,推特等平台优化排版。核心场景是「一篇文章,多平台发布」的内容分发工作流。
MakerJackie 视频发布包工作流。用于用户提供本地视频、SRT 字幕、时间戳、头像、替换截图或当前公众号 HTML,并要求生成或更新 B 站标题/封面、B 站和 YouTube 章节、B 站描述、X 推广文案、微信公众号 HTML、makerjackie.com 博客 MDX、R2/assets.01mvp.com 图片链接、视频压缩建议或完整发布素材包时使用。
将本地视频、SRT 字幕和时间戳转成 MakerJackie 博客 MDX 与微信公众号 HTML。用于用户提供视频/SRT 后要求生成公众号图文、博客文章、视频截图、R2 图片链接或调用 mj-adapt 做平台适配的工作流。
MakerJackie 内容创作总入口。用于公众号文章、AI 教程、01MVP 实战指南、Twitter 长推、选题生成、写作调研、语音转文章、文章审校、视频脚本口语化、演讲/分享稿优化等内容工作流。仅当用户目标是产出、整理、修改、规划或发布前打磨内容时使用。不要因为用户单独说“查一下”“最新信息”“设计”“部署”就触发。
Generate 01MVP-style black-and-white article illustrations and visual concepts. Use when the user asks for 01MVP handbook/blog/docs/marketing images, Chinese article illustrations, shot lists, visual metaphors, compressed social-media-ready image assets, assets.01mvp.com uploads, or imagegen prompts that should feel concise, direct, high-impact, and visually consistent with the 01MVP operator style.
Use when the user asks Codex to coordinate Claude Code CLI for systematic repository audits, multi-agent code review, multi-round cleanup loops, bug/performance/architecture scans, or "Claude Code reviews, Codex judges, fixes, verifies, and commits".
| name | mj-deploy |
| description | 一键部署工作流。用户说"部署"时自动完成 commit → push → lint/build 检查 → 修复错误 → 部署。自动检测项目类型(静态站点、Node.js、Cloudflare Workers/Pages、Vercel 等)。触发词:部署、发布、发版、ship、deploy、提交发布、推送。 |
当用户说"部署"、"发布"、"发版"、"ship"、"deploy"、"提交发布"、"推送" 或类似意思时,执行此自动化工作流。
除非用户明确要求分步执行或询问"有什么更改",否则应一次性自动完成所有操作。
git status
git remote -v
git remote -v 为空(没有配置远程仓库),提示用户配置远程仓库并退出分析变更内容,生成 Conventional Commit 消息:
git diff --staged 和 git diff 的变更feat: — 新功能(新增文件、新增组件、新增 API)fix: — 修复 bugdocs: — 仅文档变更refactor: — 重构(不改变功能)perf: — 性能优化test: — 添加测试chore: — 杂务(构建流程、依赖更新等)style: — 代码格式(不是 CSS 样式)feat(api):、fix(auth):git add -A
git commit -m "<type>(<scope>): <description>"
git push
如果 push 失败(冲突、权限等),报告错误并停止。
运行以下检测来确定项目类型、可用的构建/部署方式、以及环境变量状态:
# 1. 检查 package.json
ls package.json 2>/dev/null && echo "HAS_PACKAGE=true" || echo "HAS_PACKAGE=false"
# 2. 检查 wrangler 配置
ls wrangler.toml 2>/dev/null && echo "HAS_WRANGLER=true" || echo "HAS_WRANGLER=false"
ls wrangler.jsonc 2>/dev/null && echo "HAS_WRANGLER_JSONC=true" || echo "HAS_WRANGLER_JSONC=false"
# 3. 检查 vercel 配置
ls vercel.json 2>/dev/null && echo "HAS_VERCEL=true" || echo "HAS_VERCEL=false"
# 4. 检查 CI/CD 配置
ls .github/workflows 2>/dev/null && echo "HAS_GITHUB_ACTIONS=true" || echo "HAS_GITHUB_ACTIONS=false"
# 5. 检查静态站点特征
ls index.html 2>/dev/null && echo "HAS_INDEX_HTML=true" || echo "HAS_INDEX_HTML=false"
# 6. 读取 package.json scripts
node -e "
const p = require('./package.json');
const scripts = Object.keys(p.scripts || {});
console.log('SCRIPTS:', scripts.join(', '));
console.log('HAS_LINT:', scripts.some(s => /^lint/.test(s)));
console.log('HAS_BUILD:', scripts.some(s => /^build/.test(s)));
console.log('HAS_TYPE_CHECK:', scripts.some(s => /^type(check|script)/.test(s)));
console.log('HAS_DEPLOY:', scripts.some(s => /^deploy/.test(s)));
console.log('HAS_PREVIEW:', scripts.some(s => /^preview/.test(s)));
" 2>/dev/null || echo "SCRIPTS: none"
# 7. 检查 Cloudflare 环境变量
echo "CF_TOKEN_EXISTS: ${CLOUDFLARE_API_TOKEN:+yes}"
echo "CF_ACCOUNT_ID_EXISTS: ${CLOUDFLARE_ACCOUNT_ID:+yes}"
# 8. 检查环境变量文件(区分生产/开发环境)
for f in .env.prd .env.production .env .env.local; do
[ -f "$f" ] && echo "HAS_ENV_$(echo $f | tr '[:lower:].' '[:upper:]_'): true" || echo "HAS_ENV_$(echo $f | tr '[:lower:].' '[:upper:]_'): false"
done
# 9. 检查 wrangler 配置中的自定义域名(如果有 wrangler 配置)
if [ -f wrangler.jsonc ]; then
node -e "
const cfg = JSON.parse(require('fs').readFileSync('wrangler.jsonc','utf-8'));
const routes = cfg.routes || [];
const customDomains = routes
.map(r => r.pattern || r)
.filter(p => p && !p.includes('workers.dev') && !p.includes('*.'));
console.log('WRANGLER_ROUTES:', routes.length);
console.log('WRANGLER_CUSTOM_DOMAINS:', customDomains.length > 0 ? customDomains.join(', ') : 'none');
console.log('WRANGLER_HAS_CUSTOM_DOMAIN:', customDomains.length > 0 ? 'yes' : 'no');
" 2>/dev/null
elif [ -f wrangler.toml ]; then
# TOML 解析较复杂,用 grep 简单判断
grep -q 'pattern' wrangler.toml 2>/dev/null && echo "WRANGLER_HAS_ROUTES=true" || echo "WRANGLER_HAS_ROUTES=false"
grep -q 'workers.dev' wrangler.toml 2>/dev/null && echo "WRANGLER_ONLY_WORKERS_DEV=true" || echo "WRANGLER_ONLY_WORKERS_DEV=false"
fi
环境变量文件使用规则(重要):
.env.prd 或 .env.production — 生产环境变量,部署前应加载此文件.env — 通用变量,安全时可用.env.local — 本地开发环境,部署时不要加载此文件(可能包含本地专用配置).env.prd > .env.production > .env(.env.local 跳过)环境变量检查逻辑:
CLOUDFLARE_API_TOKEN 未设置:
.env.prd 或 .env.production,如果存在则从中加载(set -a; source .env.prd; set +a)references/cloudflare-deploy-guide.md 中的步骤引导用户获取和配置 Token自定义域名检测逻辑:
workers.dev 域名)根据检测结果运行对应的检查命令:
有 package.json 的项目:
npm run lint(如果报错则运行 npm run lint -- --fix 再检查)npm run typechecknpm run buildpnpm(如果项目有 pnpm-lock.yaml)或 yarn(如果项目有 yarn.lock)有 wrangler 配置的 Worker 项目:
npx wrangler deploy --dry-run(验证配置)修复循环策略:
--fix 后重新 lint环境变量加载(部署前): 在执行任何部署命令之前,按照以下优先级加载环境变量文件:
.env.prd(生产环境专用).env.production.env.env.local(本地开发环境,不要用于部署)set -a; source <file>; set +aCLOUDFLARE_API_TOKEN 等关键变量是否就绪根据检测到的部署目标和项目类型执行部署(或告知自动部署状态):
| 检测到的配置 | 操作 |
|---|---|
| wrangler.toml / wrangler.jsonc (优先 Workers) | 执行 npx wrangler deploy 或 npm run deploy(如果有 deploy 脚本) |
| 有 deploy 脚本但无 wrangler | 执行 npm run deploy |
| Vercel (vercel.json) | 执行部署后,必须验证部署是否成功(见下方 Vercel 验证部分) |
| GitHub Actions | 告知用户 "Push 已触发 GitHub Actions 工作流" |
| 仅 Cloudflare Pages (无 wrangler) | 告知用户 "Push 已触发 Cloudflare Pages 自动部署" |
| 以上都没有 | 不执行部署,只完成 commit + push |
重要:
Workers 部署后 - 自定义域名检查: 部署完成后,检查 wrangler 配置中是否包含自定义域名:
*.workers.dev 或无 routes):
检测到你的 Worker 目前只有 workers.dev 域名。 是否要绑定自定义域名?
操作方式:
- 在 wrangler.jsonc 的 routes 中添加:
{ "pattern": "你的域名.com/*", "zone_name": "你的域名.com" }- 然后重新部署
或者通过 Cloudflare Dashboard:
- Workers & Pages → 选择该 Worker
- Triggers → Custom Domains → Add Custom Domain
需要先确保域名已在 Cloudflare 上托管。
Vercel 部署验证流程: Vercel 部署后,必须验证是否成功:
# 查看 Vercel 部署状态(需要已安装 Vercel CLI 或登录)
npx vercel list 2>/dev/null | head -5
# 或者 curl 项目域名检查是否返回 200
# 从 vercel.json 中提取项目名,构造 URL
node -e "
const fs = require('fs');
let cfg;
try { cfg = JSON.parse(fs.readFileSync('vercel.json','utf-8')); } catch(e) {}
const name = cfg?.name || require('./package.json').name || '';
console.log('VERCEL_PROJECT:', name);
" 2>/dev/null
# 如果部署失败(构建错误、路由不对等),报告错误给用户并停止
如果 Vercel 部署失败,分析错误信息并尝试修复,最多重试 1 次。
输出格式:
📦 Quick Deploy 完成
✅ Commit: <commit-hash> — <commit-message>
✅ Push: <branch> → <remote>/<branch>
✅ Lint: <passed/failed summary>
✅ Build: <passed/failed summary>
✅ Deploy: <url or status>
🌐 自定义域名: <已配置 / 未配置 — 建议绑定>
💡 建议:<如果有建议,在此显示>
如果检测到 wrangler Workers 部署但没有自定义域名:
🌐 自定义域名提示: 你的 Worker 目前只部署在 workers.dev 子域名上。 建议绑定自定义域名,让用户通过你自己的域名访问:
- 在 wrangler.jsonc 的 routes 中添加自定义域名,或
- Cloudflare Dashboard → Worker → Triggers → Custom Domains
- 需要域名已在 Cloudflare 托管
如果 CLOUDFLARE_API_TOKEN 未设置:
🔑 Cloudflare Token 未配置 部署前需要设置 Cloudflare API Token。 参考
references/cloudflare-deploy-guide.md的详细步骤,或按以下方式快速设置:export CLOUDFLARE_API_TOKEN=你的token export CLOUDFLARE_ACCOUNT_ID=你的account_id永久配置(添加到 ~/.zshrc):
echo 'export CLOUDFLARE_API_TOKEN=你的token' >> ~/.zshrc echo 'export CLOUDFLARE_ACCOUNT_ID=你的account_id' >> ~/.zshrc source ~/.zshrc如何获取 Token:
- 登录 Cloudflare Dashboard → My Profile → API Tokens
- 创建 Token → 选择 "Edit Cloudflare Workers" 模板
- 复制保存 Token(关闭页面后不可见)
详细指引可访问:https://makerjackie.com/blog/2026-04-24-cloudflare-deploy-guide
如果项目没有部署配置,根据项目类型给出建议:
前端静态/SPA 项目:
检测到这是一个前端项目,但没有配置自动部署。 推荐使用 Cloudflare Workers 部署静态站点(比 Pages 更灵活):
- 创建
wrangler.toml配置- 安装
wrangler并登录- 配置构建和部署脚本
或者连接 GitHub 仓库到 Cloudflare Pages。 参考:https://makerjackie.com/blog/2026-04-24-cloudflare-deploy-guide
Cloudflare Workers 项目:
检测到 wrangler 配置。已执行本地部署(wrangler deploy)。 🌐 建议配置自定义域名(参考 Step 5 的自定义域名检查部分)。 建议配置 GitHub Actions 实现 CI/CD。 参考模板:https://github.com/cloudflare/wrangler-action
Vercel 项目:
检测到 Vercel 配置。 Vercel 部署状态:<成功/失败> 可在 Vercel Dashboard 查看详情。
不可部署的项目(无构建脚本、无 wrangler、无 index.html):
这个仓库没有检测到可部署的目标(无 package.json、wrangler、或静态文件), 已完成 commit + push。如果这不是预期的,可以手动配置部署方式。
git remote -v 为空,提示用户配置远程仓库并退出工作流git push -u origin <branch>AI 必须使用用户对话的语言进行回复。如果用户用中文说"部署",全部用中文回复。
references/cloudflare-deploy-guide.md: Cloudflare 凭证获取、Token 配置、wrangler 部署完整指南。当用户需要设置 Cloudflare 部署或配置 Token 时参考此文档。