원클릭으로
solidjs
Expert guide for SolidJS development, covering reactivity, component patterns, and migration from React.
Codex 또는 Claude로 설치 이 Prompt를 복사해 Codex, Claude 또는 다른 어시스턴트에 붙여 넣으면 Skill 페이지를 검토하고 설치를 진행할 수 있습니다.
메뉴
Expert guide for SolidJS development, covering reactivity, component patterns, and migration from React.
Codex 또는 Claude로 설치 이 Prompt를 복사해 Codex, Claude 또는 다른 어시스턴트에 붙여 넣으면 Skill 페이지를 검토하고 설치를 진행할 수 있습니다.
Best practices for writing clean, maintainable, and robust tests with TUnit.
Use `helium-browser --dump-dom` to inspect the fully rendered DOM after JavaScript execution. For debugging layout/scrolling issues and scraping dynamic pages.
Senior UI/UX Engineer. Architect digital interfaces overriding default LLM biases. Enforces metric-based rules, strict component architecture, CSS hardware acceleration, and balanced design engineering.
CLI tool for AI agents to browse the web, interact with UI elements, and analyze frontend applications. Supports navigation, clicking, typing, and capturing snapshots for accessibility analysis.
Expert guide for creating, configuring, and managing Opencode Agents. Use this skill when the user wants to create a new agent or modify an existing one.
Expert guide and best practices for building production-ready web APIs with Axum 0.8+ in Rust. Use this skill when developing, refactoring, or structuring Axum applications.
SOC 직업 분류 기준
| name | solidjs |
| description | Expert guide for SolidJS development, covering reactivity, component patterns, and migration from React. |
This skill provides best practices, patterns, and anti-patterns for developing with SolidJS. It focuses on the "Render Once" mental model, fine-grained reactivity, and avoiding common pitfalls when transitioning from React.
Consult this skill when:
SolidJS components execute exactly once to set up reactive dependencies. This is the most critical difference from React.
// ❌ WRONG: React mental model - expecting re-execution
function Counter() {
const [count, setCount] = createSignal(0);
console.log("This runs ONCE, not on every update"); // Only logs once
return <button onClick={() => setCount(count() + 1)}>{count()}</button>;
}
// ✅ CORRECT: Use effects for reactive logic
function Counter() {
const [count, setCount] = createSignal(0);
createEffect(() => {
console.log("Count changed:", count()); // Logs on every change
});
return <button onClick={() => setCount(count() + 1)}>{count()}</button>;
}
React re-renders component trees; SolidJS updates individual DOM nodes. Updates are O(1) per signal, not O(n) per component tree.
createSignal returns a tuple: [getter, setter]. Never destructure the getter.
createMemoFor expensive computations depending on signals. Automatically memoized.
// ✅ CORRECT: Only recalculates when dependencies change
const expensiveResult = createMemo(() => heavyCalculation(props.data()));
createEffectFor DOM manipulation, logging, or external state sync. Cleanup is mandatory for subscriptions.
createEffect(() => {
const handler = () => console.log("clicked");
document.addEventListener("click", handler);
onCleanup(() => document.removeEventListener("click", handler));
});
createResourceHandles loading, error states, and integrates with <Suspense>.
Props are reactive proxies. Destructuring breaks the proxy.
// ❌ WRONG: Destructuring loses reactivity
function MyComponent({ name }) { ... }
// ✅ CORRECT: Access props directly
function MyComponent(props) {
return <div>{props.name}</div>;
}
// ✅ CORRECT: Use splitProps for partial access
const [local, others] = splitProps(props, ["name"]);
Never use .map or ternaries directly in JSX for dynamic lists/conditions. Use <For>, <Show>, <Switch>, and <Match>.
// ✅ CORRECT
<For each={items()}>
{(item) => <div>{item.name}</div>}
</For>
createStore for collections, not arrays of signals.batch(() => { ... }) to group multiple updates.lazy(() => import(...)) for routes.isServer checks or <ClientOnly> for browser APIs/random values.mutate helper.useState with createSignaluseMemo with createMemouseEffect with createEffect + onCleanupuseContext with useContext (similar API)useCallback and React.memo (not needed).map() with <For><Show>props.name (no destructuring)