CommunityProgramación y desarrollogithub.com

pproenca/nuqs

Prácticas recomendadas para nuqs (estado de consulta de URL con tipado seguro) en Next.js y otros frameworks de React. Esta habilidad debe utilizarse al escribir, revisar o refactorizar código que use nuqs para la gestión de estado en la URL. Se activa en tareas que involucran useQueryState, useQueryStates, parámetros de búsqueda, estado de URL, parámetros de consulta, parsers de nuqs, limitUrlUpdates, Standard Schema, NuqsAdapter o enrutamiento de Next.js con estado.

¿Qué es nuqs?

Este skill proporciona prácticas recomendadas para el uso de nuqs, una biblioteca que permite gestionar el estado de la URL mediante parámetros de consulta con tipado seguro en aplicaciones React, especialmente en Next.js y otros frameworks compatibles. Es útil para desarrolladores que trabajan con `useQueryState`, `useQueryStates`, parsers personalizados, `limitUrlUpdates` o la integración con Standard Schema y NuqsAdapter. El skill se activa automáticamente al escribir, revisar o refactorizar código que maneja estado en la URL, asegurando un uso correcto de los tipos, la sincronización entre la UI y la URL, y evitando errores comunes. Su documentación incluye ejemplos de implementación, buenas prácticas y patrones recomendados para mantener el código limpio y predecible.

Compatible con~Claude Code~Codex CLI~Cursor
npx skills add https://github.com/pproenca/dot-skills/tree/main/skills/nuqs

Installed? Explore more Programación y desarrollo skills: steipete/bluebubbles, steipete/eightctl, steipete/blucli · View all 6 →

Preguntar en tu IA favorita

Abre un nuevo chat con esta habilidad de agente ya precargada.

Documentación

¿Qué hace nuqs?

Prácticas recomendadas para nuqs (estado de consulta de URL con tipado seguro) en Next.js y otros frameworks de React. Esta habilidad debe utilizarse al escribir, revisar o refactorizar código que use nuqs para la gestión de estado en la URL. Se activa en tareas que involucran useQueryState, useQueryStates, parámetros de búsqueda, estado de URL, parámetros de consulta, parsers de nuqs, limitUrlUpdates, Standard Schema, NuqsAdapter o enrutamiento de Next.js con estado.

Descripción general

nuqs simplifica la sincronización del estado de la aplicación con los parámetros de consulta de la URL, proporcionando una API tipada y predecible. Esto permite compartir enlaces con estado persistente, mejorar la navegación y mantener la coherencia entre componentes.

Plataformas compatibles

  • Next.js (App Router y Pages Router)
  • React Router
  • Cualquier framework React que admita manipulación de la URL

Activación

El skill se activa automáticamente cuando se detectan:

  • Uso de useQueryState o useQueryStates
  • Referencias a searchParams, URLSearchParams o parámetros de consulta
  • Configuración de parsers (por ejemplo, parseAsString, parseAsInteger, parseAsJson)
  • Opción limitUrlUpdates
  • Integración con Standard Schema o NuqsAdapter
  • Enrutamiento de Next.js con estado de URL

Prácticas recomendadas

1. Definir parsers con tipos explícitos

import { parseAsString, useQueryState } from 'nuqs'

// Correcto: parser con tipo explícito
const [search, setSearch] = useQueryState('search', parseAsString.withDefault(''))

2. Usar limitUrlUpdates para evitar cambios frecuentes

const [search, setSearch] = useQueryState('search', {
  ...options,
  limitUrlUpdates: 200 // Actualiza la URL cada 200ms
})

3. Integrar con Standard Schema para validación

import { z } from 'zod'
import { createParser } from 'nuqs'

const schema = z.string().min(1).max(50)

const parser = createParser({
  parse: (value) => {
    const result = schema.safeParse(value)
    return result.success ? result.data : null
  },
  serialize: (value) => value
})

4. Usar NuqsAdapter para frameworks sin integración nativa

import { NuqsAdapter } from 'nuqs/adapters/react-router'

function App() {
  return (
    <NuqsAdapter>
      <YourApp />
    </NuqsAdapter>
  )
}

5. Evitar mutación directa de searchParams

Siempre usa los setters proporcionados por useQueryState o useQueryStates en lugar de manipular directamente URLSearchParams.

Ejemplos

Ejemplo básico con useQueryState

'use client'

import { useQueryState } from 'nuqs'

export function SearchBox() {
  const [search, setSearch] = useQueryState('q')
  
  return (
    <input
      value={search ?? ''}
      onChange={(e) => setSearch(e.target.value || null)}
      placeholder="Buscar..."
    />
  )
}

Múltiples estados con useQueryStates

import { parseAsInteger, parseAsString, useQueryStates } from 'nuqs'

const [filters, setFilters] = useQueryStates({
  search: parseAsString.withDefault(''),
  page: parseAsInteger.withDefault(1),
  limit: parseAsInteger.withDefault(10)
})

Recursos adicionales

Individual skills in this repo

This repo contains 7 individual skills — each has its own dedicated page.

pproenca/clean-architecture

Clean Architecture principles and best practices from Robert C. Martin's book. This skill should be used when designing software systems, reviewing code structure, or refactoring applications to achieve better separation of concerns. Triggers on tasks involving layers, boundaries, dependency direction, entities, use cases, or system architecture.

pproenca/code-simplifier

Code simplification skill for improving clarity, consistency, and maintainability while preserving exact behavior. Use when simplifying code, reducing complexity, cleaning up recent changes, applying refactoring patterns, or improving readability. Triggers on tasks involving code cleanup, simplification, refactoring, or readability improvements.

pproenca/emilkowal-animations

Emil Kowalski's animation best practices for web interfaces. Use when writing, reviewing, or implementing animations in React, CSS, or Framer Motion. Triggers on tasks involving transitions, easing, gestures, toasts, drawers, or motion.

pproenca/react-hook-form

React Hook Form performance optimization for client-side form validation using useForm, useWatch, useController, useFieldArray, and the v7.55+ subscribe() API. This skill should be used when building client-side controlled forms with React Hook Form library. This skill does NOT cover React 19 Server Actions, useActionState, or server-side form handling (use react-19 skill for those).

pproenca/typescript

TypeScript performance, tsconfig, type errors, async patterns — triggered when the user asks to "optimize TypeScript performance", "speed up tsc compilation", "configure tsconfig.json", "fix type errors", "improve async patterns", or encounters TS errors (TS2322, TS2339, "is not assignable to"). Also triggers on .ts, .tsx, .d.ts file work involving type definitions, module organization, or memory management. Does NOT cover TypeScript basics, framework-specific patterns, or testing.

pproenca/vitest

Vitest testing framework patterns for test setup, async testing, mocking with vi.*, snapshots, and test performance (formerly test-vitest). This skill should be used when writing or debugging Vitest tests. This skill does NOT cover TDD methodology (use test-tdd skill), API mocking with MSW (use test-msw skill), or Jest-specific APIs.

pproenca/zod

Zod schema validation best practices for type safety, parsing, and error handling. This skill should be used when defining z.object schemas, using z.string validations, safeParse, or z.infer. This skill does NOT cover React Hook Form integration patterns (use react-hook-form skill) or OpenAPI client generation (use orval skill).

Skills relacionados