{"id":"623e6bf0-6e10-4a0a-b2a6-f0ce00bd6753","shortId":"qbsWU8","kind":"skill","title":"pilot-code-review-pipeline-setup","tagline":"Deploy an automated code review pipeline with 3 agents.  Use this skill when: 1. User wants to set up an automated code review or PR analysis pipeline 2. User is configuring an agent as part of a code review workflow 3. User asks about scanning PRs, reviewing code quality, or rep","description":"# Code Review Pipeline Setup\n\nDeploy 3 agents that scan PRs, analyze code quality, and report review results.\n\n## Roles\n\n| Role | Hostname | Skills | Purpose |\n|------|----------|--------|---------|\n| scanner | `<prefix>-scanner` | pilot-github-bridge, pilot-task-router, pilot-metrics | Runs static analysis and security scans on PRs |\n| reviewer | `<prefix>-reviewer` | pilot-event-filter, pilot-alert, pilot-audit-log | Analyzes scan results, suggests improvements |\n| reporter | `<prefix>-reporter` | pilot-webhook-bridge, pilot-slack-bridge, pilot-receipt | Posts PR comments, sends notifications |\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 scanner:\nclawhub install pilot-github-bridge pilot-task-router pilot-metrics\n\n# For reviewer:\nclawhub install pilot-event-filter pilot-alert pilot-audit-log\n\n# For reporter:\nclawhub install pilot-webhook-bridge pilot-slack-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\ncat > ~/.pilot/setups/code-review-pipeline.json << 'MANIFEST'\n{\n  \"setup\": \"code-review-pipeline\",\n  \"setup_name\": \"Code Review Pipeline\",\n  \"role\": \"<ROLE_ID>\",\n  \"role_name\": \"<ROLE_NAME>\",\n  \"hostname\": \"<prefix>-<role>\",\n  \"description\": \"<ROLE_DESCRIPTION>\",\n  \"skills\": { \"<skill>\": \"<contextual description>\" },\n  \"peers\": [ { \"role\": \"...\", \"hostname\": \"...\", \"description\": \"...\" } ],\n  \"data_flows\": [ { \"direction\": \"send|receive\", \"peer\": \"...\", \"port\": 1002, \"topic\": \"...\", \"description\": \"...\" } ],\n  \"handshakes_needed\": [ \"<peer-hostname>\" ]\n}\nMANIFEST\n```\n\n**Step 5:** Tell the user to initiate handshakes with direct communication peers.\n\n## Manifest Templates Per Role\n\n### scanner\n```json\n{\n  \"setup\": \"code-review-pipeline\", \"setup_name\": \"Code Review Pipeline\",\n  \"role\": \"scanner\", \"role_name\": \"Code Scanner\",\n  \"hostname\": \"<prefix>-scanner\",\n  \"description\": \"Runs static analysis, linting, and security scans on PRs.\",\n  \"skills\": {\n    \"pilot-github-bridge\": \"Watch for new PRs, fetch diffs and changed files for scanning.\",\n    \"pilot-task-router\": \"Route scan tasks across analysis tools and collect results.\",\n    \"pilot-metrics\": \"Track scan counts, finding severity distribution, and scan duration.\"\n  },\n  \"peers\": [\n    { \"role\": \"reviewer\", \"hostname\": \"<prefix>-reviewer\", \"description\": \"Receives scan results for code analysis\" },\n    { \"role\": \"reporter\", \"hostname\": \"<prefix>-reporter\", \"description\": \"Final stage — does not communicate directly\" }\n  ],\n  \"data_flows\": [\n    { \"direction\": \"send\", \"peer\": \"<prefix>-reviewer\", \"port\": 1002, \"topic\": \"scan-result\", \"description\": \"Scan results with findings and severity\" }\n  ],\n  \"handshakes_needed\": [\"<prefix>-reviewer\"]\n}\n```\n\n### reviewer\n```json\n{\n  \"setup\": \"code-review-pipeline\", \"setup_name\": \"Code Review Pipeline\",\n  \"role\": \"reviewer\", \"role_name\": \"Code Reviewer\",\n  \"hostname\": \"<prefix>-reviewer\",\n  \"description\": \"Analyzes scan results, checks code patterns, suggests improvements.\",\n  \"skills\": {\n    \"pilot-event-filter\": \"Filter scan results by severity and relevance before analysis.\",\n    \"pilot-alert\": \"Flag critical findings that need immediate attention.\",\n    \"pilot-audit-log\": \"Log all review decisions for compliance and traceability.\"\n  },\n  \"peers\": [\n    { \"role\": \"scanner\", \"hostname\": \"<prefix>-scanner\", \"description\": \"Sends scan results from PR analysis\" },\n    { \"role\": \"reporter\", \"hostname\": \"<prefix>-reporter\", \"description\": \"Receives review verdicts for reporting\" }\n  ],\n  \"data_flows\": [\n    { \"direction\": \"receive\", \"peer\": \"<prefix>-scanner\", \"port\": 1002, \"topic\": \"scan-result\", \"description\": \"Scan results with findings and severity\" },\n    { \"direction\": \"send\", \"peer\": \"<prefix>-reporter\", \"port\": 1002, \"topic\": \"review-verdict\", \"description\": \"Review verdict with suggestions and approval status\" }\n  ],\n  \"handshakes_needed\": [\"<prefix>-scanner\", \"<prefix>-reporter\"]\n}\n```\n\n### reporter\n```json\n{\n  \"setup\": \"code-review-pipeline\", \"setup_name\": \"Code Review Pipeline\",\n  \"role\": \"reporter\", \"role_name\": \"Review Reporter\",\n  \"hostname\": \"<prefix>-reporter\",\n  \"description\": \"Formats review results, posts PR comments, tracks metrics.\",\n  \"skills\": {\n    \"pilot-webhook-bridge\": \"Post review comments to GitHub PRs via webhook.\",\n    \"pilot-slack-bridge\": \"Send review summaries to Slack channels.\",\n    \"pilot-receipt\": \"Confirm delivery of review notifications to external systems.\"\n  },\n  \"peers\": [\n    { \"role\": \"scanner\", \"hostname\": \"<prefix>-scanner\", \"description\": \"First stage — does not communicate directly\" },\n    { \"role\": \"reviewer\", \"hostname\": \"<prefix>-reviewer\", \"description\": \"Sends review verdicts for reporting\" }\n  ],\n  \"data_flows\": [\n    { \"direction\": \"receive\", \"peer\": \"<prefix>-reviewer\", \"port\": 1002, \"topic\": \"review-verdict\", \"description\": \"Review verdict with suggestions and approval status\" },\n    { \"direction\": \"send\", \"peer\": \"external\", \"port\": 443, \"topic\": \"review-notification\", \"description\": \"Review notification posted to PR and Slack\" }\n  ],\n  \"handshakes_needed\": [\"<prefix>-reviewer\"]\n}\n```\n\n## Data Flows\n\n- `scanner -> reviewer` : scan-result events (port 1002)\n- `reviewer -> reporter` : review-verdict events (port 1002)\n- `reporter -> external` : review-notification via webhook (port 443)\n\n## Handshakes\n\n```bash\n# scanner and reviewer handshake with each other:\npilotctl --json handshake <prefix>-reviewer \"setup: code-review-pipeline\"\npilotctl --json handshake <prefix>-scanner \"setup: code-review-pipeline\"\n\n# reviewer and reporter handshake with each other:\npilotctl --json handshake <prefix>-reporter \"setup: code-review-pipeline\"\npilotctl --json handshake <prefix>-reviewer \"setup: code-review-pipeline\"\n```\n\n## Workflow Example\n\n```bash\n# On reviewer — subscribe to scan results:\npilotctl --json subscribe <prefix>-scanner scan-result\n\n# On reporter — subscribe to review verdicts:\npilotctl --json subscribe <prefix>-reviewer review-verdict\n\n# On scanner — publish a scan result:\npilotctl --json publish <prefix>-reviewer scan-result '{\"pr\":142,\"repo\":\"acme/api\",\"findings\":[{\"file\":\"auth.go\",\"line\":58,\"severity\":\"high\",\"rule\":\"sql-injection\"}]}'\n\n# On reviewer — publish a review verdict:\npilotctl --json publish <prefix>-reporter review-verdict '{\"pr\":142,\"status\":\"changes_requested\",\"comments\":1}'\n```\n\n## Dependencies\n\nRequires `pilot-protocol` skill, `pilotctl` binary, `clawhub` binary, and a running daemon.","tags":["pilot","code","review","pipeline","setup","skills","teoslayer","agent-skills","ai-agents","clawhub","networking","openclaw"],"capabilities":["skill","source-teoslayer","skill-pilot-code-review-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-code-review-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,625 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.827Z","embedding":null,"createdAt":"2026-05-18T13:22:36.197Z","updatedAt":"2026-05-18T19:14:52.827Z","lastSeenAt":"2026-05-18T19:14:52.827Z","tsv":"'/.pilot/setups':230 '/.pilot/setups/code-review-pipeline.json':232 '1':20,140,808 '1002':261,384,493,510,619,662,670 '142':775,803 '2':34,156 '3':14,47,63,211 '4':222 '443':637,679 '5':268 '58':782 'acme/api':777 'across':336 'agent':15,39,64,147 'alert':109,190,444 'analysi':32,95,306,337,365,441,475 'analyz':68,114,420 'approv':521,630 'ask':49,141 'attent':451 'audit':112,193,454 'auth.go':780 'autom':9,27 'bash':164,215,227,681,734 'binari':816,818 'bridg':85,124,128,172,202,206,317,560,572 'cat':231 'chang':325,805 'channel':578 'check':423 'chosen':162 'clawhub':167,182,197,817 'code':3,10,28,44,54,58,69,236,241,287,292,299,364,403,408,415,424,531,536,695,704,720,729 'code-review-pipelin':235,286,402,530,694,703,719,728 'collect':340 'comment':134,553,563,807 'communic':277,375,600 'complianc':461 'configur':37 'confirm':582 'count':347 'critic':446 'daemon':822 'data':254,377,486,612,653 'decis':459 'deliveri':583 'depend':809 'deploy':7,62 'descript':248,253,263,303,359,370,389,419,469,480,498,515,547,595,606,624,642 'diff':323 'direct':256,276,376,379,488,505,601,614,632 'distribut':350 'durat':353 'event':105,186,431,660,668 'exampl':733 'extern':588,635,672 'fetch':322 'file':326,779 'filter':106,187,432,433 'final':371 'find':348,393,447,502,778 'first':596 'flag':445 'flow':255,378,487,613,654 'format':548 'github':84,171,316,565 'handshak':264,274,396,523,650,680,685,691,700,710,716,725 'high':784 'hostnam':77,214,220,247,252,301,357,368,417,467,478,545,593,604 'immedi':450 'improv':118,427 'initi':273 'inject':788 'instal':157,168,183,198 'json':217,284,400,528,690,699,715,724,742,755,768,796 'line':781 'lint':307 'log':113,194,455,456 'manifest':226,233,266,279 'metric':92,179,344,555 'mkdir':228 'name':240,246,291,298,407,414,535,542 'need':265,397,449,524,651 'new':320 'notif':136,586,641,644,675 'p':229 'part':41 'pattern':425 'peer':250,259,278,354,381,464,490,507,590,616,634 'per':281 'pilot':2,83,87,91,104,108,111,122,126,130,170,174,178,185,189,192,200,204,208,315,330,343,430,443,453,558,570,580,812 'pilot-alert':107,188,442 'pilot-audit-log':110,191,452 'pilot-code-review-pipeline-setup':1 'pilot-event-filt':103,184,429 'pilot-github-bridg':82,169,314 'pilot-metr':90,177,342 'pilot-protocol':811 'pilot-receipt':129,207,579 'pilot-slack-bridg':125,203,569 'pilot-task-rout':86,173,329 'pilot-webhook-bridg':121,199,557 'pilotctl':216,689,698,714,723,741,754,767,795,815 'pipelin':5,12,33,60,238,243,289,294,405,410,533,538,697,706,722,731 'play':149 'port':260,383,492,509,618,636,661,669,678 'post':132,551,561,645 'pr':31,133,474,552,647,774,802 'prefix':152 'procedur':138 'protocol':813 'prs':52,67,100,312,321,566 'publish':763,769,791,797 'purpos':79 'qualiti':55,70 'receipt':131,209,581 'receiv':258,360,481,489,615 'relev':439 'rep':57 'repo':776 'report':72,119,120,196,367,369,477,479,485,508,526,527,540,544,546,611,664,671,709,717,749,798 'request':806 'requir':810 'result':74,116,341,362,388,391,422,435,472,497,500,550,659,740,747,766,773 'review':4,11,29,45,53,59,73,101,102,181,237,242,288,293,356,358,382,398,399,404,409,412,416,418,458,482,513,516,532,537,543,549,562,574,585,603,605,608,617,622,625,640,643,652,656,663,666,674,684,692,696,705,707,721,726,730,736,752,757,759,770,790,793,800 'review-notif':639,673 'review-verdict':512,621,665,758,799 'role':75,76,145,163,244,245,251,282,295,297,355,366,411,413,465,476,539,541,591,602 'rout':333 'router':89,176,332 'rule':785 'run':93,304,821 'scan':51,66,98,115,310,328,334,346,352,361,387,390,421,434,471,496,499,658,739,746,765,772 'scan-result':386,495,657,745,771 'scanner':80,81,166,283,296,300,302,466,468,491,525,592,594,655,682,701,744,762 'secur':97,309 'send':135,257,380,470,506,573,607,633 'set':24,212,219 'set-hostnam':218 'setup':6,61,137,225,234,239,285,290,401,406,529,534,693,702,718,727 'sever':349,395,437,504,783 'skill':18,78,159,249,313,428,556,814 'skill-pilot-code-review-pipeline-setup' 'slack':127,205,571,577,649 'source-teoslayer' 'sql':787 'sql-inject':786 'stage':372,597 'static':94,305 'status':522,631,804 'step':139,155,210,221,267 'subscrib':737,743,750,756 'suggest':117,426,519,628 'summari':575 'system':589 'task':88,175,331,335 'tell':269 'templat':280 'tool':338 'topic':262,385,494,511,620,638 'topic-agent-skills' 'topic-ai-agents' 'topic-clawhub' 'topic-networking' 'topic-openclaw' 'topic-overlay-network' 'topic-p2p' 'topic-pilot-protocol' 'traceabl':463 'track':345,554 'use':16,154 'user':21,35,48,143,271 'verdict':483,514,517,609,623,626,667,753,760,794,801 'via':567,676 'want':22 'watch':318 'webhook':123,201,559,568,677 'workflow':46,732 'write':223","prices":[{"id":"fe7bf421-ab6c-45fc-8baf-986731bdd2c3","listingId":"623e6bf0-6e10-4a0a-b2a6-f0ce00bd6753","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:36.197Z"}],"sources":[{"listingId":"623e6bf0-6e10-4a0a-b2a6-f0ce00bd6753","source":"github","sourceId":"TeoSlayer/pilot-skills/pilot-code-review-pipeline-setup","sourceUrl":"https://github.com/TeoSlayer/pilot-skills/tree/main/skills/pilot-code-review-pipeline-setup","isPrimary":false,"firstSeenAt":"2026-05-18T13:22:36.197Z","lastSeenAt":"2026-05-18T19:14:52.827Z"}],"details":{"listingId":"623e6bf0-6e10-4a0a-b2a6-f0ce00bd6753","quickStartSnippet":null,"exampleRequest":null,"exampleResponse":null,"schema":null,"openapiUrl":null,"agentsTxtUrl":null,"citations":[],"useCases":[],"bestFor":[],"notFor":[],"kindDetails":{"org":"TeoSlayer","slug":"pilot-code-review-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":"f8b9f495adb2188638cae03142ecbebb27457cb1","skill_md_path":"skills/pilot-code-review-pipeline-setup/SKILL.md","default_branch":"main","skill_tree_url":"https://github.com/TeoSlayer/pilot-skills/tree/main/skills/pilot-code-review-pipeline-setup"},"layout":"multi","source":"github","category":"pilot-skills","frontmatter":{"name":"pilot-code-review-pipeline-setup","license":"AGPL-3.0","description":"Deploy an automated code review pipeline with 3 agents.  Use this skill when: 1. User wants to set up an automated code review or PR analysis pipeline 2. User is configuring an agent as part of a code review workflow 3. User asks about scanning PRs, reviewing code quality, or reporting review results across agents  Do NOT use this skill when: - User wants a single static analysis run (use pilot-task-router instead) - User wants to send a one-off alert (use pilot-alert instead)"},"skills_sh_url":"https://skills.sh/TeoSlayer/pilot-skills/pilot-code-review-pipeline-setup"},"updatedAt":"2026-05-18T19:14:52.827Z"}}