config.yaml Reference
The config.yaml file is an optional configuration placed alongside your template. It controls the interview experience without modifying the template itself. The Analyzer merges it into the manifest; the Orchestrator reads only the manifest.
Complete example
Section titled “Complete example”meta: display_name: "Meeting Notes" description: "Structured meeting notes with action items and optional sections"
variables: meeting_title: label: "Meeting Title" question: "What is the title of this meeting?" required: true meeting_type: type: choice choices: [standup, workshop, review] default: "standup" include_next_meeting: type: boolean question: "Is a follow-up meeting scheduled?" default: false
groups: - name: "Meeting Details" variables: [meeting_title, meeting_date, meeting_type] - name: "Next Meeting" condition: include_next_meeting variables: [next_meeting_date, next_meeting_topic] - name: "Action Items" loop: action_items variables: [description, assignee, due_date]
validation: - rule: "next_meeting_date > meeting_date" message: "The next meeting date must be after this meeting's date"Optional. Metadata about the template.
| Field | Type | Required | Description |
|---|---|---|---|
display_name | string | No | Human-readable name shown to the user when Claude confirms the matched template. Defaults to the directory name. |
description | string | No | Short description of the template’s purpose. Used internally and may appear in future template directory features. |
meta: display_name: "Meeting Notes" description: "Structured meeting notes with action items and optional sections"variables
Section titled “variables”Optional. A map of variable names to override settings. Only variables that need customization need to be listed here — unlisted variables use defaults inferred from the template.
Each key is a variable name that appears in the template. The value is an object with any combination of the fields below.
Variable fields
Section titled “Variable fields”| Field | Type | Required | Description |
|---|---|---|---|
label | string | No | Short label for the variable, shown as a heading for the question. |
question | string | No | The full question text Claude asks the user. Overrides the auto-generated question. |
default | any | No | Default value pre-filled during the interview. Use "today" for date types to resolve to the current date. |
required | boolean | No | Whether the variable must be provided. Default: true. |
format_hint | string | No | Additional formatting guidance shown alongside the question. |
type | string | No | Explicit variable type. See Variable types below. If omitted, the type is inferred from the variable name suffix. |
choices | list | Conditional | List of valid values. Required when type is choice. Ignored otherwise. |
Variable types
Section titled “Variable types”The type field accepts the following values:
| Type | Description |
|---|---|
text | Free text input. The default for most variables. |
date | A calendar date. The special default "today" resolves to the current date. |
number | A numeric value — currency, quantity, percentage. |
email | An email address. Validated for email format. |
phone | A phone number. Accepts international formats. |
boolean | A yes/no question. Used as the gate for {% if %} conditional sections. |
choice | One of a fixed set of options. Requires the choices field. |
If type is omitted, it is inferred from the variable name suffix (e.g., *_date becomes date, *_email becomes email). See Variable Type Reference for the full inference table.
Example
Section titled “Example”variables: meeting_title: label: "Meeting Title" question: "What is the title of this meeting?" required: true
meeting_date: question: "When was the meeting held?" default: "today" format_hint: "DD/MM/YYYY"
meeting_type: type: choice choices: [standup, workshop, review] default: standup
include_next_meeting: type: boolean default: false question: "Is a follow-up meeting scheduled?"groups
Section titled “groups”Optional. Controls interview grouping and ordering. A list of group objects that batch related variables under a heading and present them together.
Without groups, Claude presents variables one at a time in template order. With groups, related variables are collected together.
Group fields
Section titled “Group fields”| Field | Type | Required | Description |
|---|---|---|---|
name | string | Yes | Display name for the group, shown as a heading during the interview. |
variables | list | Yes | List of variable names to collect in this group. |
condition | string | No | Name of a boolean variable. The group is only shown when that variable is true. The gate variable must be collected before this group. |
loop | string | No | Name of a loop collection. The group collects items for that {% for %} loop. Must match the collection name in the template (e.g., action_items for {% for item in action_items %}). |
Basic group
Section titled “Basic group”groups: - name: "Meeting Details" variables: [meeting_title, meeting_date, meeting_type, facilitator_name, meeting_location]
- name: "Attendees & Agenda" variables: [attendees, agenda]Conditional group
Section titled “Conditional group”A group gated on a boolean variable. Claude asks the gate question first; if the answer is no, the entire group is skipped.
groups: - name: "Next Meeting" condition: include_next_meeting variables: [next_meeting_date, next_meeting_topic]Loop group
Section titled “Loop group”A group that maps to a {% for %} loop in the template. Claude collects items one at a time, prompting for the sub-fields on each pass.
groups: - name: "Action Items" loop: action_items variables: [description, assignee, due_date]validation
Section titled “validation”Optional. A list of cross-field validation rules evaluated after all values are collected but before rendering. If a rule fails, Claude reports the error message and prompts the user to re-enter the offending values.
Validation fields
Section titled “Validation fields”| Field | Type | Required | Description |
|---|---|---|---|
rule | string | Yes | A Python-style boolean expression using variable names. Evaluated against all collected values. |
message | string | Yes | Error message shown to the user when the rule evaluates to false. |
Example
Section titled “Example”validation: - rule: "next_meeting_date > meeting_date" message: "The next meeting date must be after this meeting's date."Rules have access to all collected variable values and use Python expression syntax.