ai-infrastructure-hugg…
Hugging Face Inference SDK patterns for TypeScript/Node.js — InferenceClient setup, chat completion, text generation, streaming, embeddings, image generation,…
Qwik resumable framework - zero hydration, $ lazy boundaries, signals, Qwik City file-based routing, routeLoader$, routeAction$, server$ RPC, serialization rules
$ npx -y skills add agents-inc/skills --skill web-meta-framework-qwik --agent claude-codeHow it fires
How this skill gets triggered: by you, by Claude, or both.
/web-meta-framework-qwikContext preview
The summary Claude sees to decide when to auto-load this skill.
Qwik resumable framework - zero hydration, $ lazy boundaries, signals, Qwik City file-based routing, routeLoader$, routeAction$, server$ RPC, serialization rules
name: web-meta-framework-qwik description: Qwik resumable framework - zero hydration, $ lazy boundaries, signals, Qwik City file-based routing, routeLoader$, routeAction$, server$ RPC, serialization rules
> **Quick Guide:** Qwik is resumable rather than hydrated — the server serializes application state into > the HTML and the client picks it up without re-executing framework code. Every `$` suffix marks a > lazy-loading boundary the optimizer splits into its own chunk, so only the code for the interaction a > user actually triggers is downloaded. `component$` wraps every component, `useSignal`/`useStore` hold > state, `routeLoader$` supplies server data, `routeAction$` handles mutations, and `server$` is ad-hoc > RPC. The constraint everything else follows from: anything captured across a `$` boundary must be > serializable.
**Detailed Resources:**
---
The two packages divide the surface, and mixing up which one an export comes from is the commonest import error.
`@builder.io/qwik`. Follow [examples/core.md](examples/core.md).
all from `@builder.io/qwik-city`. Follow [examples/routing.md](examples/routing.md).
---
<critical_requirements>
**Wrap every component in `component$()`.** A plain function cannot be lazy-loaded, cannot call hooks and cannot host `<Slot />`.
**Keep everything captured in a `$` closure serializable.** A non-serializable capture type-checks and then fails at runtime, which is why the compiler is no help here.
**Reach for `routeLoader$` for initial server data rather than fetching in `useTask$` or `useResource$`.** Loaders run before render and integrate with SSR streaming, so there is no loading state to show.
**Cancel default behaviour with the `preventdefault:click` JSX attribute rather than `event.preventDefault()`.** Handlers load asynchronously, so the synchronous Event APIs have already had their effect by the time the handler runs.
**Export `routeLoader$` and `routeAction$` from a route file** — `index.tsx` or `layout.tsx` under `src/routes/`. Anywhere else, or unexported, they silently do nothing.
**Read and write store properties through the store reference — `store.name`.** Destructuring extracts the value from the Proxy, and reactivity goes with it.
</critical_requirements>
---
**Auto-detection:** Qwik, component$, useSignal, useStore, useTask$, useVisibleTask$, useComputed$, useResource$, routeLoader$, routeAction$, server$, sync$, QRL, noSerialize, @builder.io/qwik, @builder.io/qwik-city, Qwik City, $(), onClick$, onInput$, Slot, q:slot, preventdefault, stoppropagation, useStylesScoped$, resumable, resumability
**Applies to:**
**Handled elsewhere:**
---
<philosophy>
Qwik is built on **resumability**. A hydrating framework renders HTML on the server and then re-executes every component on the client to reattach listeners and rebuild the tree. Qwik does not: the server serializes the tree, the state and the listeners into the HTML, and the client resumes from there. When a user clicks a button, that handler's chunk is what downloads — not the framework, not the tree, not the other handlers.
**The `$` suffix is the mechanism.** Each `$` is a split point the optimizer turns into a separately loadable chunk: `component$()` for a render function, `onClick$()` for a handler, `useTask$()` for a tracked effect, `routeLoader$()` for server-only code.
**The price is serialization.** A chunk that loads later needs its captured scope restored from the HTML, so a `$` closure can only close over values Qwik knows how to write down. Class instances, functions and DOM nodes are not among them, and that single constraint explains most of the API's unfamiliar corners — `QRL` props, `noSerialize`, the advice to keep closures lean.
</philosophy>
---
<decision_framework>
**Which state primitive?** A single primitive is `useSignal`, read and written through `.value`. An object or array is `useStore`, mutated property by property with deep tracking on by default. A value derived synchronously from others is `useComputed$`. A value derived asynchronously is `useResource$`. Data that comes from the server is `routeLoader$`.
**Which lifecycle hook?
The official skills marketplace for Agents Inc. 150+ skills covering everything from React and Prisma to Redis, ElevenLabs, and infrastructure tooling. Pick the skills that match your stack and install them via Claude Code. Need more control?
Repo: agents-inc/skills
Hugging Face Inference SDK patterns for TypeScript/Node.js — InferenceClient setup, chat completion, text generation, streaming, embeddings, image generation,…
LiteLLM proxy server setup, TypeScript client patterns via OpenAI SDK, model routing, fallbacks, load balancing, spend tracking, virtual keys, and production…
Serverless GPU compute platform for AI model deployment — web endpoints, GPU functions, model serving, and TypeScript client patterns
Local LLM inference with the Ollama JavaScript client -- chat, streaming, tool calling, vision, embeddings, structured output, model management, and…
Replicate SDK patterns for TypeScript/Node.js -- client setup, predictions, streaming, webhooks, file handling, model versioning, deployments, and training
Together AI SDK patterns for TypeScript — client setup, chat completions, streaming, structured output, function calling, embeddings, image generation,…