{"id":"349c60b8-975a-4e2f-b105-e24684725291","shortId":"bCy7Da","kind":"skill","title":"bridge-safe-command-advertising","tagline":"Advertise only slash commands that a bridge client can actually invoke by filtering announcements with the same bridge-safety predicate used at execution time.","description":"# SKILL: Bridge Safe Command Advertising\n**Domain:** command-architecture\n**Trigger:** Use when a bridged or remote client receives an announced slash-command list and that list must stay aligned with the commands the runtime will actually execute for bridge-originated input.\n**Source Pattern:** Distilled from reviewed remote-control, bridge transport, and capability-advertising implementations.\n\n## Core Method\nFilter the command list before serializing any remote capability announcement, and filter it with the exact same bridge-safety predicate the runtime will use when the remote client later invokes a slash command. Let the shared serializer keep its generic user-invocable check, but pass it a prefiltered list that already excludes bridge-unsafe commands. This keeps the announced surface honest: every command the client sees is one the bridge path can actually execute, and every command the bridge path rejects stays undiscoverable instead of becoming a guaranteed dead end.\n\n## Key Rules\n- Reuse the runtime bridge-safety predicate at announcement time instead of inventing a second listing-only filter.\n- Apply the bridge-safe filter before generic serializers flatten commands into plain names; once only names remain, execution-policy drift is harder to spot and correct.\n- Keep shared message builders transport-agnostic: they may still filter out non-user-invocable entries, but transport-specific safety should be decided by the caller that owns that transport.\n- Treat advertised command lists as part of the execution contract, not as best-effort discoverability metadata.\n- When bridge execution rules change, update the shared predicate so announcement and invocation stay synchronized automatically.\n\n## Example Application\nWhen a CLI session opens a phone companion over a bridge and emits system init, filter the command registry through is bridge safe command before calling the generic init-message builder. The serialized `slash_commands` list then includes summary and compact, but omits local-only UI commands such as model that the bridge path would reject later.\n\n## Anti-Patterns (What NOT to do)\n- Do not advertise every user-invocable command and rely on runtime failures to teach remote clients what is unsupported.\n- Do not maintain a separate announcement-only allowlist that can drift away from the real bridge execution gate.\n- Do not hide transport-specific safety inside the generic serializer when different callers may need different execution contracts.","tags":["bridge","safe","command","advertising","cskill","agents","ychampion","agent-skills","ai-agents","cli","coding-agents","context-engineering"],"capabilities":["skill","source-ychampion","skill-bridge-safe-command-advertising","topic-agent-skills","topic-ai-agents","topic-cli","topic-coding-agents","topic-context-engineering","topic-developer-tools","topic-mcp","topic-multi-agent","topic-terminal-ui"],"categories":["cskill-agents"],"synonyms":[],"warnings":[],"endpointUrl":"https://skills.sh/ychampion/cskill-agents/bridge-safe-command-advertising","protocol":"skill","transport":"skills-sh","auth":{"type":"none","details":{"cli":"npx skills add ychampion/cskill-agents","source_repo":"https://github.com/ychampion/cskill-agents","install_from":"skills.sh"}},"qualityScore":"0.467","qualityRationale":"deterministic score 0.47 from registry signals: · indexed on github topic:agent-skills · 34 github stars · SKILL.md body (2,503 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-04-22T06:56:45.513Z","embedding":null,"createdAt":"2026-04-18T22:19:50.603Z","updatedAt":"2026-04-22T06:56:45.513Z","lastSeenAt":"2026-04-22T06:56:45.513Z","tsv":"'actual':15,67,166 'advertis':5,6,35,87,266,368 'agnost':239 'align':60 'allowlist':394 'alreadi':143 'announc':19,50,100,152,194,292,392 'announcement-on':391 'anti':360 'anti-pattern':359 'appli':205 'applic':299 'architectur':39 'automat':297 'away':398 'becom':179 'best':278 'best-effort':277 'bridg':2,12,24,32,44,71,82,109,146,163,172,190,208,283,310,321,354,402 'bridge-origin':70 'bridge-saf':207 'bridge-safe-command-advertis':1 'bridge-safeti':23,108,189 'bridge-unsaf':145 'builder':236,331 'call':325 'caller':260,418 'capability-advertis':85 'capabl':86,99 'chang':286 'check':135 'cli':302 'client':13,47,119,158,382 'command':4,9,34,38,53,63,93,124,148,156,170,215,267,317,323,335,348,373 'command-architectur':37 'compact':341 'companion':307 'contract':274,423 'control':81 'core':89 'correct':232 'dead':182 'decid':257 'differ':417,421 'discover':280 'distil':76 'domain':36 'drift':226,397 'effort':279 'emit':312 'end':183 'entri':249 'everi':155,169,369 'exact':106 'exampl':298 'exclud':144 'execut':29,68,167,224,273,284,403,422 'execution-polici':223 'failur':378 'filter':18,91,102,204,210,243,315 'flatten':214 'gate':404 'generic':131,212,327,414 'guarante':181 'harder':228 'hide':407 'honest':154 'implement':88 'includ':338 'init':314,329 'init-messag':328 'input':73 'insid':412 'instead':177,196 'invent':198 'invoc':134,248,294,372 'invok':16,121 'keep':129,150,233 'key':184 'later':120,358 'let':125 'list':54,57,94,141,202,268,336 'listing-on':201 'local':345 'local-on':344 'maintain':388 'may':241,419 'messag':235,330 'metadata':281 'method':90 'model':351 'must':58 'name':218,221 'need':420 'non':246 'non-user-invoc':245 'omit':343 'one':161 'open':304 'origin':72 'own':262 'part':270 'pass':137 'path':164,173,355 'pattern':75,361 'phone':306 'plain':217 'polici':225 'predic':26,111,192,290 'prefilt':140 'real':401 'receiv':48 'registri':318 'reject':174,357 'reli':375 'remain':222 'remot':46,80,98,118,381 'remote-control':79 'reus':186 'review':78 'rule':185,285 'runtim':65,113,188,377 'safe':3,33,209,322 'safeti':25,110,191,254,411 'second':200 'see':159 'separ':390 'serial':96,128,213,333,415 'session':303 'share':127,234,289 'skill':31 'skill-bridge-safe-command-advertising' 'slash':8,52,123,334 'slash-command':51 'sourc':74 'source-ychampion' 'specif':253,410 'spot':230 'stay':59,175,295 'still':242 'summari':339 'surfac':153 'synchron':296 'system':313 'teach':380 'time':30,195 'topic-agent-skills' 'topic-ai-agents' 'topic-cli' 'topic-coding-agents' 'topic-context-engineering' 'topic-developer-tools' 'topic-mcp' 'topic-multi-agent' 'topic-terminal-ui' 'transport':83,238,252,264,409 'transport-agnost':237 'transport-specif':251,408 'treat':265 'trigger':40 'ui':347 'undiscover':176 'unsaf':147 'unsupport':385 'updat':287 'use':27,41,115 'user':133,247,371 'user-invoc':132,370 'would':356","prices":[{"id":"b2ca47a7-1e42-4d10-a7d0-26b17ead1da1","listingId":"349c60b8-975a-4e2f-b105-e24684725291","amountUsd":"0","unit":"free","nativeCurrency":null,"nativeAmount":null,"chain":null,"payTo":null,"paymentMethod":"skill-free","isPrimary":true,"details":{"org":"ychampion","category":"cskill-agents","install_from":"skills.sh"},"createdAt":"2026-04-18T22:19:50.603Z"}],"sources":[{"listingId":"349c60b8-975a-4e2f-b105-e24684725291","source":"github","sourceId":"ychampion/cskill-agents/bridge-safe-command-advertising","sourceUrl":"https://github.com/ychampion/cskill-agents/tree/main/skills/bridge-safe-command-advertising","isPrimary":false,"firstSeenAt":"2026-04-18T22:19:50.603Z","lastSeenAt":"2026-04-22T06:56:45.513Z"}],"details":{"listingId":"349c60b8-975a-4e2f-b105-e24684725291","quickStartSnippet":null,"exampleRequest":null,"exampleResponse":null,"schema":null,"openapiUrl":null,"agentsTxtUrl":null,"citations":[],"useCases":[],"bestFor":[],"notFor":[],"kindDetails":{"org":"ychampion","slug":"bridge-safe-command-advertising","github":{"repo":"ychampion/cskill-agents","stars":34,"topics":["agent-skills","ai-agents","cli","coding-agents","context-engineering","developer-tools","mcp","multi-agent","terminal-ui"],"license":"mit","html_url":"https://github.com/ychampion/cskill-agents","pushed_at":"2026-04-04T14:13:23Z","description":"Agent skills for coding CLIs, multi-agent runtimes, context engines, MCP extensions, and terminal tooling. Instead of using claude code's source code, give your agent skills to create your own!","skill_md_sha":"f6f108d43941bd10f9ba2900d6e95b74debe12ae","skill_md_path":"skills/bridge-safe-command-advertising/SKILL.md","default_branch":"main","skill_tree_url":"https://github.com/ychampion/cskill-agents/tree/main/skills/bridge-safe-command-advertising"},"layout":"multi","source":"github","category":"cskill-agents","frontmatter":{"name":"bridge-safe-command-advertising","description":"Advertise only slash commands that a bridge client can actually invoke by filtering announcements with the same bridge-safety predicate used at execution time."},"skills_sh_url":"https://skills.sh/ychampion/cskill-agents/bridge-safe-command-advertising"},"updatedAt":"2026-04-22T06:56:45.513Z"}}