| name | template-engine |
| description | Load, validate, and populate templates consistently across frameworks. Use when relevant to the task. |
template-engine
Load, validate, and populate templates consistently across frameworks.
Triggers
- "create from template [name]"
- "instantiate [template]"
- "new [artifact-type] from template"
- "use template [name]"
- "scaffold [artifact]"
Purpose
This skill provides a unified template instantiation engine that:
- Locates templates across project, framework, and installation locations
- Parses template structure and placeholders
- Gathers required inputs from context or prompts
- Populates and validates instantiated artifacts
- Integrates with artifact-metadata for tracking
Behavior
When triggered, this skill:
Locates template:
- Search project templates first (
.aiwg/templates/) - Search active framework templates
- Search AIWG installation templates
- Return first match or list similar templates
- Search project templates first (
Parses template:
- Extract placeholders (
{{variable}},{variable}) - Identify required vs optional sections
- Detect conditional blocks
- Build input requirements list
- Extract placeholders (
Gathers inputs:
- Check context for matching values
- Prompt for missing required values
- Apply defaults for optional values
Instantiates template:
- Replace all placeholders
- Evaluate conditional sections
- Process loops/repeating sections
- Format output
Validates output:
- Check all placeholders replaced
- Validate structure
- Create metadata (via artifact-metadata skill)
Saves artifact:
- Write to appropriate location
- Update artifact index
Template Discovery Order
1. .aiwg/templates/{template-name}.md
2. .aiwg/templates/{category}/{template-name}.md
3. {framework}/templates/{category}/{template-name}.md
4. ~/.local/share/ai-writing-guide/.../{template-name}.md
Template Syntax
Basic Placeholders
# {{project_name}} Architecture Document
**Author**: {{author}}
**Date**: {{date}}
**Version**: {{version|default:0.1.0}}
Conditional Sections
{{#if has_database}}
## Database Design
{{database_description}}
{{/if}}
Loops/Repeating Sections
## Components
{{#each components}}
### {{name}}
{{description}}
- **Owner**: {{owner}}
- **Dependencies**: {{dependencies}}
{{/each}}
Includes
{{> common/header.md}}
## Content
{{> partials/component-table.md}}
Computed Values
**Generated**: {{now|format:YYYY-MM-DD}}
**ID**: {{artifact_type}}-{{sequence|pad:3}}
Configuration
Template Metadata
Each template can have a .meta.yaml file:
name: software-architecture-document
description: Template for Software Architecture Documents
category: architecture
version: 1.0.0
variables:
- name: project_name
required: true
description: Name of the project
- name: author
required: true
description: Document author
- name: version
required: false
default: "0.1.0"
description: Document version
- name: components
required: false
type: array
description: List of system components
sections:
- name: overview
required: true
- name: database
required: false
condition: has_database
output:
location: .aiwg/architecture/
filename: "{{project_name|kebab}}-sad.md"
Usage Examples
Basic Template Instantiation
User: "Create SAD from template"
Skill executes:
1. Find: sdlc-complete/templates/analysis-design/software-architecture-doc-template.md
2. Parse: Extract placeholders (project_name, author, etc.)
3. Gather: Prompt for required values
4. Instantiate: Replace placeholders
5. Save: .aiwg/architecture/myproject-sad.md
6. Metadata: Create .aiwg/architecture/myproject-sad.metadata.json
With Context
User: "New test plan from template for authentication module"
Context provides:
- project_name: "MyProject"
- module: "authentication"
- author: from git config
Skill uses context values, prompts for remaining.
List Available Templates
User: "What templates are available?"
Skill returns:
Architecture:
- software-architecture-doc-template
- adr-template
- api-contract-template
Requirements:
- use-case-spec-template
- user-story-template
- supplementary-spec-template
Testing:
- test-plan-template
- test-case-template
- test-strategy-template
Template with Components
User: "Create component diagram from template with 3 components"
Skill prompts:
- Component 1 name? "API Gateway"
- Component 1 description? "External API interface"
- Component 2 name? "Auth Service"
...
Output includes all components in repeating section.
CLI Usage
# Instantiate template
python template_engine.py --template software-architecture-doc-template
# With variables
python template_engine.py --template sad \
--var project_name="MyProject" \
--var author="John Doe"
# Interactive mode
python template_engine.py --template test-plan --interactive
# List templates
python template_engine.py --list
python template_engine.py --list --category architecture
# Validate template
python template_engine.py --validate --template custom-template.md
# Preview without saving
python template_engine.py --template sad --preview
# Specify output location
python template_engine.py --template sad --output .aiwg/architecture/custom-name.md
Template Categories
SDLC Framework Templates
| Category | Templates |
|---|---|
| requirements | use-case-spec, user-story, supplementary-spec, srs, glossary |
| architecture | sad, adr, api-contract, data-flow, database-design |
| testing | test-strategy, test-plan, test-cases, defect-card |
| security | threat-model, security-requirements, vulnerability-plan |
| deployment | deployment-plan, release-notes, support-runbook |
| management | iteration-plan, risk-list, project-status |
MMK Framework Templates
| Category | Templates |
|---|---|
| intake | campaign-intake, audience-profile, brand-brief |
| content | blog-post, case-study, whitepaper, newsletter |
| creative | creative-brief, asset-spec, design-system |
| email-campaign, email-sequence, nurture-workflow | |
| analytics | kpi-dashboard, measurement-plan, campaign-report |
Integration
This skill integrates with:
artifact-metadata: Creates metadata for instantiated artifactsartifact-orchestration: Uses templates for artifact generationproject-awareness: Gets context values from project state
Error Handling
Missing Template
Template 'nonexistent' not found.
Did you mean:
- test-plan-template (testing)
- deployment-plan-template (deployment)
Available templates: python template_engine.py --list
Missing Required Variable
Missing required variable: project_name
Description: Name of the project
Please provide: --var project_name="value"
Invalid Template Syntax
Template validation failed:
Line 45: Unclosed conditional block {{#if has_database}}
Line 67: Unknown variable {{unknwon_var}}
References
- SDLC templates:
sdlc-complete/templates/ - MMK templates:
media-marketing-kit/templates/ - Template syntax: Handlebars-compatible subset
- Metadata schema:
schemas/template-meta.schema.json