Agent skill

Nuxt Link Checker

by harlan-zw in harlan-zw/nuxt-link-checker

Find and fix broken or SEO unfriendly links in a Nuxt app with the nuxt-link-checker module.

MITAuto-check passedDevelopment

Install Nuxt Link Checker

skills CLI
$ npx skills add harlan-zw/nuxt-link-checker --skill nuxt-link-checker -a claude-code

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

GitHub CLI
$ gh skill install harlan-zw/nuxt-link-checker nuxt-link-checker --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/harlan-zw/nuxt-link-checker.git skills-src && mkdir -p .claude/skills && cp -r skills-src/skills/nuxt-link-checker .claude/skills/nuxt-link-checker && 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
nuxt-link-checker
GitHub stars
101
Token cost
~1.9k tokens
SKILL.md length
841 words
Files
1
Skills in repo
1
Repo updated
First seen
Licence
MIT

At a glance

Find and fix broken or SEO unfriendly links in a Nuxt app with the nuxt-link-checker module.

  • A task mentions broken links
  • SKILL.md covers Setup, Automatic behaviour, Fail CI on broken links and Reports, plus 6 more sections
  • Instructions only: no scripts, shell commands, URLs or credentials in SKILL.md
  • Link checking on build

What it does

Nuxt Link Checker is an agent skill from harlan-zw/nuxt-link-checker. Find and fix broken or SEO unfriendly links in a Nuxt app with the nuxt-link-checker module. Use when a task mentions broken links, 404 links, link checking on build, failOnError, excludeLinks, excludePages, skipInspections, link checker reports, live inspections, the linkChecker config key, or the link-checker/valid-route ESLint rule. Gives the build scan scope, verified config, and the traps that make the checker pass silently or flag valid links.

Its SKILL.md is about 1.9k tokens, which your agent loads only when the skill is triggered. It is a single SKILL.md file with no bundled scripts.

It sits in Development, covering Linting and formatting. It works with Nuxt and ESLint. The repository describes itself as: Find and magically fix 12+ link issues that may be negatively effecting your Nuxt SEO. The licence is MIT.

When your agent uses it

  • A task mentions broken links
  • Link checking on build
  • SkipInspections
  • Link checker reports

Example prompts

  • “/nuxt-link-checker”

What it can do on your machine

Read from SKILL.md and the folder at commit 7eebc81. 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

    No scripts in the folder and no shell commands in SKILL.md (its code samples are typescript and javascript).

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

  • Network

    Links to these hosts (documentation or services it may open):

    • nuxtseo.com

    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

Nuxt Link Checker loads about 1.9k tokens when it runs. Until then it costs about 118 tokens; SKILL.md has 841 words of instructions outside code blocks.

Always · name and description, kept in context so the agent knows when to use it
~118
When it runs · the whole SKILL.md, loaded when a task matches
~1.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); files beside SKILL.md are not scanned.

SKILL.md

The full file from harlan-zw/nuxt-link-checker at commit 7eebc81, republished under its MIT licence (© harlan-zw). 841 words, ~1,911 tokens.

Download SKILL.mdSave it as .claude/skills/nuxt-link-checker/SKILL.md (or your agent's skills folder).
name
nuxt-link-checker
description
Find and fix broken or SEO unfriendly links in a Nuxt app with the nuxt-link-checker module. Use when a task mentions broken links, 404 links, link checking on build, failOnError, excludeLinks, excludePages, skipInspections, link checker reports, live inspections, the linkChecker config key, or the link-checker/valid-route ESLint rule. Gives the build scan scope, verified config, and the traps that make the checker pass silently or flag valid links.

Tested against the nuxt-link-checker release after 5.3.0 on Nuxt 4.5 (peer range Nuxt 3.9 to 5). The module inspects every <a href> in rendered HTML with 15 rules, at build time and in dev. It also ships two ESLint rules. Docs: https://nuxtseo.com/docs/link-checker

Setup

Config key: linkChecker. The module installs nuxt-site-config for you. @nuxtjs/seo already includes this module. Do not add it twice.

Set site.url to the production origin. The checker resolves internal links against it (see Traps). The trailing-slash rule reads site.trailingSlash, not a linkChecker option.

Automatic behaviour

  • Build scan. After prerendering, the module inspects the links on each prerendered HTML page. It prints a tree per page, then a summary.
  • Only prerendered pages are scanned. A plain nuxt build with no prerendered routes runs no inspections and logs Nuxt Link Checker scanned no pages. Use nuxt generate, or add routes to nitro.prerender.routes.
  • The whole page is scanned, including <Teleport to="body"> links. An <a> without href gets a no-missing-href warning unless it has role="button".
  • Default exclusions. excludeLinks starts with /^\/_/ and /^\/llms(-[\w-]+)?\.txt$/. Your entries are added to these; they do not replace them. With a non root app.baseURL, the base URL is also excluded.
  • External links are not fetched. fetchRemoteUrls is false, so every absolute external link counts as a 200.
  • Links to files in public/ pass without a request.
  • Dev. With Nuxt DevTools on, the module adds a Link Checker DevTools tab and /__link-checker__/* server routes. On page squiggles need showLiveInspections: true.
  • ESLint. With @nuxt/eslint, the module registers link-checker/valid-route (error) and link-checker/valid-sitemap-link (warn) for .vue, .ts, and .md files.
ts
export default defineNuxtConfig({
  modules: ['nuxt-link-checker'],
  site: { url: 'https://example.com' },
  nitro: { prerender: { routes: ['/'], crawlLinks: true } },
  linkChecker: {
    failOnError: true,
    report: { json: true, markdown: true },
  },
})

Only errors fail the build. Errors come from no-error-response, missing-hash, and no-javascript. Every other rule is a warning. The count is the number of links with an error, not the number of errors.

With crawlLinks: true, Nitro crawls the broken link too and fails the build on its 404 before failOnError matters. To keep the build green and still get the report, set nitro.prerender.failOnError: false.

Reports

report.html, report.markdown, and report.json write link-checker-report.<ext> to .output/. When any report is on, the console shows only the summary. Read the report file for the link list.

  • report.storage: a path relative to the root, or unstorage options.
  • report.publish: true writes to .output/public/__link-checker__/. It adds X-Robots-Tag: noindex and a robots.txt disallow. The report is still public.

The JSON report is an array of { route, reports }. Each report has link, textContent, error[], warning[], and fix. fix is the suggested link, such as /about for a typo /abot.

ts
export default defineNuxtConfig({
  linkChecker: {
    excludeLinks: ['/admin/**', '/api/*', /\.(pdf|zip)$/],
    excludePages: ['/embed/**'],
    skipInspections: ['link-text', 'no-underscores'],
  },
})
  • excludeLinks matches the link. excludePages matches the page that contains the link and skips all its links.
  • String patterns are radix3 routes, not globs. * is one whole segment and ** is any depth. /_nuxt/file_*.pdf never matches. Use a RegExp for part of a segment.
  • skipInspections takes rule ids. The ids are: absolute-site-urls, link-text, missing-hash, no-baseless, no-double-slashes, no-duplicate-query-params, no-error-response, no-javascript, no-missing-href, no-non-ascii-chars, no-underscores, no-uppercase-chars, no-whitespace, redirects, trailing-slash. An unknown id does nothing and gives no warning.
Show full SKILL.md (347 more words)Show less

ESLint without @nuxt/eslint

js
// eslint.config.mjs
import linkCheckerPlugin from 'nuxt-link-checker/eslint'
import vueParser from 'vue-eslint-parser'

export default [
  {
    files: ['**/*.vue', '**/*.ts'],
    languageOptions: { parser: vueParser },
    plugins: { 'link-checker': linkCheckerPlugin },
    rules: {
      'link-checker/valid-route': 'error',
      'link-checker/valid-sitemap-link': 'warn',
    },
  },
  // Markdown: same plugin and rules, plus processor: 'link-checker/markdown'
]

The rules read .nuxt/link-checker/routes.json. Run nuxt prepare or nuxt dev before eslint in CI. valid-sitemap-link checks nothing until nuxt dev merges the @nuxtjs/sitemap URLs into that file. Pass { rootDir } or { routesFile } as the rule option when ESLint runs from another directory. Only literal links that start with / are checked. Skip one link with rel="nofollow" or an eslint-disable-next-line comment.

Traps

  • No routes.json, no ESLint errors. Without nuxt prepare, both ESLint rules pass every link. ESLint prints one [nuxt-link-checker] ... not found warning, and still exits 0.
  • Links to pages that are not prerendered are checked against the live site. The module sends a HEAD request to site.url + path. A new SSR only page that is not deployed yet reports a 404. A page that exists only in production passes. Add such pages to excludeLinks, or prerender them.
  • Read the failure message, not only the rule id. An HTTP error reports the status the server sent. A server that rejects HEAD with 405 or 501 gets a GET retry. A DNS error or a refused connection reports Could not reach the link (ENOTFOUND) with the cause code. A timeout reports 408.
  • Rules chain on the fix. When one rule proposes a fix, later rules test the fixed link. /about/ that 404s reports only the 404, not the trailing slash.
  • Different results per mode. Build scans read prerender status codes. Dev scans fetch the dev server. ESLint reads route patterns only and ignores excludeLinks.

Version limits

These v1 options are gone. The module logs a warning that names the replacement, then ignores them:

  • exclude: use excludeLinks.
  • failOn404: use failOnError.
  • siteUrl and trailingSlash: set site.url and site.trailingSlash.

The ESLint rules and nuxt-link-checker/eslint exist from v5.0.0.

Config

  • enabled (true), runOnBuild (true), failOnError (false), debug (false).
  • fetchTimeout (10000 ms), fetchRemoteUrls (false). With fetchRemoteUrls: true the module checks that you are online first and turns itself off if not.
  • Full reference: https://nuxtseo.com/docs/link-checker/api/config

Debug

  • /__link-checker__/debug.json in dev shows the resolved config, including the serialized exclude patterns.
  • debug: true writes debug-link-responses.json next to the reports, with the status the module used for each link.

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

Files

Just SKILL.md in skills/nuxt-link-checker of harlan-zw/nuxt-link-checker.

Open the folder on GitHubat commit 7eebc81

Compare with similar skills

Nuxt Link Checker 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.

Nuxt Link Checker compared with similar skills
SkillStarsUsed inTokensAuto-checkLicenceRepo updated
Nuxt Link Checker this skillharlan-zw/nuxt-link-checker101—~1.9kAutomated safety check: PassMIT
LobeHub Alint Rule Set Maintenancelobehub/lobehub83k—~1.9kAutomated safety check: PassCustom licence
Eslint Migrate Optionsbiomejs/biome26k—~1.4kAutomated safety check: PassApache-2.0
Ultraciteagustinusnathaniel/nextarter-tailwind1252 repos~1.2kAutomated safety check: PassMIT
Code Qualityredis/RedisInsight8.9k—~1.2kAutomated safety check: PassCustom licence
Boundaries Architectjavierbrea/eslint-plugin-boundaries997—~4.2kAutomated safety check: PassMIT

Similar skills

  • Maintains LobeHub's model-backed alint rule set: writing rules, removing false positives against real code, deciding warn versus error and tracking token cost.

    83k GitHub stars~1.9k tokensUpdated today
    DevelopmentAuto-check passed
  • Official

    A skill your agent uses when biome migrate eslint must preserve configurable ESLint rule options through source-option models, Biome conversions, typed rule variants, and migration fixtures.

    26k GitHub stars~1.4k tokensUpdated today
    DevelopmentAuto-check passed
  • Ultracite

    agustinusnathaniel/nextarter-tailwind

    Ultracite is a zero-config linting and formatting preset for JavaScript/TypeScript projects.

    125 GitHub starsUsed in 2 repos~1.2k tokens
    DevelopmentAuto-check passed
  • Code Quality

    redis/RedisInsight

    Official

    Code-quality standards for RedisInsight: TypeScript strictness, naming conventions (camelCase, PascalCase, UPPERSNAKECASE), linting rules, no any without reason, no !important in styles, and…

    8.9k GitHub stars~1.2k tokensUpdated 6 days ago
    DevelopmentAuto-check passed
  • Boundaries Architect

    javierbrea/eslint-plugin-boundaries

    Act as a software architect: analyze a repository's folder structure and cross-file import dependencies, detect its architectural pattern, design element/file boundaries with the user, and configure…

    997 GitHub stars~4.2k tokensUpdated 2 days ago
    DevelopmentAuto-check passed
  • Port Rule

    web-infra-dev/rslint

    Port a new ESLint core or plugin rule to rslint, including explicitly requested batches.

    461 GitHub stars~1.7k tokensUpdated yesterday
    DevelopmentAuto-check passed

Works with

Categories

Questions about Nuxt Link Checker

What does Nuxt Link Checker do?

Find and fix broken or SEO unfriendly links in a Nuxt app with the nuxt-link-checker module. Nuxt Link Checker is an agent skill from harlan-zw/nuxt-link-checker. Find and fix broken or SEO unfriendly links in a Nuxt app with the nuxt-link-checker module.

When should I use Nuxt Link Checker?

Nuxt Link Checker fits situations like: A task mentions broken links; link checking on build; skipInspections; link checker reports.

How do I install Nuxt Link Checker in Claude Code?

Run `npx skills add harlan-zw/nuxt-link-checker --skill nuxt-link-checker -a claude-code`. Or copy the skill folder (skills/nuxt-link-checker in harlan-zw/nuxt-link-checker) into .claude/skills/nuxt-link-checker in your project. Claude Code loads it when a task matches its description.

How do I install Nuxt Link Checker in Codex?

Run `npx skills add harlan-zw/nuxt-link-checker --skill nuxt-link-checker -a codex`. Or copy the skill folder (skills/nuxt-link-checker in harlan-zw/nuxt-link-checker) into .agents/skills/nuxt-link-checker in your project. Codex loads it when a task matches its description.

Can I use Nuxt Link Checker 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 harlan-zw/nuxt-link-checker --skill nuxt-link-checker -a cursor` (or -a gemini-cli, github-copilot or opencode for the others). To copy it by hand, put the folder in .cursor/skills/nuxt-link-checker, .gemini/skills/nuxt-link-checker, .github/skills/nuxt-link-checker and .opencode/skills/nuxt-link-checker in your project.

What does Nuxt Link Checker need to run?

SKILL.md names no scripts, command-line tools or credentials: Nuxt Link Checker is instructions for the agent only.

Does Nuxt Link Checker access the network?

SKILL.md names 1 domain. As links in the text: nuxtseo.com. This is read from the text; nothing was executed.

Is Nuxt Link Checker 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. Review the folder before installing.

What licence does Nuxt Link Checker use?

Nuxt Link Checker 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 Nuxt Link Checker use?

About 1.9k tokens (SKILL.md is roughly 7.6k characters). Agents keep only the skill's name and description in context until a task matches; then they load SKILL.md in full.

What are the alternatives to Nuxt Link Checker?

Skills that share tags, products or a category with Nuxt Link Checker: LobeHub Alint Rule Set Maintenance (lobehub/lobehub, 83k stars), Eslint Migrate Options (biomejs/biome, 26k stars), Ultracite (agustinusnathaniel/nextarter-tailwind, 125 stars) and Code Quality (redis/RedisInsight, 8.9k stars). The comparison table on this page puts their stars, adoption, token cost, safety result and licence side by side.

Who maintains Nuxt Link Checker?

harlan-zw (a GitHub user) maintains it in harlan-zw/nuxt-link-checker, which has 101 GitHub stars. The repository was last updated on October 8, 2026.

Source: harlan-zw/nuxt-link-checker on GitHub. Facts on this page come from the repository at the commit we read; the author's words are quoted as theirs.