{"id":"2c798eac-c204-463f-af01-f849af6ec073","shortId":"nCU9HQ","kind":"skill","title":"transport-error-normalization-and-retry-policy","tagline":"Normalize transport failures into one retry policy so streaming bridges, sockets, and remote clients fail predictably instead of improvising recovery.","description":"# SKILL: Transport Error Normalization and Retry Policy\n**Domain:** remote-bridge  \n**Trigger:** Use when a remote or bridge transport can fail in multiple ways and callers need one consistent rule for retrying, surfacing, or terminating.  \n**Source Pattern:** Distilled from reviewed bridge transport, reconnect, and capability-broadcast error-handling implementations.\n\n## Core Method\nTranslate transport-specific failures into one normalized error shape before making retry decisions. Classify each failure by whether it is transient, backoff-retryable, user-correctable, or terminal. Attach the normalized reason, any retry delay hint, and whether the caller should preserve or reset session state. Make every higher-level caller consume that normalized contract instead of branching on raw websocket, SSE, HTTP, or stream-library errors directly.\n\n## Key Rules\n- Normalize errors at the transport boundary, not separately in every caller.\n- Distinguish retryable failures from terminal ones using explicit categories rather than string matching in downstream code.\n- Carry retry delay hints and session-reset requirements in the normalized shape.\n- Keep retries bounded and deterministic so reconnect storms do not amplify failures.\n- Preserve the original cause for logging, but expose a stable contract to callers.\n\n## Example Application\nIf a bridge can fail due to temporary disconnects, protocol mismatches, or authentication errors, convert those into one transport result object that says whether to retry, how long to wait, and whether the client must rebuild its session before reconnecting.\n\n## Anti-Patterns (What NOT to do)\n- Don’t let each reconnect path interpret raw transport exceptions differently.\n- Don’t treat all failures as retryable; protocol or auth errors usually need a different terminal path.\n- Don’t lose the original cause entirely when you normalize the outward error shape.","tags":["transport","error","normalization","and","retry","policy","cskill","agents","ychampion","agent-skills","ai-agents","cli"],"capabilities":["skill","source-ychampion","skill-transport-error-normalization-and-retry-policy","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/transport-error-normalization-and-retry-policy","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 (1,910 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-22T00:56:57.937Z","embedding":null,"createdAt":"2026-04-18T22:21:32.358Z","updatedAt":"2026-04-22T00:56:57.937Z","lastSeenAt":"2026-04-22T00:56:57.937Z","tsv":"'amplifi':205 'anti':263 'anti-pattern':262 'applic':221 'attach':111 'auth':289 'authent':234 'backoff':104 'backoff-retry':103 'bound':197 'boundari':160 'branch':141 'bridg':17,38,45,68,224 'broadcast':74 'caller':53,122,134,165,219 'capability-broadcast':72 'capabl':73 'carri':182 'categori':174 'caus':210,302 'classifi':95 'client':21,255 'code':181 'consist':56 'consum':135 'contract':138,217 'convert':236 'core':79 'correct':108 'decis':94 'delay':117,184 'determinist':199 'differ':279,294 'direct':152 'disconnect':230 'distil':65 'distinguish':166 'domain':35 'downstream':180 'due':227 'entir':303 'error':3,30,76,89,151,156,235,290,309 'error-handl':75 'everi':130,164 'exampl':220 'except':278 'explicit':173 'expos':214 'fail':22,48,226 'failur':10,85,97,168,206,284 'handl':77 'higher':132 'higher-level':131 'hint':118,185 'http':146 'implement':78 'improvis':26 'instead':24,139 'interpret':275 'keep':195 'key':153 'let':271 'level':133 'librari':150 'log':212 'long':249 'lose':299 'make':92,129 'match':178 'method':80 'mismatch':232 'multipl':50 'must':256 'need':54,292 'normal':4,8,31,88,113,137,155,193,306 'object':242 'one':12,55,87,171,239 'origin':209,301 'outward':308 'path':274,296 'pattern':64,264 'polici':7,14,34 'predict':23 'preserv':124,207 'protocol':231,287 'rather':175 'raw':143,276 'reason':114 'rebuild':257 'reconnect':70,201,261,273 'recoveri':27 'remot':20,37,43 'remote-bridg':36 'requir':190 'reset':126,189 'result':241 'retri':6,13,33,59,93,116,183,196,247 'retryabl':105,167,286 'review':67 'rule':57,154 'say':244 'separ':162 'session':127,188,259 'session-reset':187 'shape':90,194,310 'skill':28 'skill-transport-error-normalization-and-retry-policy' 'socket':18 'sourc':63 'source-ychampion' 'specif':84 'sse':145 'stabl':216 'state':128 'storm':202 'stream':16,149 'stream-librari':148 'string':177 'surfac':60 'temporari':229 'termin':62,110,170,295 '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' 'transient':102 'translat':81 'transport':2,9,29,46,69,83,159,240,277 'transport-error-normalization-and-retry-polici':1 'transport-specif':82 'treat':282 'trigger':39 'use':40,172 'user':107 'user-correct':106 'usual':291 'wait':251 'way':51 'websocket':144 'whether':99,120,245,253","prices":[{"id":"7dd8670f-48de-4609-8db4-8e6772197151","listingId":"2c798eac-c204-463f-af01-f849af6ec073","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:21:32.358Z"}],"sources":[{"listingId":"2c798eac-c204-463f-af01-f849af6ec073","source":"github","sourceId":"ychampion/cskill-agents/transport-error-normalization-and-retry-policy","sourceUrl":"https://github.com/ychampion/cskill-agents/tree/main/skills/transport-error-normalization-and-retry-policy","isPrimary":false,"firstSeenAt":"2026-04-18T22:21:32.358Z","lastSeenAt":"2026-04-22T00:56:57.937Z"}],"details":{"listingId":"2c798eac-c204-463f-af01-f849af6ec073","quickStartSnippet":null,"exampleRequest":null,"exampleResponse":null,"schema":null,"openapiUrl":null,"agentsTxtUrl":null,"citations":[],"useCases":[],"bestFor":[],"notFor":[],"kindDetails":{"org":"ychampion","slug":"transport-error-normalization-and-retry-policy","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":"12655d90e8c0c645116c6ad05a651830205e3150","skill_md_path":"skills/transport-error-normalization-and-retry-policy/SKILL.md","default_branch":"main","skill_tree_url":"https://github.com/ychampion/cskill-agents/tree/main/skills/transport-error-normalization-and-retry-policy"},"layout":"multi","source":"github","category":"cskill-agents","frontmatter":{"name":"transport-error-normalization-and-retry-policy","description":"Normalize transport failures into one retry policy so streaming bridges, sockets, and remote clients fail predictably instead of improvising recovery."},"skills_sh_url":"https://skills.sh/ychampion/cskill-agents/transport-error-normalization-and-retry-policy"},"updatedAt":"2026-04-22T00:56:57.937Z"}}