{"id":"64cdc975-3017-4d0b-a7c1-e6d097b4d219","shortId":"aT4SQD","kind":"skill","title":"mode-gated-reconcile-skip-filter","tagline":"Inject mode-specific skip rules into a shared reconciler so unsupported source types are recorded and skipped without forking the core install logic.","description":"# SKILL: Mode-Gated Reconcile Skip Filter\n**Domain:** extensions-mcp  \n**Trigger:** Apply when a shared reconcile engine runs in multiple runtime modes, but some modes cannot support every source type or transport.\n**Source Pattern:** Distilled from reviewed extension lifecycle and source-reconciliation patterns.\n\n## Core Method\nKeep one shared reconcile pipeline, but let callers inject an optional skip predicate that reflects mode-specific capabilities. The reconciler still computes the full worklist, then filters unsupported items into a `skipped` result instead of misreporting them as failures or forcing wrappers to fork the install algorithm. That preserves a single source of truth for install/update behavior while allowing constrained runtimes to stay honest about what they cannot process.\n\n## Key Rules\n- Put capability checks behind an injected skip predicate rather than branching the whole reconcile implementation.\n- Record skipped items explicitly so operators can distinguish \"unsupported here\" from true install failures.\n- Apply the skip filter after the worklist is built so visibility into intended changes remains intact.\n- Keep logging around skipped items; silent skipping hides portability gaps between modes.\n- Preserve identical install/update semantics for supported items across all modes.\n\n## Example Application\nIf a desktop agent can install extensions from local folders and remote archives but a serverless worker only supports archives, let the worker pass a skip predicate for local-folder sources. The shared reconciler still handles archives the same way, while skipped folder sources are reported cleanly instead of failing the whole run.\n\n## Anti-Patterns (What NOT to do)\n- Do not duplicate the entire reconciler per mode just to exclude a few unsupported source types.\n- Do not treat unsupported sources as generic failures; that obscures whether the issue is capability mismatch or broken input.","tags":["mode","gated","reconcile","skip","filter","cskill","agents","ychampion","agent-skills","ai-agents","cli","coding-agents"],"capabilities":["skill","source-ychampion","skill-mode-gated-reconcile-skip-filter","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/mode-gated-reconcile-skip-filter","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,944 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:51.245Z","embedding":null,"createdAt":"2026-04-18T22:20:45.720Z","updatedAt":"2026-04-22T06:56:51.245Z","lastSeenAt":"2026-04-22T06:56:51.245Z","tsv":"'across':214 'agent':222 'algorithm':125 'allow':137 'anti':274 'anti-pattern':273 'appli':43,179 'applic':218 'archiv':231,238,256 'around':197 'behavior':135 'behind':153 'branch':160 'broken':313 'built':187 'caller':85 'cannot':57,146 'capabl':96,151,310 'chang':192 'check':152 'clean':266 'comput':100 'constrain':138 'core':28,76 'desktop':221 'distil':66 'distinguish':172 'domain':38 'duplic':282 'engin':48 'entir':284 'everi':59 'exampl':217 'exclud':290 'explicit':168 'extens':40,69,225 'extensions-mcp':39 'fail':269 'failur':117,178,303 'filter':6,37,105,182 'folder':228,249,262 'forc':119 'fork':26,122 'full':102 'gap':204 'gate':3,34 'generic':302 'handl':255 'hide':202 'honest':142 'ident':208 'implement':164 'inject':7,86,155 'input':314 'instal':29,124,177,224 'install/update':134,209 'instead':112,267 'intact':194 'intend':191 'issu':308 'item':107,167,199,213 'keep':78,195 'key':148 'let':84,239 'lifecycl':70 'local':227,248 'local-fold':247 'log':196 'logic':30 'mcp':41 'method':77 'mismatch':311 'misreport':114 'mode':2,9,33,53,56,94,206,216,287 'mode-g':32 'mode-gated-reconcile-skip-filt':1 'mode-specif':8,93 'multipl':51 'obscur':305 'one':79 'oper':170 'option':88 'pass':242 'pattern':65,75,275 'per':286 'pipelin':82 'portabl':203 'predic':90,157,245 'preserv':127,207 'process':147 'put':150 'rather':158 'reconcil':4,16,35,47,81,98,163,253,285 'reconcili':74 'record':22,165 'reflect':92 'remain':193 'remot':230 'report':265 'result':111 'review':68 'rule':12,149 'run':49,272 'runtim':52,139 'semant':210 'serverless':234 'share':15,46,80,252 'silent':200 'singl':129 'skill':31 'skill-mode-gated-reconcile-skip-filter' 'skip':5,11,24,36,89,110,156,166,181,198,201,244,261 'sourc':19,60,64,73,130,250,263,294,300 'source-reconcili':72 'source-ychampion' 'specif':10,95 'stay':141 'still':99,254 'support':58,212,237 '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':63 'treat':298 'trigger':42 'true':176 'truth':132 'type':20,61,295 'unsupport':18,106,173,293,299 'visibl':189 'way':259 'whether':306 'whole':162,271 'without':25 'worker':235,241 'worklist':103,185 'wrapper':120","prices":[{"id":"5c01293d-d764-476e-a63b-97c38e0499ce","listingId":"64cdc975-3017-4d0b-a7c1-e6d097b4d219","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:20:45.720Z"}],"sources":[{"listingId":"64cdc975-3017-4d0b-a7c1-e6d097b4d219","source":"github","sourceId":"ychampion/cskill-agents/mode-gated-reconcile-skip-filter","sourceUrl":"https://github.com/ychampion/cskill-agents/tree/main/skills/mode-gated-reconcile-skip-filter","isPrimary":false,"firstSeenAt":"2026-04-18T22:20:45.720Z","lastSeenAt":"2026-04-22T06:56:51.245Z"}],"details":{"listingId":"64cdc975-3017-4d0b-a7c1-e6d097b4d219","quickStartSnippet":null,"exampleRequest":null,"exampleResponse":null,"schema":null,"openapiUrl":null,"agentsTxtUrl":null,"citations":[],"useCases":[],"bestFor":[],"notFor":[],"kindDetails":{"org":"ychampion","slug":"mode-gated-reconcile-skip-filter","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":"3dcf782db0804d5edeadef9047bc47bf7dc43c0e","skill_md_path":"skills/mode-gated-reconcile-skip-filter/SKILL.md","default_branch":"main","skill_tree_url":"https://github.com/ychampion/cskill-agents/tree/main/skills/mode-gated-reconcile-skip-filter"},"layout":"multi","source":"github","category":"cskill-agents","frontmatter":{"name":"mode-gated-reconcile-skip-filter","description":"Inject mode-specific skip rules into a shared reconciler so unsupported source types are recorded and skipped without forking the core install logic."},"skills_sh_url":"https://skills.sh/ychampion/cskill-agents/mode-gated-reconcile-skip-filter"},"updatedAt":"2026-04-22T06:56:51.245Z"}}