agentsclimarketplace

File conversion

Skill datamaker-kr/synapse-claude-marketplace/dist/opencode/synapse-upload/.opencode/skills/file-conversion

Use when source files need format conversion before upload. Triggers on: "convert", "tiff to png", "file format", "unsupported extension".From its SKILL.md

Install
npx -y skills add datamaker-kr/synapse-claude-marketplace --skill file-conversion

Assembled from the repository path, not quoted from the project. Check it against their README if it does not work.

2 things to look at

  • no licenseNo license file was found in the repository. Code published without one is not open source by default, so using it at work is a question for whoever answers licensing questions where you are.
  • 1 stars1 stars. Stars are a popularity signal and not a quality one, but at this level it is likely that nobody has read this closely except its author, and you would be relying on your own review.

SKILL.md

4.4 KB, ~1.1k tokens by cl100k_base, as published. Nobody here has run it

File Conversion for Synapse Upload

Knowledge about when and how to convert files before uploading to a data collection.

When Conversion Is Needed

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.

Detection Logic

  1. Get the file specs from the data collection (each spec has extensions list)
  2. Scan the source directory for actual file extensions
  3. For each spec, check if source extensions are in the allowed list
  4. If not, determine if a supported conversion exists

Supported Conversions

Image Conversions (via Pillow)

SourceTargetNotes
.tiff, .tif.pngLossless conversion
.tiff, .tif.jpg, .jpegRGBA/P modes auto-converted to RGB
.bmp.pngLossless conversion
.bmp.jpg, .jpegMode conversion applied
.webp.pngLossless conversion
.webp.jpg, .jpegMode conversion applied
.gif.pngFirst frame only

Requirement: Pillow>=10.0 must be installed in the upload plugin environment.

Video Conversions (via ffmpeg)

SourceTargetNotes
.mov.mp4H.264 + AAC, faststart
.avi.mp4H.264 + AAC, faststart
.mkv.mp4H.264 + AAC, faststart
.webm.mp4H.264 + AAC, faststart
.flv.mp4H.264 + AAC, faststart
.wmv.mp4H.264 + AAC, faststart

Requirement: ffmpeg must be available in PATH. Timeout: 600 seconds per file.

Audio Conversions (via ffmpeg)

SourceTargetNotes
.wav.mp3Default quality
.flac.mp3Lossy conversion
.ogg.mp3Lossy conversion
.m4a.mp3Lossy conversion
.wma.mp3Lossy conversion
.wav.aacDefault quality
.flac.aacLossy conversion
.ogg.aacLossy conversion

Requirement: ffmpeg must be available in PATH. Timeout: 300 seconds per file.

Conversion in the Upload Workflow

Using the ai-upload-plugin's Built-in Conversion

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.

Manual Conversion Before 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

Conversion Decision Tree

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

Important Notes

  • Converted files use a temporary directory that is cleaned up after the upload completes
  • For large datasets, conversion can be the bottleneck — consider pre-converting files outside the upload workflow
  • Image conversion preserves the original filename stem, only changing the extension
  • RGBA/Palette mode images are automatically converted to RGB when targeting JPEG format
  • If ffmpeg is not installed, video/audio conversions will fail gracefully with a warning

What ships with it

Read from the repository

Just SKILL.md. No reference files, no scripts.

Gives 0 of the 12 instructions most product growth skills give in ~1.1k tokens

Counted across 728 of the 1,010 authors here whose files we hold, read 2026-08-07

  • Read product marketing context before asking questionsin 24 of 728, across 18 files
  • Define the ideal customer profilein 21 of 728, across 3 files
  • Document a rollback plan before deploymentin 21 of 728, across 12 files
  • Analyze the codebase to understand the productin 19 of 728, across 1 file
  • Ask clarifying questions about the value propositionin 19 of 728, across 1 file
  • Search for companies matching the criteriain 19 of 728, across 1 file
  • Look for signals of immediate needin 19 of 728, across 1 file
  • Assign a fit score from one to tenin 19 of 728, across 1 file
  • Identify the target decision-maker rolein 19 of 728, across 1 file
  • Suggest a personalized contact strategyin 19 of 728, across 1 file
  • Provide conversation starters for outreachin 19 of 728, across 1 file
  • Format results in a scannable markdown templatein 19 of 728, across 1 file

Said here and by no other author read

  • compare source extensions against allowed spec extensions
  • convert unsupported files before uploading
  • use Pillow for image conversions
  • use ffmpeg for video conversions
  • convert RGBA or palette images to RGB for JPEG
  • preserve the original filename stem when converting

Grouped from the skills themselves: near-identical wordings counted once, and counted by distinct author, so one author publishing three of these counts once. Length counted with cl100k_base; the agent that loads this file may tokenize it differently.

Keep looking

Skills are one crate of 326,835. Ordering is by how many stacks a row turns up in, so the top of any crate is what has actually been picked rather than what has the most stars.