Skip to main content
The DinoAI GitHub Action runs a Programmable Agent on every pull request and posts what it finds as a GitHub review: one inline comment per finding, on the changed line, with a one-click suggestion when the agent has a fix. Re-runs after a push review only what changed, and the check can block the merge. The Action handles the plumbing — it tells the agent which commits to compare, sends a diffstat and the PR conversation, and asks for findings in a fixed format. Your agent only has to be a good reviewer. This guide shows what to put in the agent you build in the app.
Prefer a single verdict posted to Slack and a script you control? See the end-to-end PR reviewer. The two can share one agent; the difference is where the output goes.

Steps

1

Create the agent

In the Agent app, open Agents, select New agent, and fill in the build form (creating agents in the app). When you deploy, the agent is written to your repository’s default branch — the Action reads it from there on purpose, so a pull request cannot supply the reviewer that reviews it.Name: pr-reviewer (the Action’s default; any name works if you set agent: in the workflow)Role:
Goal:
Backstory:
Model: leave Auto selected, or pick a model family per repository with the Action’s model_family input.Allowed tools: leave all tools enabled (the default). The reviewer will reach for the terminal, file, lineage and SQL tools on its own; the backstory keeps it from committing or pushing.If you would rather guarantee the agent can only read, restrict it to this set (Tools Reference):
  • run_terminal_command — required: git diff, dbt compile, and git rev-parse HEAD (the Action checks the agent reviewed the right commit)
  • read_file, search_files_and_directories, ripgrep_search
  • get_lineage, get_exposures, get_node_details, get_all_models, get_all_sources, get_mart_models
  • run_sql_query, plus the list_all_* catalog tools for your warehouse
  • get_bolt_run_logs, get_model_health — optional, to read CI runs and model health for the same commit
  • load_skill_instructions, todo_read, todo_write
Output: leave the Slack channel empty. The Action posts the review on the pull request; a Slack channel would mirror every review into a thread as well.
The same definition can be committed as .dinoai/agents/pr-reviewer.yml on the default branch — see the YAML configuration reference. The app builder produces exactly that file.
2

Deploy the agent

Select Deploy. Choose Open a pull request and merge it, or Just here if the workspace is configured to write agents straight to the default branch. The Action looks for the agent on the default branch; until it is there, the Action logs a notice and runs its built-in reviewer instead.
3

Store Paradime credentials in GitHub

Generate an account API key with the DinoAI agent API capability and copy the API Endpoint shown with it. In the dbt™ repo, go to SettingsSecrets and variablesActions:An account key spans workspaces, so the two secrets can live once at the organization level and each repository carries only its workspace token as a variable.
4

Add the workflow

Create .github/workflows/dinoai-pr-review.yml:
.github/workflows/dinoai-pr-review.yml
Open a pull request that touches a model. The job takes one to two minutes; the review appears on the PR with each finding on its line.

What the agent receives

You do not write the review prompt — the Action builds it on every run and prepends the output contract. The agent gets:
  • the repository, PR number, base and head commit SHAs, title and description, and a diffstat (never the diff itself: the agent is checked out at the head commit and computes git diff base...head locally),
  • the recent PR conversation, so it does not repeat what a human already said,
  • on a re-run, what changed since its last review and the findings it already reported, so it says what is fixed instead of re-posting,
  • the output format: a fenced dinoai-findings JSON block with a summary, a list of findings (path, line, severity, title, body, optional suggestion) and the commit it reviewed.
Everything the agent needs to know about format is in that message. Keep the definition about judgment: what to check, how strict to be, what counts as which severity.

Tuning the reviewer

Do not instruct the agent to post its review itself (no post_slack_message, no gh pr review in the goal) and do not describe a different output format. The Action posts the review and parses the findings block; competing instructions produce duplicate or empty reviews.

Next steps

DinoAI GitHub Action

All inputs, incremental review, bot identity and limitations.

YAML configuration

Every field an agent definition supports.

Tools reference

What each tool does and which to allow.

End-to-end PR reviewer

The Slack-verdict variant driven by a script you own.