Source profileQuality 91/100Review permissions

open-edge-platform/edge-ai-libraries/microservices/model-download/.github/skills/model-download-user/SKILL.md

model-download-user

Download and convert AI models using the Model Download microservice. Use this skill whenever a user wants to: download a model from HuggingFace, Ollama, Ultralytics, Geti, or Pipeline Zoo; convert a model to OpenVINO IR format for OVMS; download healthcare AI models (3D Pose, rPPG, AI-ECG) via the HLS plugin; set up the model download service; submit a download or conversion job via the REST API; or ask "how do I get model X working with OVMS?". Also trigger on phrases like "download model", "d

Source repository stars
156
Declared platforms
0
Static risk flags
4
Last source update
2026-08-24
Source checked
2026-08-25

Decision brief

What it does: where it fits

Set up the Model Download microservice and walk the user through downloading or converting any supported model using the REST API.

Best for

  • User wants to download a model from HuggingFace, Ollama, Ultralytics, Geti, Pipeline Zoo, or HLS
  • User wants to convert a HuggingFace model to OpenVINO IR format for OVMS deployment
  • User asks about model precision conversion (INT4/INT8/FP16/FP32)

Not for

  • Tasks that require unconfirmed production actions or broad system permissions.
  • Environments where the pinned source and install steps cannot be inspected.

Compatibility matrix

Platform support, with evidence labels

PlatformStatusEvidenceWhat to check
CodexNot declaredNo explicit evidencePortability before use
Claude CodeNot declaredNo explicit evidencePortability before use
CursorNot declaredNo explicit evidencePortability before use
Gemini CLINot declaredNo explicit evidencePortability before use
Open the compatibility checker

Installation

Inspect first. Install second.

The source command is displayed only when detected. A safe inspection prompt is always available so your agent can explain every action before execution.

Source-detected install commandSource
npx skills add https://github.com/open-edge-platform/edge-ai-libraries --skill "microservices/model-download/.github/skills/model-download-user"
Safe inspection promptEditorial

Inspect the Agent Skill "model-download-user" from https://github.com/open-edge-platform/edge-ai-libraries/blob/4ee15c40c9ea483d105b3a5f4d51d5bde2879a1b/microservices/model-download/.github/skills/model-download-user/SKILL.md at commit 4ee15c40c9ea483d105b3a5f4d51d5bde2879a1b. List every install step, command, network request, credential, file read/write, external action, and rollback step. Explain whether it fits my task. Do not install or execute anything until I approve.

Workflow

What the source asks the agent to do

  1. 01

    Procedure

    After Step 0 (gather requirements), start the service setup in parallel with composing the API call.

    NPU forces int4 regardless of other settings (applies only to the exact NPU device, not HETERO combinations such as HETERO:NPU,CPU)HETERO devices appear in the output path as a filesystem-safe slug: HETERO:GPU,CPU → openvinomodels/heterogpucpu/LLM/VLM conversions support cachesize (KV cache in GB) — ask if user mentioned memory constraints
  2. 02

    Step 0 — Gather Requirements

    Extract the following from the user's prompt. If anything is missing, ask before proceeding.

    NPU forces int4 regardless of other settings (applies only to the exact NPU device, not HETERO combinations such as HETERO:NPU,CPU)HETERO devices appear in the output path as a filesystem-safe slug: HETERO:GPU,CPU → openvinomodels/heterogpucpu/LLM/VLM conversions support cachesize (KV cache in GB) — ask if user mentioned memory constraints
  3. 03

    Step 1 — Service Setup

    Read service-setup.md for full details.

    Read service-setup.md for full details.Show the user the service startup command, using only the plugins their request requires:
  4. 04

    Step 2 — Compose the API Request

    Read plugins-guide.md for the exact request body for each plugin.

    isovms: true triggers OpenVINO conversionUse hub: "openvino" with isovms: true and a type field for conversionconfig holds precision, device, cachesize, and plugin-specific params
  5. 05

    Step 3 — Submit Job and Poll Status

    Review the “Step 3 — Submit Job and Poll Status” section in the pinned source before continuing.

    Review and apply the “Step 3 — Submit Job and Poll Status” source section.

Permission review

Static risk signals and limitations

Sends data out

high · line 60

The documentation includes sending, uploading, or posting data to a remote service.

curl -s -X POST "http://localhost:8200/api/v1/models/download?download_path=ollama-models" \

Network access

medium · line 60

The documentation includes network, browsing, or remote request actions.

curl -s -X POST "http://localhost:8200/api/v1/models/download?download_path=ollama-models" \

Reads files

low · line 80

The documentation asks the agent to read local files, directories, or repositories.

Read a reference file only when you need the detail it contains:

Network access

medium · line 139

The documentation includes network, browsing, or remote request actions.

git clone https://github.com/open-edge-platform/edge-ai-libraries.git -b main

Runs scripts

medium · line 139

The documentation asks the agent to run terminal commands or scripts.

git clone https://github.com/open-edge-platform/edge-ai-libraries.git -b main

Sends data out

high · line 202

The documentation includes sending, uploading, or posting data to a remote service.

JOB_RESPONSE=$(curl -s -X POST \

Evidence record

Why each signal appears

EvidenceSourceComputedTestedEditorial
SignalValueEvidence typeMeaning
Quality score91/100ComputedDocumentation, specificity, maintenance, and trust rules
Repository stars156SourceRepository attention, not individual Skill quality
Compatibility0 platformsSourceDeclared in the catalog source record
Usage guideautomated source guideEditorialGenerated or reviewed according to the visible evidence level

Pinned source

Provenance and original SKILL.md

Repository
open-edge-platform/edge-ai-libraries
Skill path
microservices/model-download/.github/skills/model-download-user/SKILL.md
Commit
4ee15c40c9ea483d105b3a5f4d51d5bde2879a1b
License
Apache-2.0
Collected
2026-08-25
Default branch
main
View the original SKILL.md

Model Download Agent

Set up the Model Download microservice and walk the user through downloading or converting any supported model using the REST API.

Preview: This skill is in preview — share feedback to help improve it.

When to Use

  • User wants to download a model from HuggingFace, Ollama, Ultralytics, Geti, Pipeline Zoo, or HLS
  • User wants to convert a HuggingFace model to OpenVINO IR format for OVMS deployment
  • User asks about model precision conversion (INT4/INT8/FP16/FP32)
  • User needs to target a specific device (CPU, GPU, NPU, or HETERO combinations like HETERO:GPU,CPU)
  • User wants to download healthcare AI models (3D Pose, rPPG, AI-ECG)
  • User is integrating model downloads into a Docker Compose workflow

Supported Hubs at a Glance

Hubhub valueWhat it doesRequired env vars
HuggingFacehuggingfaceDownloads any public or gated HF modelHUGGINGFACEHUB_API_TOKEN for compose-based startup (gated only)
OllamaollamaDownloads Ollama models, runs local Ollama server
UltralyticsultralyticsDownloads YOLO models, optional INT8 quantization
OpenVINOopenvinoConverts HF models to OpenVINO IR for OVMSHUGGINGFACEHUB_API_TOKEN for compose-based startup (usually needed)
GetigetiDownloads trained models from Intel Geti platformGETI_HOST, GETI_TOKEN, GETI_WORKSPACE_ID
Pipeline Zoopipeline-zoo-modelsDownloads DL Streamer pipeline-zoo models
HLShlsDownloads healthcare AI models (3d-pose, rppg, ai-ecg)

Ollama Quick-Reference

Always use these exact field names for Ollama requests — the API differs from what generic model-download documentation implies.

{
  "models": [
    {
      "hub": "ollama",
      "name": "<model-family>",
      "revision": "<tag>"
    }
  ]
}
  • hub must be "ollama" (not model_hub, not type)
  • name is the base model family: "llama3.2", "mistral", "gemma2" (no tag suffix)
  • revision is the tag: "3b", "7b", "latest" (separate field, not model_name)
  • Port is always 8200 (not 8080, not 8000)
  • Plugin flag: source scripts/run_service.sh up --plugins ollama

Example — download llama3.2:3b:

curl -s -X POST "http://localhost:8200/api/v1/models/download?download_path=ollama-models" \
  -H "Content-Type: application/json" \
  -d '{"models": [{"hub": "ollama", "name": "llama3.2", "revision": "3b"}]}'

Common Mistakes to Avoid

MistakeCorrect
Port 8080 or 8000Port 8200 always
"model_hub": "ollama""hub": "ollama"
"model_name": "llama3.2:3b""name": "llama3.2", "revision": "3b"
docker compose up -dsource scripts/run_service.sh up --plugins <list>
Starting without --plugins <hub>Always activate the plugin for your hub
Polling /api/v1/jobs without job IDUse the job_ids[0] from the download response

Reference Lookup

Read a reference file only when you need the detail it contains:

ReferenceWhen to read
service-setup.mdStarting the service, Docker Compose, plugin flags, env vars
plugins-guide.mdPer-plugin request bodies, parameters, and curl examples
troubleshooting.mdAuth errors, stuck jobs, plugin not activated, venv failures

Procedure

Execution Overview

After Step 0 (gather requirements), start the service setup in parallel with composing the API call.

Step 0 (gather requirements — interactive)
  │
  ├──► Step 1 (service setup — may require user action)
  └──► Step 2 (compose API call body — reasoning)
         │
         ├──► Step 3 (submit job + poll status)
         └──► Step 4 (verify result + next steps)

Step 0 — Gather Requirements

Extract the following from the user's prompt. If anything is missing, ask before proceeding.

RequiredWhat to look forDefault if absent
Model nameExact model identifier (e.g. meta-llama/Llama-3.2-1B)Must ask
HubOne of: huggingface, openvino, ollama, ultralytics, geti, pipeline-zoo-models, hlsMust ask
Conversion needed?User says "OVMS", "OpenVINO format", "convert", "is_ovms"false
DeviceCPU / GPU / NPU / HETERO:<dev>[,<dev>...] (e.g. HETERO:GPU,CPU)CPU
Precisionint4 / int8 / fp16 / fp32int8 for LLMs; fp16 for others
Model typellm / vlm / embeddings / rerank / text2speech / speech2text / image_generation / vision / 3d-pose / rppg / ai-ecgInfer from context

OpenVINO-specific rules (ask only if the user wants OVMS / OpenVINO conversion):

  • NPU forces int4 regardless of other settings (applies only to the exact NPU device, not HETERO combinations such as HETERO:NPU,CPU)
  • HETERO devices appear in the output path as a filesystem-safe slug: HETERO:GPU,CPUopenvino_models/hetero_gpu_cpu/
  • LLM/VLM conversions support cache_size (KV cache in GB) — ask if user mentioned memory constraints
  • Embeddings and reranker conversions use text_generation/embeddings_ov/rerank_ov export types internally — these are resolved automatically from type

If the user's prompt explicitly names a model AND hub, go straight to Step 1. Otherwise ask.


Step 1 — Service Setup

Read service-setup.md for full details.

Show the user the service startup command, using only the plugins their request requires:

# Clone (if not already done)
git clone https://github.com/open-edge-platform/edge-ai-libraries.git -b main
cd edge-ai-libraries/microservices/model-download

# Set env vars
export HUGGINGFACEHUB_API_TOKEN=<your-hf-token>   # mapped into the container as HF_TOKEN
export REGISTRY="intel/"
export TAG=latest

# Start service (adjust --plugins to match what you need)
source scripts/run_service.sh up --plugins <comma-separated-list> --model-path $PWD/models

Plugin list recommendations:

  • HuggingFace only → --plugins huggingface
  • HuggingFace + OpenVINO conversion → --plugins huggingface,openvino
  • Ollama → --plugins ollama
  • Ultralytics → --plugins ultralytics
  • All → --plugins all

Confirm the service is healthy before proceeding:

curl http://localhost:8200/api/v1/health
# Expected: {"status": "ok"}

Every final answer to the user must restate both the exact startup command (with the right --plugins list) and the port 8200 — not just the request payload. Users copy answers piecemeal, so a payload without its startup command or port is easy to misapply.

Step 2 — Compose the API Request

Read plugins-guide.md for the exact request body for each plugin.

The general request shape for POST /api/v1/models/download?download_path=<subdir> is:

{
  "models": [
    {
      "name": "<model-identifier>",
      "hub": "<hub-value>",
      "type": "<model-type-or-omit>",
      "is_ovms": false,
      "config": {}
    }
  ]
}

Key rules:

  • is_ovms: true triggers OpenVINO conversion
  • Use hub: "openvino" with is_ovms: true and a type field for conversion
  • config holds precision, device, cache_size, and plugin-specific params
  • download_path query param sets the subdirectory under the model store

Step 3 — Submit Job and Poll Status

# 1. Submit download job
JOB_RESPONSE=$(curl -s -X POST \
  "http://localhost:8200/api/v1/models/download?download_path=my-models" \
  -H "Content-Type: application/json" \
  -d '<your-request-body>')

echo "$JOB_RESPONSE"
# Response: {"job_ids": ["<uuid>"]}

# 2. Extract job ID
JOB_ID=$(echo "$JOB_RESPONSE" | python3 -c "import sys,json; print(json.load(sys.stdin)['job_ids'][0])")

# 3. Poll until completed or failed
watch -n 5 "curl -s http://localhost:8200/api/v1/jobs/$JOB_ID | python3 -m json.tool"

Job status values: queueddownloading / convertingcompleted / failed

If status is failed, read the error field and check troubleshooting.md.


Step 4 — Verify and Next Steps

# List all completed downloads
curl -s http://localhost:8200/api/v1/models/results | python3 -m json.tool

# Check a specific model's jobs
curl -s "http://localhost:8200/api/v1/models/jobs?model_name=<model-name>" | python3 -m json.tool

After confirming success, tell the user:

  • The host path where the model was saved (shown in the job result's download_path)
  • For OVMS conversions: how to mount the model directory into OVMS and which model name to use; the result uses conversion_path
  • For Ollama: the model is stored inside the container's model store volume

Important accuracy note for OpenVINO conversions: Use hub: "openvino" with is_ovms: true for model conversion.

Quick alternative: For one-shot, ephemeral container use (CI/CD, scripted workflows), use the get_model.sh one-liner

curl -sSLO https://raw.githubusercontent.com/open-edge-platform/edge-ai-libraries/main/microservices/model-download/scripts/get_model.sh
source ./get_model.sh --model-name <model> --hub <hub> --plugins <plugins>

Frequently asked questions

What to verify before installation and use

What does the model-download-user source document cover?

Set up the Model Download microservice and walk the user through downloading or converting any supported model using the REST API.

How do I install model-download-user?

The source record exposes this install command: npx skills add https://github.com/open-edge-platform/edge-ai-libraries --skill "microservices/model-download/.github/skills/model-download-user". Inspect the command and pinned source before running it.

Which permission-related actions were detected?

Static rules flagged send-data, network, read-files, exec-script in the source; the page lists the matching lines and excerpts.

Alternatives

Compare before choosing

Computed 10045,511

coreyhaines31/marketingskills

ab-testing

When the user wants to plan, design, or implement an A/B test or experiment, or build a growth experimentation program. Also use when the user mentions "A/B test," "split test," "experiment," "test this change," "variant copy," "multivariate test," "hypothesis," "should I test this," "which version is better," "test two versions," "statistical significance," "how long should I run this test," "growth experiments," "experiment velocity," "experiment backlog," "ICE score," "experimentation program

Computed 10029,034

garrytan/gbrain

bulk-ingestion

End-to-end discipline for turning any large data source (audio libraries, email takeouts, document corpora, chat exports, API dumps) into brain pages at scale. The lifecycle spine: SCHEMA → ACCESS → TRIAL → EVALUATE → IMPROVE → CODIFY → TEST → SKILLIFY → BULK → MONITOR. State is tracked in a durable JSON manifest (see MANIFEST-PATTERN.md) so any crash, session boundary, or subagent fan-out resumes from ground truth instead of memory.

Computed 10024,921

alirezarezvani/claude-skills

app-store-optimization

App Store Optimization (ASO) toolkit for researching keywords, analyzing competitor rankings, generating metadata suggestions, and improving app visibility on Apple App Store and Google Play Store. Use when the user asks about ASO, app store rankings, app metadata, app titles and descriptions, app store listings, app visibility, or mobile app marketing on iOS or Android. Supports keyword research and scoring, competitor keyword analysis, metadata optimization, A/B test planning, launch checklist

Computed 1005,241

dotnet/skills

migrate-vstest-to-mtp

Migrates .NET test projects from VSTest to Microsoft.Testing.Platform (MTP). Use when user asks to "migrate to MTP", "switch from VSTest", "enable Microsoft.Testing.Platform", "use MTP runner", set OutputType=Exe only for test projects in Directory.Build.props, or mentions EnableMSTestRunner, EnableNUnitRunner, or UseMicrosoftTestingPlatformRunner. USE FOR: MTP behavioral differences vs VSTest (exit code 8, zero tests discovered, --ignore-exit-code, TESTINGPLATFORM_EXITCODE_IGNORE); centralizing