agf-deploying-uat
Use when deploy-engineer is about to deploy the merged-to-main code to the isolated local UAT stack (after code review + SIT Audit pass and merge, before qa-engineer runs E2E/UAT). Provides the applicability gate, pre-flight checks, isolated compose bring-up (independent project name + port offset +900), in-container migration, real-output smoke test, hand-off, and the deploy-report skeleton. Pairs with deployment.md "UAT 环境部署" contract and slash /agf-deploy-uat.
npx skills add pcliangx/AppGenesisForge --skill agf-deploying-uat --agent claude-code
Same command for any agent — swap --agent for codex, cursor, copilot.
Weekly change comes from our own snapshots, not the repository page — it measures attention, not adoption.
# Deploying to the isolated UAT stack 把**合并到 main 后的干净代码**部署到与所有 dev worktree 物理隔离的本地 UAT 栈,冒烟自检通过后交接 qa-engineer。本 skill 是 deploy-engineer 的分步 runbook;隔离契约的单一来源是 [`deployment.md`](../../standards/deployment.md) "UAT 环境部署" 节。 ## 适用门 满足以下**全部**才进入部署: - 角色 = `deploy-engineer`(review-only / deploy-only,不修源码)。 - 目标是 **Web 全栈链路**(docker-compose 化的 frontend + backend + postgres 等)。小程序"部署"= 上传体验版 → **不适用**,归 miniapp-dev / miniapp-qa-engineer。 - code review(含 SIT Audit)已通过**且已合并到 main**,product-lead 已确认"部署 UAT"(对话内询问通过或 `/agf-deploy-uat` 手动触发)。 任一不满足 → 不部署,SendMessage product-lead 说明缺什么。 ## 前置检查(部署前必须逐项确认) - [ ] **main 干净且最新**:在合并后的 main 上,`git status` 无未提交改动,记录待部署 commit SHA(`git rev-parse --short HEAD`)。绝不部署任何未合并的 dev worktree 分支。 - [ ] **docker 可用**:`docker compose version` 正常返回(daemon 在跑)。 - [ ] **`.env.uat` 存在**:UAT 专用环境变量文件(含密钥)已就位且 **gitignore**(不入库)。缺失 → 阻断,请 product-lead 协调补齐。 - [ ] **端口未被占**:+900 带(6332 / 8900 / 8980)当前空闲(`lsof -i:8900` 等快速核对),确认不与 dev(base)/ QA pool(base+100..+700)/ 既有 UAT 栈撞车。 任一不勾 → 不起栈,先 SendMessage product-lead 解决先决条件。 ## 隔离起栈(独立 project name + 端口偏移 +900) ```bash export COMPOSE_PROJECT_NAME=${APP_NAME}-uat # 独立 project → 容器/网络/卷全独立于 dev / QA export UAT_PORT_
- 适用门
- 前置检查(部署前必须逐项确认)
- 隔离起栈(独立 project name + 端口偏移 +900)
- 容器内迁移
- 冒烟(真实输出,非 dry-run)
- 二元 gate
- 交接
- 部署报告骨架
- 完成前的验证
- 反模式
export COMPOSE_PROJECT_NAME=${APP_NAME}-uat # 独立 project → 容器/网络/卷全独立于 dev / QA
export UAT_PORT_OFFSET=900 # → POSTGRES 6332 / BACKEND 8900 / FRONTEND(caddy) 8980
docker compose -p "$COMPOSE_PROJECT_NAME" --env-file .env.uat up -d --build
docker compose -p "$COMPOSE_PROJECT_NAME" exec backend alembic upgrade head
curl -sS -w "\nHTTP %{http_code}\n" http://localhost:8900/health
curl -sS -w "\nHTTP %{http_code}\n" http://localhost:8900/api/<核心只读端点>
curl -sS -I http://localhost:8980 # 期望 200 / index.html 可达
docker compose -p "$COMPOSE_PROJECT_NAME" exec postgres psql -U <user> -d <db> -c "\dt"What does the agf-deploying-uat skill do?
Use when deploy-engineer is about to deploy the merged-to-main code to the isolated local UAT stack (after code review + SIT Audit pass and merge, before qa-engineer runs E2E/UAT). Provides the applicability gate, pre-flight checks, isolated compose bring-up (independent project name + port offset +900), in-container migration, real-output smoke test, hand-off, and the deploy-report skeleton. Pairs with deployment.md "UAT 环境部署" contract and slash /agf-deploy-uat.
How do I install it?
Run `npx skills add pcliangx/AppGenesisForge --skill agf-deploying-uat --agent claude-code` — it drops the skill into your project so the agent can pick it up. Swap the --agent value for codex, cursor or copilot if you use one of those.
Where does this skill come from?
From pcliangx/AppGenesisForge, a repository with 359 stars. We read it straight from the repository tree rather than a submitted listing, so what you see here is what is actually published.
Is a popular skill a good skill?
Not necessarily. Stars measure attention, not adoption — a repository can trend for a week and be abandoned. That is why we show the weekly change from our own snapshots next to the total, instead of a single flattering number.