Teach
Purpose
Learn a reusable pattern from an example file. The user shows you a well-written artifact (model, query, config), and you extract the patterns worth following.
Workflow
Identify the file: The user provides a file reference (e.g., @models/staging/stg_orders.sql). Read the file.
Analyze patterns: Extract the structural patterns, NOT the specific content. Focus on:
- File structure and organization (sections, ordering)
- Naming conventions (prefixes, suffixes, casing)
- SQL patterns (CTE vs subquery, join style, column ordering)
- dbt conventions (materialization, tests, config blocks)
- Common boilerplate (headers, comments, imports)
- Data type choices
- Error handling patterns
Present findings: Show the user what you learned in a structured list. Be specific:
- Good: "Column order: keys first, then dimensions, then measures, then timestamps"
- Bad: "Good column ordering"
Ask for confirmation: Let the user confirm, modify, or reject your findings before saving.
Save via training_save: Use the training_save tool with:
kind: "pattern"
name: A descriptive slug (e.g., "staging-model", "incremental-config")
content: The extracted patterns as a concise, actionable checklist
scope: "project" (default — shared with team via git)
source: The file path you learned from
citations: Reference to the source file
Important Guidelines
- Extract PATTERNS, not content. "Use
{{ source() }} macro" is a pattern. "Query the orders table" is content.
- Keep it concise — max 10 bullet points per pattern. If more are needed, split into multiple patterns.
- Use the file's actual conventions, don't impose your own preferences.
- If the file doesn't have clear patterns worth learning, say so honestly.
- Do NOT make any LLM calls beyond the normal conversation flow — pattern extraction happens in your analysis, not via separate API calls.
Usage Examples
/teach @models/staging/stg_orders.sql
/teach staging-model @models/staging/stg_customers.sql
/teach @dbt_project.yml
If the user provides a name (first argument before the @file), use that as the pattern name. Otherwise, infer a name from the file type and purpose.
1---2name: teach3description: Teach your AI teammate a pattern by showing it an example file from your codebase4---56# Teach78## Purpose9Learn a reusable pattern from an example file. The user shows you a well-written artifact (model, query, config), and you extract the patterns worth following.1011## Workflow12131. **Identify the file**: The user provides a file reference (e.g., `@models/staging/stg_orders.sql`). Read the file.14152. **Analyze patterns**: Extract the structural patterns, NOT the specific content. Focus on:16 - File structure and organization (sections, ordering)17 - Naming conventions (prefixes, suffixes, casing)18 - SQL patterns (CTE vs subquery, join style, column ordering)19 - dbt conventions (materialization, tests, config blocks)20 - Common boilerplate (headers, comments, imports)21 - Data type choices22 - Error handling patterns23243. **Present findings**: Show the user what you learned in a structured list. Be specific:25 - Good: "Column order: keys first, then dimensions, then measures, then timestamps"26 - Bad: "Good column ordering"27284. **Ask for confirmation**: Let the user confirm, modify, or reject your findings before saving.29305. **Save via training_save**: Use the `training_save` tool with:31 - `kind`: "pattern"32 - `name`: A descriptive slug (e.g., "staging-model", "incremental-config")33 - `content`: The extracted patterns as a concise, actionable checklist34 - `scope`: "project" (default — shared with team via git)35 - `source`: The file path you learned from36 - `citations`: Reference to the source file3738## Important Guidelines3940- Extract PATTERNS, not content. "Use `{{ source() }}` macro" is a pattern. "Query the orders table" is content.41- Keep it concise — max 10 bullet points per pattern. If more are needed, split into multiple patterns.42- Use the file's actual conventions, don't impose your own preferences.43- If the file doesn't have clear patterns worth learning, say so honestly.44- Do NOT make any LLM calls beyond the normal conversation flow — pattern extraction happens in your analysis, not via separate API calls.4546## Usage Examples4748```49/teach @models/staging/stg_orders.sql50/teach staging-model @models/staging/stg_customers.sql51/teach @dbt_project.yml52```5354If the user provides a name (first argument before the @file), use that as the pattern name. Otherwise, infer a name from the file type and purpose.