Agent skill

Nuqs Codemod Runner

by pproenca in pproenca/dot-skills

Migrates a nuqs codebase off pre-v2.5 patterns — deprecated throttleMs, hand-rolled setTimeout/useState debounce around useQueryState, unchecked parseAsJson casts, unversioned…

MITAuto-check passedDevelopment

Install Nuqs Codemod Runner

skills CLI
$ npx skills add pproenca/dot-skills --skill nuqs-codemod-runner -a claude-code

Project install by default; add -g for ~/.claude/skills/.

GitHub CLI
$ gh skill install pproenca/dot-skills nuqs-codemod-runner --agent claude-code

Project scope by default; add --scope user for a personal install. Needs GitHub CLI 2.90.0 or later (public preview).

Manual copy
$ git clone --depth 1 https://github.com/pproenca/dot-skills.git skills-src && mkdir -p .claude/skills && cp -r skills-src/skills/.curated/nuqs-codemod-runner .claude/skills/nuqs-codemod-runner && rm -rf skills-src

Use ~/.claude/skills/ instead of .claude/skills for a personal install. The folder must contain SKILL.md.

Claude Code skills documentation · loads skills from .claude/skills/

Facts

Skill name
nuqs-codemod-runner
GitHub stars
214
Token cost
~1.3k tokens
SKILL.md length
505 words
Files
17 (incl. scripts, references)
Skills in repo
182
Repo updated
First seen
Licence
MIT

At a glance

Migrates a nuqs codebase off pre-v2.5 patterns — deprecated throttleMs, hand-rolled setTimeout/useState debounce around useQueryState, unchecked parseAsJson casts, unversioned…

  • Works in 4 steps: scripts/scan.sh — ripgreps every… → scripts/report.sh — renders scan.json as… → scripts/apply.sh [--filter ] — runs the… → …
  • Even if the user only mentions upgrade nuqs
  • SKILL.md covers When to Apply, Workflow Overview, The Five Codemods and Setup, plus 3 more sections
  • Runs Shell and JavaScript scripts from its folder; calls git, tsc and npm

What it does

Nuqs Codemod Runner is an agent skill from pproenca/dot-skills. Migrates a nuqs codebase off pre-v2.5 patterns — deprecated throttleMs, hand-rolled setTimeout/useState debounce around useQueryState, unchecked parseAsJson casts, unversioned nuqs/adapters/react-router imports, or ParserBuilder<T type references. Scans the repo, produces a dry-run report, asks for confirmation, applies AST codemods, then runs tsc --noEmit + the user's lint as a gate. Trigger even if the user only mentions "upgrade nuqs" or "migrate to nuqs v2.5+" without naming the specific patterns — they…

Its SKILL.md is about 1.3k tokens, which your agent loads only when the skill is triggered. The skill folder holds 20 other files, including scripts and reference files (for example `AGENTS.md`, `config.json` and `gotchas.md`).

It sits in Development, covering Code migrations. It works with React Router and Git. The repository describes itself as: A collection of AI agent skills following the Agent Skills open format. The licence is MIT.

When your agent uses it

  • Even if the user only mentions upgrade nuqs
  • Migrate to nuqs v2.5+ without naming the specific patterns — they almost always exist in pre-v2.5 codebases

Example prompts

  • “s lint as a gate. Trigger even if the user only mentions”
  • “migrate to nuqs v2.5+”
  • “Use the nuqs-codemod-runner skill to migrate a nuqs codebase off pre-v2.5 patterns — deprecated throttleMs, hand-rolled setTimeout/useState debounce…”
  • “/nuqs-codemod-runner”

Requirements

  • Node.js
  • A Bash shell

Workflow steps

4 steps, taken from the first numbered list in SKILL.md.

  1. scripts/scan.sh — ripgreps every .ts/.tsx/.js/.jsx file for the 5 legacy patterns, emits scan.json with {path, line, matchedPattern…
  2. scripts/report.sh — renders scan.json as a markdown table grouped by codemod, with file paths and before/after pairs. Show this output to…
  3. scripts/apply.sh [--filter ] — runs the jscodeshift transforms in scripts/transforms/. Refuses to run unless a fresh scan.json exists for…
  4. scripts/verify.sh — runs tsc --noEmit and npm run lint (or the equivalent commands from config.json). If anything fails, git restore…

What it can do on your machine

Read from SKILL.md and the folder at commit cf93c57. It shows what the files ask for, not the result of running them.

  • Tool permissions

    Pre-approves nothing: there is no allowed-tools line, so your agent's usual permission prompts apply.

    From allowed-tools in the SKILL.md frontmatter.

  • Runs code

    Ships 10 files in scripts/ (Shell and JavaScript), which the agent can run.

    Shell commands in SKILL.md call:

    • git
    • tsc
    • npm
    • node

    From the folder's file list and the shell code blocks in SKILL.md.

  • Network

    No URLs in SKILL.md. Its commands use git and npm, which can reach the network depending on how they are called.

    From URLs in SKILL.md, links to its own repository left out.

  • Credentials

    Names no API keys, tokens, secrets or passwords.

    From names ending in _API_KEY, _TOKEN, _SECRET, _KEY or _PASSWORD in SKILL.md.

Context cost

Nuqs Codemod Runner loads about 1.3k tokens when it runs, and up to ~2.9k if it reads all its reference files. Until then it costs about 147 tokens; SKILL.md has 505 words of instructions outside code blocks.

Always · name and description, kept in context so the agent knows when to use it
~147
When it runs · the whole SKILL.md, loaded when a task matches
~1.3k
With references · SKILL.md plus every file in references/, read only if the agent opens them
~2.9k

Estimates: characters ÷ 4, the usual rule of thumb; real counts depend on the model's tokenizer. Scripts and assets cost tokens only if the agent reads them.

Safety

Auto-check passed

The automated check found no risky patterns in SKILL.md.

Automated static check — not a guarantee. Review scripts before installing. It scans the text of SKILL.md for risky patterns (piping downloads into a shell, reading credential files, hidden Unicode, destructive commands); the scripts in this folder are not scanned.

SKILL.md

The full file from pproenca/dot-skills at commit cf93c57, republished under its MIT licence (© pproenca). 505 words, ~1,304 tokens.

Download SKILL.mdSave it as .claude/skills/nuqs-codemod-runner/SKILL.md (or your agent's skills folder). This skill also uses 16 other files; get the full folder from GitHub.
name
nuqs-codemod-runner
description
Migrates a nuqs codebase off pre-v2.5 patterns — deprecated `throttleMs`, hand-rolled setTimeout/useState debounce around `useQueryState`, unchecked `parseAsJson` casts, unversioned `nuqs/adapters/react-router` imports, or `ParserBuilder<T>` type references. Scans the repo, produces a dry-run report, asks for confirmation, applies AST codemods, then runs `tsc --noEmit` + the user's lint as a gate. Trigger even if the user only mentions "upgrade nuqs" or "migrate to nuqs v2.5+" without naming the specific patterns — they almost always exist in pre-v2.5 codebases.

nuqs Codemod Runner

Migrate a codebase from pre-v2.5 nuqs patterns to current v2.5–v2.8 idioms. The skill is read-only by default — it never modifies files without an explicit confirmation step, and refuses to run on a dirty git working tree.

When to Apply

Trigger this skill when:

  • A user asks to "upgrade nuqs" or "migrate to nuqs 2.x" in a project that already uses nuqs
  • You spot any of the 5 legacy patterns during a review (see the codemod table below)
  • A nuqs version bump in package.json from <2.5 to >=2.5 is part of the diff
  • The user has just installed/updated the nuqs skill and wants to bring existing code into line with it

This skill is the automation companion to skills/.curated/nuqs/ — that skill teaches what each correct pattern looks like; this skill rewrites legacy code to match.

Workflow Overview

┌──────────┐    ┌────────────┐    ┌──────────────────┐    ┌───────────┐    ┌────────────┐
│  scan.sh │──▶ │ scan.json  │──▶ │   report.sh      │──▶ │ apply.sh  │──▶ │ verify.sh  │
└──────────┘    └────────────┘    │ (dry-run table)  │    │ (codemods)│    │ (tsc+lint) │
                                  └──────────────────┘    └───────────┘    └────────────┘
                                          │                     ▲                │
                                          ▼                     │                ▼
                                  user reviews ────────────  confirms       on fail: revert
  1. scripts/scan.sh <repo-root> — ripgreps every .ts/.tsx/.js/.jsx file for the 5 legacy patterns, emits scan.json with {path, line, matchedPattern, snippet, suggestion}.
  2. scripts/report.sh — renders scan.json as a markdown table grouped by codemod, with file paths and before/after pairs. Show this output to the user verbatim and ask for explicit confirmation before continuing.
  3. scripts/apply.sh [--filter <codemod-id>] — runs the jscodeshift transforms in scripts/transforms/. Refuses to run unless a fresh scan.json exists for the current git HEAD and the working tree is clean (--allow-dirty overrides).
  4. scripts/verify.sh — runs tsc --noEmit and npm run lint (or the equivalent commands from config.json). If anything fails, git restore reverts every file the codemod touched.

Run all four sequentially. If the user only wants to scan, stop at step 2.

Show full SKILL.md (243 more words)Show less

The Five Codemods

IDDetectsRewrites to
throttle-mswithOptions({ throttleMs: N }) or setX(v, { throttleMs: N })withOptions({ limitUrlUpdates: throttle(N) }) + adds throttle to the nuqs import
manual-debounceuseState mirror + useEffect + setTimeout debounce around a useQueryState setterwithOptions({ limitUrlUpdates: debounce(N) }) + adds debounce to the nuqs import; deletes the mirror state and effect
unchecked-json-castparseAsJson<T>() (no validator) or parseAsJson((v) => v as T)Inserts a // TODO: validate type-guard stub or, if Zod is detected in package.json, a parseAsJson(SchemaName.parse) form
react-router-unversionedfrom 'nuqs/adapters/react-router'from 'nuqs/adapters/react-router/v6' (the alias the unversioned import historically pointed at)
parser-builder-typetype references to ParserBuilder<T> from nuqsSingleParserBuilder<T>

See references/workflow.md for the exact AST shapes each codemod matches and the edge cases it deliberately skips.

Setup

On first run, config.json is populated with the user's lint/typecheck commands and a default min_node_version. See _setup_instructions in config.json for what to fill in.

Risk & Guardrails

This skill is write-risk (it modifies source files). Guardrails:

  • apply.sh aborts if the working tree is dirty (use git stash first, or pass --allow-dirty after reading gotchas.md)
  • apply.sh aborts if scan.json is older than 60 minutes or was generated against a different git HEAD — re-run scan.sh
  • The hooks/hooks.json PreToolUse matcher blocks any direct node scripts/transforms/*.js invocation that bypasses the orchestrator
  • verify.sh auto-reverts on TS or lint failure via git restore over the touched files (recorded in last-run.json)
  • nuqs — Best-practice reference for nuqs v2.5+. This skill rewrites legacy code; that skill defines the target.

Gotchas

See gotchas.md for failure modes discovered during use.

© pproenca, MIT. Rendered from Markdown: HTML in the file is shown as text, images as links, and headings moved down two levels. Raw file

Files

SKILL.md and 16 other files (scripts, references) in skills/.curated/nuqs-codemod-runner of pproenca/dot-skills.

  • SKILL.md
  • AGENTS.md
  • config.json
  • gotchas.md
  • hooks/hooks.json
  • metadata.json
  • references/workflow.md
  • scripts/apply.sh
  • scripts/guardrail.sh
  • scripts/report.sh
  • scripts/scan.sh
  • scripts/transforms/manual-debounce.js
  • scripts/transforms/parser-builder-type.js
  • scripts/transforms/react-router-unversioned.js
  • scripts/transforms/throttle-ms.js
  • scripts/transforms/unchecked-json-cast.js
  • scripts/verify.sh

Open the folder on GitHubat commit cf93c57

Compare with similar skills

Nuqs Codemod Runner next to the 5 skills that share the most tags, products or categories with it. Stars are the repository's; “used in” counts other GitHub owners with a copy.

Nuqs Codemod Runner compared with similar skills
SkillStarsUsed inTokensAuto-checkLicenceRepo updated
Nuqs Codemod Runner this skillpproenca/dot-skills214—~1.3kAutomated safety check: PassMIT
Migrate Internal Package into GhostTryGhost/Ghost55k—~3.8kAutomated safety check: PassMIT
React Router Release Notes Prepremix-run/react-router57k—~1.1kAutomated safety check: PassMIT
React Router Pull Request Creatorremix-run/react-router57k—~2.5kAutomated safety check: PassMIT
Convert Internal Package to TypeScriptTryGhost/Ghost55k—~1.2kAutomated safety check: PassMIT
React Router PR Finish Lineremix-run/react-router57k—~1.4kAutomated safety check: PassMIT

Similar skills

  • Moves a package from another TryGhost repository into Ghost as an internal workspace package while keeping its Git history, with checkpoints for the steps that need an administrator.

    55k GitHub stars~3.8k tokensUpdated today
    DevelopmentAuto-check passed
  • React Router Release Notes Prep

    remix-run/react-router

    Polishes pending React Router change files before the versioning scripts run, and decides whether a long-form What's Changed section is warranted.

    57k GitHub stars~1.1k tokensUpdated today
    DevelopmentAuto-check passed
  • React Router Pull Request Creator

    remix-run/react-router

    Packages finished React Router work into a draft pull request: branch, commit, push, a written PR body and the right GitHub labels.

    57k GitHub stars~2.5k tokensUpdated today
    DevelopmentAuto-check passed
  • Moves a legacy internal Ghost package from JavaScript and CommonJS to TypeScript and ESM in three focused commits that keep git file history intact.

    55k GitHub stars~1.2k tokensUpdated today
    DevelopmentAuto-check passed
  • React Router PR Finish Line

    remix-run/react-router

    Takes a blocked community pull request in React Router and adds the missing tests, change file or docs so it can merge, working on the contributor's branch.

    57k GitHub stars~1.4k tokensUpdated today
    DevelopmentAuto-check passed
  • RustPython Stdlib Upgrade

    RustPython/RustPython

    Upgrades a Python standard library module from CPython into RustPython with update_lib, then triages and marks the tests that still fail.

    22k GitHub stars~876 tokensUpdated today
    DevelopmentAuto-check passed

More from pproenca/dot-skills

All 182 skills in this repo
  • Audio Voice Recovery

    pproenca/dot-skills

    Audio forensics and voice recovery guidelines for CSI-level audio analysis.

    214 GitHub stars~3.3k tokensUpdated 1 mo ago
    Auto-check passed
  • Codemod React Pipeline

    pproenca/dot-skills

    Guided, scripted pipeline for running JSX/TSX/React codemods safely across large legacy codebases.

    214 GitHub stars~1.6k tokensUpdated 1 mo ago
    Auto-check passed
  • Dev Rfc

    pproenca/dot-skills

    Create well-structured RFCs and technical proposals for software projects.

    214 GitHub stars~3.8k tokensUpdated 1 mo ago
    Auto-check passed
  • Dx Harness

    pproenca/dot-skills

    Developer-experience friction auditing and fixing — slow onboarding, repeated manual setup steps, missing bootstrap/reset/seed scripts, undiscoverable conventions.

    214 GitHub stars~1.5k tokensUpdated 1 mo ago
    Auto-check passed
  • Language Spec Author

    pproenca/dot-skills

    Turn a rough idea for a language into a complete, implementable specification — a DSL, query, config/data, template, or protocol language — by interviewing the author dimension by dimension until…

    214 GitHub stars~2.4k tokensUpdated 1 mo ago
    Auto-check passed
  • Python Pep Author

    pproenca/dot-skills

    Drafting Python Enhancement Proposals (PEPs) — proposing a Python language feature, a standard library change, an interoperability standard, or an informational/process document for the Python…

    214 GitHub stars~2.1k tokensUpdated 1 mo ago
    Auto-check passed

Works with

Categories

Questions about Nuqs Codemod Runner

What does Nuqs Codemod Runner do?

Migrates a nuqs codebase off pre-v2.5 patterns — deprecated throttleMs, hand-rolled setTimeout/useState debounce around useQueryState, unchecked parseAsJson casts, unversioned…. Nuqs Codemod Runner is an agent skill from pproenca/dot-skills.5 patterns — deprecated throttleMs, hand-rolled setTimeout/useState debounce around useQueryState, unchecked parseAsJson casts, unversioned nuqs/adapters/react-router imports, or ParserBuilder<T type references.

When should I use Nuqs Codemod Runner?

Nuqs Codemod Runner fits situations like: even if the user only mentions upgrade nuqs; migrate to nuqs v2.5+ without naming the specific patterns — they almost always exist in pre-v2.5 codebases.

How do I install Nuqs Codemod Runner in Claude Code?

Run `npx skills add pproenca/dot-skills --skill nuqs-codemod-runner -a claude-code`. Or copy the skill folder (skills/.curated/nuqs-codemod-runner in pproenca/dot-skills) into .claude/skills/nuqs-codemod-runner in your project. Claude Code loads it when a task matches its description.

How do I install Nuqs Codemod Runner in Codex?

Run `npx skills add pproenca/dot-skills --skill nuqs-codemod-runner -a codex`. Or copy the skill folder (skills/.curated/nuqs-codemod-runner in pproenca/dot-skills) into .agents/skills/nuqs-codemod-runner in your project. Codex loads it when a task matches its description.

Can I use Nuqs Codemod Runner in Cursor, Gemini CLI or GitHub Copilot?

Cursor, Gemini CLI, GitHub Copilot and OpenCode also load SKILL.md folders. With the skills CLI, run `npx skills add pproenca/dot-skills --skill nuqs-codemod-runner -a cursor` (or -a gemini-cli, github-copilot or opencode for the others). To copy it by hand, put the folder in .cursor/skills/nuqs-codemod-runner, .gemini/skills/nuqs-codemod-runner, .github/skills/nuqs-codemod-runner and .opencode/skills/nuqs-codemod-runner in your project.

What does Nuqs Codemod Runner need to run?

Going by SKILL.md and its folder, Nuqs Codemod Runner needs a shell and JavaScript for the scripts in its folder and the command-line tools its instructions call (git, tsc, npm and node). Our summary lists: Node.js; A Bash shell.

Does Nuqs Codemod Runner access the network?

SKILL.md contains no URLs. Its commands use git and npm, which can reach the network depending on how they are called. This is read from the text; nothing was executed.

Is Nuqs Codemod Runner safe to install?

Our automated static check of SKILL.md found no risky patterns, such as piping downloads into a shell, reading credential files or hidden Unicode. It is not a guarantee. The check reads SKILL.md only: the scripts in the folder are not scanned, so read them before running anything.

What licence does Nuqs Codemod Runner use?

Nuqs Codemod Runner is published under the MIT licence (the repository's licence). It allows redistribution, so the full SKILL.md is shown on this page.

How many tokens does Nuqs Codemod Runner use?

About 1.3k tokens (SKILL.md is roughly 5.2k characters). Agents keep only the skill's name and description in context until a task matches; then they load SKILL.md in full. Its references folder adds about 1.6k tokens, read only when the agent opens those files.

What are the alternatives to Nuqs Codemod Runner?

Skills that share tags, products or a category with Nuqs Codemod Runner: Migrate Internal Package into Ghost (TryGhost/Ghost, 55k stars), React Router Release Notes Prep (remix-run/react-router, 57k stars), React Router Pull Request Creator (remix-run/react-router, 57k stars) and Convert Internal Package to TypeScript (TryGhost/Ghost, 55k stars). The comparison table on this page puts their stars, adoption, token cost, safety result and licence side by side.

Who maintains Nuqs Codemod Runner?

pproenca (a GitHub user) maintains it in pproenca/dot-skills, which has 214 GitHub stars. The repository holds 182 skills in this directory. The repository was last updated on August 15, 2026.

Source: pproenca/dot-skills on GitHub. Facts on this page come from the repository at the commit we read; the author's words are quoted as theirs.