{"id":"e64e2c95-fd12-4d0d-a93c-75600eac4086","shortId":"qcFgQ7","kind":"skill","title":"pilot-ml-training-pipeline-setup","tagline":"Deploy an end-to-end ML training pipeline with 4 agents.  Use this skill when: 1. User wants to set up a machine learning training pipeline 2. User is configuring a data prep, training, evaluation, or serving agent 3. User asks about ML model lifecycle management across agents  D","description":"# ML Training Pipeline Setup\n\nDeploy 4 agents spanning data prep, training, evaluation, and serving.\n\n## Roles\n\n| Role | Hostname | Skills | Purpose |\n|------|----------|--------|---------|\n| data-prep | `<prefix>-data-prep` | pilot-dataset, pilot-share, pilot-task-chain | Cleans and transforms datasets |\n| trainer | `<prefix>-trainer` | pilot-dataset, pilot-model-share, pilot-metrics, pilot-task-chain | Trains models, tracks metrics |\n| evaluator | `<prefix>-evaluator` | pilot-model-share, pilot-metrics, pilot-review, pilot-task-chain | Evaluates and gates promotion |\n| serving | `<prefix>-serving` | pilot-model-share, pilot-health, pilot-webhook-bridge, pilot-load-balancer, pilot-metrics | Serves inference requests |\n\n## Setup Procedure\n\n**Step 1:** Ask the user which role this agent should play and what prefix to use.\n\n**Step 2:** Install the skills for the chosen role:\n```bash\n# For data-prep:\nclawhub install pilot-dataset pilot-share pilot-task-chain\n# For trainer:\nclawhub install pilot-dataset pilot-model-share pilot-metrics pilot-task-chain\n# For evaluator:\nclawhub install pilot-model-share pilot-metrics pilot-review pilot-task-chain\n# For serving:\nclawhub install pilot-model-share pilot-health pilot-webhook-bridge pilot-load-balancer pilot-metrics\n```\n\n**Step 3:** Set the hostname:\n```bash\npilotctl --json set-hostname <prefix>-<role>\n```\n\n**Step 4:** Write the role-specific JSON manifest to `~/.pilot/setups/ml-training-pipeline.json`.\n\n**Step 5:** Tell the user to initiate handshakes with direct communication peers.\n\n## Manifest Templates Per Role\n\n### data-prep\n```json\n{\n  \"setup\": \"ml-training-pipeline\", \"role\": \"data-prep\", \"role_name\": \"Data Preparation\",\n  \"hostname\": \"<prefix>-data-prep\",\n  \"description\": \"Cleans, validates, and transforms raw datasets. Shares processed data with the trainer.\",\n  \"skills\": {\n    \"pilot-dataset\": \"Exchange structured datasets with schema negotiation.\",\n    \"pilot-share\": \"Send cleaned dataset files to <prefix>-trainer.\",\n    \"pilot-task-chain\": \"Chain data prep steps into sequential pipeline.\"\n  },\n  \"peers\": [{ \"role\": \"trainer\", \"hostname\": \"<prefix>-trainer\", \"description\": \"Receives prepared datasets\" }],\n  \"data_flows\": [{ \"direction\": \"send\", \"peer\": \"<prefix>-trainer\", \"port\": 1001, \"topic\": \"dataset-ready\", \"description\": \"Cleaned datasets\" }],\n  \"handshakes_needed\": [\"<prefix>-trainer\"]\n}\n```\n\n### trainer\n```json\n{\n  \"setup\": \"ml-training-pipeline\", \"role\": \"trainer\", \"role_name\": \"Model Trainer\",\n  \"hostname\": \"<prefix>-trainer\",\n  \"description\": \"Receives prepared datasets, runs training jobs, tracks metrics, and shares trained model artifacts.\",\n  \"skills\": {\n    \"pilot-dataset\": \"Receive prepared datasets from data-prep.\",\n    \"pilot-model-share\": \"Send trained model checkpoints to evaluator.\",\n    \"pilot-metrics\": \"Track and publish training loss, accuracy, epochs.\",\n    \"pilot-task-chain\": \"Chain training steps sequentially.\"\n  },\n  \"peers\": [\n    { \"role\": \"data-prep\", \"hostname\": \"<prefix>-data-prep\", \"description\": \"Sends prepared datasets\" },\n    { \"role\": \"evaluator\", \"hostname\": \"<prefix>-evaluator\", \"description\": \"Receives trained models\" }\n  ],\n  \"data_flows\": [\n    { \"direction\": \"receive\", \"peer\": \"<prefix>-data-prep\", \"port\": 1001, \"topic\": \"dataset-ready\", \"description\": \"Cleaned datasets\" },\n    { \"direction\": \"send\", \"peer\": \"<prefix>-evaluator\", \"port\": 1001, \"topic\": \"training-complete\", \"description\": \"Model checkpoints and metrics\" }\n  ],\n  \"handshakes_needed\": [\"<prefix>-data-prep\", \"<prefix>-evaluator\"]\n}\n```\n\n### evaluator\n```json\n{\n  \"setup\": \"ml-training-pipeline\", \"role\": \"evaluator\", \"role_name\": \"Model Evaluator\",\n  \"hostname\": \"<prefix>-evaluator\",\n  \"description\": \"Scores trained models against benchmarks and gates promotion to serving.\",\n  \"skills\": {\n    \"pilot-model-share\": \"Receive models from trainer, promote approved models to serving.\",\n    \"pilot-metrics\": \"Compare benchmarks, detect drift.\",\n    \"pilot-review\": \"Gate model promotion with approval workflow.\",\n    \"pilot-task-chain\": \"Chain evaluation steps.\"\n  },\n  \"peers\": [\n    { \"role\": \"trainer\", \"hostname\": \"<prefix>-trainer\", \"description\": \"Sends trained models\" },\n    { \"role\": \"serving\", \"hostname\": \"<prefix>-serving\", \"description\": \"Receives approved models\" }\n  ],\n  \"data_flows\": [\n    { \"direction\": \"receive\", \"peer\": \"<prefix>-trainer\", \"port\": 1001, \"topic\": \"training-complete\", \"description\": \"Model checkpoints\" },\n    { \"direction\": \"send\", \"peer\": \"<prefix>-serving\", \"port\": 1001, \"topic\": \"model-approved\", \"description\": \"Approved models\" },\n    { \"direction\": \"receive\", \"peer\": \"<prefix>-serving\", \"port\": 1002, \"topic\": \"inference-metrics\", \"description\": \"Drift detection data\" }\n  ],\n  \"handshakes_needed\": [\"<prefix>-trainer\", \"<prefix>-serving\"]\n}\n```\n\n### serving\n```json\n{\n  \"setup\": \"ml-training-pipeline\", \"role\": \"serving\", \"role_name\": \"Model Server\",\n  \"hostname\": \"<prefix>-serving\",\n  \"description\": \"Loads approved models, serves inference, monitors health, and load-balances.\",\n  \"skills\": {\n    \"pilot-model-share\": \"Receive approved models from evaluator.\",\n    \"pilot-health\": \"Monitor inference endpoint health and latency.\",\n    \"pilot-webhook-bridge\": \"Trigger external alerts on serving failures.\",\n    \"pilot-load-balancer\": \"Distribute inference requests across replicas.\",\n    \"pilot-metrics\": \"Report QPS, latency, drift metrics to evaluator.\"\n  },\n  \"peers\": [{ \"role\": \"evaluator\", \"hostname\": \"<prefix>-evaluator\", \"description\": \"Sends approved models, receives metrics\" }],\n  \"data_flows\": [\n    { \"direction\": \"receive\", \"peer\": \"<prefix>-evaluator\", \"port\": 1001, \"topic\": \"model-approved\", \"description\": \"Approved models\" },\n    { \"direction\": \"send\", \"peer\": \"<prefix>-evaluator\", \"port\": 1002, \"topic\": \"inference-metrics\", \"description\": \"Inference metrics for drift\" }\n  ],\n  \"handshakes_needed\": [\"<prefix>-evaluator\"]\n}\n```\n\n## Data Flows\n\n- `data-prep → trainer` : cleaned datasets (port 1001)\n- `trainer → evaluator` : model checkpoints and metrics (port 1001)\n- `evaluator → serving` : approved models (port 1001)\n- `serving → evaluator` : inference metrics for drift detection (port 1002)\n\n## Workflow Example\n\n```bash\n# On data-prep:\npilotctl --json send-file <prefix>-trainer ./datasets/training-v5.parquet\npilotctl --json publish <prefix>-trainer dataset-ready '{\"name\":\"training-v5\",\"rows\":150000}'\n# On trainer:\npilotctl --json send-file <prefix>-evaluator ./models/resnet-v5.pt\npilotctl --json publish <prefix>-evaluator training-complete '{\"model\":\"resnet-v5\",\"accuracy\":0.967}'\n# On evaluator:\npilotctl --json send-file <prefix>-serving ./models/resnet-v5.pt\npilotctl --json publish <prefix>-serving model-approved '{\"model\":\"resnet-v5\",\"benchmark\":0.971}'\n```\n\n## Dependencies\n\nRequires `pilot-protocol` skill, `pilotctl` binary, `clawhub` binary, and a running daemon.","tags":["pilot","training","pipeline","setup","skills","teoslayer","agent-skills","ai-agents","clawhub","networking","openclaw","overlay-network"],"capabilities":["skill","source-teoslayer","skill-pilot-ml-training-pipeline-setup","topic-agent-skills","topic-ai-agents","topic-clawhub","topic-networking","topic-openclaw","topic-overlay-network","topic-p2p","topic-pilot-protocol"],"categories":["pilot-skills"],"synonyms":[],"warnings":[],"endpointUrl":"https://skills.sh/TeoSlayer/pilot-skills/pilot-ml-training-pipeline-setup","protocol":"skill","transport":"skills-sh","auth":{"type":"none","details":{"cli":"npx skills add TeoSlayer/pilot-skills","source_repo":"https://github.com/TeoSlayer/pilot-skills","install_from":"skills.sh"}},"qualityScore":"0.453","qualityRationale":"deterministic score 0.45 from registry signals: · indexed on github topic:agent-skills · 6 github stars · SKILL.md body (6,877 chars)","verified":false,"liveness":"unknown","lastLivenessCheck":null,"agentReviews":{"count":0,"score_avg":null,"cost_usd_avg":null,"success_rate":null,"latency_p50_ms":null,"narrative_summary":null,"summary_updated_at":null},"enrichmentModel":"deterministic:skill-github:v1","enrichmentVersion":1,"enrichedAt":"2026-05-18T19:14:58.480Z","embedding":null,"createdAt":"2026-05-18T13:22:44.084Z","updatedAt":"2026-05-18T19:14:58.480Z","lastSeenAt":"2026-05-18T19:14:58.480Z","tsv":"'/.pilot/setups/ml-training-pipeline.json':282 '/datasets/training-v5.parquet':808 '/models/resnet-v5.pt':830,852 '0.967':843 '0.971':865 '1':23,162 '1001':379,488,501,604,617,736,771,779,785 '1002':630,749,794 '150000':821 '2':34,178 '3':46,262 '4':17,62,273 '5':284 'accuraci':448,842 'across':54,706 'agent':18,45,55,63,169 'alert':695 'approv':553,571,595,621,623,660,676,725,740,742,782,859 'artifact':418 'ask':48,163 'balanc':152,257,669,702 'bash':186,266,797 'benchmark':537,561,864 'binari':873,875 'bridg':148,253,692 'chain':91,111,131,202,220,238,355,356,453,454,576,577 'checkpoint':437,508,611,775 'chosen':184 'clawhub':191,205,223,241,874 'clean':92,321,347,385,494,768 'communic':293 'compar':560 'complet':505,608,837 'configur':37 'd':56 'daemon':879 'data':39,65,77,80,189,300,310,314,318,329,357,372,428,461,465,479,485,514,597,638,729,762,765,800 'data-prep':76,79,188,299,309,317,427,460,464,484,513,764,799 'dataset':84,95,100,195,209,326,336,339,348,371,382,386,408,422,425,470,491,495,769,814 'dataset-readi':381,490,813 'depend':866 'deploy':7,61 'descript':320,368,384,405,467,475,493,506,532,585,593,609,622,635,658,723,741,754 'detect':562,637,792 'direct':292,374,481,496,599,612,625,731,744 'distribut':703 'drift':563,636,714,758,791 'end':10,12 'end-to-end':9 'endpoint':685 'epoch':449 'evalu':42,68,116,117,132,222,439,472,474,499,516,517,525,529,531,578,679,717,720,722,734,747,761,773,780,787,829,834,845 'exampl':796 'exchang':337 'extern':694 'failur':698 'file':349,806,828,850 'flow':373,480,598,730,763 'gate':134,539,567 'handshak':290,387,511,639,759 'health':144,249,665,682,686 'hostnam':73,265,271,316,366,403,463,473,530,583,591,656,721 'infer':157,633,663,684,704,752,755,788 'inference-metr':632,751 'initi':289 'instal':179,192,206,224,242 'job':411 'json':268,279,302,391,518,644,803,810,825,832,847,854 'latenc':688,713 'learn':31 'lifecycl':52 'load':151,256,659,668,701 'load-bal':667 'loss':447 'machin':30 'manag':53 'manifest':280,295 'metric':107,115,124,155,216,231,260,413,442,510,559,634,710,715,728,753,756,777,789 'ml':3,13,50,57,305,394,521,647 'ml-training-pipelin':304,393,520,646 'model':51,103,113,120,140,212,227,245,401,417,432,436,478,507,528,535,546,549,554,568,588,596,610,620,624,654,661,673,677,726,739,743,774,783,838,858,860 'model-approv':619,738,857 'monitor':664,683 'name':313,400,527,653,816 'need':388,512,640,760 'negoti':342 'peer':294,363,376,458,483,498,580,601,614,627,718,733,746 'per':297 'pilot':2,83,86,89,99,102,106,109,119,123,126,129,139,143,146,150,154,194,197,200,208,211,215,218,226,230,233,236,244,248,251,255,259,335,344,353,421,431,441,451,545,558,565,574,672,681,690,700,709,869 'pilot-dataset':82,98,193,207,334,420 'pilot-health':142,247,680 'pilot-load-balanc':149,254,699 'pilot-metr':105,122,153,214,229,258,440,557,708 'pilot-ml-training-pipeline-setup':1 'pilot-model-shar':101,118,138,210,225,243,430,544,671 'pilot-protocol':868 'pilot-review':125,232,564 'pilot-shar':85,196,343 'pilot-task-chain':88,108,128,199,217,235,352,450,573 'pilot-webhook-bridg':145,250,689 'pilotctl':267,802,809,824,831,846,853,872 'pipelin':5,15,33,59,307,362,396,523,649 'play':171 'port':378,487,500,603,616,629,735,748,770,778,784,793 'prefix':174 'prep':40,66,78,81,190,301,311,319,358,429,462,466,486,515,766,801 'prepar':315,370,407,424,469 'procedur':160 'process':328 'promot':135,540,552,569 'protocol':870 'publish':445,811,833,855 'purpos':75 'qps':712 'raw':325 'readi':383,492,815 'receiv':369,406,423,476,482,548,594,600,626,675,727,732 'replica':707 'report':711 'request':158,705 'requir':867 'resnet':840,862 'resnet-v5':839,861 'review':127,234,566 'role':71,72,167,185,277,298,308,312,364,397,399,459,471,524,526,581,589,650,652,719 'role-specif':276 'row':820 'run':409,878 'schema':341 'score':533 'send':346,375,434,468,497,586,613,724,745,805,827,849 'send-fil':804,826,848 'sequenti':361,457 'serv':44,70,136,137,156,240,542,556,590,592,615,628,642,643,651,657,662,697,781,786,851,856 'server':655 'set':27,263,270 'set-hostnam':269 'setup':6,60,159,303,392,519,645 'share':87,104,121,141,198,213,228,246,327,345,415,433,547,674 'skill':21,74,181,333,419,543,670,871 'skill-pilot-ml-training-pipeline-setup' 'source-teoslayer' 'span':64 'specif':278 'step':161,177,261,272,283,359,456,579 'structur':338 'task':90,110,130,201,219,237,354,452,575 'tell':285 'templat':296 'topic':380,489,502,605,618,631,737,750 'topic-agent-skills' 'topic-ai-agents' 'topic-clawhub' 'topic-networking' 'topic-openclaw' 'topic-overlay-network' 'topic-p2p' 'topic-pilot-protocol' 'track':114,412,443 'train':4,14,32,41,58,67,112,306,395,410,416,435,446,455,477,504,522,534,587,607,648,818,836 'trainer':96,97,204,332,351,365,367,377,389,390,398,402,404,551,582,584,602,641,767,772,807,812,823 'training-complet':503,606,835 'training-v5':817 'transform':94,324 'trigger':693 'use':19,176 'user':24,35,47,165,287 'v5':819,841,863 'valid':322 'want':25 'webhook':147,252,691 'workflow':572,795 'write':274","prices":[{"id":"9fd1361c-443c-4340-9853-63117ff661ca","listingId":"e64e2c95-fd12-4d0d-a93c-75600eac4086","amountUsd":"0","unit":"free","nativeCurrency":null,"nativeAmount":null,"chain":null,"payTo":null,"paymentMethod":"skill-free","isPrimary":true,"details":{"org":"TeoSlayer","category":"pilot-skills","install_from":"skills.sh"},"createdAt":"2026-05-18T13:22:44.084Z"}],"sources":[{"listingId":"e64e2c95-fd12-4d0d-a93c-75600eac4086","source":"github","sourceId":"TeoSlayer/pilot-skills/pilot-ml-training-pipeline-setup","sourceUrl":"https://github.com/TeoSlayer/pilot-skills/tree/main/skills/pilot-ml-training-pipeline-setup","isPrimary":false,"firstSeenAt":"2026-05-18T13:22:44.084Z","lastSeenAt":"2026-05-18T19:14:58.480Z"}],"details":{"listingId":"e64e2c95-fd12-4d0d-a93c-75600eac4086","quickStartSnippet":null,"exampleRequest":null,"exampleResponse":null,"schema":null,"openapiUrl":null,"agentsTxtUrl":null,"citations":[],"useCases":[],"bestFor":[],"notFor":[],"kindDetails":{"org":"TeoSlayer","slug":"pilot-ml-training-pipeline-setup","github":{"repo":"TeoSlayer/pilot-skills","stars":6,"topics":["agent-skills","ai-agents","clawhub","networking","openclaw","overlay-network","p2p","pilot-protocol"],"license":"agpl-3.0","html_url":"https://github.com/TeoSlayer/pilot-skills","pushed_at":"2026-05-13T06:08:49Z","description":"80+ agent skills for Pilot Protocol — communication, file transfer, trust, task routing, swarm coordination, and more","skill_md_sha":"6c9df825401f469bed4f1b4706b4cdeddd29995a","skill_md_path":"skills/pilot-ml-training-pipeline-setup/SKILL.md","default_branch":"main","skill_tree_url":"https://github.com/TeoSlayer/pilot-skills/tree/main/skills/pilot-ml-training-pipeline-setup"},"layout":"multi","source":"github","category":"pilot-skills","frontmatter":{"name":"pilot-ml-training-pipeline-setup","license":"AGPL-3.0","description":"Deploy an end-to-end ML training pipeline with 4 agents.  Use this skill when: 1. User wants to set up a machine learning training pipeline 2. User is configuring a data prep, training, evaluation, or serving agent 3. User asks about ML model lifecycle management across agents  Do NOT use this skill when: - User wants to share a single model file (use pilot-model-share instead) - User wants to transfer a dataset (use pilot-dataset instead)"},"skills_sh_url":"https://skills.sh/TeoSlayer/pilot-skills/pilot-ml-training-pipeline-setup"},"updatedAt":"2026-05-18T19:14:58.480Z"}}