template-engine — скилл для Claude Code: что делает и как установить
Автоматически заполняет шаблоны документов Word, Excel и PowerPoint данными из списков или таблиц. Упрощает рассылки и массовую генерацию отчётов.
npx skills add claude-office-skills/skills --skill template-engine -a claude-codeЧто делает template-engine
Скилл превращает документы-шаблоны с плейсхолдерами Jinja2 в готовые файлы. Он умеет подставлять простые переменные вида {{ variable }}, перебирать строки в циклах и скрывать блоки текста по условию {% if condition %}. Для Word применяется библиотека docxtpl, а таблицы Excel обрабатываются через openpyxl.
Через инструмент fill_docx_template и скрипты слияния скилл строит пакетные генерации. Вы передаёте CSV-файл со списком клиентов, а он сохраняет персонализированный файл для каждой строки. Это удобно для подготовки договоров или именных сертификатов.
Для выполнения скриптов в окружении понадобятся Python и пакеты python-docx, openpyxl, python-pptx, reportlab и jinja2. Без установленного интерпретатора Python генерация на стороне агента не сработает.
Какие задачи решает
- массово сгенерировать письма и договоры по базе контактов из CSV
- заполнить плейсхолдеры в шаблонах Word синтаксисом Jinja2
- создать персональные отчёты и сертификаты по входным данным
- обновить ячейки в шаблонах таблиц Excel значениями из словаря
Примеры запросов агенту
- Заполни шаблон templates/order_confirmation.docx данными о заказе ORD-12345
- Сделай рассылку писем по шаблону templates/welcome_letter.docx на основе data/contacts.csv
- Подставь данные клиента в форму договора и сохрани результат в папку output
Как установить template-engine
1Через Skills CLI (Vercel)
npx skills add claude-office-skills/skills --skill template-engine -a claude-code2Вручную: положить файлы
~/.claude/skills/template-engine/SKILL.mdПапка скилла целиком; для одного проекта — .claude/skills/template-engine/
1Через Skills CLI (Vercel)
npx skills add claude-office-skills/skills --skill template-engine -a codex2Вручную: положить файлы
.agents/skills/template-engine/SKILL.mdДля всех проектов — ~/.agents/skills/
1Через Skills CLI (Vercel)
npx skills add claude-office-skills/skills --skill template-engine -a cursor2Вручную: положить файлы
.cursor/skills/template-engine/SKILL.mdCursor читает и .agents/skills/, и .claude/skills/
1GitHub CLI
gh skill install claude-office-skills/skills template-engine2Вручную: положить файлы
.github/skills/template-engine/SKILL.md1Через Skills CLI (Vercel)
npx skills add claude-office-skills/skills --skill template-engine -a gemini-cli2Командой платформы
gemini skills install https://github.com/claude-office-skills/skills --path template-engineВручную: положить файлы
.devin/skills/template-engine/SKILL.mdСтарый путь .windsurf/skills/ тоже читается
Через Skills CLI (Vercel)
npx skills add claude-office-skills/skills --skill template-engine -a opencodeClaude.ai
Упакуйте папку в zip и загрузите в Settings → Capabilities → Skills
По шагам, с командами для каждой платформы: Как установить скилл в Claude Code: пять способов
Вопросы о template-engine
Как установить template-engine в Claude Code?
Выполните команду npx skills add claude-office-skills/skills --skill template-engine -a claude-code. Файл навыка появится в ~/.claude/skills/template-engine/SKILL.md.
Что делает template-engine?
Скилл заполняет шаблоны документов Word, Excel и PowerPoint данными из кода, словарей или CSV-таблиц. Он поддерживает логику Jinja2: циклы, условия и подстановку переменных.
Какие библиотеки нужны для работы скилла?
Потребуются Python-пакеты python-docx, openpyxl, python-pptx, reportlab, jinja2 и библиотека docxtpl. Их нужно установить через pip.
Исходный текст
SKILL.md · MIT
---
# ═══════════════════════════════════════════════════════════════════════════════
# CLAUDE OFFICE SKILL - Enhanced Metadata v2.0
# ═══════════════════════════════════════════════════════════════════════════════
# Basic Information
name: template-engine
description: "Auto-fill document templates with data - mail merge for any format"
version: "1.0"
author: claude-office-skills
license: MIT
# Categorization
category: template
tags:
- template
- engine
- autofill
- docxtpl
department: All
# AI Model Compatibility
models:
recommended:
- claude-sonnet-4
- claude-opus-4
compatible:
- claude-3-5-sonnet
- gpt-4
- gpt-4o
# MCP Tools Integration
mcp:
server: office-mcp
tools:
- fill_docx_template
# Skill Capabilities
capabilities:
- template_filling
- document_automation
# Language Support
languages:
- en
- zh
---
# Template Engine Skill
## Overview
This skill enables template-based document generation - define templates with placeholders, then automatically fill them with data. Works with Word, Excel, PowerPoint, and more.
## How to Use
1. Describe what you want to accomplish
2. Provide any required input data or files
3. I'll execute the appropriate operations
**Example prompts:**
- "Mail merge for bulk letters/contracts"
- "Generate personalized reports from data"
- "Create certificates from templates"
- "Auto-fill forms with user data"
## Domain Knowledge
### Template Syntax (Jinja2-based)
```
{{ variable }} - Simple substitution
{% for item in list %} - Loop
{% if condition %} - Conditional
{{ date | format_date }} - Filter
```
### Word Template Example
```python
from docxtpl import DocxTemplate
# Create template with placeholders:
# Dear {{ name }},
# Thank you for your order #{{ order_id }}...
def fill_template(template_path: str, data: dict, output_path: str):
doc = DocxTemplate(template_path)
doc.render(data)
doc.save(output_path)
return output_path
# Usage
fill_template(
"templates/order_confirmation.docx",
{
"name": "John Smith",
"order_id": "ORD-12345",
"items": [
{"name": "Product A", "qty": 2, "price": 29.99},
{"name": "Product B", "qty": 1, "price": 49.99}
],
"total": 109.97
},
"output/confirmation_john.docx"
)
```
### Excel Template
```python
from openpyxl import load_workbook
import re
def fill_excel_template(template_path: str, data: dict, output_path: str):
wb = load_workbook(template_path)
ws = wb.active
# Find and replace placeholders like {{name}}
for row in ws.iter_rows():
for cell in row:
if cell.value and isinstance(cell.value, str):
for key, value in data.items():
placeholder = "{{" + key + "}}"
if placeholder in cell.value:
cell.value = cell.value.replace(placeholder, str(value))
wb.save(output_path)
return output_path
```
### Bulk Generation (Mail Merge)
```python
import csv
from pathlib import Path
def mail_merge(template_path: str, data_csv: str, output_dir: str):
"""Generate documents for each row in CSV."""
Path(output_dir).mkdir(exist_ok=True)
with open(data_csv) as f:
reader = csv.DictReader(f)
for i, row in enumerate(reader):
output_path = f"{output_dir}/document_{i+1}.docx"
fill_template(template_path, row, output_path)
print(f"Generated: {output_path}")
# Usage with contacts.csv:
# name,email,company
# John,[email protected],Acme
# Jane,[email protected],Corp
mail_merge(
"templates/welcome_letter.docx",
"data/contacts.csv",
"output/letters"
)
```
### Advanced: Conditional Content
```python
from docxtpl import DocxTemplate
# Template with conditionals:
# {% if vip %}
# Thank you for being a VIP member!
# {% else %}
# Thank you for your purchase.
# {% endif %}
doc = DocxTemplate("template.docx")
doc.render({
"name": "John",
"vip": True,
"discount": 20
})
doc.save("output.docx")
```
## Best Practices
1. **Use clear placeholder naming ({{client_name}})**
2. **Validate data before rendering**
3. **Handle missing data gracefully**
4. **Keep templates version-controlled**
## Installation
```bash
# Install required dependencies
pip install python-docx openpyxl python-pptx reportlab jinja2
```
## Resources
- [docxtpl / yumdocs Repository](https://github.com/elapouya/python-docxtpl)
- [Claude Office Skills Hub](https://github.com/claude-office-skills/skills)
© claude-office-skills · MIT · claude-office-skills/skills