# YAML Configuration

Agents are defined as YAML files committed to your repo under `.dinoai/agents/`. Each file defines one agent.

### Full Example

```yaml
name: pr-reviewer        # must match file name
version: 1               # schema version (currently 1)

role: >
  PR Review Orchestrator responsible for assessing all aspects of a pull
  request across dbt™ models.

goal: >
  Review incoming PRs for quality, coverage, and correctness.
  Delegate specialist work where needed.

backstory: >
  You coordinate reviews across multiple quality dimensions and know when
  to call in specialists.

tools:
  mode: allowlist         # "allowlist" or "denylist"
  list:
    - read_file
    - search_files_and_directories
    - ripgrep_search
    - post_slack_message
    - invoke_agent        # required to delegate to sub-agents

agents_squad:             # sub-agents this agent may invoke
  - test-maintainer

slack:
  channel: "#pr-reviews"
```

### Field Reference

| Field           | Required           | Description                                                                                                                                                                                                                         |
| --------------- | ------------------ | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `name`          | Yes                | Unique identifier. Must match the YAML file name (without `.yml`).                                                                                                                                                                  |
| `version`       | Yes                | Schema version for forward compatibility. Currently `1`.                                                                                                                                                                            |
| `role`          | Yes                | What the agent is — injected into the system prompt each turn.                                                                                                                                                                      |
| `goal`          | Yes                | What the agent is trying to achieve.                                                                                                                                                                                                |
| `backstory`     | Yes                | How the agent approaches problems.                                                                                                                                                                                                  |
| `tools.mode`    | If `tools` present | `allowlist` (only listed tools available) or `denylist` (all tools except listed).                                                                                                                                                  |
| `tools.list`    | If `tools` present | Tool names to allow or deny.                                                                                                                                                                                                        |
| `slack.channel` | No                 | <p>If present, a Slack thread is created at run start and all agent messages post there.<br></p><p><a href="/pages/s0akXXjA3vbPf1q8KV5i">Requires Slack integration configured and Pardime bot invited to the slack channel</a></p> |
| `agents_squad`  | No                 | Names of sub-agents this agent is permitted to invoke via `invoke_agent`.                                                                                                                                                           |

> **Important:** If the `tools` block is omitted entirely, the agent has access to **all** available tools. Use an allowlist for production agents to limit blast radius.

### Tool Modes

**allowlist** — only the tools listed are available to the agent. Recommended for production agents.

```yaml
tools:
  mode: allowlist
  list:
    - read_file
    - run_sql_query
```

**denylist** — all tools are available except the ones listed.

```yaml
tools:
  mode: denylist
  list:
    - write_file
    - run_terminal_command
```

### Related

* [Tools Reference](/app-help/products/dino-ai/programmable-agents/tools-reference.md) — Full list of tool names for `tools.list`
* [Agent-to-Agent Delegation](/app-help/products/dino-ai/programmable-agents/agent-to-agent-delegation.md) — Using `agents_squad` and `invoke_agent`


---

# 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/products/dino-ai/programmable-agents/yaml-configuration.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.
