원클릭으로
huuma-ui-troubleshooting
Diagnosing and fixing Huuma UI lint violations and runtime errors after they occur.
Codex 또는 Claude로 설치 이 Prompt를 복사해 Codex, Claude 또는 다른 어시스턴트에 붙여 넣으면 Skill 페이지를 검토하고 설치를 진행할 수 있습니다.
메뉴
Diagnosing and fixing Huuma UI lint violations and runtime errors after they occur.
Codex 또는 Claude로 설치 이 Prompt를 복사해 Codex, Claude 또는 다른 어시스턴트에 붙여 넣으면 Skill 페이지를 검토하고 설치를 진행할 수 있습니다.
SOC 직업 분류 기준
Adding server-side mutations and form handling to a Huuma UI app with type-safe .remote.ts functions.
Editing root.tsx, entry points, dev/prod workflow, environment variables, and the Huuma UI build pipeline.
Building or navigating a Huuma UI app — file conventions, server/client boundary rules, dev workflow, and where to look for authoritative answers.
Adding translations and multilingual routing to a Huuma UI app with setupI18n, useI18n middleware, and the T component.
Adding client interactivity to a Huuma UI app with `.client.tsx` islands, on-* events, refs, and hydration boundaries.
Adding Huuma UI pages, layouts, routes, dynamic params, data loading with resolvers, metadata, and middleware.
| name | huuma-ui-troubleshooting |
| description | Diagnosing and fixing Huuma UI lint violations and runtime errors after they occur. |
Use this skill when the agent (or user) hits a Huuma UI lint violation or runtime error. Map the symptom to the boundary rule it enforces, then apply the corrective edit.
.remote.ts exports must be export async function name(...) (lint async-remote-functions, enforced by jsr:@huuma/ui/lint).export const foo = async () => {} or export function foo() to export async function foo(...).deno lint in your project (with the jsr:@huuma/ui/lint plugin configured in deno.json).$-hooks ($signal, $effect, $mount, $ref, $url, $route, $t, etc.) run only in sync island scope.async function or before any await. Use a wrapper sync component and call the hook at the top level. For async data, use resolver() (from @huuma/ui/hooks/scope) in the server component and pass the result down as props.deno lint (lint no-async-hook-calling, via jsr:@huuma/ui/lint); the hook scope is provided by @huuma/ui/hooks/scope..client.tsx default export must not be async (lint no-async-client-jsx, enforced by jsr:@huuma/ui/lint).deno lint.on-[a-z]+ event names are recognized (behavior of @huuma/ui/jsx-runtime).onClick={...} / onSubmit={...} with on-click={...} / on-submit={...}.deno doc jsr:@huuma/ui/jsx-runtime for the recognized event props.root.tsx must render <Scripts> and <Launch> (from @huuma/ui/server).<Scripts /> and <Launch /> to the body in root.tsx.Error2xx response. The client stub checks res.ok and throws an Error with name/message reconstructed from the server's JSON error body. Common sources: the remote function threw, the return value was not JSON-serializable (BigInt, function, Symbol, circular reference → 500 with name: "RemoteFunctionSerializationError"), the function name was not found (NotFoundException), or the request body failed @huuma/validate schema validation.try/catch. Read error.message for the human-readable cause. Read error.name to spot "RemoteFunctionSerializationError" (a programmer error — fix the return value). Note: errors thrown inside the remote function currently arrive as name: "RemoteFunctionError" (the fallback), not the original thrown class name, because the framework's global handleException emits { status, message, error? } with no name. See huuma-ui-remote-functions for the full return-value and error table.NotFoundException and @huuma/validate schema failures also go through handleException and arrive as "RemoteFunctionError" on the client.undefined unexpectedlyvoid / undefined. The server responds 204 No Content and the client stub resolves undefined (not null). This is intentional behavior, not a parse error.null or a concrete object from the remote function. Do not rely on undefined to mean "no result" if the client treats null and undefined differently..get is not a function on a ref, or signal accessed without parentheses.get() methods; refs use .get property accessors. Signals come from @huuma/ui/hooks/signal / @huuma/ui/signal; refs from @huuma/ui/hooks/ref / @huuma/ui/ref.signal.get() and ref.get consistently..server.ts/.server.tsx files cannot be imported into client bundles..server file, or keep the import server-only.deno lint in your project and read the exact rule name reported by the jsr:@huuma/ui/lint plugin.deno doc jsr:@huuma/ui/<subpath> (e.g. deno doc jsr:@huuma/ui/hooks/scope) or "Go to Definition" in your editor.huuma-ui-foundation).