{"id":"070f8d47-b7e9-4e0d-8a3c-fad199f78fb0","shortId":"gxzVxL","kind":"skill","title":"initial-vs-dynamic-skill-listing-batching","tagline":"Mark first-time skill listings differently from later deltas so attachment consumers can distinguish bootstrap exposure from incremental updates.","description":"# SKILL: Initial-vs-Dynamic Skill Listing Batching\n**Domain:** skill-listing\n**Trigger:** Apply when a listing or announcement stream needs to tell consumers whether they are seeing the first full exposure or an incremental update.\n**Source Pattern:** Distilled from reviewed skill-listing and attachment-stream implementations.\n\n## Core Method\nUse prior-sent state to classify each listing batch before you mutate that state. If nothing has been sent yet, tag the outgoing payload as the initial batch; otherwise tag it as a dynamic delta. This lets downstream consumers render bootstrap and update flows differently without re-deriving history from raw command lists. The classification should happen immediately before the send-state is updated so it reflects what the consumer is about to receive, not what was already persisted afterward.\n\n## Key Rules\n- Compute the initial-versus-dynamic flag from the pre-send state, not after mutating the sent set.\n- Keep the batch classification attached to the outgoing payload so downstream consumers do not need to infer it indirectly.\n- Update the sent-state immediately after deciding what will be emitted so later batches classify correctly.\n- Return no payload at all when there are no new items; an empty delta should not masquerade as either an initial or dynamic batch.\n\n## Example Application\nIf a terminal agent announces available slash commands, mark the first emitted attachment as `isInitial: true` so the UI can show an onboarding-style listing. When a plugin reload later adds two commands, emit only those new commands with `isInitial: false` so the UI treats them as a compact delta update.\n\n## Anti-Patterns (What NOT to do)\n- Do not infer initial-versus-dynamic by batch size alone; a small first batch and a small later delta can look identical.\n- Do not compute the flag after adding the new items to the sent set; that turns the first batch into a false dynamic update.","tags":["initial","dynamic","skill","listing","batching","cskill","agents","ychampion","agent-skills","ai-agents","cli","coding-agents"],"capabilities":["skill","source-ychampion","skill-initial-vs-dynamic-skill-listing-batching","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/initial-vs-dynamic-skill-listing-batching","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,938 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:49.754Z","embedding":null,"createdAt":"2026-04-18T22:20:31.866Z","updatedAt":"2026-04-22T06:56:49.754Z","lastSeenAt":"2026-04-22T06:56:49.754Z","tsv":"'ad':333 'add':276 'afterward':161 'agent':248 'alon':314 'alreadi':159 'announc':46,249 'anti':298 'anti-pattern':297 'appli':41 'applic':244 'attach':19,74,187,257 'attachment-stream':73 'avail':250 'batch':7,35,88,107,185,216,242,312,318,345 'bootstrap':23,120 'classif':135,186 'classifi':85,217 'command':132,252,278,283 'compact':294 'comput':164,329 'consum':20,51,118,151,194 'core':77 'correct':218 'decid':209 'delta':17,114,232,295,323 'deriv':128 'differ':14,124 'distil':66 'distinguish':22 'domain':36 'downstream':117,193 'dynam':4,32,113,169,241,310,349 'either':237 'emit':213,256,279 'empti':231 'exampl':243 'exposur':24,59 'fals':286,348 'first':10,57,255,317,344 'first-tim':9 'flag':170,331 'flow':123 'full':58 'happen':137 'histori':129 'ident':326 'immedi':138,207 'implement':76 'increment':26,62 'indirect':201 'infer':199,306 'initi':2,30,106,167,239,308 'initial-versus-dynam':166,307 'initial-vs-dynam':29 'initial-vs-dynamic-skill-listing-batch':1 'isiniti':259,285 'item':229,336 'keep':183 'key':162 'later':16,215,275,322 'let':116 'list':6,13,34,39,44,71,87,133,270 'look':325 'mark':8,253 'masquerad':235 'method':78 'mutat':91,179 'need':48,197 'new':228,282,335 'noth':95 'onboard':268 'onboarding-styl':267 'otherwis':108 'outgo':102,190 'pattern':65,299 'payload':103,191,221 'persist':160 'plugin':273 'pre':174 'pre-send':173 'prior':81 'prior-sent':80 'raw':131 're':127 're-deriv':126 'receiv':155 'reflect':148 'reload':274 'render':119 'return':219 'review':68 'rule':163 'see':55 'send':142,175 'send-stat':141 'sent':82,98,181,205,339 'sent-stat':204 'set':182,340 'show':265 'size':313 'skill':5,12,28,33,38,70 'skill-initial-vs-dynamic-skill-listing-batching' 'skill-list':37,69 'slash':251 'small':316,321 'sourc':64 'source-ychampion' 'state':83,93,143,176,206 'stream':47,75 'style':269 'tag':100,109 'tell':50 'termin':247 'time':11 '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' 'treat':290 'trigger':40 'true':260 'turn':342 'two':277 'ui':263,289 'updat':27,63,122,145,202,296,350 'use':79 'versus':168,309 'vs':3,31 'whether':52 'without':125 'yet':99","prices":[{"id":"0623395d-555d-4fcb-93a6-b4dcaab04ce7","listingId":"070f8d47-b7e9-4e0d-8a3c-fad199f78fb0","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:31.866Z"}],"sources":[{"listingId":"070f8d47-b7e9-4e0d-8a3c-fad199f78fb0","source":"github","sourceId":"ychampion/cskill-agents/initial-vs-dynamic-skill-listing-batching","sourceUrl":"https://github.com/ychampion/cskill-agents/tree/main/skills/initial-vs-dynamic-skill-listing-batching","isPrimary":false,"firstSeenAt":"2026-04-18T22:20:31.866Z","lastSeenAt":"2026-04-22T06:56:49.754Z"}],"details":{"listingId":"070f8d47-b7e9-4e0d-8a3c-fad199f78fb0","quickStartSnippet":null,"exampleRequest":null,"exampleResponse":null,"schema":null,"openapiUrl":null,"agentsTxtUrl":null,"citations":[],"useCases":[],"bestFor":[],"notFor":[],"kindDetails":{"org":"ychampion","slug":"initial-vs-dynamic-skill-listing-batching","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":"a40c5618eff686107a42e4bdd2b5f3ca843c4f12","skill_md_path":"skills/initial-vs-dynamic-skill-listing-batching/SKILL.md","default_branch":"main","skill_tree_url":"https://github.com/ychampion/cskill-agents/tree/main/skills/initial-vs-dynamic-skill-listing-batching"},"layout":"multi","source":"github","category":"cskill-agents","frontmatter":{"name":"initial-vs-dynamic-skill-listing-batching","description":"Mark first-time skill listings differently from later deltas so attachment consumers can distinguish bootstrap exposure from incremental updates."},"skills_sh_url":"https://skills.sh/ychampion/cskill-agents/initial-vs-dynamic-skill-listing-batching"},"updatedAt":"2026-04-22T06:56:49.754Z"}}