cosmos-dbt-core
Turns a dbt Core project into an Airflow DAG/TaskGroup using Astronomer Cosmos. Use turning a dbt Core project into an Airflow DAG or TaskGroup with Astronomer Cosmos. Before implementing, verify dbt engine, warehouse, Airflow version, execution environment, DAG vs TaskGroup, and manifest availabili
By astronomer · 901 installs
npx skills add astronomer/agents --skill cosmos-dbt-core
Source repository · Upstream listing
Cosmos + dbt Core: Implementation Checklist
Execute steps in order. Prefer the simplest configuration that meets the user's constraints.
Version note : This skill targets Cosmos 1.11+ and Airflow 3.x. If the user is on Airflow 2.x, adjust imports accordingly (see Appendix A).
Reference : Latest stable: https://pypi.org/project/astronomer cosmos/
Before starting , confirm: (1) dbt engine = Core (not Fusion → use cosmos dbt fusion ), (2) warehouse type, (3) Airflow version, (4) execution environment (Airflow env / venv / container), (5) DbtDag vs DbtTaskGroup vs individual operators, (6) manifest availability.
1. Configure Project (ProjectConfig)
Approach When to use Required param
Project path Files available locally dbt project path
Manifest only dbt manifest load manifest path + project name
2. Choose Parsing Strategy (RenderConfig)
Pick ONE load mode based on constraints:
Load mode When to use Required inputs Constraints
dbt manifest Large projects; containerized execution; fastest ProjectConfig.manifest path Remote manifest needs manifest conn id
dbt ls Complex selectors; need dbt native selection dbt installed OR dbt executable path Can also be used with containerized execution
dbt ls file dbt ls selection without running dbt ls every parse RenderConfig.dbt ls path select / exclude won't work
automatic (default) Simple setups; let Cosmos pick (none) Falls back: manifest → dbt ls → custom
CRITICAL : Containerized execution ( DOCKER / KUBERNETES /etc.)
3. Choose Execution Mode (ExecutionConfig)
Reference : See [reference/cosmos config.md](reference/cosmos config.md execution modes executionconfig) for detailed configuration examples per mode.
Pick ONE execution mode:
Execution mode When to use Speed Required setup
WATCHER Fastest; single dbt build visibility Fastest dbt adapter in env OR dbt executable path or dbt Fusion
WATCHER KUBERNETES Fastest isolated method; single dbt build visibility Fast dbt installed in container
LOCAL + DBT RUNNER dbt + adapter in the same Python installation as Airflow Fast dbt 1.5+ in requirements.txt
LOCAL + SUBPROCESS dbt + adapter available in the Airflow deployment, in an isolated Python installation Medium dbt executable path
AIRFLOW ASYNC BigQuery + long running transforms Fast Airflow ≥2.8; provider deps
KUBERNETES Isolation between Airflow and dbt Medium Airflow ≥2.8; provider deps
VIRTUALENV Can't modify image; runtime venv Slower py requirements in operator args
Other containerized approaches Support Airflow and dbt isolation Medium container config
4. Configure Warehouse Connection (ProfileConfig)
Reference : See [reference/cosmos config.md](reference/cosmos config.md profileconfig warehouse connection) for detailed ProfileConfig options and all ProfileMapping classes.
Option A: Airflow Connection + ProfileMapping (Recommended)
Option B: Existing profiles.yml
CRITICAL : Do not hardcode secrets; use environment variables.
5. Configure Testing Behavior (RenderConfig)
Reference : See [reference/cosmos config.md](reference/cosmos config.md testing behavior renderconfig) for detailed testing options.
TestBehavior Behavior
AFTER EACH (default) Tests run immediately after each model (default)
BUILD Combine run + test into single dbt build
AFTER ALL All tests after all models complete
NONE Skip tests
6. Configure operator args
Reference : See [reference/cosmos config.md](reference/cosmos config.md operator args configuration) for detailed operator args options.
7. Assemble DAG / TaskGroup
Option A: DbtDag (Standalone)
Option B: DbtTaskGroup (Inside Existing DAG)
Option C: Use Cosmos operators directly
Setting Dependencies on Individual Cosmos Tasks
8. Safety Checks
Before finalizing, verify:
[ ] Execution mode matches constraints (AIRFLOW ASYNC → BigQuery only)
[ ] Warehouse adapter installed for chosen execution mode
[ ] Secrets via Airflow connections or env vars, NOT plaintext
[ ] Load mode matches execution (complex selectors → dbt ls)
[ ] Airflow 3 asset URIs if downstream DAGs scheduled on Cosmos assets (see Appendix A)
Appendix A: Airflow 3 Compatibility
Import Differences
Airflow 3.x Airflow 2.x
from airflow.sdk import dag, task from airflow.decorators import dag, task
from airflow.sdk import chain from airflow.models.baseoperator import chain
Asset/Dataset URI Format Change
Cosmos ≤1.9 (Airflow 2 Datasets):
Cosmos ≥1.10 (Airflow 3 Assets):
CRITICAL : Update asset URIs when upgrading to Airflow 3.
Appendix B: Operational Extras
Caching
Cosmos caches artifacts to speed up parsing. Enabled by default.
Reference: https://astronomer.github.io/astronomer cosmos/configuration/caching.html
Memory Optimized Imports
When enabled:
Artifact Upload to Object Storage
dbt Docs Hosting
Cosmos serves dbt docs in the Airflow UI. The config depends on your Airflow major
version (each uses a different UI plugin system) — it is not a free single vs multi choice:
Airflow Config Scope Since
2 (FAB plugin) DBT DOCS DIR (+ DBT DOCS CONN ID , DBT DOCS INDEX FILE NAME ) Single project Cosmos 1.4.0+
3.1+ (FastAPI) DBT DOCS PROJECTS (JSON) One or more projects Cosmos 1.11.0+
Airflow 2:
Airflow 3.1+:
Pick by Airflow version, not project count. The single project settings are the Airflow 2
path; Cosmos publishes no deprecation notice for them — do not describe them as "legacy"
or "deprecated."
Reference: https://astronomer.github.io/astronomer cosmos/configuration/hosting docs.html
Related Skills
cosmos dbt fusion : For dbt Fusion projects (not dbt Core)
authoring dags : General DAG authoring patterns
testing dags : Testing DAGs after creation