بنقرة واحدة
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)