skills/astronomer/managing-astro-deployments/SKILL.md
Manage Astronomer production deployments with Astro CLI. Use when the user wants to authenticate, switch workspaces, create/update/delete deployments, or deploy code to production.
npx skillsauth add rory-data/copilot managing-astro-deploymentsInstall this skill globally with one command. Works with Claude Code, Cursor, and Windsurf.
3 of 9 scanners reported clean
Some scanners were skipped, did not run, or reported a non-clean status. Review each row below.
This skill helps you manage production Astronomer deployments using the Astro CLI.
For local development, see the managing-astro-local-env skill. For production troubleshooting, see the troubleshooting-astro-deployments skill.
All deployment operations require authentication:
# Login to Astronomer (opens browser for OAuth)
astro login
Authentication tokens are stored locally for subsequent commands. Run this before any deployment operations.
Deployments are organized into workspaces:
# List all accessible workspaces
astro workspace list
# Switch to a specific workspace
astro workspace switch <WORKSPACE_ID>
Workspace context is maintained between sessions. Most deployment commands operate within the current workspace context.
# List deployments in current workspace
astro deployment list
# List deployments across all workspaces
astro deployment list --all
# Inspect specific deployment (detailed info)
astro deployment inspect <DEPLOYMENT_ID>
# Inspect by name (alternative to ID)
astro deployment inspect --deployment-name data-service-stg
inspect Shows# Create with default settings
astro deployment create
# Create with specific executor
astro deployment create --label production --executor celery
astro deployment create --label staging --executor kubernetes
# Executor options:
# - celery: Best for most production workloads
# - kubernetes: Best for dynamic scaling, isolated tasks
# - local: Best for development only
# Enable DAG-only deploys (faster iteration)
astro deployment update <DEPLOYMENT_ID> --dag-deploy-enabled
# Update other settings (use --help for full options)
astro deployment update <DEPLOYMENT_ID> --help
# Delete a deployment (requires confirmation)
astro deployment delete <DEPLOYMENT_ID>
Destructive: This cannot be undone. All DAGs, task history, and metadata will be lost.
Deploy both DAGs and Docker image (required when dependencies change):
astro deploy <DEPLOYMENT_ID>
Use when:
requirements.txt, packages.txt, Dockerfile)Deploy only DAG files, skip Docker image rebuild:
astro deploy <DEPLOYMENT_ID> --dags
Use when:
dags/ directory)Requires: --dag-deploy-enabled flag set on deployment (see Update Deployments)
Deploy only Docker image, skip DAG sync:
astro deploy <DEPLOYMENT_ID> --image-only
Use when:
Bypass safety checks and deploy:
astro deploy <DEPLOYMENT_ID> --force
Caution: Skips validation that could prevent broken deployments.
Manage API tokens for programmatic access to deployments:
# List tokens for a deployment
astro deployment token list --deployment-id <DEPLOYMENT_ID>
# Create a new token
astro deployment token create \
--deployment-id <DEPLOYMENT_ID> \
--name "CI/CD Pipeline" \
--role DEPLOYMENT_ADMIN
# Create token with expiration
astro deployment token create \
--deployment-id <DEPLOYMENT_ID> \
--name "Temporary Access" \
--role DEPLOYMENT_ADMIN \
--expiry 30 # Days until expiration (0 = never expires)
Roles:
DEPLOYMENT_ADMIN: Full access to deploymentNote: Token value is only shown at creation time. Store it securely.
# 1. Login
astro login
# 2. Switch to production workspace
astro workspace list
astro workspace switch <PROD_WORKSPACE_ID>
# 3. Create deployment
astro deployment create --label production --executor celery
# 4. Note the deployment ID, then deploy
astro deploy <DEPLOYMENT_ID>
# 1. Enable fast deploys (one-time setup)
astro deployment update <DEPLOYMENT_ID> --dag-deploy-enabled
# 2. Make DAG changes locally
# 3. Deploy quickly
astro deploy <DEPLOYMENT_ID> --dags
# 1. Deploy to staging first
astro workspace switch <STAGING_WORKSPACE_ID>
astro deploy <STAGING_DEPLOYMENT_ID>
# 2. Test in staging
# 3. Deploy same code to production
astro workspace switch <PROD_WORKSPACE_ID>
astro deploy <PROD_DEPLOYMENT_ID>
# View CLI configuration
astro config get
# Set configuration value
astro config set <KEY> <VALUE>
# Check CLI version
astro version
# Upgrade CLI to latest version
astro upgrade
--dags flag for fast iteration (seconds vs minutes)deployment inspect to verify deployment health before deployinginspect also accepts --deployment-name--dag-deploy-enabled once per deployment for fast deploysastro workspace list (shows asterisk for current)tools
Queries, manages, and troubleshoots Apache Airflow using the af CLI. Covers listing DAGs, triggering runs, reading task logs, diagnosing failures, debugging DAG import errors, checking connections, variables, pools, and monitoring health. Also routes to sub-skills for writing DAGs, debugging, deploying, and migrating Airflow 2 to 3. Use when user mentions "Airflow", "DAG", "DAG run", "task log", "import error", "parse error", "broken DAG", or asks to "trigger a pipeline", "debug import errors", "check Airflow health", "list connections", "retry a run", or any Airflow operation. Do NOT use for warehouse/SQL analytics on Airflow metadata tables — use analyzing-data instead.
tools
Build Airflow 3.1+ plugins that embed FastAPI apps, custom UI pages, React components, middleware, macros, and operator links directly into the Airflow UI. Use this skill whenever the user wants to create an Airflow plugin, add a custom UI page or nav entry to Airflow, build FastAPI-backed endpoints inside Airflow, serve static assets from a plugin, embed a React app in the Airflow UI, add middleware to the Airflow API server, create custom operator extra links, or call the Airflow REST API from inside a plugin. Also trigger when the user mentions AirflowPlugin, fastapi_apps, external_views, react_apps, plugin registration, or embedding a web app in Airflow 3.1+. If someone is building anything custom inside Airflow 3.1+ that involves Python and a browser-facing interface, this skill almost certainly applies.
data-ai
Use when the user needs human-in-the-loop workflows in Airflow (approval/reject, form input, or human-driven branching). Covers ApprovalOperator, HITLOperator, HITLBranchOperator, HITLEntryOperator, HITLTrigger. Requires Airflow 3.1+. Does not cover AI/LLM calls (see airflow-ai).
development
Detects and fixes common code smells during review or refactoring. Invoke whenever reviewing code for quality issues, before merging a PR, when refactoring legacy code, or when the user asks about code quality, anti-patterns, or technical debt. Detects: over-abstraction, complex inheritance, large functions, tight coupling, hidden dependencies, magic numbers, boolean traps, swallowed exceptions, global state, and duplicate code. Provides specific fixes with before/after examples. Also invoke when someone says "review this code", "is this clean?", "can I improve this?", "this feels messy", or "find problems in my code".