Use when source files need format conversion before upload. Triggers on: "convert", "tiff to png", "file format", "unsupported extension".
Converts image, video, and audio files to supported formats for data collection uploads.
/plugin marketplace add datamaker-kr/synapse-claude-marketplace/plugin install synapse-upload@synapse-marketplaceThis skill inherits all available tools. When active, it can use any tool Claude has access to.
Knowledge about when and how to convert files before uploading to a data collection.
Conversion is required when source file extensions don't match the data collection's file specification allowed extensions.
Example: Spec image_1 allows [".png", ".jpg"] but the source directory contains .tiff files. The TIFFs must be converted to PNG or JPG before upload.
extensions list)| Source | Target | Notes |
|---|---|---|
.tiff, .tif | .png | Lossless conversion |
.tiff, .tif | .jpg, .jpeg | RGBA/P modes auto-converted to RGB |
.bmp | .png | Lossless conversion |
.bmp | .jpg, .jpeg | Mode conversion applied |
.webp | .png | Lossless conversion |
.webp | .jpg, .jpeg | Mode conversion applied |
.gif | .png | First frame only |
Requirement: Pillow>=10.0 must be installed in the upload plugin environment.
| Source | Target | Notes |
|---|---|---|
.mov | .mp4 | H.264 + AAC, faststart |
.avi | .mp4 | H.264 + AAC, faststart |
.mkv | .mp4 | H.264 + AAC, faststart |
.webm | .mp4 | H.264 + AAC, faststart |
.flv | .mp4 | H.264 + AAC, faststart |
.wmv | .mp4 | H.264 + AAC, faststart |
Requirement: ffmpeg must be available in PATH. Timeout: 600 seconds per file.
| Source | Target | Notes |
|---|---|---|
.wav | .mp3 | Default quality |
.flac | .mp3 | Lossy conversion |
.ogg | .mp3 | Lossy conversion |
.m4a | .mp3 | Lossy conversion |
.wma | .mp3 | Lossy conversion |
.wav | .aac | Default quality |
.flac | .aac | Lossy conversion |
.ogg | .aac | Lossy conversion |
Requirement: ffmpeg must be available in PATH. Timeout: 300 seconds per file.
The ai-upload-plugin has a convert_file tool that handles conversion automatically:
{
"name": "convert_file",
"input": {
"source_path": "/data/patient_001/scan.tiff",
"target_format": ".png"
}
}
Converted files are stored in a temp directory and automatically cleaned up after upload.
If not using the ai-upload-plugin, convert files beforehand:
Images (Pillow):
python3 -c "
from PIL import Image
from pathlib import Path
import sys
src = Path(sys.argv[1])
dst = src.with_suffix('.png')
with Image.open(src) as img:
img.save(dst)
print(f'Converted: {dst}')
" /path/to/image.tiff
Batch image conversion:
python3 -c "
from PIL import Image
from pathlib import Path
import sys
src_dir = Path(sys.argv[1])
for tiff in src_dir.rglob('*.tiff'):
dst = tiff.with_suffix('.png')
with Image.open(tiff) as img:
img.save(dst)
print(f'Converted: {dst}')
" /path/to/directory
Video (ffmpeg):
ffmpeg -i input.mov -c:v libx264 -c:a aac -movflags +faststart output.mp4
Audio (ffmpeg):
ffmpeg -i input.wav output.mp3
Source file extension NOT in spec's allowed extensions?
├── YES → Check if a supported conversion exists
│ ├── YES → Convert the file, use converted path for upload
│ └── NO → Report error: unsupported file format
└── NO → No conversion needed, use source file directly
Use when working with Payload CMS projects (payload.config.ts, collections, fields, hooks, access control, Payload API). Use when debugging validation errors, security issues, relationship queries, transactions, or hook behavior.