Files
2025-11-29 17:59:24 +08:00

5.5 KiB

You are managing a deployment system. The user wants to deploy to an environment.

Task: Deploy Application

Parse the environment from arguments: $ARGUMENTS Expected format: /deploy [environment] Valid environments: dev, uat, prod

Step 1: Parse and Validate Environment

Extract the environment name from $ARGUMENTS.

If no environment provided, show error and STOP:

❌ Error: No environment specified

Usage: /deploy [environment]

Available environments:
  • dev   - Development environment (deploy_dev branch)
  • uat   - User Acceptance Testing (deploy_uat branch)
  • prod  - Production environment (deploy_prod branch)

Example: /deploy dev

Step 2: Load Configuration

Run CLI to get configuration:

node deployment/cli/deploy-cli.js config

If configuration not found (error in output), show error and STOP:

❌ Error: Deployment not configured

💡 Run /deploy:init to set up deployment

Parse the JSON output and extract:

  • mainBranch
  • buildCommand
  • environments.{env} configuration

If the requested environment doesn't exist in config, show available environments and STOP:

❌ Error: Unknown environment "{env}"

Available environments: {list from config}

💡 Edit .claude/deployment.config.json to add custom environments

Step 3: Run Pre-Deployment Validation

Run CLI validation for the target environment:

node deployment/cli/deploy-cli.js validate --check-git --env {environment}

Parse the JSON output.

If success: false, show all errors and STOP:

🚫 Deployment blocked by safety checks:

{for each error:}
❌ {error.message}
   💡 Fix: {error.fix}

Please resolve these issues before deploying.

If warnings exist (success: true but warnings present), show warnings but continue:

⚠️ Warnings detected:
{for each warning:}
  • {warning.message}
    💡 {warning.fix}

Continuing with deployment...

Step 4: Determine Source Branch

Based on environment configuration:

  • If environment has sourceBranch: Use that branch
  • If environment has sourceEnvironment: Use that environment's deployment branch

Example:

  • dev: source is "main" (sourceBranch)
  • uat: source is "deploy_dev" (from sourceEnvironment: "dev")
  • prod: source is "deploy_uat" (from sourceEnvironment: "uat")

Store the source branch and deployment branch for later steps.

Step 5: Run Build Validation

Show progress:

🔨 Running build validation...
   Command: {buildCommand}

Execute the build command:

{buildCommand}

Monitor the output.

If build succeeds:

✓ Build completed successfully

Proceed to Step 6.

If build fails:

Show the build errors:

❌ Build failed with errors:

{build_error_output}

What would you like to do?

Use AskUserQuestion:

{
  "questions": [{
    "question": "Build failed. How should we proceed?",
    "header": "Action",
    "multiSelect": false,
    "options": [
      {"label": "Show me the errors, I'll fix them", "description": "Stop deployment, let me fix manually"},
      {"label": "Try to auto-fix", "description": "Let Claude attempt to fix the errors"},
      {"label": "Cancel deployment", "description": "Stop the deployment process"}
    ]
  }]
}
  • If "Show me" or "Cancel": STOP with guidance
  • If "Try to auto-fix": Attempt to fix, then re-run build
    • If second build fails: STOP and ask user to fix manually

Step 6: Checkout and Update Source Branch

Ensure we're on the correct source branch and it's up-to-date:

git fetch origin && git checkout {source_branch} && git pull origin {source_branch}

Verify the branch is clean and up-to-date.

Step 7: Merge to Deployment Branch

Get the deployment branch from config: environments.{env}.branch

git checkout {deployment_branch} && git pull origin {deployment_branch} && git merge {source_branch} --no-ff -m "Deploy {source_branch} to {environment} environment"

If merge conflicts occur:

❌ Merge conflict detected

Conflicting files:
{list files from git status}

You need to resolve these conflicts manually:
1. The merge is in progress with conflicts
2. Resolve conflicts in the files listed above
3. Run: git add . && git commit
4. Then retry: /deploy {environment}

Aborting deployment.

Run: git merge --abort STOP execution.

If merge succeeds:

✓ Merged {source_branch} → {deployment_branch}

Step 8: Push to Trigger Deployment

Push the deployment branch to trigger Netlify auto-deploy:

git push origin {deployment_branch}

If push fails, show error:

❌ Push failed

{error output}

💡 Check your remote connection and permissions

STOP execution.

Step 9: Display Success Message

Show deployment confirmation:

✓ Deployment initiated successfully
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
🚀 Environment: {environment}
📦 Branch: {deployment_branch}
🔗 Source: {source_branch}

📊 Netlify will now build and deploy automatically
   Check your Netlify dashboard for deployment status

💡 Next steps:
   {if dev}  → After testing, deploy to UAT: /deploy uat
   {if uat}  → After approval, deploy to prod: /deploy prod
   {if prod} → Monitor production for any issues

🔍 To check status: Visit your Netlify dashboard

IMPORTANT:

  • Always validate before executing
  • Show clear progress updates
  • Handle errors gracefully with recovery options
  • Enforce environment progression (dev → uat → prod)
  • Never skip safety checks