Aiwg template-engine
Load, validate, and populate templates consistently across frameworks
install
source · Clone the upstream repo
git clone https://github.com/jmagly/aiwg
Claude Code · Install into ~/.claude/skills/
T=$(mktemp -d) && git clone --depth=1 https://github.com/jmagly/aiwg "$T" && mkdir -p ~/.claude/skills && cp -r "$T/agentic/code/addons/aiwg-utils/skills/template-engine" ~/.claude/skills/jmagly-aiwg-template-engine-b12993 && rm -rf "$T"
manifest:
agentic/code/addons/aiwg-utils/skills/template-engine/SKILL.mdsource content
template-engine
Load, validate, and populate templates consistently across frameworks.
Triggers
Alternate expressions and non-obvious activations (primary phrases are matched automatically from the skill description):
- "fill template" → template instantiation
- "scaffold from template" → template-driven generation
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:
: Creates metadata for instantiated artifactsartifact-metadata
: Uses templates for artifact generationartifact-orchestration
: Gets context values from project stateproject-awareness
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