Publisher source snapshot: 2026-10-17 UTC, fixed Git revision. The complete original SKILL document follows. Companion reference files were not fetched; commands were not executed.
ccstate
Read the reference matching the changed behavior; API work does not require the React/DOM reference unless it also changes that surface.
| Task | Reference |
|---|---|
computed, memoization, function-valued state, reactive fetches |
Reactive values |
API client status handling and accept |
HTTP |
| AbortSignal ownership, cancellation, debouncing, detached cleanup | Lifecycle |
| DOM callbacks, page signals, refs and ref cleanup | React and DOM |
| Shared command logic and signal factories | Commands |
Boundaries
- Keep derivation in
computedand semantic actions in commands. Do not create signals or mutate the store during React render. - Every async operation needs an owner and cancellation path. Await finite work
or return its promise inside signals. Start background loops with
setLooporsetAbly*Loop$; those primitives owndetach(..., Reason.Daemon)internally. UsewaitLoopUntil/waitAbly*LoopUntil$when subsequent work needs completion. Non-periodic background work usesdetach(promise, reason, description)with the owner's signal, insignals/as well as in views. Do not silence work withvoid. resetSignal()provides mutual exclusion. Add a parent when the work belongs to a page/route lifetime; parentless use still needs an explicit owner that cancels it. The lifecycle reference defines both valid patterns.- Use
acceptwith a non-empty status list forapiClient$calls. Preserve structured HTTP errors and use the view's loadable state for lifecycle UI. - Route setup owns
pageSignal$. Preserve stable callback refs andonRefcleanup returns.
See effects, cache, and Platform tests for the relevant broader contracts. For performance investigations, use React measurements.