원클릭으로
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) |