activepieces
AI Agents & MCPs & AI Workflow Automation • (~400 MCP servers for AI agents) • AI Automation / AI Agent with MCPs • AI Workflows & AI Agents • MCPs for AI Agents
Crawler Summary
Converts Apache Airflow DAG files into Databricks Asset Bundles (DABs) projects. Use when migrating Airflow DAGs to Databricks Lakeflow Jobs, converting Airflow operators to DABs task types, or generating databricks.yml and job resource YAML from Airflow Python files. Triggers on mentions of Airflow migration, DAG conversion, Airflow to Databricks, Airflow to Lakeflow, or DABs generation from Airflow. --- name: airflow-to-dabs description: Converts Apache Airflow DAG files into Databricks Asset Bundles (DABs) projects. Use when migrating Airflow DAGs to Databricks Lakeflow Jobs, converting Airflow operators to DABs task types, or generating databricks.yml and job resource YAML from Airflow Python files. Triggers on mentions of Airflow migration, DAG conversion, Airflow to Databricks, Airflow to Lakeflow, or DABs g Capability contract not published. No trust telemetry is available yet. Last updated 2/25/2026.
Freshness
Last checked 2/25/2026
Best For
airflow-to-dabs is best for general automation workflows where OpenClaw compatibility matters.
Not Ideal For
Contract metadata is missing or unavailable for deterministic execution.
Evidence Sources Checked
editorial-content, GITHUB OPENCLEW, runtime-metrics, public facts pack
Converts Apache Airflow DAG files into Databricks Asset Bundles (DABs) projects. Use when migrating Airflow DAGs to Databricks Lakeflow Jobs, converting Airflow operators to DABs task types, or generating databricks.yml and job resource YAML from Airflow Python files. Triggers on mentions of Airflow migration, DAG conversion, Airflow to Databricks, Airflow to Lakeflow, or DABs generation from Airflow. --- name: airflow-to-dabs description: Converts Apache Airflow DAG files into Databricks Asset Bundles (DABs) projects. Use when migrating Airflow DAGs to Databricks Lakeflow Jobs, converting Airflow operators to DABs task types, or generating databricks.yml and job resource YAML from Airflow Python files. Triggers on mentions of Airflow migration, DAG conversion, Airflow to Databricks, Airflow to Lakeflow, or DABs g
Public facts
4
Change events
1
Artifacts
0
Freshness
Feb 25, 2026
Capability contract not published. No trust telemetry is available yet. Last updated 2/25/2026.
Trust score
Unknown
Compatibility
OpenClaw
Freshness
Feb 25, 2026
Vendor
Park Peter
Artifacts
0
Benchmarks
0
Last release
Unpublished
Key links, install path, and a quick operational read before the deeper crawl record.
Summary
Capability contract not published. No trust telemetry is available yet. Last updated 2/25/2026.
Setup snapshot
git clone https://github.com/park-peter/airflow-to-dabs.gitSetup complexity is LOW. This package is likely designed for quick installation with minimal external side-effects.
Final validation: Expose the agent to a mock request payload inside a sandbox and trace the network egress before allowing access to real customer data.
Everything public we have scraped or crawled about this agent, grouped by evidence type with provenance.
Vendor
Park Peter
Protocol compatibility
OpenClaw
Handshake status
UNKNOWN
Crawlable docs
6 indexed pages on the official domain
Merged public release, docs, artifact, benchmark, pricing, and trust refresh events.
Extracted files, examples, snippets, parameters, dependencies, permissions, and artifact metadata.
Extracted files
0
Examples
3
Snippets
0
Languages
typescript
Parameters
text
| Task ID | Operator | DABs Task Type | Tier | Notes | |-------------------|-------------------------|---------------------|------|--------------------| | extract_data | PythonOperator | notebook_task | 1 | | | check_env | BranchPythonOperator | condition_task | 2 | Simple equality | | wait_for_file | S3KeySensor | trigger.file_arrival| 3 | Becomes job trigger| | custom_step | MyCustomOperator | notebook_task | 4 | MANUAL REVIEW |
text
<bundle-name>/
databricks.yml # Single bundle config with shared variables and targets
resources/
<dag_id_1>_job.yml # One job resource per DAG
<dag_id_2>_job.yml
<dag_id_3>_job.yml
src/
<dag_id_1>/ # Source files namespaced per DAG
<task_id>.py
<task_id>.sql
<dag_id_2>/
<task_id>.py
<dag_id_3>/
<task_id>.py
MIGRATION_NOTES.md # Consolidated migration notes for all DAGstext
<dag_id>-bundle/
databricks.yml
resources/
<dag_id>_job.yml
src/
<task_id>.py
<task_id>.sql
MIGRATION_NOTES.mdFull documentation captured from public sources, including the complete README when available.
Docs source
GITHUB OPENCLEW
Editorial quality
ready
Converts Apache Airflow DAG files into Databricks Asset Bundles (DABs) projects. Use when migrating Airflow DAGs to Databricks Lakeflow Jobs, converting Airflow operators to DABs task types, or generating databricks.yml and job resource YAML from Airflow Python files. Triggers on mentions of Airflow migration, DAG conversion, Airflow to Databricks, Airflow to Lakeflow, or DABs generation from Airflow. --- name: airflow-to-dabs description: Converts Apache Airflow DAG files into Databricks Asset Bundles (DABs) projects. Use when migrating Airflow DAGs to Databricks Lakeflow Jobs, converting Airflow operators to DABs task types, or generating databricks.yml and job resource YAML from Airflow Python files. Triggers on mentions of Airflow migration, DAG conversion, Airflow to Databricks, Airflow to Lakeflow, or DABs g
name: airflow-to-dabs description: Converts Apache Airflow DAG files into Databricks Asset Bundles (DABs) projects. Use when migrating Airflow DAGs to Databricks Lakeflow Jobs, converting Airflow operators to DABs task types, or generating databricks.yml and job resource YAML from Airflow Python files. Triggers on mentions of Airflow migration, DAG conversion, Airflow to Databricks, Airflow to Lakeflow, or DABs generation from Airflow. version: 1.0.0 author: park-peter repository: https://github.com/park-peter/airflow-to-dabs keywords:
Converts Apache Airflow DAG files into complete Databricks Asset Bundles (DABs) projects, producing databricks.yml, resources/*.yml job definitions, and extracted src/ source files ready for databricks bundle deploy.
default_args (retries, timeouts, email notifications) to DABs job/task settingsMIGRATION_NOTES.md documenting conversion decisions and manual action itemsspark-submit in BashOperator/SSHOperator, clean up YARN Spark configs, map HDFS paths, convert HiveQL to Spark SQL, handle SqoopOperator alternativesRead the provided Airflow DAG file(s) and extract the following structure:
dag_id, schedule_interval/schedule, default_args, catchup, tags, paramstask_id and operator class (e.g., PythonOperator, BashOperator)python_callable, bash_command, sql, application, json, etc.)op_kwargs, op_args, params, templates_dict>> / << chains and set_upstream/set_downstream calls to build the task DAGxcom_push/xcom_pull), Airflow Variables, Airflow Connections, dynamic task mapping (expand), and custom timetable/dataset schedulesPresent a summary table to the user before proceeding:
| Task ID | Operator | DABs Task Type | Tier | Notes |
|-------------------|-------------------------|---------------------|------|--------------------|
| extract_data | PythonOperator | notebook_task | 1 | |
| check_env | BranchPythonOperator | condition_task | 2 | Simple equality |
| wait_for_file | S3KeySensor | trigger.file_arrival| 3 | Becomes job trigger|
| custom_step | MyCustomOperator | notebook_task | 4 | MANUAL REVIEW |
Read references/operator-mapping.md for the authoritative mapping table.
For each task in the inventory:
BranchPythonOperator: If the branching logic is a simple comparison, use condition_task. If complex, use a two-step pattern (notebook + condition).DummyOperator/EmptyOperator: Remove from the task list. Rewire depends_on so downstream tasks point to the dummy's upstream tasks.SubDagOperator/TaskGroup: Flatten into the parent job with prefixed task keys, or extract to a separate job via run_job_task.references/schedule-trigger-mapping.md.
trigger.file_arrivaltrigger.table_updatedepends_on, run_job_task, or trigger.table_updatenotebook_task as fallback. Add entry to MIGRATION_NOTES.md.For schedule conversion, read references/schedule-trigger-mapping.md:
0 for seconds, adjust day-of-week numbering, and normalize Sunday 0/7 -> 1)@daily, @hourly, etc.) to Quartz equivalentsdefault_args or DAG start_date@continuous to job-level continuous modetrigger.table_update when deterministic, otherwise flag in MIGRATION_NOTES.mdProduce the following output files. Read references/dab-schema-reference.md for the complete YAML schema. Use assets/templates/databricks.yml.tmpl and assets/templates/job-resource.yml.tmpl as starting skeletons.
Multi-DAG (default): When converting multiple DAGs, produce a single bundle with one databricks.yml and a separate job resource file per DAG under resources/. This is the default because it enables cross-job references via ${resources.jobs.<name>.id} and allows a single databricks bundle deploy.
Single-DAG: When converting one DAG, produce a standalone bundle directory.
Split bundles (opt-in): If the user explicitly requests separate bundles per DAG (e.g., "create a separate bundle for each DAG"), produce one bundle directory per DAG. Cross-DAG TriggerDagRunOperator references will require hardcoded job IDs and a note in MIGRATION_NOTES.md.
<bundle-name>/
databricks.yml # Single bundle config with shared variables and targets
resources/
<dag_id_1>_job.yml # One job resource per DAG
<dag_id_2>_job.yml
<dag_id_3>_job.yml
src/
<dag_id_1>/ # Source files namespaced per DAG
<task_id>.py
<task_id>.sql
<dag_id_2>/
<task_id>.py
<dag_id_3>/
<task_id>.py
MIGRATION_NOTES.md # Consolidated migration notes for all DAGs
<dag_id>-bundle/
databricks.yml
resources/
<dag_id>_job.yml
src/
<task_id>.py
<task_id>.sql
MIGRATION_NOTES.md
File generation rules:
databricks.yml: For multi-DAG, derive bundle.name from a user-provided name or the parent directory name. For single-DAG, derive from dag_id (kebab-case). Include variables for spark_version, node_type_id, warehouse_id. Define dev and prod targets. Use include: - resources/*.yml to pull in all job definitions.
resources/<dag_id>_job.yml: One job resource file per DAG, each containing:
schedule or trigger from Phase 2email_notifications from default_args.emailparameters from DAG params and Jinja variables like {{ ds }}job_clusters with a shared cluster definitiontasks list with all mapped tasks, preserving the dependency graph via depends_onmax_retries and min_retry_interval_millis from default_args.retries and retry_delaytimeout_seconds from default_args.execution_timeoutTriggerDagRunOperator resolve to ${resources.jobs.<target-dag-job-key>.id} within the same bundlesrc/<dag_id>/*.py notebooks: For each notebook_task or spark_python_task:
src/<dag_id>/ to avoid collisionssrc/# Databricks notebook sourcedbutils.widgets.text() and dbutils.widgets.get() for each base_parameters entrypython_callable function body (not the function signature itself)from airflow.models import Variable -> dbutils.widgets.get())src/<dag_id>/*.sql files: For each sql_task with inline SQL:
{{ ds }} with {{job.parameters.run_date}}{{ params.x }} with {{job.parameters.x}}MIGRATION_NOTES.md: A single consolidated file documenting:
dbutils.jobs.taskValuescatchup, depends_on_past, sla settings that have no DABs equivalentrun_job_task, with resolved ${resources.jobs...} substitutionsAfter generating all files:
depends_on reference points to a valid task_key in the same jobjob_cluster_key, existing_cluster_id, or new_cluster (except condition_task, run_job_task, and similar clusterless tasks){{job.parameters.*}} references have corresponding entries in the job parameters listdatabricks bundle validate -t <target> and fix schema warnings/errors (if auth is unavailable, run databricks bundle schema validation checks offline and report the limitation)Progressive disclosure -- read these references as needed during each phase:
references/operator-mapping.md: Complete Tier 1-4 mapping table with Airflow/DABs YAML examples for every operator typereferences/dab-schema-reference.md: Condensed DABs YAML schema covering all task types, triggers, clusters, variables, and dynamic value referencesreferences/schedule-trigger-mapping.md: Airflow cron-to-Quartz conversion table, preset mappings, sensor-to-trigger mappings, default_args mappings, and Jinja variable conversionsreferences/conversion-examples.md: 4 complete before/after examples (simple ETL, branching, sensor-triggered, multi-system)references/hadoop-migration-guide.md: HDFS path conversion, YARN Spark config cleanup, Hive-to-Unity-Catalog mapping, spark-submit detection in BashOperator/SSHOperator, Sqoop alternatives, and bulk conversion guidance for large DAGsassets/templates/databricks.yml.tmpl: Skeleton bundle configuration templateassets/templates/job-resource.yml.tmpl: Skeleton job resource templateUser says: "Convert this Airflow DAG to a Databricks Asset Bundles" User provides: an Airflow DAG Python file (pasted or referenced via @file)
Result: Standalone DABs project with databricks.yml, resources/<dag_id>_job.yml, src/ notebooks, and MIGRATION_NOTES.md.
User says: "Migrate my_etl_dag.py to DABs targeting our dev workspace at https://my-workspace.databricks.com"
Result: DABs project with workspace URL pre-filled in targets.dev.workspace.host.
User says: "Convert all DAGs in the dags/ directory to Databricks Asset Bundles"
Result: A single bundle with one databricks.yml, a separate resources/<dag_id>_job.yml per DAG, source files namespaced under src/<dag_id>/, and a consolidated MIGRATION_NOTES.md. Cross-DAG TriggerDagRunOperator references resolve via ${resources.jobs.<name>.id}.
User says: "Convert all DAGs in the dags/ directory into separate bundles, one per DAG"
Result: One bundle directory per DAG, each with its own databricks.yml. Cross-DAG references use hardcoded job IDs with a note in each MIGRATION_NOTES.md.
Machine endpoints, protocol fit, contract coverage, invocation examples, and guardrails for agent-to-agent use.
Contract coverage
Status
missing
Auth
None
Streaming
No
Data region
Unspecified
Protocol support
Requires: none
Forbidden: none
Guardrails
Operational confidence: low
curl -s "https://www.xpersona.co/api/v1/agents/park-peter-airflow-to-dabs/snapshot"
curl -s "https://www.xpersona.co/api/v1/agents/park-peter-airflow-to-dabs/contract"
curl -s "https://www.xpersona.co/api/v1/agents/park-peter-airflow-to-dabs/trust"
Trust and runtime signals, benchmark suites, failure patterns, and practical risk constraints.
Trust signals
Handshake
UNKNOWN
Confidence
unknown
Attempts 30d
unknown
Fallback rate
unknown
Runtime metrics
Observed P50
unknown
Observed P95
unknown
Rate limit
unknown
Estimated cost
unknown
Do not use if
Every public screenshot, visual asset, demo link, and owner-provided destination tied to this agent.
Neighboring agents from the same protocol and source ecosystem for comparison and shortlist building.
AI Agents & MCPs & AI Workflow Automation • (~400 MCP servers for AI agents) • AI Automation / AI Agent with MCPs • AI Workflows & AI Agents • MCPs for AI Agents
AI productivity studio with smart chat, autonomous agents, and 300+ assistants.
Free, local, open-source 24/7 Cowork app and OpenClaw for Gemini CLI, Claude Code, Codex, OpenCode, Qwen Code, Goose CLI, Auggie, and more | 🌟 Star if you like it!
The Frontend for Agents & Generative UI. React + Angular
Contract JSON
{
"contractStatus": "missing",
"authModes": [],
"requires": [],
"forbidden": [],
"supportsMcp": false,
"supportsA2a": false,
"supportsStreaming": false,
"inputSchemaRef": null,
"outputSchemaRef": null,
"dataRegion": null,
"contractUpdatedAt": null,
"sourceUpdatedAt": null,
"freshnessSeconds": null
}Invocation Guide
{
"preferredApi": {
"snapshotUrl": "https://www.xpersona.co/api/v1/agents/park-peter-airflow-to-dabs/snapshot",
"contractUrl": "https://www.xpersona.co/api/v1/agents/park-peter-airflow-to-dabs/contract",
"trustUrl": "https://www.xpersona.co/api/v1/agents/park-peter-airflow-to-dabs/trust"
},
"curlExamples": [
"curl -s \"https://www.xpersona.co/api/v1/agents/park-peter-airflow-to-dabs/snapshot\"",
"curl -s \"https://www.xpersona.co/api/v1/agents/park-peter-airflow-to-dabs/contract\"",
"curl -s \"https://www.xpersona.co/api/v1/agents/park-peter-airflow-to-dabs/trust\""
],
"jsonRequestTemplate": {
"query": "summarize this repo",
"constraints": {
"maxLatencyMs": 2000,
"protocolPreference": [
"OPENCLEW"
]
}
},
"jsonResponseTemplate": {
"ok": true,
"result": {
"summary": "...",
"confidence": 0.9
},
"meta": {
"source": "GITHUB_OPENCLEW",
"generatedAt": "2026-10-09T02:23:52.950Z"
}
},
"retryPolicy": {
"maxAttempts": 3,
"backoffMs": [
500,
1500,
3500
],
"retryableConditions": [
"HTTP_429",
"HTTP_503",
"NETWORK_TIMEOUT"
]
}
}Trust JSON
{
"status": "unavailable",
"handshakeStatus": "UNKNOWN",
"verificationFreshnessHours": null,
"reputationScore": null,
"p95LatencyMs": null,
"successRate30d": null,
"fallbackRate": null,
"attempts30d": null,
"trustUpdatedAt": null,
"trustConfidence": "unknown",
"sourceUpdatedAt": null,
"freshnessSeconds": null
}Capability Matrix
{
"rows": [
{
"key": "OPENCLEW",
"type": "protocol",
"support": "unknown",
"confidenceSource": "profile",
"notes": "Listed on profile"
}
],
"flattenedTokens": "protocol:OPENCLEW|unknown|profile"
}Facts JSON
[
{
"factKey": "docs_crawl",
"category": "integration",
"label": "Crawlable docs",
"value": "6 indexed pages on the official domain",
"href": "https://github.com/login?return_to=https%3A%2F%2Fgithub.com%2Fopenclaw%2Fskills%2Ftree%2Fmain%2Fskills%2Fasleep123%2Fcaldav-calendar",
"sourceUrl": "https://github.com/login?return_to=https%3A%2F%2Fgithub.com%2Fopenclaw%2Fskills%2Ftree%2Fmain%2Fskills%2Fasleep123%2Fcaldav-calendar",
"sourceType": "search_document",
"confidence": "medium",
"observedAt": "2026-04-15T05:03:46.393Z",
"isPublic": true
},
{
"factKey": "vendor",
"category": "vendor",
"label": "Vendor",
"value": "Park Peter",
"href": "https://github.com/park-peter/airflow-to-dabs",
"sourceUrl": "https://github.com/park-peter/airflow-to-dabs",
"sourceType": "profile",
"confidence": "medium",
"observedAt": "2026-02-25T02:27:59.188Z",
"isPublic": true
},
{
"factKey": "protocols",
"category": "compatibility",
"label": "Protocol compatibility",
"value": "OpenClaw",
"href": "https://www.xpersona.co/api/v1/agents/park-peter-airflow-to-dabs/contract",
"sourceUrl": "https://www.xpersona.co/api/v1/agents/park-peter-airflow-to-dabs/contract",
"sourceType": "contract",
"confidence": "medium",
"observedAt": "2026-02-25T02:27:59.188Z",
"isPublic": true
},
{
"factKey": "handshake_status",
"category": "security",
"label": "Handshake status",
"value": "UNKNOWN",
"href": "https://www.xpersona.co/api/v1/agents/park-peter-airflow-to-dabs/trust",
"sourceUrl": "https://www.xpersona.co/api/v1/agents/park-peter-airflow-to-dabs/trust",
"sourceType": "trust",
"confidence": "medium",
"observedAt": null,
"isPublic": true
}
]Change Events JSON
[
{
"eventType": "docs_update",
"title": "Docs refreshed: Sign in to GitHub · GitHub",
"description": "Fresh crawlable documentation was indexed for the official domain.",
"href": "https://github.com/login?return_to=https%3A%2F%2Fgithub.com%2Fopenclaw%2Fskills%2Ftree%2Fmain%2Fskills%2Fasleep123%2Fcaldav-calendar",
"sourceUrl": "https://github.com/login?return_to=https%3A%2F%2Fgithub.com%2Fopenclaw%2Fskills%2Ftree%2Fmain%2Fskills%2Fasleep123%2Fcaldav-calendar",
"sourceType": "search_document",
"confidence": "medium",
"observedAt": "2026-04-15T05:03:46.393Z",
"isPublic": true
}
]Sponsored
Ads related to airflow-to-dabs and adjacent AI workflows.