Install any skill in seconds. Free to start, no credit card required.
Get Started Free →This skill should be used when user asks to "upload my model to Ultralytics Platform", "push this run to the platform", "upload a dataset to platform", "download a dataset from platform", "search platform datasets", "start cloud training", "train on platform GPUs", "export a model on platform", "deploy a model endpoint", "why is my run not showing on platform", or mentions platform.ultralytics.com, ul:// URIs, or ULTRALYTICS_API_KEY.
.claude/skills/fcakyon-ultralytics-platform/SKILL.md| Test case | Without → With | Effect | Δ tokens | Δ turns |
|---|---|---|---|---|
| case-13 | ✗→✓ | ▲ Improved | -9% | 0% |
| case-01 | ✗→✓ | ▲ Improved | 28% | 0% |
| case-02 | ✗→✓ | ▲ Improved | 2% | 0% |
| case-03 | ✗→✓ | ▲ Improved | 70% | 0% |
| case-04 | ✗→✓ | ▲ Improved | 19% | 0% |
Use ultralytics for YOLO training and inference. Use the generated ultralytics-platform Python SDK for API resource work. It follows the same contract as the live API and handles authentication, typed responses, retries, and errors.
Before API work, check the generated API reference or GET https://platform.ultralytics.com/openapi.json. Treat the live OpenAPI document as authoritative when examples disagree. The shapes below match API and SDK v0.1.18, checked on 2026-08-27.
bashuv pip install -U "ultralytics-platform>=0.1.18" export ULTRALYTICS_API_KEY=ul_... # Settings > API Keys
Platform() reads ULTRALYTICS_API_KEY. The ultralytics package also reads the key saved by yolo login. Never print or commit a key.
| Goal | Interface | | ---------------------------------------------------------- | -------------------------------- | | Track a run that has not started | ultralytics training callback | | Train with a Platform dataset or model | ultralytics with a ul:// URI | | Manage datasets, models, training, exports, or deployments | ultralytics-platform SDK | | Use another language or inspect a new field | Live OpenAPI |
ul:// URIsPass an owner-qualified project to stream a run:
pythonfrom ultralytics import YOLO YOLO("yolo26n.pt").train(data="coco8.yaml", epochs=100, project="owner/project", name="run1")
project= is required. Without it, the callback exits before creating a Platform run. Use the owner prefix for a team workspace.
pythonYOLO("ul://owner/project/model").train(data="ul://owner/datasets/dataset", epochs=100)
Use a context manager and owner/name paths. Keep returned IDs for operations that require them, including image operations, upload assetId, training modelId, and export IDs.
Responses have resource-specific shapes, not a generic envelope. Create calls return id, owner, and the URL name at the top level. Detail calls wrap the resource under its type, such as dataset. A rename changes the URL name, so use the name returned by the update response.
Read references/recipes.md for live-run diagnosis, finished-run upload, dataset upload, and billable jobs.
client.account.summary() and read the exact resource before amutation. Team work requires an API key created in that workspace.
PUT with the returned headers, upload completion, then datasetingest. Model uploads stop after completion.
sessionId, sourceUrl, or a connected-storage reference.Set targetSplit when every incoming image must enter one split.
metrics accepts only the contract's named summary metrics. Per-epochtrainResults[].metrics accepts numeric metric names from results.csv.
429, wait for Retry-After before retrying. Do not invent fixed sleeps.Cloud training, model exports, and deployments can spend credits. Get approval before calling client.training.start, client.exports.create, or client.deployments.create, then report the cost returned by the create response. Get approval before deletes. Resource deletes move projects, datasets, and models to 30-day trash. client.lifecycle.delete_trash is permanent.
| Case | Status | Duration (ms) | Turns | Tokens | Tool calls | ||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| Without | With | Δ | Without | With | Δ | Without | With | Δ | Without | With | Δ | ||
case-19 | pass→pass | 14,991 | 7,313 | -51% | 1 | 1 | 0% | 1,500 | 1,202 | -20% | 0 | 0 | — |
case-13 | fail→pass | 21,982 | 18,822 | -14% | 1 | 1 | 0% | 3,133 | 2,859 | -9% | 0 | 0 | — |
case-01 | fail→pass | 17,911 | 14,952 | -17% | 1 | 1 | 0% | 1,872 | 2,388 | +28% | 0 | 0 | — |
case-02 | fail→pass | 29,563 | 18,787 | -36% | 1 | 1 | 0% | 3,779 | 3,862 | +2% | 0 | 0 | — |
case-03 | fail→pass | 15,236 | 15,435 | +1% | 1 | 1 | 0% | 1,924 | 3,267 | +70% | 0 | 0 | — |
case-04 | fail→pass | 14,746 | 12,647 | -14% | 1 | 1 | 0% | 1,689 | 2,013 | +19% | 0 | 0 | — |
case-05 | pass→pass | 22,646 | 12,933 | -43% | 1 | 1 | 0% | 3,260 | 2,741 | -16% | 0 | 0 | — |
case-06 | fail→pass | 16,052 | 6,978 | -57% | 1 | 1 | 0% | 2,433 | 2,163 | -11% | 0 | 0 | — |
case-07 | pass→pass | 23,157 | 16,090 | -31% | 1 | 1 | 0% | 2,732 | 2,527 | -8% | 0 | 0 | — |
case-08 | pass→pass | 20,215 | 19,204 | -5% | 1 | 1 | 0% | 2,126 | 3,142 | +48% | 0 | 0 | — |
case-09 | fail→pass | 20,259 | 13,520 | -33% | 1 | 1 | 0% | 2,199 | 1,995 | -9% | 0 | 0 | — |
case-10 | fail→pass | 24,099 | 16,724 | -31% | 1 | 1 | 0% | 3,215 | 2,609 | -19% | 0 | 0 | — |
case-11 | pass→fail | 18,379 | 16,236 | -12% | 1 | 1 | 0% | 2,272 | 2,958 | +30% | 0 | 0 | — |
case-12 | fail→pass | 30,776 | 16,473 | -46% | 1 | 1 | 0% | 4,021 | 2,945 | -27% | 0 | 0 | — |
case-14 | fail→pass | 18,492 | 9,680 | -48% | 1 | 1 | 0% | 1,827 | 1,535 | -16% | 0 | 0 | — |
case-15 | fail→pass | 27,183 | 18,257 | -33% | 1 | 1 | 0% | 3,027 | 3,554 | +17% | 0 | 0 | — |
case-16 | fail→pass | 14,091 | 8,691 | -38% | 1 | 1 | 0% | 1,228 | 1,346 | +10% | 0 | 0 | — |
case-17 | pass→pass | 15,939 | 9,064 | -43% | 1 | 1 | 0% | 1,454 | 1,529 | +5% | 0 | 0 | — |
case-18 | fail→pass | 21,033 | 11,139 | -47% | 1 | 1 | 0% | 2,701 | 1,880 | -30% | 0 | 0 | — |
case-20 | pass→pass | 8,590 | 10,179 | +18% | 1 | 1 | 0% | 576 | 1,554 | +170% | 0 | 0 | — |
case-21 | pass→pass | 10,415 | 9,168 | -12% | 1 | 1 | 0% | 596 | 1,491 | +150% | 0 | 0 | — |
case-22 | pass→pass | 12,905 | 8,656 | -33% | 1 | 1 | 0% | 1,113 | 1,569 | +41% | 0 | 0 | — |
DecimalAI ran this skill against gemini-3.6-flash twice over the same eval suite — once with the skill loaded and once without — and compared the two runs case by case. 22 cases were attempted. The headline lift of +55 percentage points is the difference between those two pass rates over the 22 comparable cases. 1 case got worse with the skill loaded, and it is included in that figure.
Without the skill loaded, the model failed this case. With it loaded, the same prompt on the same model passed. This is one improved case from the latest verified run; every case, including any that regressed, is in the table above.
| Model | Method | Date | Lift |
|---|---|---|---|
| gemini-3.6-flash | verified | 8/30/2026 | +50% |
Other measured skills in the registry, with their headline benchmark lift.