This skill is a thin wrapper. All the actual logic lives in
mlx-conversions/scripts/pipeline.py -- run it, don't re-derive the steps by
hand:
cd ~/Projects/mlx-conversions
source ~/.zprofile # HF_TOKEN
uv run python scripts/pipeline.py --hf-path <source-repo> --q-bits 4 --q-group-size 64
For an unquantized (bf16 passthrough) build of a vision-language model:
uv run python scripts/pipeline.py --hf-path <source-repo> --no-quantize
What the script does (so you know what NOT to redo manually)
- Fetches the source's
config.json, decidesmlx_lm(text-only) vsmlx_vlm(vision-language) automatically -- checks forvision_config/audio_configor a*ForConditionalGenerationarchitecture. Never assume text-only. - Checks
mlx-communitydoesn't already have this exact repo/quant first -- exits early if so. - Converts, preserving whatever modalities the source has (never silently
drops vision/audio components -- this was a real bug found 2026-07-18,
see
mlx-conversions/specs/model-verification.md). - Uploads to the target repo (defaults to
mlx-community/<name>-<bits>bit). - Runs
scripts/verify.py's structural (tensor-prefix diff) and functional (real generation, image+text too for VLMs) checks. - Writes a real model card: description pulled from the source, honest verification-status note, quantization/provenance notes, discoverability tags.
- Updates
BACKLOG.md(checks off the source if it was a tracked candidate) and appends aCHANGELOG.mdentry. - Deletes the local copy once verified. Keeps it (for debugging) only if verification failed.
When NOT to use this
- A one-off fix to something already published (e.g. just re-uploading a
corrected README) -- use the specific script for that
(
scripts/write_model_cards.py,scripts/fix_processor_metadata.py), not the full pipeline. - Publishing multiple precision variants of the same family in one go --
scripts/convert_all_precisions.pyalready encodes that loop;pipeline.pyhandles one (source, target) conversion at a time. - Text-only models with
--no-quantize-- not supported yet (scripts/convert.pyalways quantizes); the script will refuse and tell you so rather than silently ignoring the flag.
After running
Report what got published (or why it was skipped/failed) concisely. Don't re-explain the steps above -- the user already knows what the script does once it's been run a few times; just report the outcome.