qwik-expert

qwik and tailwind best practices

Safety Notice

This listing is imported from skills.sh public index metadata. Review upstream SKILL.md and repository scripts before running.

Copy this and send it to your AI assistant to learn

Install skill "qwik-expert" with this command: npx skills add oimiragieo/agent-studio/oimiragieo-agent-studio-qwik-expert

Qwik Expert

qwik and tailwind best practices

When reviewing or writing code, apply these guidelines:

  • Use $ suffix for lazy-loaded functions

  • Utilize useSignal() for reactive state

  • Implement Tailwind CSS classes for styling

  • Use @apply directive in CSS files for reusable styles

  • Implement responsive design using Tailwind's responsive classes

  • Utilize Tailwind's configuration file for customization

  • Leverage TypeScript for type safety

  • Use Vite's fast HMR for development

qwik city routing

When reviewing or writing code, apply these guidelines:

  • Utilize Qwik City for routing when applicable

qwik folder structure

When reviewing or writing code, apply these guidelines:

Recommended folder structure:

src/ components/ routes/ global.css root.tsx entry.ssr.tsx public/ tailwind.config.js postcss.config.js vite.config.ts tsconfig.json

qwik functional components preference

When reviewing or writing code, apply these guidelines:

  • Always prefer functional components in Qwik files.

qwik js best practices

When reviewing or writing code, apply these guidelines:

  • Use $ suffix for lazy-loaded functions

  • Utilize useSignal() for reactive state

  • Implement useStore() for complex state objects

  • Use useResource$() for data fetching

  • Implement useTask$() for side effects

  • Utilize useVisibleTask$() for browser-only code

qwik js error handling optimization

When reviewing or writing code, apply these guidelines:

  • Implement proper error boundaries

  • Utilize Qwik City for routing when applicable

  • Use Qwik's built-in optimization features

  • Implement lazy-loading for improved performance

qwik js folder structure

When reviewing or writing code, apply these guidelines:

Use the following folder structure:

src/ components/ routes/ global.css root.tsx entry.ssr.tsx public/ vite.config.ts tsconfig.json

qwik js general preferences

When reviewing or writing code, apply these guidelines:

  • Always prefer functional components in Qwik files

  • Use TypeScript for type safety

  • Leverage Qwik's resumability model for optimal performance

  • Minimize client-side JavaScript via lazy loading

Consolidated Skills

This expert skill consolidates 1 individual skills:

  • qwik-expert

Iron Laws

  • ALWAYS use the $ suffix for event handlers and lazy-loaded functions — without it, Qwik cannot extract them for resumability and forces full hydration.

  • NEVER access browser APIs (window , document , localStorage ) in component body code — use useVisibleTask$() to scope browser-only code and prevent SSR errors.

  • ALWAYS use useSignal() for reactive primitive state and useStore() for complex objects — plain variables are not reactive and will not trigger re-renders.

  • NEVER import large client-side libraries at the top level — use dynamic import() or lazy-load via $ to preserve Qwik's zero-JS-on-load advantage.

  • ALWAYS prefer functional components — Qwik's resumability model is designed exclusively for functional component paradigms; class components have no first-class support.

Anti-Patterns

Anti-Pattern Why It Fails Correct Approach

Using event handlers without $ suffix Handler cannot be lazy-extracted; forces hydration and defeats resumability Always use onClick$ , onInput$ , useTask$() etc. with $ suffix

Accessing window /document in component body Throws during SSR where browser globals don't exist Wrap browser-only code in useVisibleTask$() which runs client-side only

Using plain variables for reactive state Variable changes don't trigger UI updates; components become stale Use useSignal() for primitives; useStore() for objects

Top-level importing of large client libraries Bundles library into initial JS payload; destroys zero-JS advantage Use dynamic import() inside task handlers; lazy-load with $

Writing class-based components Not supported by Qwik's serialization and resumability pipeline Always use functional components with component$()

Memory Protocol (MANDATORY)

Before starting:

cat .claude/context/memory/learnings.md

After completing: Record any new patterns or exceptions discovered.

ASSUME INTERRUPTION: Your context may reset. If it's not in memory, it didn't happen.

Source Transparency

This detail page is rendered from real SKILL.md content. Trust labels are metadata-based hints, not a safety guarantee.

Related Skills

Related by shared tags or category signals.

Automation

filesystem

No summary provided by upstream source.

Repository SourceNeeds Review
Automation

slack-notifications

No summary provided by upstream source.

Repository SourceNeeds Review
Automation

chrome-browser

No summary provided by upstream source.

Repository SourceNeeds Review