{"id":"a0a51c91-7e66-4d14-8ed0-2821464922ca","shortId":"6DT7H9","kind":"skill","title":"aggregated-change-signal-return","tagline":"Collapse multiple change sources into one caller-facing boolean so headless bootstraps know whether a downstream refresh is necessary.","description":"# SKILL: Aggregated Change Signal Return\n**Domain:** extensions-mcp  \n**Trigger:** Apply when a headless setup flow can change state through several mechanisms but callers only need one final answer about whether they must refresh downstream registries.\n**Source Pattern:** Distilled from reviewed extension lifecycle and source-reconciliation patterns.\n\n## Core Method\nAggregate every state-changing branch inside the headless install flow into one caller-facing signal. Seed registration, marketplace reconciliation, and delisting can each materially change the runtime even if the others do nothing, so the function should accumulate them into a single boolean that tells the caller whether a follow-up refresh is required. This keeps the internal branching detailed while exposing a minimal external contract.\n\n## Key Rules\n- Initialize the change signal from the earliest state-changing step instead of only from the main reconcile path.\n- Fold every later state mutation into the same signal, even if it comes from cleanup or enforcement rather than install.\n- Keep the caller contract narrow: one signal that means \"refresh downstream state now,\" not a grab bag of internal counters.\n- Update the signal only on genuine state changes so callers do not refresh on no-op runs.\n\n## Example Application\nIf a headless extension bootstrap registers seeds, installs missing registries, and removes delisted plugins, return one `extensionsChanged` boolean that becomes true if any of those paths modified the effective plugin set. The caller can then refresh command discovery once, regardless of which branch caused the change.\n\n## Anti-Patterns (What NOT to do)\n- Do not expose only install counts when cleanup or seed registration can also require a downstream refresh.\n- Do not make callers reconstruct change state from several independent metrics when the callee already knows the full picture.","tags":["aggregated","change","signal","return","cskill","agents","ychampion","agent-skills","ai-agents","cli","coding-agents","context-engineering"],"capabilities":["skill","source-ychampion","skill-aggregated-change-signal-return","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/aggregated-change-signal-return","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,899 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:44.527Z","embedding":null,"createdAt":"2026-04-18T22:19:41.406Z","updatedAt":"2026-04-22T06:56:44.527Z","lastSeenAt":"2026-04-22T06:56:44.527Z","tsv":"'accumul':115 'aggreg':2,27,76 'aggregated-change-signal-return':1 'alreadi':310 'also':291 'answer':54 'anti':273 'anti-pattern':272 'appli':36 'applic':225 'bag':202 'becom':245 'boolean':15,120,243 'bootstrap':18,230 'branch':81,137,268 'calle':309 'caller':13,49,90,124,188,215,258,299 'caller-fac':12,89 'caus':269 'chang':3,8,28,43,80,102,149,156,213,271,301 'cleanup':180,286 'collaps':6 'come':178 'command':262 'contract':144,189 'core':74 'count':284 'counter':205 'delist':98,238 'detail':138 'discoveri':263 'distil':64 'domain':31 'downstream':22,60,196,294 'earliest':153 'effect':254 'enforc':182 'even':105,175 'everi':77,167 'exampl':224 'expos':140,281 'extens':33,67,229 'extensions-mcp':32 'extensionschang':242 'extern':143 'face':14,91 'final':53 'flow':41,86 'fold':166 'follow':128 'follow-up':127 'full':313 'function':113 'genuin':211 'grab':201 'headless':17,39,84,228 'independ':305 'initi':147 'insid':82 'instal':85,185,233,283 'instead':158 'intern':136,204 'keep':134,186 'key':145 'know':19,311 'later':168 'lifecycl':68 'main':163 'make':298 'marketplac':95 'materi':101 'mcp':34 'mean':194 'mechan':47 'method':75 'metric':306 'minim':142 'miss':234 'modifi':252 'multipl':7 'must':58 'mutat':170 'narrow':190 'necessari':25 'need':51 'no-op':220 'noth':110 'one':11,52,88,191,241 'op':222 'other':108 'path':165,251 'pattern':63,73,274 'pictur':314 'plugin':239,255 'rather':183 'reconcil':164 'reconcili':72,96 'reconstruct':300 'refresh':23,59,130,195,218,261,295 'regardless':265 'regist':231 'registr':94,289 'registri':61,235 'remov':237 'requir':132,292 'return':5,30,240 'review':66 'rule':146 'run':223 'runtim':104 'seed':93,232,288 'set':256 'setup':40 'sever':46,304 'signal':4,29,92,150,174,192,208 'singl':119 'skill':26 'skill-aggregated-change-signal-return' 'sourc':9,62,71 'source-reconcili':70 'source-ychampion' 'state':44,79,155,169,197,212,302 'state-chang':78,154 'step':157 'tell':122 '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' 'trigger':35 'true':246 'updat':206 'whether':20,56,125","prices":[{"id":"f0f6768e-5ed1-48fc-8f62-f036175f4936","listingId":"a0a51c91-7e66-4d14-8ed0-2821464922ca","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:41.406Z"}],"sources":[{"listingId":"a0a51c91-7e66-4d14-8ed0-2821464922ca","source":"github","sourceId":"ychampion/cskill-agents/aggregated-change-signal-return","sourceUrl":"https://github.com/ychampion/cskill-agents/tree/main/skills/aggregated-change-signal-return","isPrimary":false,"firstSeenAt":"2026-04-18T22:19:41.406Z","lastSeenAt":"2026-04-22T06:56:44.527Z"}],"details":{"listingId":"a0a51c91-7e66-4d14-8ed0-2821464922ca","quickStartSnippet":null,"exampleRequest":null,"exampleResponse":null,"schema":null,"openapiUrl":null,"agentsTxtUrl":null,"citations":[],"useCases":[],"bestFor":[],"notFor":[],"kindDetails":{"org":"ychampion","slug":"aggregated-change-signal-return","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":"d0f233d8dd8d813c05ce4625bbd07f163d5af78f","skill_md_path":"skills/aggregated-change-signal-return/SKILL.md","default_branch":"main","skill_tree_url":"https://github.com/ychampion/cskill-agents/tree/main/skills/aggregated-change-signal-return"},"layout":"multi","source":"github","category":"cskill-agents","frontmatter":{"name":"aggregated-change-signal-return","description":"Collapse multiple change sources into one caller-facing boolean so headless bootstraps know whether a downstream refresh is necessary."},"skills_sh_url":"https://skills.sh/ychampion/cskill-agents/aggregated-change-signal-return"},"updatedAt":"2026-04-22T06:56:44.527Z"}}