一键导入
airflow-workflow
Execution guide for Airflow scheduled jobs — troubleshooting, updating, conn_id conventions, and cron references
用 Codex 或 Claude 帮你安装 复制这段 Prompt,粘贴到 Codex、Claude 或其他助手里,让它检查 Skill 页面并帮你完成安装。
菜单
Execution guide for Airflow scheduled jobs — troubleshooting, updating, conn_id conventions, and cron references
用 Codex 或 Claude 帮你安装 复制这段 Prompt,粘贴到 Codex、Claude 或其他助手里,让它检查 Skill 页面并帮你完成安装。
基于 SOC 职业分类
Generate MetricFlow metrics from natural language business descriptions
Author MetricFlow semantic model YAML from database tables with validation and Knowledge Base publishing
Optional semantic-model profiling workflow that mines historical SQL and bounded column distributions before YAML authoring
Build the project's vector-indexed knowledge base from files plus database metadata — optionally scoped to specific files / tables / datasources / domains. Scan the in-scope material, classify it into business domains, explore each domain's tables and docs in parallel with explore subagents (the validated-query SQL corpus is enumerated directly, no explore needed), then (after the user confirms a generation manifest — or directly, in the same turn, when the user has waived confirmation) route every artifact to its store via storage-classify, generating semantic_models / metrics / reference_sql (and mining any extra knowledge), and refresh AGENTS.md's KB index. The lightweight /init handles the AGENTS.md inventory plus file-based knowledge/memory; this skill owns the heavy vector-store generation.
Create new Datus skills from scratch. Use when users want to build a new skill, scaffold a skill directory, or capture a workflow as a reusable skill. Trigger phrases include "create a skill", "make a skill for", "turn this into a skill", "new skill".
Activate when the gen_job agent detects that the source and target databases differ. Covers cross-database transfer lifecycle - type mapping via adapter Mixin hints, DDL generation, data transfer via transfer_query_result, and lightweight reconciliation.
| name | airflow-workflow |
| description | Execution guide for Airflow scheduled jobs — troubleshooting, updating, conn_id conventions, and cron references |
| tags | ["scheduler","airflow","workflow"] |
| version | 1.0.0 |
| user_invocable | false |
| allowed_agents | ["scheduler"] |
Execution guide for the scheduler subagent working with Airflow.
get_scheduler_job(job_id)list_job_runs(job_id, limit=5) to find the failed runget_run_log(job_id, run_id) for the failed run_idupdate_job()update_job(job_id, sql_file_path=..., job_name=..., conn_id=...)trigger_scheduler_job(job_id)list_job_runs(job_id, limit=1)get_scheduler_job(job_id) to see existing configpause_job(job_id) to prevent runs during updatewrite_file or edit_file to save the new SQL under
jobs/<job_name>.sqlupdate_job(job_id, sql_file_path=..., job_name=..., conn_id=...)resume_job(job_id) to re-enable schedulingdelete_job(job_id).delete_job returns success=0, report the
deletion as failed or incomplete. Do not claim completion or success.get_scheduler_job(job_id) if you
need a follow-up check. For Airflow, scheduling deletion is complete when
the job is not found or is inactive/deleted.list_scheduler_jobs may omit an Airflow DAG
after its file is removed even while Airflow metadata still exists and blocks
re-creation with the same job id.dag_id may not be immediately reusable via
submit; use update or retry cleanup if needed.delete_job owns Airflow DAG file
removal. For other files, use a dedicated delete-file tool if one is
available; otherwise report that file deletion is unavailable. Do not
overwrite or empty files as a substitute for deletion.conn_id)submit_sql_job and update_job require conn_id — the Airflow Connection ID for the target database.
The connection is managed entirely by Airflow (Admin > Connections) and resolved at runtime by the scheduler worker.
Available conn_id values are shown in the submit_sql_job and update_job tool descriptions (from scheduler.connections in agent.yml).
job_name: <frequency>_<domain>_<description>, e.g. daily_sales_summary, hourly_order_countjobs/<job_name>.sqlBefore calling submit_sql_job or update_job, create or update that SQL
file with write_file / edit_file. Do not ask the user to create the file
when filesystem tools are available.
| Schedule | Cron |
|---|---|
| Every day at 8am | 0 8 * * * |
| Every hour | 0 * * * * |
| Every 2 hours | 0 */2 * * * |
| Monday at 9am | 0 9 * * 1 |
| 1st of month at midnight | 0 0 1 * * |
| Goal | Tool |
|---|---|
| Create SQL file | write_file(path="jobs/<job_name>.sql", content=...) |
| Submit SQL job | submit_sql_job(job_name, sql_file_path, conn_id) |
| Submit SparkSQL job | submit_sparksql_job(job_name, sql_file_path) |
| Check job status | get_scheduler_job(job_id) |
| List all jobs | list_scheduler_jobs(limit=20) |
| Trigger manual run | trigger_scheduler_job(job_id) only when explicitly requested or troubleshooting |
| View run history | list_job_runs(job_id) |
| View run log | get_run_log(job_id, run_id) |
| Pause / Resume | pause_job(job_id) / resume_job(job_id) |
| Update job | update_job(job_id, sql_file_path, job_name, conn_id) |
| Delete job | delete_job(job_id) |