curl -L -o doc-template-engine.skill "https://aiskillstore.io/v1/agent/skills/ed01454e-4cb7-4714-b782-a3fe379762c1/download?platform=ClaudeCode"
{
"tool": "download_skill",
"arguments": {
"skill_id": "ed01454e-4cb7-4714-b782-a3fe379762c1",
"platform": "ClaudeCode"
}
}
{
"mcpServers": {
"skill-store": {
"url": "https://aiskillstore.io/mcp/"
}
}
}
Structured document template engine: renders invoices, receipts, reports, and contracts from JSON data. Supports table loops, totals, Korean business format, multi-currency, and HTML/Markdown output. Zero external dependencies.
Compatible Platforms any
Findings: ["메타데이터 경고: 권장 필드 없음: 'requirements' (SKILL.md v2 권장)", "메타데이터 경고: 권장 필드 없음: 'changelog' (SKILL.md v2 권장)"]
✅ No security risks found.
AI Review Stage
스킬 메타데이터에서 네트워크, 파일 시스템, 서브프로세스 접근 권한이 모두 'false'로 명확하게 선언되어 있습니다. 제공된 'main.py' 코드 파일은 Python 표준 라이브러리(sys, json, re, html, datetime, typing)만을 사용하며, 선언된 권한을 위반하는 어떠한 외부 통신, 파일 접근 또는 서브프로세스 실행 코드도 발견되지 않았습니다. 특히, 템플릿 변수 바인딩 시 기본적으로 HTML 이스케이프를 수행하는 `escape_html: true` 옵션과 `_escape` 함수를 통해 XSS 공격에 대한 방어 메커니즘이 명시적으로 구현되어 있습니다. 정적 분석 결과에서도 어떠한 위험 요소나 난독화, 금지된 실행 파일이 발견되지 않아 코드의 안전성이 추가로 확인됩니다. 스킬의 목적과 일치하는 높은 코드 품질을 보이며, 악의적인 목적의 코드는 발견되지 않았습니다.
Representative input/output examples for this skill. Agents can use these to understand how to invoke the skill and what output to expect.
한국 표준 세금계산서 양식으로 인보이스를 렌더합니다.
{
"action": "render",
"currency": "KRW",
"data": {
"buyer_name": "(\uc8fc)\uad6c\ub9e4\ud68c\uc0ac",
"buyer_reg_number": "987-65-43210",
"doc_number": "2024-001",
"issue_date": "2024-01-15",
"items": [
{
"name": "\uc18c\ud504\ud2b8\uc6e8\uc5b4 \uac1c\ubc1c",
"qty": 1,
"unit_price": 1000000
},
{
"name": "\uc720\uc9c0\ubcf4\uc218",
"qty": 3,
"unit_price": 200000
}
],
"seller_address": "\uc11c\uc6b8\uc2dc \uac15\ub0a8\uad6c \ud14c\ud5e4\ub780\ub85c 123",
"seller_ceo": "\ud64d\uae38\ub3d9",
"seller_name": "(\uc8fc)\uc608\uc2dc\ucef4\ud37c\ub2c8",
"seller_reg_number": "123-45-67890",
"tax_rate": 10
},
"lang": "ko",
"preset": "invoice_kr"
}
{
"action": "render",
"meta": {
"currency": "KRW",
"grand_total": 1980000,
"preset": "invoice_kr",
"tax_amount": 180000,
"total_amount": 1800000
},
"output": "\u003chtml\u003e...(\uc138\uae08\uacc4\uc0b0\uc11c HTML)...\u003c/html\u003e",
"output_format": "html"
}
간단한 영수증 문서를 렌더합니다.
{
"action": "render",
"currency": "KRW",
"data": {
"date": "2024-01-15",
"items": [
{
"name": "\uc544\uba54\ub9ac\uce74\ub178",
"qty": 2,
"unit_price": 4500
},
{
"name": "\uc0cc\ub4dc\uc704\uce58",
"qty": 1,
"unit_price": 5800
}
],
"receipt_number": "R-2024-0042",
"store_name": "\ud3b8\uc758\uc810 24"
},
"lang": "ko",
"preset": "receipt"
}
{
"action": "render",
"meta": {
"total_amount": 14800
},
"output": "\u003chtml\u003e...(\uc601\uc218\uc99d HTML)...\u003c/html\u003e",
"output_format": "html"
}
표와 합계 셀이 포함된 월간 매출 보고서를 렌더합니다.
{
"action": "render",
"currency": "KRW",
"data": {
"author": "\uae40\uc601\uc5c5",
"period": "2024-01-01 ~ 2024-01-31",
"rows": [
{
"cost": 8000000,
"month": "1\uc6d4 1\uc8fc",
"sales": 12000000
},
{
"cost": 9500000,
"month": "1\uc6d4 2\uc8fc",
"sales": 15000000
}
],
"title": "2024\ub144 1\uc6d4 \ub9e4\ucd9c \ubcf4\uace0\uc11c"
},
"lang": "ko",
"preset": "report"
}
{
"action": "render",
"meta": {
"total_cost": 17500000,
"total_sales": 27000000
},
"output": "\u003chtml\u003e...(\ubcf4\uace0\uc11c HTML)...\u003c/html\u003e",
"output_format": "html"
}
계약서 기본 골격 문서를 렌더합니다.
{
"action": "render",
"data": {
"amount": 50000000,
"contract_title": "\uc18c\ud504\ud2b8\uc6e8\uc5b4 \uac1c\ubc1c \uc6a9\uc5ed \uacc4\uc57d\uc11c",
"currency": "KRW",
"end_date": "2024-07-31",
"party_a": "(\uc8fc)\ubc1c\uc8fc\ud68c\uc0ac",
"party_b": "(\uc8fc)\uc218\uc8fc\ud68c\uc0ac",
"start_date": "2024-02-01"
},
"lang": "ko",
"preset": "contract"
}
{
"action": "render",
"output": "\u003chtml\u003e...(\uacc4\uc57d\uc11c HTML)...\u003c/html\u003e",
"output_format": "html"
}
사용자 정의 템플릿에 데이터를 바인딩합니다.
{
"action": "render",
"data": {
"author": "\uc774\uc8fc\ubb38",
"items": [
{
"amount": 10000,
"name": "\uc0c1\ud488A",
"qty": 2
},
{
"amount": 25000,
"name": "\uc0c1\ud488B",
"qty": 1
}
],
"title": "\uc8fc\ubb38\uc11c"
},
"template": "\u003ch1\u003e{{title}}\u003c/h1\u003e\u003cp\u003e\uc791\uc131\uc790: {{author}}\u003c/p\u003e{{#table items}}\u003ctr\u003e\u003ctd\u003e{{name}}\u003c/td\u003e\u003ctd\u003e{{qty}}\u003c/td\u003e\u003ctd\u003e{{amount}}\u003c/td\u003e\u003c/tr\u003e{{/table}}\u003cp\u003e\ud569\uacc4: {{#total items.amount}}\u003c/p\u003e"
}
{
"action": "render",
"output": "\u003ch1\u003e\uc8fc\ubb38\uc11c\u003c/h1\u003e\u003cp\u003e\uc791\uc131\uc790: \uc774\uc8fc\ubb38\u003c/p\u003e\u003ctr\u003e\u003ctd\u003e\uc0c1\ud488A\u003c/td\u003e\u003ctd\u003e2\u003c/td\u003e\u003ctd\u003e10,000\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e\uc0c1\ud488B\u003c/td\u003e\u003ctd\u003e1\u003c/td\u003e\u003ctd\u003e25,000\u003c/td\u003e\u003c/tr\u003e\u003cp\u003e\ud569\uacc4: 35,000\u003c/p\u003e",
"output_format": "html"
}
악성 스크립트 입력이 HTML escape 처리되어 안전하게 렌더됩니다.
{
"action": "render",
"data": {
"user_input": "\u003cscript\u003ealert(\u0027xss\u0027)\u003c/script\u003e"
},
"escape_html": true,
"template": "\u003cp\u003e{{user_input}}\u003c/p\u003e"
}
{
"action": "render",
"output": "\u003cp\u003e\u0026lt;script\u0026gt;alert(\u0026#x27;xss\u0026#x27;)\u0026lt;/script\u0026gt;\u003c/p\u003e",
"output_format": "html"
}
USD 통화 형식으로 영문 인보이스를 렌더합니다.
{
"action": "render",
"currency": "USD",
"data": {
"buyer_name": "Client Inc",
"doc_number": "INV-2024-001",
"issue_date": "2024-01-15",
"items": [
{
"name": "Consulting",
"qty": 10,
"unit_price": 150
},
{
"name": "Development",
"qty": 40,
"unit_price": 120
}
],
"seller_name": "Example Corp"
},
"lang": "en",
"preset": "invoice_en"
}
{
"action": "render",
"meta": {
"currency": "USD",
"total_amount": 6300
},
"output": "\u003chtml\u003e...(Invoice HTML in USD)...\u003c/html\u003e",
"output_format": "html"
}
사용 가능한 내장 프리셋 목록과 필수 필드를 반환합니다.
{
"action": "list_presets"
}
{
"action": "list_presets",
"presets": [
{
"description": "\ud55c\uad6d \ud45c\uc900 \uc138\uae08\uacc4\uc0b0\uc11c",
"name": "invoice_kr",
"required_fields": [
"seller_name",
"seller_reg_number",
"buyer_name",
"items"
]
},
{
"description": "English invoice",
"name": "invoice_en",
"required_fields": [
"seller_name",
"buyer_name",
"items"
]
},
{
"description": "\uc601\uc218\uc99d / Receipt",
"name": "receipt",
"required_fields": [
"store_name",
"items"
]
},
{
"description": "\ubcf4\uace0\uc11c / Report",
"name": "report",
"required_fields": [
"title",
"rows"
]
},
{
"description": "\uacc4\uc57d\uc11c / Contract",
"name": "contract",
"required_fields": [
"party_a",
"party_b",
"start_date",
"end_date"
]
}
]
}
All examples are also available via the agent API:
/v1/agent/skills/ed01454e-4cb7-4714-b782-a3fe379762c1/schema
No reviews yet. Be the first to leave one!