
Deploy Website
- 1 installs
- 1 repo stars
- Updated July 27, 2026
- chaitin/monkeycodeprojecttemplate
Helps with devops & ci/cd tasks.
About
deploy-website is a Claude Code skill for devops & ci/cd. It helps solo builders move faster with AI-assisted coding.
- deploy-website
- DevOps & CI/CD
- AI-coding skill
Deploy Website by the numbers
- 1 all-time installs (skills.sh)
- Ranked #1,172 of 1,435 DevOps & CI/CD skills by installs in the Skillselion catalog
- Data as of Jul 28, 2026 (Skillselion catalog sync)
npx skills add https://github.com/chaitin/monkeycodeprojecttemplate --skill deploy-websiteAdd your badge
Show developers this skill is listed on Skillselion. Paste this into your README.
| Installs | 1 |
|---|---|
| repo stars | ★ 1 |
| Last updated | July 27, 2026 |
| Repository | chaitin/monkeycodeprojecttemplate ↗ |
What it does
Helps with devops & ci/cd tasks.
Files
部署网站
自动检测项目类型,使用 background_terminal_create 在后台启动 对应的开发服务器,确认启动成功后通过 MCP 工具 request_preview 获取预览地址。
项目类型检测逻辑
1. Node.js Web 项目
- 在工作区根目录查找
package.json - 检查是否包含
dev或start脚本 - 执行
npm run dev(若无dev则执行npm start)
2. 静态网站
- 在工作区查找
.html文件(尤其是index.html) - 执行
python3 -m http.server 8000提供静态文件服务
3. 其他类型网站
根据项目特征文件检测类型并使用对应服务器:
- PHP 项目 - 查找
.php文件或composer.json - 执行
php -S localhost:8000 - 若存在
public/index.php,则从public目录提供服务 - Python 项目
- Django - 查找
manage.py和settings.py - 执行
python manage.py runserver 8000 - Flask - 查找
app.py或wsgi.py - 执行
python app.py或flask run --port=8000 - Gunicorn/uWSGI - 查找
gunicorn.conf.py或uwsgi.ini - 执行
gunicorn -b 0.0.0.0:8000 app:app(根据实际模块名调整) - 通用 Python - 查找
requirements.txt或pyproject.toml - 执行
python -m http.server 8000 - Go 项目 - 查找
go.mod - 执行
go run main.go或go run . - Ruby/Rails - 查找包含
rails的Gemfile - 执行
rails server -p 8000或bundle exec rails server -p 8000 - Java/Spring Boot - 查找
pom.xml(Maven)或build.gradle(Gradle) - 执行
mvn spring-boot:run或./gradlew bootRun - Rust/Axum/Actix - 查找
Cargo.toml - 执行
cargo run - 基于 README 检测 - 若以上方式均未匹配:
- 搜索 README 文件(
README.md、README.rst、README.txt、doc/README.md) - 查找包含
run、start、serve、dev、preview等关键词的命令 - 提取并执行对应命令
工作流程
1. 检查是否已有服务器进程
启动新服务器之前,先进行以下检查:
- 调用
background_terminal_list检查是否已有运行中的后台终端 - 检查是否有进程已在监听端口:
ss -tlnp 2>/dev/null || netstat -tlnp 2>/dev/null || lsof -iTCP -sTCP:LISTEN -P -n若检测到已有服务器进程:
- 从输出中提取端口号
- 跳过启动步骤,直接使用该端口调用
request_preview - 通知用户检测到已有服务器
2. 查阅项目文档确定启动命令(优先级最高)
在使用默认检测逻辑之前,必须先查阅项目文档,确认项目是否有明确指定的启动方式。按以下顺序读取文档:
1. .monkeycode/MEMORY.md - 项目记忆文件,可能包含之前记录的启动方式 2. README.md - 项目说明文档,通常包含开发服务器启动命令 3. AGENTS.md - Agent 指令文件,可能包含针对 AI 助手的启动指引
查找目标:在上述文档中搜索与 Web 服务启动相关的内容,例如:
- 明确的启动命令(如
npm run dev、make serve、docker compose up等) - 启动前的前置步骤(如环境变量设置、配置文件生成等)
- 指定的端口号或特殊参数
判断逻辑:
- 若文档中有明确的启动指示,则以文档描述为准,使用文档中指定的命令启动服务器
- 这个启动命令需要与识别到的项目类型(如开发语言)相匹配
- 向用户明确告知:启动 Web 服务的方式遵循了哪份文档(例如:"按照 README.md 中的说明启动开发服务器")
- 若文档中没有相关描述,或描述不明确,则回退到下方的默认检测逻辑
3. 检测项目类型并使用 background_terminal_create 启动服务器
仅在未检测到已有服务器、且项目文档中未找到明确启动指示时,执行此步骤的默认检测逻辑。
重要:必须使用 MCP 工具 background_terminal_create 启动服务器。该工具在后台终端中运行命令,不会阻塞当前会话,并提供输出日志追踪。根据项目类型调用 background_terminal_create 执行对应命令:
- Node.js 项目(存在
package.json): - 先在前台执行
npm install确保依赖已安装 - 再使用
background_terminal_create执行npm run dev(或npm start)
- PHP 项目(存在
composer.json或.php文件): - 使用
background_terminal_create执行php -S localhost:8000 - 若存在
public/index.php,则执行php -S localhost:8000 -t public
- Python/Django(存在
manage.py): - 使用
background_terminal_create执行python manage.py runserver 8000
- Python/Flask(存在
app.py或wsgi.py): - 使用
background_terminal_create执行flask run --port=8000或python app.py
- Python/Gunicorn(存在
gunicorn.conf.py或uwsgi.ini): - 使用
background_terminal_create执行gunicorn -b 0.0.0.0:8000 app:app
- Python 通用(存在
requirements.txt或pyproject.toml): - 使用
background_terminal_create执行python -m http.server 8000
- Go 项目(存在
go.mod): - 使用
background_terminal_create执行go run .或go run main.go
- Ruby/Rails(
Gemfile中包含rails): - 使用
background_terminal_create执行bundle exec rails server -p 8000
- Java/Spring Boot(存在
pom.xml或build.gradle): - 使用
background_terminal_create执行./mvnw spring-boot:run或./gradlew bootRun
- Rust 项目(存在
Cargo.toml): - 使用
background_terminal_create执行cargo run
- 静态 HTML 文件(存在
index.html或其他.html文件): - 使用
background_terminal_create执行python3 -m http.server 8000
- 基于 README 检测(以上均未匹配时):
- 从 README 文件中提取启动命令,使用
background_terminal_create执行
4. 读取输出日志确认服务器启动成功
background_terminal_create 返回的结果中包含子进程的 ID(PID),记录该 PID 以便后续管理。
然后通过以下步骤确认服务器已成功启动:
# 第 1 步:调用 background_terminal_output_path 获取日志文件路径
# 第 2 步:使用 Read 工具读取日志文件
# 第 3 步:查找启动成功的标志,例如:
# - "Listening on port ..."
# - "Server running at ..."
# - "ready in ... ms"
# - "Local: http://localhost:..."
# 第 4 步:若启动失败,读取日志中的错误信息并排查问题若日志显示服务器尚未启动完成,等待几秒后重新读取日志文件,重复此过程直到确认服务器已运行或检测到错误。
5. 获取预览地址
调用 MCP 工具 request_preview,传入服务器监听的端口号,获取预览 URL。
6. 检测预览连接状态
调用 request_preview 获得 access_url 后,必须检测预览连接是否正常。使用 curl 请求预览服务的健康检查端点:
curl -s --max-time 10 "$ACCESS_URL/.well-known/mcai-preview-connect-status-detect" | head -n10检测逻辑:
1. 忽略 curl 的退出码和 HTTP 响应码,只检查响应 body 中是否包含 <meta name="mcai-preview-error" 2. 因为请求的 mcai-preview-connect-status-detect 是一个 dummy 地址,后端一定不存在这个文件,这个请求只是为了判断前置代理是否有返回报错。所以只要响应中不包含上述 meta,就说明预览连接正常,无需关注响应中的其他错误,请直接跳过下面排查步骤,继续向用户展示预览地址 3. 如果包含 mcai-preview-error 这个 meta,说明云端的预览服务无法访问本地站点。需要从 meta 标签的属性中提取错误信息:
code— 错误状态码content— 错误原因描述data-request-id— 请求 ID
meta 标签格式:
<meta name="mcai-preview-error" code="530" content="开发环境端口 9091 连接失败,请检查 Web 站点进程是否已经退出,以及该端口是否有在监听。" data-request-id="RL-xxxxxxxx"/>异常排查流程:
根据提取到的 code (错误码) 和 content (异常原因),
- 检查后台终端日志,排查应用代码错误
- 检查服务器进程是否仍在运行
- 尝试修复后重新部署
7. 向用户展示预览地址
- 输出可点击的超链接,指向
request_preview返回的预览地址 - 告知用户后台终端 ID,方便后续管理
8. 处理 IP 白名单问题
- 若用户反馈因 IP 未加白名单而无法访问,请用户提供拒绝页面上显示的 IP 地址
- 再次调用 MCP 工具
request_preview,使用additional_ip_whitelist字段添加用户的 IP additional_ip_whitelist字段接受多个 IPv4 地址,以逗号分隔(例如"192.168.1.100,10.0.0.50")
进程管理
必须使用后台终端启动服务器
严禁使用 exec 工具直接启动服务器进程,必须使用后台终端来启动。
查看后台终端
使用 background_terminal_list 查看所有运行中的后台终端及其状态。
查看服务器输出
使用 background_terminal_output_path 获取后台终端的日志文件路径,然后读取日志文件查看服务器输出、错误或运行状态。
停止服务器
当用户请求停止服务器时,使用 background_terminal_kill 并传入终端 ID 来停止。
严禁使用 pkill 或 killall 加进程名的方式停止服务器(例如 pkill node、killall python),这可能导致:
- 误杀用户手动启动的进程
- 误杀其他无关的开发服务器
- 误杀同名系统进程
始终使用 background_terminal_kill 停止由本 skill 启动的服务器。
注意事项
- 必须使用
background_terminal_create启动服务器,确保不阻塞当前会话 - 启动后必须通过
background_terminal_output_path获取日志路径并读取日志,确认服务器已运行后再获取预览地址 - 启动前务必检查是否已有服务器进程,避免端口冲突
- 静态服务器默认端口为 8000
- Node.js 项目的端口取决于项目配置
- 端口冲突时可动态更换端口号
- 使用
background_terminal_list追踪运行中的终端,使用background_terminal_kill停止终端 - 严禁使用
pkill或killall停止服务器,必须使用background_terminal_kill加终端 ID - 运行服务器前确保依赖已安装:
- Node.js:
npm install - Python:
pip install -r requirements.txt(若存在) - PHP:
composer install(若存在composer.json) - Ruby/Rails:
bundle install(若存在Gemfile) - Go:
go mod download(go run会自动处理) - Java:Maven/Gradle wrapper 自动处理依赖
- Rust:
cargo fetch(cargo run会自动处理)