{"id":"d178f234-9f85-49de-a192-c1c5622707ba","shortId":"3jEfdq","kind":"skill","title":"pilot-ci-cd-pipeline-setup","tagline":"Deploy a decentralized CI/CD pipeline with 3 agents.  Use this skill when: 1. User wants to set up a CI/CD pipeline across multiple agents 2. User is configuring a build, test, or deploy agent 3. User asks about automated build/test/deploy workflows  Do NOT use this skill when: -","description":"# CI/CD Pipeline Setup\n\nDeploy 3 agents that build, test, and deploy code with zero central server.\n\n## Roles\n\n| Role | Hostname | Skills | Purpose |\n|------|----------|--------|---------|\n| ci-builder | `<prefix>-ci-builder` | pilot-task-router, pilot-share, pilot-github-bridge | Builds code, shares artifacts |\n| ci-tester | `<prefix>-ci-tester` | pilot-task-router, pilot-share, pilot-audit-log | Runs tests, logs results |\n| ci-deployer | `<prefix>-ci-deployer` | pilot-task-router, pilot-share, pilot-webhook-bridge, pilot-receipt | Deploys, sends receipts |\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 ci-builder:\nclawhub install pilot-task-router pilot-share pilot-github-bridge\n# For ci-tester:\nclawhub install pilot-task-router pilot-share pilot-audit-log\n# For ci-deployer:\nclawhub install pilot-task-router pilot-share pilot-webhook-bridge pilot-receipt\n```\n\n**Step 3:** Set the hostname:\n```bash\npilotctl --json set-hostname <prefix>-<role>\n```\n\n**Step 4:** Write the setup manifest:\n```bash\nmkdir -p ~/.pilot/setups\n```\nThen write the role-specific JSON manifest to `~/.pilot/setups/ci-cd-pipeline.json`.\n\n**Step 5:** Tell the user to initiate handshakes with direct communication peers.\n\n## Manifest Templates Per Role\n\n### ci-builder\n```json\n{\n  \"setup\": \"ci-cd-pipeline\",\n  \"setup_name\": \"CI/CD Pipeline\",\n  \"role\": \"ci-builder\",\n  \"role_name\": \"Build Agent\",\n  \"hostname\": \"<prefix>-ci-builder\",\n  \"description\": \"Listens for GitHub push/PR webhooks, clones the repo, runs builds, and shares artifacts with the test agent.\",\n  \"skills\": {\n    \"pilot-task-router\": \"Accept build requests and route artifacts to ci-tester.\",\n    \"pilot-share\": \"Send build artifacts (tarballs, binaries) to ci-tester.\",\n    \"pilot-github-bridge\": \"Listen for GitHub webhooks (push, PR) to trigger builds.\"\n  },\n  \"peers\": [\n    { \"role\": \"ci-tester\", \"hostname\": \"<prefix>-ci-tester\", \"description\": \"Receives build artifacts for testing\" },\n    { \"role\": \"ci-deployer\", \"hostname\": \"<prefix>-ci-deployer\", \"description\": \"Receives deployment receipt\" }\n  ],\n  \"data_flows\": [\n    { \"direction\": \"send\", \"peer\": \"<prefix>-ci-tester\", \"port\": 1001, \"topic\": \"build-ready\", \"description\": \"Build artifacts and test instructions\" },\n    { \"direction\": \"receive\", \"peer\": \"<prefix>-ci-deployer\", \"port\": 1002, \"topic\": \"deploy-receipt\", \"description\": \"Deployment confirmation\" }\n  ],\n  \"handshakes_needed\": [\"<prefix>-ci-tester\", \"<prefix>-ci-deployer\"]\n}\n```\n\n### ci-tester\n```json\n{\n  \"setup\": \"ci-cd-pipeline\",\n  \"setup_name\": \"CI/CD Pipeline\",\n  \"role\": \"ci-tester\",\n  \"role_name\": \"Test Agent\",\n  \"hostname\": \"<prefix>-ci-tester\",\n  \"description\": \"Receives build artifacts, runs test suites, and logs results. Passes successful builds to the deployer.\",\n  \"skills\": {\n    \"pilot-task-router\": \"Accept test tasks from ci-builder and forward passing builds to ci-deployer.\",\n    \"pilot-share\": \"Receive artifacts from ci-builder, send tested artifacts to ci-deployer.\",\n    \"pilot-audit-log\": \"Log all test runs with pass/fail results and coverage.\"\n  },\n  \"peers\": [\n    { \"role\": \"ci-builder\", \"hostname\": \"<prefix>-ci-builder\", \"description\": \"Sends build artifacts\" },\n    { \"role\": \"ci-deployer\", \"hostname\": \"<prefix>-ci-deployer\", \"description\": \"Receives tested artifacts\" }\n  ],\n  \"data_flows\": [\n    { \"direction\": \"receive\", \"peer\": \"<prefix>-ci-builder\", \"port\": 1001, \"topic\": \"build-ready\", \"description\": \"Build artifacts\" },\n    { \"direction\": \"send\", \"peer\": \"<prefix>-ci-deployer\", \"port\": 1001, \"topic\": \"tests-passed\", \"description\": \"Tested artifacts with report\" }\n  ],\n  \"handshakes_needed\": [\"<prefix>-ci-builder\", \"<prefix>-ci-deployer\"]\n}\n```\n\n### ci-deployer\n```json\n{\n  \"setup\": \"ci-cd-pipeline\",\n  \"setup_name\": \"CI/CD Pipeline\",\n  \"role\": \"ci-deployer\",\n  \"role_name\": \"Deploy Agent\",\n  \"hostname\": \"<prefix>-ci-deployer\",\n  \"description\": \"Receives tested artifacts, deploys to production, sends deployment receipts, and triggers post-deploy webhooks.\",\n  \"skills\": {\n    \"pilot-task-router\": \"Accept deploy tasks from ci-tester.\",\n    \"pilot-share\": \"Receive tested artifacts from ci-tester.\",\n    \"pilot-webhook-bridge\": \"Trigger post-deploy webhooks (Slack, monitoring).\",\n    \"pilot-receipt\": \"Send deployment receipts back to ci-builder.\"\n  },\n  \"peers\": [\n    { \"role\": \"ci-builder\", \"hostname\": \"<prefix>-ci-builder\", \"description\": \"Receives deployment receipt\" },\n    { \"role\": \"ci-tester\", \"hostname\": \"<prefix>-ci-tester\", \"description\": \"Sends tested artifacts\" }\n  ],\n  \"data_flows\": [\n    { \"direction\": \"receive\", \"peer\": \"<prefix>-ci-tester\", \"port\": 1001, \"topic\": \"tests-passed\", \"description\": \"Tested artifacts\" },\n    { \"direction\": \"send\", \"peer\": \"<prefix>-ci-builder\", \"port\": 1002, \"topic\": \"deploy-receipt\", \"description\": \"Deployment confirmation\" }\n  ],\n  \"handshakes_needed\": [\"<prefix>-ci-builder\", \"<prefix>-ci-tester\"]\n}\n```\n\n## Data Flows\n\n- `ci-builder → ci-tester` : build artifacts (port 1001)\n- `ci-tester → ci-deployer` : tested artifacts with test report (port 1001)\n- `ci-deployer → ci-builder` : deployment receipt (port 1002)\n\n## Handshakes\n\n```bash\n# All three agents handshake each other:\npilotctl --json handshake <prefix>-ci-tester \"setup: ci-cd-pipeline\"\npilotctl --json handshake <prefix>-ci-deployer \"setup: ci-cd-pipeline\"\npilotctl --json handshake <prefix>-ci-builder \"setup: ci-cd-pipeline\"\n```\n\n## Workflow Example\n\n```bash\n# On ci-builder — send build artifact:\npilotctl --json send-file <prefix>-ci-tester ./build/app-v2.3.tar.gz\npilotctl --json publish <prefix>-ci-tester build-ready '{\"commit\":\"a1b2c3d\",\"branch\":\"main\"}'\n\n# On ci-tester — forward to deployer:\npilotctl --json send-file <prefix>-ci-deployer ./build/app-v2.3.tar.gz\npilotctl --json publish <prefix>-ci-deployer tests-passed '{\"commit\":\"a1b2c3d\",\"tests\":142,\"passed\":142}'\n\n# On ci-deployer — send receipt:\npilotctl --json publish <prefix>-ci-builder deploy-receipt '{\"commit\":\"a1b2c3d\",\"status\":\"success\"}'\n```\n\n## Dependencies\n\nRequires `pilot-protocol` skill, `pilotctl` binary, `clawhub` binary, and a running daemon.","tags":["pilot","pipeline","setup","skills","teoslayer","agent-skills","ai-agents","clawhub","networking","openclaw","overlay-network","p2p"],"capabilities":["skill","source-teoslayer","skill-pilot-ci-cd-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-ci-cd-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,201 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:52.549Z","embedding":null,"createdAt":"2026-05-18T13:22:35.842Z","updatedAt":"2026-05-18T19:14:52.549Z","lastSeenAt":"2026-05-18T19:14:52.549Z","tsv":"'/.pilot/setups':242 '/.pilot/setups/ci-cd-pipeline.json':252 '/build/app-v2.3.tar.gz':823,852 '1':19,143 '1001':388,546,561,698,740,753 '1002':406,713,763 '142':865,867 '2':31,159 '3':13,41,58,223 '4':234 '5':254 'a1b2c3d':834,863,884 'accept':317,468,625 'across':28 'agent':14,30,40,59,150,289,311,442,599,768 'artifact':95,307,322,332,364,395,450,487,494,524,536,553,568,607,637,688,705,738,748,814 'ask':43,144 'audit':111,200,501 'autom':45 'back':659 'bash':167,227,239,765,807 'binari':334,894,896 'branch':835 'bridg':91,133,184,218,342,645 'build':36,61,92,288,304,318,331,351,363,391,394,449,459,478,523,549,552,737,813,831 'build-readi':390,548,830 'build/test/deploy':46 'builder':77,80,171,271,285,293,474,491,516,520,544,575,663,668,672,711,725,733,759,799,811,879 'cd':4,276,429,586,781,792,803 'central':68 'chosen':165 'ci':3,76,79,97,100,118,121,170,187,204,270,275,284,292,325,337,355,359,369,373,385,403,417,420,423,428,437,445,473,481,490,497,515,519,527,531,543,558,574,577,580,585,594,602,630,640,662,667,671,679,683,695,710,724,727,732,735,742,745,755,758,776,780,787,791,798,802,810,821,828,839,850,857,870,878 'ci-build':75,78,169,269,283,291,472,489,514,518,542,573,661,666,670,709,723,731,757,797,809,877 'ci-cd-pipelin':274,427,584,779,790,801 'ci-deploy':117,120,203,368,372,402,419,480,496,526,530,557,576,579,593,601,744,754,786,849,856,869 'ci-test':96,99,186,324,336,354,358,384,416,422,436,444,629,639,678,682,694,726,734,741,775,820,827,838 'ci/cd':10,26,54,280,433,590 'clawhub':172,189,206,895 'clone':300 'code':65,93 'commit':833,862,883 'communic':263 'configur':34 'confirm':413,720 'coverag':511 'daemon':900 'data':379,537,689,729 'decentr':9 'depend':887 'deploy':7,39,57,64,119,122,137,205,370,374,377,404,409,412,421,462,482,498,528,532,559,578,581,595,598,603,608,612,618,626,649,657,675,716,719,746,756,760,788,843,851,858,871,881 'deploy-receipt':408,715,880 'descript':294,361,375,393,411,447,521,533,551,566,604,673,685,703,718 'direct':262,381,399,539,554,691,706 'exampl':806 'file':819,848 'flow':380,538,690,730 'forward':476,841 'github':90,183,297,341,345 'handshak':260,414,571,721,764,769,774,785,796 'hostnam':72,226,232,290,357,371,443,517,529,600,669,681 'initi':259 'instal':160,173,190,207 'instruct':398 'json':229,249,272,425,582,773,784,795,816,825,845,854,875 'listen':295,343 'log':112,115,201,455,502,503 'main':836 'manifest':238,250,265 'mkdir':240 'monitor':652 'multipl':29 'name':279,287,432,440,589,597 'need':415,572,722 'p':241 'pass':457,477,565,702,861,866 'pass/fail':508 'peer':264,352,383,401,512,541,556,664,693,708 'per':267 'pilot':2,82,86,89,103,107,110,124,128,131,135,175,179,182,192,196,199,209,213,216,220,314,328,340,465,484,500,622,633,643,654,890 'pilot-audit-log':109,198,499 'pilot-ci-cd-pipeline-setup':1 'pilot-github-bridg':88,181,339 'pilot-protocol':889 'pilot-receipt':134,219,653 'pilot-shar':85,106,127,178,195,212,327,483,632 'pilot-task-rout':81,102,123,174,191,208,313,464,621 'pilot-webhook-bridg':130,215,642 'pilotctl':228,772,783,794,815,824,844,853,874,893 'pipelin':5,11,27,55,277,281,430,434,587,591,782,793,804 'play':152 'port':387,405,545,560,697,712,739,752,762 'post':617,648 'post-deploy':616,647 'pr':348 'prefix':155 'procedur':141 'product':610 'protocol':891 'publish':826,855,876 'purpos':74 'push':347 'push/pr':298 'readi':392,550,832 'receipt':136,139,221,378,410,613,655,658,676,717,761,873,882 'receiv':362,376,400,448,486,534,540,605,635,674,692 'repo':302 'report':570,751 'request':319 'requir':888 'result':116,456,509 'role':70,71,148,166,247,268,282,286,353,367,435,439,513,525,592,596,665,677 'role-specif':246 'rout':321 'router':84,105,126,177,194,211,316,467,624 'run':113,303,451,506,899 'send':138,330,382,492,522,555,611,656,686,707,812,818,847,872 'send-fil':817,846 'server':69 'set':23,224,231 'set-hostnam':230 'setup':6,56,140,237,273,278,426,431,583,588,778,789,800 'share':87,94,108,129,180,197,214,306,329,485,634 'skill':17,52,73,162,312,463,620,892 'skill-pilot-ci-cd-pipeline-setup' 'slack':651 'source-teoslayer' 'specif':248 'status':885 'step':142,158,222,233,253 'success':458,886 'suit':453 'tarbal':333 'task':83,104,125,176,193,210,315,466,470,623,627 'tell':255 'templat':266 'test':37,62,114,310,366,397,441,452,469,493,505,535,564,567,606,636,687,701,704,747,750,860,864 'tester':98,101,188,326,338,356,360,386,418,424,438,446,631,641,680,684,696,728,736,743,777,822,829,840 'tests-pass':563,700,859 'three':767 'topic':389,407,547,562,699,714 'topic-agent-skills' 'topic-ai-agents' 'topic-clawhub' 'topic-networking' 'topic-openclaw' 'topic-overlay-network' 'topic-p2p' 'topic-pilot-protocol' 'trigger':350,615,646 'use':15,50,157 'user':20,32,42,146,257 'want':21 'webhook':132,217,299,346,619,644,650 'workflow':47,805 'write':235,244 'zero':67","prices":[{"id":"db883ff0-e4f3-43da-814f-bbd539e24324","listingId":"d178f234-9f85-49de-a192-c1c5622707ba","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:35.842Z"}],"sources":[{"listingId":"d178f234-9f85-49de-a192-c1c5622707ba","source":"github","sourceId":"TeoSlayer/pilot-skills/pilot-ci-cd-pipeline-setup","sourceUrl":"https://github.com/TeoSlayer/pilot-skills/tree/main/skills/pilot-ci-cd-pipeline-setup","isPrimary":false,"firstSeenAt":"2026-05-18T13:22:35.842Z","lastSeenAt":"2026-05-18T19:14:52.549Z"}],"details":{"listingId":"d178f234-9f85-49de-a192-c1c5622707ba","quickStartSnippet":null,"exampleRequest":null,"exampleResponse":null,"schema":null,"openapiUrl":null,"agentsTxtUrl":null,"citations":[],"useCases":[],"bestFor":[],"notFor":[],"kindDetails":{"org":"TeoSlayer","slug":"pilot-ci-cd-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":"863c803edf333a9b335198a3e7aea71347d442c1","skill_md_path":"skills/pilot-ci-cd-pipeline-setup/SKILL.md","default_branch":"main","skill_tree_url":"https://github.com/TeoSlayer/pilot-skills/tree/main/skills/pilot-ci-cd-pipeline-setup"},"layout":"multi","source":"github","category":"pilot-skills","frontmatter":{"name":"pilot-ci-cd-pipeline-setup","license":"AGPL-3.0","description":"Deploy a decentralized CI/CD pipeline with 3 agents.  Use this skill when: 1. User wants to set up a CI/CD pipeline across multiple agents 2. User is configuring a build, test, or deploy agent 3. User asks about automated build/test/deploy workflows  Do NOT use this skill when: - User wants to route a single task (use pilot-task-router instead) - User wants to share a single file (use pilot-share instead)"},"skills_sh_url":"https://skills.sh/TeoSlayer/pilot-skills/pilot-ci-cd-pipeline-setup"},"updatedAt":"2026-05-18T19:14:52.549Z"}}