Prerequisites
- A Snowflake connection whose role can run
SHOW TASKS,DESCRIBE TASK, andGET_DDLon the tasks to migrate. - Slack connected (the agent announces each migration before touching any code).
- Your repository connected so the agent can branch, commit, and open PRs.
- Familiarity with programmable agents, running an agent with Bolt, and schedules as code.
Steps
1
Create the agent
In the Agent app, open Agents, select New agent, and choose Start from scratch. Fill in the builder fields below, leave Model on Auto. See Build an agent in the UI for a tour of the builder.Name: Goal:Backstory:Allowed tools (everything else is refused, see the Tools Reference):
snowflake-task-migratorRole:read_file,write_file,replace_in_file,search_files_and_directories,ripgrep_searchrun_sql_queryrun_terminal_commandlist_bolt_schedulespost_slack_message
#snowflake-migration).2
Deploy the agent
Select Deploy and choose where the agent lives: Just here saves it to the workspace and makes it live immediately (ideal while you validate the first migrations), Open a pull request commits it to your repo as
.dinoai/agents/snowflake-task-migrator.yml so it is governed as code. Both appear in the Bolt agent picker. See Creating Agents in the App.3
Run the first migration from Chat
Hover the agent card and select Chat, then send:Watch the flow end to end: the Slack announcement first, then the model and schedule files, the
dbt run, the data diff, and finally the PR. Review that first PR carefully; its “Migration validation” section tells you whether the translation is faithful before you let the agent loose on the backlog.4
Drain the backlog with Bolt
Once the pattern is validated, add a Run Paradime DinoAI Agent command to a Bolt schedule with the Task:Because the agent migrates exactly one task per invocation, a weekday cron (
0 9 * * 1-5) turns the backlog into one reviewable PR per day. When every task is migrated, the agent finds nothing to pick and exits cleanly. See Run an agent with Bolt for the full walkthrough.Each run produces one PR on
migrate/snowflake-task/<task_name> containing the dbt™ model, its YAML entry, and the Bolt schedule, with the original task DDL, the dbt run summary, the row-level data diff, and a manual follow-ups checklist in the description. The Slack channel shows the “Migration started” announcement before any code moved. If the model fails to build or the announcement cannot be posted, the agent stops without opening a PR. Merge the PR, suspend the source task in Snowflake, and verify the first Bolt run.How it works
The migration maps each Snowflake Task property onto its Paradime-native equivalent, and the data diff is what makes the PR reviewable: same dataset, new orchestration.
Task graph parents (
AFTER predecessors) do not translate to cron directly; the agent records them in the PR so the reviewer can chain the Bolt schedules with a run-completion trigger. The one-task-per-PR rule is deliberate: each migration carries its own validation evidence and its own manual follow-ups, so the review stays small enough to actually check the diff.
Next steps
Schedules as code
The schedule YAML format the agent writes.
Run an agent with Bolt
Trigger agents from a Bolt schedule.
Bolt pipeline healer
Keep the migrated schedules healthy after cutover.
Programmable Agents reference
The agent schema, tools, and API.