.cursor/skills/nuqs/SKILL.md
nuqs (type-safe URL query state) best practices for Next.js applications. This skill should be used when writing, reviewing, or refactoring code that uses nuqs for URL state management. Triggers on tasks involving useQueryState, useQueryStates, search params, URL state, query parameters, nuqs parsers, or Next.js routing with state.
npx skillsauth add FixMyBerlin/tilda-geo nuqsInstall this skill globally with one command. Works with Claude Code, Cursor, and Windsurf.
3 of 9 scanners reported clean
Some scanners were skipped, did not run, or reported a non-clean status. Review each row below.
Comprehensive guide for type-safe URL query state management with nuqs in Next.js applications. Contains 42 rules across 8 categories, prioritized by impact to guide code generation, refactoring, and code review.
Reference these guidelines when:
| Priority | Category | Impact | Prefix |
|----------|----------|--------|--------|
| 1 | Parser Configuration | CRITICAL | parser- |
| 2 | Adapter & Setup | CRITICAL | setup- |
| 3 | State Management | HIGH | state- |
| 4 | Server Integration | HIGH | server- |
| 5 | Performance Optimization | MEDIUM | perf- |
| 6 | History & Navigation | MEDIUM | history- |
| 7 | Debugging & Testing | LOW-MEDIUM | debug- |
| 8 | Advanced Patterns | LOW | advanced- |
parser-use-typed-parsers - Use typed parsers for non-string valuesparser-with-default - Use withDefault for non-nullable stateparser-enum-validation - Use enum parsers for constrained valuesparser-array-format - Choose correct array parser formatparser-json-validation - Validate JSON parser inputparser-date-format - Select appropriate date parserparser-index-offset - Use parseAsIndex for 1-based URL displayparser-hex-colors - Use parseAsHex for color valuessetup-nuqs-adapter - Wrap app with NuqsAdaptersetup-use-client - Add 'use client' directive for hookssetup-import-server - Import server utilities from nuqs/serversetup-nextjs-version - Ensure compatible Next.js versionsetup-shared-parsers - Define shared parsers in dedicated filestate-use-query-states - Use useQueryStates for related parametersstate-functional-updates - Use functional updates for derived statestate-clear-with-null - Clear URL parameters with nullstate-controlled-inputs - Handle controlled input value properlystate-avoid-derived - Avoid derived state from URL parametersstate-options-inheritance - Use withOptions for parser-level configurationstate-setter-return - Use setter return value for URL accessserver-search-params-cache - Use createSearchParamsCache for Server Componentsserver-shallow-false - Use shallow:false to trigger server re-rendersserver-use-transition - Integrate useTransition for loading statesserver-parse-before-get - Call parse() before get() in Server Componentsserver-share-parsers - Share parsers between client and serverserver-next15-async - Handle async searchParams in Next.js 15+perf-throttle-updates - Throttle rapid URL updatesperf-clear-on-default - Use clearOnDefault for clean URLsperf-avoid-rerender - Memoize components using URL stateperf-serialize-utility - Use createSerializer for link URLsperf-debounce-search - Debounce search input before URL updatehistory-push-navigation - Use history:push for navigation-like statehistory-replace-ephemeral - Use history:replace for ephemeral statehistory-scroll-behavior - Control scroll behavior on URL changeshistory-back-sync - Handle browser back/forward navigationdebug-enable-logging - Enable debug logging for troubleshootingdebug-common-errors - Diagnose common nuqs errorsdebug-testing - Test components with URL stateadvanced-custom-parsers - Create custom parsers for complex typesadvanced-url-keys - Use urlKeys for shorter URLsadvanced-eq-function - Implement eq function for object parsersadvanced-framework-adapters - Use framework-specific adaptersRead individual reference files for detailed explanations and code examples:
| File | Description | |------|-------------| | AGENTS.md | Complete compiled guide with all rules | | references/_sections.md | Category definitions and ordering | | assets/templates/_template.md | Template for new rules | | metadata.json | Version and reference information |
tools
Build type-safe global state in React with Zustand. Supports TypeScript, persist middleware, devtools, slices pattern, and Next.js SSR with hydration handling. Prevents 6 documented errors. Use when setting up React state, migrating from Redux/Context, or troubleshooting hydration errors, TypeScript inference, infinite render loops, or persist race conditions.
testing
Run local Docker processing in reference then fixed diffing mode to validate Lua/SQL topic changes via public.*_diff tables. From app/, use `processing-generate-command` to print a copy-paste shell line (interactive Clack on a TTY); agents/CI pass the full non-interactive flag set (see --help). Triggers on processing verification, bbox/topic-limited runs, or diff regression after editing processing/topics.
development
Migrate Next.js apps to TanStack Start. Covers setup (Vinxi/Vite), data handling with route loaders, converting Server Actions to Server Functions, API routes, and optional Server Component patterns. Use when migrating from Next.js to TanStack Start, setting up TanStack Start, or refactoring server actions, getServerSideProps, getStaticProps, or API routes.
development
React useEffect best practices from official docs and naming discipline. Use when writing/reviewing useEffect, naming effects, useState for derived values, data fetching, or state synchronization. Strong recommendation to name every effect; teaches when NOT to use Effect and better alternatives.