curl -L -o docx-toolkit.skill "https://aiskillstore.io/v1/agent/skills/f0502d94-b269-493b-a939-1906bae98559/download?platform=ClaudeCode"
{
"tool": "download_skill",
"arguments": {
"skill_id": "f0502d94-b269-493b-a939-1906bae98559",
"platform": "ClaudeCode"
}
}
{
"mcpServers": {
"skill-store": {
"url": "https://aiskillstore.io/mcp/"
}
}
}
Extract text, tables, images, and metadata from DOCX files, and generate new DOCX from templates.
Compatible Platforms any
Findings: ["메타데이터 경고: 권장 필드 없음: 'requirements' (SKILL.md v2 권장)", "메타데이터 경고: 권장 필드 없음: 'changelog' (SKILL.md v2 권장)", '정보: spec: usk/1.0 미선언 — v2 패키지로 처리됩니다. 자동 변환 및 에이전트 검색 기능을 사용하려면 USK v3로 업그레이드하세요.']
✅ No security risks found.
AI Review Stage
스킬 메타데이터와 제공된 코드 스니펫(`main.py`) 및 정적 분석 결과를 종합적으로 검토했습니다. 1. **권한 일치 여부:** 스킬은 `filesystem: true` 권한을 선언했으며, `os.path.exists`, `zipfile.is_zipfile`, `zipfile.ZipFile`, `docx.Document` 등 파일 시스템 접근이 필요한 작업을 수행합니다. `network: false` 및 `subprocess: false`로 선언되었으며, 코드 스니펫에서 외부 네트워크 통신이나 서브프로세스 실행을 시도하는 부분은 발견되지 않았습니다. 선언된 권한과 실제 코드가 일치합니다. 2. **악의적 목적 코드:** 데이터 탈취, 시스템 파괴, 코드 난독화 등 악의적인 목적을 가진 코드는 발견되지 않았습니다. `python-docx` 라이브러리를 사용하여 DOCX 파일을 처리하는 표준적인 방식을 따릅니다. 3. **선언되지 않은 외부 통신:** `network: false`로 선언되었으며, 코드에서 외부 통신을 시도하는 어떠한 흔적도 발견되지 않았습니다. 4. **사용자 데이터 무단 수집/전송:** 스킬은 사용자로부터 DOCX 파일 경로를 입력받아 처리하고 결과를 반환할 뿐, 사용자 데이터를 무단으로 수집하거나 외부로 전송하는 기능은 없습니다. 5. **코드 품질:** 코드는 명확하고 가독성이 높으며, `_validate_docx` 함수를 통해 DOCX 파일의 기본적인 유효성을 검사하는 등 기본적인 보안 고려사항을 포함하고 있습니다. 스킬의 목적(DOCX 파일 처리)에 부합하는 양호한 코드 품질을 보여줍니다. **잠재적 고려사항 (플랫폼 수준):** `file_path` 및 `template_path`와 같은 사용자 입력 경로에 대한 경로 조작 공격(path traversal) 가능성은 존재하지만, 이는 스킬 자체의 악의적인 의도라기보다는 파일 시스템 접근을 허용하는 모든 스킬에 공통적으로 적용되는 플랫폼 수준의 샌드박싱 및 경로 검증을 통해 방지되어야 할 문제입니다. 스킬 자체는 제공된 경로에 대해 DOCX 관련 작업을 수행하는 것이 목적입니다. 결론적으로, 이 스킬은 선언된 권한 범위 내에서 안전하게 동작하며, 악의적인 코드를 포함하고 있지 않으므로 'approved'로 판단합니다.
Representative input/output examples for this skill. Agents can use these to understand how to invoke the skill and what output to expect.
Extract all text from a DOCX file as plain text
{
"action": "extract_text",
"file_path": "/tmp/report.docx"
}
{
"paragraphs": [
{
"style": "Heading1",
"text": "Annual Report 2025"
},
{
"style": "Normal",
"text": "This report summarizes..."
}
],
"text": "Annual Report 2025\n\nThis report summarizes...",
"total_paragraphs": 2
}
Extract all tables from a DOCX including multi-row content
{
"action": "extract_tables",
"file_path": "/tmp/data_report.docx"
}
{
"tables": [
{
"col_count": 3,
"row_count": 3,
"rows": [
[
"Name",
"Department",
"Score"
],
[
"Alice",
"Engineering",
"95"
],
[
"Bob",
"Marketing",
"88"
]
]
},
{
"col_count": 2,
"row_count": 3,
"rows": [
[
"Quarter",
"Revenue"
],
[
"Q1",
"12000000"
],
[
"Q2",
"15000000"
]
]
}
]
}
Get author, creation date, modification date, and word count
{
"action": "extract_metadata",
"file_path": "/tmp/contract.docx"
}
{
"author": "Legal Team",
"created": "2025-01-15T09:30:00",
"modified": "2025-03-22T14:45:00",
"title": "Service Agreement",
"word_count": 3420
}
Extract text from a Korean-language DOCX document
{
"action": "extract_text",
"file_path": "/tmp/korean_document.docx",
"include_styles": true
}
{
"paragraphs": [
{
"style": "Heading1",
"text": "\uc0ac\uc5c5 \uacc4\ud68d\uc11c"
},
{
"style": "Normal",
"text": "\ubcf8 \ubb38\uc11c\ub294 2025\ub144 \uc0ac\uc5c5 \uacc4\ud68d\uc744 \uc815\ub9ac\ud55c \uac83\uc785\ub2c8\ub2e4."
}
],
"text": "\uc0ac\uc5c5 \uacc4\ud68d\uc11c\n\n\ubcf8 \ubb38\uc11c\ub294 2025\ub144 \uc0ac\uc5c5 \uacc4\ud68d\uc744 \uc815\ub9ac\ud55c \uac83\uc785\ub2c8\ub2e4.",
"total_paragraphs": 2
}
Create a new DOCX invoice by substituting template variables
{
"action": "generate_from_template",
"context": {
"customer_name": "ACME Corporation",
"invoice_date": "2025-06-01",
"invoice_number": "INV-2025-0042",
"total_amount": "1,500,000 KRW"
},
"file_path": "/tmp/output_invoice.docx",
"template_path": "/tmp/invoice_template.docx"
}
{
"output_path": "/tmp/output_invoice.docx",
"size_bytes": 14320,
"variables_replaced": [
"customer_name",
"total_amount",
"invoice_date",
"invoice_number"
]
}
Attempt to process a non-DOCX file (e.g., a plain .txt renamed to .docx)
{
"action": "extract_text",
"file_path": "/tmp/not_a_docx.txt"
}
{
"error": {
"code": "INVALID_DOCX",
"message": "File is not a valid DOCX (ZIP-based Office Open XML) format."
}
}
All examples are also available via the agent API:
/v1/agent/skills/f0502d94-b269-493b-a939-1906bae98559/schema
No reviews yet. Be the first to leave one!