AgentSkillsCN

deploy

SignalRoom 的 Git 工作流和提交标准。在提交更改、创建 PR 或管理分支时使用。确保一致的提交消息和安全的 Git 操作。

SKILL.md
--- frontmatter
name: deploy
description: Safe deployment workflow for Fly.io and infrastructure changes. Use before ANY deployment, config modification, or infrastructure change. Prevents panic-driven debugging and production incidents.

Deployment Discipline

The Golden Rules

  1. LOCAL FIRST, ALWAYS - Never deploy until local tests pass
  2. ONE CHANGE AT A TIME - Make one fix, test it, verify it works, then proceed
  3. UNDERSTAND BEFORE FIXING - Don't conflate unrelated errors
  4. NOTIFICATIONS ARE PRODUCTION - Failed deployments spam Slack

Pre-Deployment Checklist

Before ANY deployment:

bash
# 1. Test locally first
source .venv/bin/activate
python scripts/run_pipeline.py everflow

# 2. Check what changed
git diff

# 3. Verify no broken imports
python -c "from signalroom.workers.main import main; print('OK')"

Fly.io Deployment

bash
# Deploy (builds and pushes)
fly deploy

# Check status
fly status

# View logs
fly logs

# Check secrets are set
fly secrets list

Known Working Configuration

Supabase Pooler (REQUIRED for Fly.io):

  • Host: aws-0-us-east-1.pooler.supabase.com
  • Port: 6543
  • User: postgres.{project_ref} (NOT just postgres)

Temporal Cloud:

  • Address: ap-northeast-1.aws.api.temporal.io:7233
  • Namespace: signalroom-713.nzg5u

If Something Breaks

STOP. Do not deploy again.

  1. Check what you changed: git diff
  2. Revert if needed: git checkout -- <file>
  3. Test locally before any retry
  4. Ask: "What was working before, and what did I change?"

Secrets with Special Characters

Passwords with backticks, quotes, or special chars:

  • Do NOT use CLI - shell escaping will break them
  • Use Fly.io dashboard - Settings > Secrets > Set manually

Rollback

bash
# List recent deployments
fly releases

# Rollback to previous
fly deploy --image <previous-image>