Install any skill in seconds. Free to start, no credit card required.
Get Started Free →Template loading, variable filling, and scaffolding for all GSD artifacts. Manages 22+ templates covering every document type in the GSD system, from PROJECT.md to milestone archives.
| Test case | Without → With | Effect | Δ tokens | Δ turns |
|---|---|---|---|---|
| case-02 | ✗→✓ | ▲ Improved | 121% | 0% |
| case-04 | ✗→✓ | ▲ Improved | 194% | 0% |
| case-05 | ✗→✓ | ▲ Improved | 110% | 0% |
| case-10 | ✗→✓ | ▲ Improved | -2% | 0% |
| case-12 | ✗→✓ | ▲ Improved | 0% | 0% |
phase: 72 status: planned created: 2026-03-02 template: phase-prompt variant: standard
...
### 7. Template Discovery
List available templates:
Available templates: project - Project definition (PROJECT.md) requirements - Requirements specification (REQUIREMENTS.md) roadmap - Development roadmap (ROADMAP.md) state - Project state (STATE.md) context - Phase context (CONTEXT.md) summary - Phase summary (SUMMARY.md) 3 variants] phase-prompt - Phase plan (PLAN.md) ...
### 8. Template Variant Selection
Automatic variant selection based on context:
function selectSummaryVariant(context) { if (context.isQuickTask) return 'summary-minimal'; if (context.taskCount <= 3) return 'summary-minimal'; if (context.taskCount <= 8) return 'summary-standard'; return 'summary-complex'; }
## Tool Use Instructions
### Loading and Filling a Template
1. Use `Glob` to locate the template file in `templates/`
2. Use `Read` to load the template content
3. Replace all `{{VARIABLE}}` placeholders with provided values
4. Process conditional blocks (`{{#if}}...{{/if}}`, `{{#unless}}...{{/unless}}`)
5. Add frontmatter if specified
6. Use `Write` to save the filled template to the target path
### Batch Generation
1. Accept list of template-to-target mappings
2. Load each template, fill variables with shared + per-file data
3. Write all files, collecting results
4. Return list of generated files
### Template Discovery
1. Use `Glob` to find all `.md` and `.json` files in `templates/`
2. Read first line of each to extract template name/purpose
3. Return formatted list
## Process Integration
- `new-project.js` - Batch generate PROJECT.md, REQUIREMENTS.md, ROADMAP.md, STATE.md
- `discuss-phase.js` - Generate CONTEXT.md from context template
- `plan-phase.js` - Generate PLAN.md files from phase-prompt template
- `verify-work.js` - Generate UAT.md from uat template
- `quick.js` - Generate plan and summary using minimal variants
- `debug.js` - Generate debug session file from debug template
- `complete-milestone.js` - Generate milestone archive from milestone-archive template
- `add-tests.js` - Generate test plan structure
- `research-phase.js` - Generate RESEARCH.md from research template
- `map-codebase.js` - Batch generate 7 codebase analysis documents
## Output Format
{ "operation": "fill|batch|discover", "status": "success|error", "template": "project", "variant": "standard", "targetPath": ".planning/PROJECT.md", "variablesFilled": 12, "conditionalsProcessed": 3, "generatedFiles": ".planning/PROJECT.md", ".planning/REQUIREMENTS.md" ] }
## Configuration
| Setting | Default | Description |
|---------|---------|-------------|
| `templatesDir` | `templates/` | Directory containing template files |
| `summaryVariant` | `standard` | Default summary variant |
| `injectFrontmatter` | `true` | Auto-add frontmatter to generated files |
| `variableDelimiter` | `{{...}}` | Variable placeholder syntax |
## Error Handling
| Error | Cause | Resolution |
|-------|-------|------------|
| `Template not found` | Template name does not match any file | List available templates, suggest closest match |
| `Unfilled variable` | Variable not provided in data | Use empty string or placeholder marker |
| `Target path exists` | File already at target location | Prompt for overwrite/append/skip |
| `Invalid conditional` | Malformed if/unless block | Fix template syntax |
| `Batch partial failure` | Some files in batch failed | Report which succeeded and which failed |
## Constraints
- Templates must be idempotent (filling same template with same data produces same output)
- Never modify template source files; only read them
- Generated files must be valid markdown (or JSON for config.json)
- Variable names must be uppercase with underscores only
- Conditional blocks must be properly nested and closed
- Batch operations are all-or-nothing within a single process callOther measured skills in the registry, with their headline benchmark lift.