# Porgrammable Agents

A catalogue of ready-to-use Programmable Agents for analytics engineering, data platform, and oncall workflows. Each row links to a full tutorial with the YAML, the Python SDK trigger, and a deployable example (cron, GitHub Actions, or webhook).

{% hint style="info" %}
**Prerequisites**

These recipes assume you've read the [**Programmable Agents**](/app-help/products/dino-ai/programmable-agents.md) docs and use the [**Python SDK**](/app-help/developers/python-sdk/modules/dinoai-programmable-agents.md) for trigger / poll / message calls.
{% endhint %}

***

### Agent catalogue

<table><thead><tr><th>Agent</th><th width="274.4140625">What it does</th><th>Trigger</th><th>Key tools</th></tr></thead><tbody><tr><td><strong>Doc backfiller</strong></td><td>Finds dbt models with missing descriptions, drafts model + column docs, commits the YAML edits.</td><td>Schedule (nightly)</td><td><code>read_file</code>, <code>write_file</code>, <code>ripgrep_search</code>, <code>run_terminal_command</code></td></tr><tr><td><strong>Cost sentinel</strong></td><td>Compares warehouse spend week-over-week, ranks the top regressions by model with owner attribution.</td><td>Schedule (weekly)</td><td><code>run_sql_query</code>, <code>read_file</code>, <code>ripgrep_search</code></td></tr><tr><td><strong>Impact assessor</strong></td><td>Reports the downstream blast radius of changed models — direct dependents, indirect dependents, exposures.</td><td>PR open / sync + push to <code>main</code></td><td><code>read_file</code>, <code>ripgrep_search</code>, <code>run_sql_query</code></td></tr><tr><td><strong>End-to-end PR reviewer</strong></td><td>Reads the PR diff, the PR description, and the linked Linear issue, then posts a structured SCOPE / CODE / TESTS / DOCS / IMPACT / VERDICT review.</td><td>PR open / sync</td><td><code>read_file</code>, <code>ripgrep_search</code>, <code>get_linear_issue</code>, <code>run_sql_query</code></td></tr><tr><td><strong>Bolt failure triager</strong></td><td>Pulls Bolt run logs on failure, classifies the error (compilation / data / infra / dependency), posts a triage.</td><td>Webhook (Bolt failure)</td><td><code>list_bolt_schedules</code>, <code>get_bolt_run_logs</code>, <code>read_file</code>, <code>ripgrep_search</code></td></tr><tr><td><strong>Linear backlog agent</strong></td><td>Picks up tickets labeled <code>data-request</code>, drafts the staging / mart model with tests, opens a PR, links it back to the ticket.</td><td>Webhook (Linear label)</td><td><code>get_linear_issue</code>, <code>read_file</code>, <code>write_file</code>, <code>run_terminal_command</code></td></tr><tr><td><strong>Incident commander</strong></td><td>Orchestrator: spawns <code>log-analyzer</code>, <code>query-profiler</code>, <code>owner-notifier</code> in parallel and composes a unified incident summary.</td><td>Manual / on-call trigger</td><td><code>invoke_agent</code>, <code>post_slack_message</code></td></tr><tr><td><strong>Test maintainer</strong></td><td>Writes missing tests for a target model, runs <code>dbt test</code>, commits when green. Often invoked as a sub-agent.</td><td>Manual or sub-agent</td><td><code>read_file</code>, <code>write_file</code>, <code>run_sql_query</code>, <code>run_terminal_command</code></td></tr></tbody></table>

***

### Pick by trigger pattern

| If you want to...                 | Start with                                                       |
| --------------------------------- | ---------------------------------------------------------------- |
| Run nightly / weekly housekeeping | Doc backfiller, Cost sentinel                                    |
| Gate or annotate every PR         | Impact assessor, End-to-end PR reviewer                          |
| React to a production event       | Bolt failure triager, Incident commander                         |
| React to a stakeholder request    | Linear backlog agent                                             |
| Build your own orchestrator       | Incident commander (pattern), Test maintainer (specialist child) |

***

### Pick by persona

| Role                       | Agents that pay back fastest                              |
| -------------------------- | --------------------------------------------------------- |
| Analytics Engineer         | End-to-end PR reviewer, Test maintainer, Doc backfiller   |
| Data Platform / Oncall     | Bolt failure triager, Incident commander, Impact assessor |
| Engineering Manager / Lead | Cost sentinel, End-to-end PR reviewer                     |
| Stakeholders → AE handoff  | Linear backlog agent                                      |

***

### Composing agents

Several recipes are designed to delegate to others:

* **End-to-end PR reviewer** → can call **Test maintainer** to fix coverage gaps and **Impact assessor** to deepen the downstream analysis.
* **Incident commander** → calls three specialists (`log-analyzer`, `query-profiler`, `owner-notifier`) in parallel via `invoke_agent` with `callback_session_id`.

See Agent-to-Agent Delegation for the full pattern.

{% hint style="success" %}
**Tip:** keep `invoke_agent` out of a child's allowlist to make the agent graph one level deep — predictable and easy to reason about during incidents.
{% endhint %}


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://docs.paradime.io/app-help/guides-new/porgrammable-agents.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
