curl -L -o image-stitch-composer.skill "https://aiskillstore.io/v1/agent/skills/dde8ad72-8c18-4970-9328-96dc18d808d5/download?platform=ClaudeCode"
{
"tool": "download_skill",
"arguments": {
"skill_id": "dde8ad72-8c18-4970-9328-96dc18d808d5",
"platform": "ClaudeCode"
}
}
{
"mcpServers": {
"skill-store": {
"url": "https://aiskillstore.io/mcp/"
}
}
}
Stitch multiple images vertically, horizontally, or in a grid layout with resize, padding, and background color options. Pillow-only, no external APIs.
호환 플랫폼: any
🚨 보안 위험 감지:
검사 결과: ["메타데이터 경고: 권장 필드 없음: 'tags' (SKILL.md v2 권장)", "메타데이터 경고: 권장 필드 없음: 'requirements' (SKILL.md v2 권장)", 'USK v3 경고: 이 스킬은 자동 변환 조건을 충족하지 않아 manual_install로 처리됩니다']
AI 검수 단계
스킬 메타데이터와 제공된 코드(`main.py`, `tests/_test_local.py`)를 분석하고 정적 분석 결과를 검토했습니다. 1. **권한 일치 여부:** * `network: false`로 선언되었으며, `main.py` 코드에서 네트워크 관련 모듈(예: `requests`, `urllib`, `socket`) 사용 흔적이 없습니다. 외부 통신이 없습니다. * `filesystem: true`로 선언되었으며, `main.py`는 `Image.open()`, `img.save()`, `os.path.exists()`, `os.makedirs()` 등 파일 시스템 접근 기능을 사용합니다. 이는 이미지 파일을 읽고 쓰는 스킬의 목적에 부합하며, 선언된 권한과 일치합니다. * `subprocess: false`로 선언되었으며, `main.py` 코드에서 `subprocess` 모듈이나 `os.system()`, `os.popen()`과 같은 외부 프로세스 실행 명령이 발견되지 않았습니다. 2. **정적 분석 결과 (`red_flags_found`):** * 정적 분석에서 `tests/_test_local.py: subprocess.run(`이(가) 발견되었으나, 이 파일은 스킬의 핵심 로직이 아닌 로컬 테스트 코드입니다. 스킬의 `entry_point`는 `main.py`이며, 테스트 코드는 런타임 환경에서 실행되지 않으므로 스킬 자체의 `subprocess: false` 권한 선언을 위반하지 않습니다. 3. **악의적 목적 코드:** * 코드에서 데이터 탈취, 시스템 파괴, 난독화 등 악의적인 목적의 코드는 발견되지 않았습니다. `Pillow` 라이브러리를 활용한 순수한 이미지 처리 로직으로 구성되어 있습니다. 4. **무단 데이터 수집/전송:** * 네트워크 권한이 없으므로 사용자 데이터를 무단으로 수집하거나 전송할 수 없습니다. 스킬은 입력으로 받은 이미지 파일을 처리하고 결과를 지정된 로컬 경로에 저장합니다. 5. **코드 품질:** * 코드 구조가 명확하고, `Pillow` 라이브러리를 사용하여 이미지 처리 기능을 구현했습니다. 의존성 체크 및 EXIF 자동 회전 처리 등 기본적인 코드 품질은 양호합니다. 스킬의 목적과 일치하는 기능을 제공합니다. 결론적으로, 이 스킬은 선언된 보안 정책을 준수하며, 잠재적인 위험 요소가 없는 것으로 판단됩니다.
이 스킬의 대표적인 입출력 예시입니다. 에이전트는 이 예시를 보고 스킬 호출 방법과 결과 형태를 이해할 수 있습니다.
Stack two screenshots vertically with 4px gap and white background.
{
"background_color": "white",
"direction": "vertical",
"images": [
"/tmp/screen_top.png",
"/tmp/screen_bottom.png"
],
"output_path": "/tmp/stitched.png",
"padding": 4
}
{
"direction": "vertical",
"file_size_kb": 312.5,
"height": 1444,
"image_count": 2,
"output_path": "/tmp/stitched.png",
"resize_mode": "fit",
"width": 1280
}
Place two images side by side to create a before/after comparison panel.
{
"background_color": "#F0F0F0",
"direction": "horizontal",
"images": [
"/tmp/before.jpg",
"/tmp/after.jpg"
],
"output_path": "/tmp/comparison.png",
"padding": 8,
"resize_mode": "fit",
"target_size": [
960,
720
]
}
{
"direction": "horizontal",
"file_size_kb": 478.2,
"height": 736,
"image_count": 2,
"output_path": "/tmp/comparison.png",
"resize_mode": "fit",
"width": 1936
}
Arrange four product images in a 2x2 grid with black background.
{
"background_color": "black",
"direction": "grid",
"grid_cols": 2,
"images": [
"/tmp/product_1.jpg",
"/tmp/product_2.jpg",
"/tmp/product_3.jpg",
"/tmp/product_4.jpg"
],
"output_path": "/tmp/product_grid.jpg",
"output_quality": 90,
"padding": 10,
"resize_mode": "fit",
"target_size": [
800,
800
]
}
{
"direction": "grid",
"file_size_kb": 892.0,
"height": 1620,
"image_count": 4,
"output_path": "/tmp/product_grid.jpg",
"resize_mode": "fit",
"width": 1620
}
Combine six screenshots into a 3-column grid, stretching each to a uniform size.
{
"direction": "grid",
"grid_cols": 3,
"images": [
"/tmp/s1.png",
"/tmp/s2.png",
"/tmp/s3.png",
"/tmp/s4.png",
"/tmp/s5.png",
"/tmp/s6.png"
],
"output_path": "/tmp/grid_6.png",
"padding": 2,
"resize_mode": "stretch",
"target_size": [
640,
480
]
}
{
"direction": "grid",
"file_size_kb": 1204.8,
"height": 964,
"image_count": 6,
"output_path": "/tmp/grid_6.png",
"resize_mode": "stretch",
"width": 1926
}
Create a wide horizontal banner by center-cropping three landscape photos to equal size.
{
"direction": "horizontal",
"images": [
"/tmp/photo_a.jpg",
"/tmp/photo_b.jpg",
"/tmp/photo_c.jpg"
],
"output_path": "/tmp/banner.webp",
"output_quality": 85,
"padding": 0,
"resize_mode": "crop",
"target_size": [
600,
400
]
}
{
"direction": "horizontal",
"file_size_kb": 256.3,
"height": 400,
"image_count": 3,
"output_path": "/tmp/banner.webp",
"resize_mode": "crop",
"width": 1800
}
모든 예시는 에이전트 API로도 조회 가능:
/v1/agent/skills/dde8ad72-8c18-4970-9328-96dc18d808d5/schema
아직 리뷰가 없습니다. 첫 번째 리뷰를 남겨보세요!