Skip to content

Release v3.2.1: New plugins, dependency updates, and docs#55

Merged
secondsky merged 12 commits intomainfrom
feat/nuxt-v5-seo-ui-updates
Apr 2, 2026
Merged

Release v3.2.1: New plugins, dependency updates, and docs#55
secondsky merged 12 commits intomainfrom
feat/nuxt-v5-seo-ui-updates

Conversation

@secondsky
Copy link
Copy Markdown
Owner

@secondsky secondsky commented Apr 2, 2026

Summary

  • 3 new plugins: nuxt-v5 (4 skills + 3 agents), supabase-postgres-best-practices (30 Postgres rules), threejs (3D web graphics)
  • Plugin updates: mutation-testing (Bun runner support), dependency-upgrade (supply chain security), nuxt-seo, nuxt-ui-v4, zod
  • Infrastructure: JSON schema validation system, GitHub issue templates
  • Docs: Changelog + README updated for v3.2.1 (167 → 170 plugins, stale references fixed)

Changes

Commit Description
2465134 Add nuxt-v5 plugin, update nuxt-seo and nuxt-ui-v4
f30061a Update dependency-upgrade with supply chain security
3b60bbf Add Bun native runner to mutation-testing
7e67f1a Fix missing license in mutation-testing frontmatter
1dfc076 Update CHANGELOG.md and README.md for v3.2.1

Marketplace Impact

Plugins: 169 → 170 (+1 net, +3 new)

Summary by CodeRabbit

  • New Features

    • Nuxt v5 plugin with core/data/server/production skills; added nuxt-v5, threejs, supabase-postgres-best-practices, and security-focused dependency-upgrade.
    • Nuxt UI v4: richer AI chat (reasoning, tool-calling, shimmer), parts-based rendering, and new AuthForm.
  • Updates

    • Nuxt SEO moved to v5 with a migration guide and breaking-change notes.
    • Dependency-upgrade refocused on supply-chain protections (cooldowns, lockfile validation, hardened installs).
  • Documentation

    • Many new/expanded guides, templates, migration references, and examples.
  • Chores

    • Frontmatter validation scripts, pre-push hook, CI workflow added; release bumped to 3.2.1.

secondsky and others added 3 commits April 1, 2026 14:44
- Update nuxt-seo with v5 migration guide and module changes
- Update nuxt-ui-v4 with new chat components (auth-form, chat-reasoning,
  chat-shimmer, chat-tool), AI SDK v5 integration, and Nuxt v4 features
- Add new nuxt-v5 plugin scaffold
- Regenerate marketplace.json
- Rewrote SKILL.md with supply chain protection, cooldown periods, and post-install script hardening
- Added 7 reference files (compatibility-matrix, cooldown-config-guide, package-manager-security, secrets-and-containers, staged-upgrades, supply-chain-security, testing-strategy)
- Added 7 security templates (bunfig, dependabot, devcontainer, npmrc, pnpm-workspace, renovate, yarnrc)
- Updated README.md with comprehensive documentation
- Updated plugin.json description and expanded keywords
- Regenerated marketplace.json to reflect new description and keywords

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
- Add v3.2.1 (2026-04-01) changelog entry with new plugins and updates
- Update README counts 167→170, fix stale 176 references
- Update version to 3.2.1, date to 2026-04-01
- Add February-April 2026 section to Recent Additions
- Update category counts (tooling 29, frontend 26)
@coderabbitai
Copy link
Copy Markdown
Contributor

coderabbitai bot commented Apr 2, 2026

Note

Reviews paused

It looks like this branch is under active development. To avoid overwhelming you with review comments due to an influx of new commits, CodeRabbit has automatically paused this review. You can configure this behavior by changing the reviews.auto_review.auto_pause_after_reviewed_commits setting.

Use the following commands to manage reviews:

  • @coderabbitai resume to resume automatic reviews.
  • @coderabbitai review to trigger a single review.

Use the checkboxes below for quick actions:

  • ▶️ Resume reviews
  • 🔍 Trigger review

Walkthrough

Adds a new Nuxt v5 plugin (skills, agents, templates, commands), reworks dependency‑upgrade into a supply‑chain security workflow with many templates and references, upgrades nuxt-seo and nuxt-ui-v4 to v5/AI patterns, introduces frontmatter validation tooling and CI, bulk-updates many plugin manifests/keywords, and updates release/README metadata.

Changes

Cohort / File(s) Summary
Factory & Release
\.factory/settings.json, CHANGELOG.md, README.md
Enable two factory plugins; release bumped to 3.2.1 and README/shop/skill counts, recent additions, and inventory references updated.
Dependency‑Upgrade (manifest + docs + skill)
plugins/dependency-upgrade/.claude-plugin/plugin.json, plugins/dependency-upgrade/README.md, plugins/dependency-upgrade/skills/dependency-upgrade/SKILL.md
Shift focus to supply‑chain security: updated manifest description/keywords, full README replacing placeholder, and SKILL.md rewritten for cooldowns, script hardening, lockfile validation, interactive modes.
Dependency‑Upgrade (references & templates)
plugins/dependency-upgrade/skills/dependency-upgrade/references/*, plugins/dependency-upgrade/skills/dependency-upgrade/templates/*-security.tmpl
Add extensive reference docs (compatibility matrix, cooldown guide, supply-chain security, testing, staged upgrades, secrets/containers) and multiple security-focused config templates (npmrc, bunfig, pnpm, yarnrc, dependabot, renovate, devcontainer).
Nuxt SEO (manifest, skill, docs, data)
plugins/nuxt-seo/.claude-plugin/plugin.json, plugins/nuxt-seo/README.md, plugins/nuxt-seo/skills/**, plugins/nuxt-seo/assets/package-versions.json
Migrate docs/metadata to Nuxt SEO v5: manifest edits, README/SKILL.md updates, many v5 reference docs (including v5 migration guide) and package-version metadata refresh.
Nuxt UI v4 (manifest, docs, skills, templates)
plugins/nuxt-ui-v4/.claude-plugin/plugin.json, plugins/nuxt-ui-v4/README.md, plugins/nuxt-ui-v4/skills/**, plugins/nuxt-ui-v4/templates/*
Revise manifest/README and skill docs for AI SDK v5 and Nuxt UI v4.6+: add Chat parts (Reasoning/Tool/Shimmer), AuthForm, form components, AI integration guides, and switch templates/config to global CSS + Tailwind approach.
Nuxt v5 Plugin (new plugin, agents, commands, skills, templates)
plugins/nuxt-v5/.claude-plugin/plugin.json, plugins/nuxt-v5/.mcp.json, plugins/nuxt-v5/README.md, plugins/nuxt-v5/agents/*, plugins/nuxt-v5/commands/nuxt-setup.md, plugins/nuxt-v5/skills/**
Add new nuxt-v5 plugin with MCP config, README, three agents (debugger, migration assistant, performance analyzer), interactive /nuxt-setup command, comprehensive skills (core/data/server/production), many refs, templates, composables, API handlers, tests, and deployment templates.
Frontmatter validation & CI
.githooks/pre-push, .github/workflows/validate-frontmatter.yml, scripts/validate-frontmatter.sh, FRONTMATTER_VALIDATION_REPORT.md
Add executable frontmatter validator, pre-push hook for selective SKILL.md checks, CI workflow to validate frontmatter on PRs/pushes, and aggregated validation report artifact.
Plugin manifests bulk edits
plugins/*/.claude-plugin/plugin.json (many)
Mass metadata edits across many plugins: trimmed/standardized keywords, version bumps/downgrades, reordered/added/removed agents/commands, added/removed mcpServers. Review for unintended removals or ordering changes.
Tooling: plugin sync & schema
scripts/sync-plugins.sh, schemas/plugin.schema.json, CLAUDE.md
Enhance sync script (jq requirement, multi‑skill detection, plugin-dir traversal, conditional agents/commands merge); broaden and relax plugin schema (new fields, flexible path/object forms) and update CLAUDE doc to reference schema changes.
Nuxt UI template/runtime changes
plugins/nuxt-ui-v4/skills/nuxt-ui-v4/templates/ui-chat-full.vue, plugins/nuxt-ui-v4/skills/nuxt-ui-v4/templates/nuxt.config.ts
Switch chat rendering to parts-based approach, add ChatReasoning/ChatTool/ChatShimmer usage, adjust prompt/error handling, and add global CSS entry plus theme config in nuxt.config.
Repository hooks & tests
.githooks/pre-push, plugins/nuxt-v5/skills/nuxt-production/templates/tests/**
Add pre-push validation hook and example Vitest component tests for Nuxt v5 production templates.
Misc docs & assets
CHANGELOG.md, various READMEs and SKILL.md updates across many plugins
Release notes update, README inventory/version bumps, and numerous documentation updates reflecting v5, AI, migration, and security guidance.

Sequence Diagram(s)

sequenceDiagram
    rect rgba(25, 115, 255, 0.5)
    participant User
    end
    rect rgba(16, 185, 129, 0.5)
    participant NuxtSetup as "nuxt-setup (agent/command)"
    end
    rect rgba(234, 88, 12, 0.5)
    participant FS as "Repository / File System"
    end
    rect rgba(158, 12, 248, 0.5)
    participant PM as "Package Manager (npm/pnpm/bun)"
    end
    rect rgba(111, 111, 111, 0.5)
    participant Cloud as "Deployment target (Cloudflare/Vercel)"
    end

    User ->> NuxtSetup: invoke /nuxt-setup with options
    NuxtSetup ->> FS: generate project files (nuxt.config, app.vue, templates, server/api)
    NuxtSetup ->> FS: create composables, tests, and deployment templates
    NuxtSetup ->> PM: output install command(s) per chosen PM
    PM -->> NuxtSetup: install result (success/failure)
    NuxtSetup ->> Cloud: provide deployment snippets/config
    NuxtSetup -->> User: display summary and next-step commands
Loading

Estimated code review effort

🎯 4 (Complex) | ⏱️ ~60 minutes

Possibly related PRs

✨ Finishing Touches
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Commit unit tests in branch feat/nuxt-v5-seo-ui-updates

Copy link
Copy Markdown
Contributor

@coderabbitai coderabbitai bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actionable comments posted: 12

Note

Due to the large number of review comments, Critical, Major severity comments were prioritized as inline comments.

Caution

Some comments are outside the diff and can’t be posted inline due to platform limitations.

⚠️ Outside diff range comments (2)
plugins/nuxt-seo/skills/nuxt-seo/references/installation-guide.md (1)

293-301: ⚠️ Potential issue | 🟡 Minor

Incorrect command syntax for manual installation.

Line 294 shows npx nuxt @nuxtjs/seo under the "Bun" comment, but this command is invalid. `npx nuxt` doesn't accept package names as arguments. The Bun equivalent should be `bun add `@nuxtjs/seo.

🔧 Proposed fix
 # Bun
-npx nuxt `@nuxtjs/seo`
+bun add `@nuxtjs/seo`
 
 # npm
 npm install `@nuxtjs/seo`
🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In `@plugins/nuxt-seo/skills/nuxt-seo/references/installation-guide.md` around
lines 293 - 301, Under the "Bun" section replace the invalid command string 'npx
nuxt `@nuxtjs/seo`' with the correct Bun install command 'bun add `@nuxtjs/seo`';
locate the "Bun" heading and the line containing 'npx nuxt `@nuxtjs/seo`' in
installation-guide.md and update it so the three package manager examples read
Bun: 'bun add `@nuxtjs/seo`', npm: 'npm install `@nuxtjs/seo`', pnpm: 'pnpm add
`@nuxtjs/seo`'.
plugins/nuxt-seo/skills/nuxt-seo/SKILL.md (1)

160-176: ⚠️ Potential issue | 🟡 Minor

Inconsistent module naming in installation commands.

Lines 161-164 use bare module names (nuxt-robots, nuxt-sitemap, nuxt-og-image) while the module table (lines 58-65) uses scoped names (@nuxtjs/robots, @nuxtjs/sitemap). Use consistent naming throughout.

 ```bash
-npx nuxt module add nuxt-robots
-npx nuxt module add nuxt-sitemap
-npx nuxt module add nuxt-og-image
+npx nuxt module add `@nuxtjs/robots`
+npx nuxt module add `@nuxtjs/sitemap`
+npx nuxt module add nuxt-og-image

<details>
<summary>🤖 Prompt for AI Agents</summary>

Verify each finding against the current code and only fix it if needed.

In @plugins/nuxt-seo/skills/nuxt-seo/SKILL.md around lines 160 - 176, The
install commands use unscoped package names while the module table uses scoped
names; update the bash examples so package names are consistent: replace the two
commands installing nuxt-robots and nuxt-sitemap with their scoped equivalents
@nuxtjs/robots and @nuxtjs/sitemap (leave nuxt-og-image as-is), and ensure the
modules array in the TypeScript example uses the same package identifiers
('@nuxtjs/robots', '@nuxtjs/sitemap', 'nuxt-og-image') so install commands and
config match.


</details>

</blockquote></details>

</blockquote></details>
🟡 Minor comments (16)
plugins/nuxt-v5/skills/nuxt-production/references/performance.md-3-3 (1)

3-3: ⚠️ Potential issue | 🟡 Minor

Version inconsistency: Document references "Nuxt 4" but is located in the nuxt-v5 plugin.

Similar to hydration.md, this file references "Nuxt 4" but resides in plugins/nuxt-v5/.

Proposed fix
-Comprehensive guide to optimizing Nuxt 4 applications for maximum performance.
+Comprehensive guide to optimizing Nuxt 5 applications for maximum performance.
🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In `@plugins/nuxt-v5/skills/nuxt-production/references/performance.md` at line 3,
The document in performance.md incorrectly references "Nuxt 4"; update that
wording to "Nuxt 5" (and any other occurrences) to match the nuxt-v5 plugin set;
also mirror the same fix applied in hydration.md by searching performance.md for
"Nuxt 4" and replacing with "Nuxt 5", and scan the file for other
version-specific terms or examples that need adjusting to Nuxt 5 compatibility.
plugins/nuxt-v5/skills/nuxt-production/references/hydration.md-3-3 (1)

3-3: ⚠️ Potential issue | 🟡 Minor

Version inconsistency: Document references "Nuxt 4" but is located in the nuxt-v5 plugin.

This file is in plugins/nuxt-v5/ but the description references "Nuxt 4". Should this be updated to "Nuxt 5" for consistency with the plugin directory?

Proposed fix
-Complete guide to SSR hydration in Nuxt 4, common issues, and solutions.
+Complete guide to SSR hydration in Nuxt 5, common issues, and solutions.
🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In `@plugins/nuxt-v5/skills/nuxt-production/references/hydration.md` at line 3,
The document in plugins/nuxt-v5 (file hydration.md) incorrectly references "Nuxt
4"; update that wording to "Nuxt 5" for consistency—search for the string "Nuxt
4" in hydration.md (and any nearby headings or metadata in that file) and
replace with "Nuxt 5", and ensure any contextual mentions (e.g., "Nuxt 4 SSR" or
examples/comments) are adjusted so the document consistently targets Nuxt 5.
plugins/nuxt-v5/skills/nuxt-production/references/testing-vitest.md-3-3 (1)

3-3: ⚠️ Potential issue | 🟡 Minor

Version inconsistency: Document references "Nuxt 4" but is located in the nuxt-v5 plugin.

This is the third file in the nuxt-v5 plugin that references "Nuxt 4" instead of "Nuxt 5".

Proposed fix
-Comprehensive guide to testing Nuxt 4 applications with Vitest and `@nuxt/test-utils`.
+Comprehensive guide to testing Nuxt 5 applications with Vitest and `@nuxt/test-utils`.
🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In `@plugins/nuxt-v5/skills/nuxt-production/references/testing-vitest.md` at line
3, The document in the nuxt-v5 plugin references "Nuxt 4" incorrectly; update
the text in testing-vitest.md (search for the literal "Nuxt 4") to "Nuxt 5" so
the guide matches the nuxt-v5 plugin context and ensure any other mentions of
"Nuxt 4" in that file are replaced consistently.
plugins/nuxt-v5/skills/nuxt-server/references/server.md-31-31 (1)

31-31: ⚠️ Potential issue | 🟡 Minor

Broken anchor link in Table of Contents.

The link #error-handling won't resolve correctly because the actual heading is "Error Handling (v5)" which generates the anchor #error-handling-v5.

Proposed fix
-- [Error Handling](`#error-handling`)
+- [Error Handling](`#error-handling-v5`)
🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In `@plugins/nuxt-v5/skills/nuxt-server/references/server.md` at line 31, The
Table of Contents link `[Error Handling](`#error-handling`)` is broken because the
actual heading is "Error Handling (v5)" which produces the anchor
`#error-handling-v5`; update the TOC entry in
plugins/nuxt-v5/skills/nuxt-server/references/server.md to point to
`#error-handling-v5` (or rename the heading to remove “(v5)” if you prefer the
original anchor) so the anchor resolves correctly.
plugins/nuxt-seo/skills/nuxt-seo/references/advanced-seo-guides.md-5-5 (1)

5-5: ⚠️ Potential issue | 🟡 Minor

Use a direct relative path for the migration guide reference.

Line 5 currently points to references/v5-migration-guide.md; from this file location, ./v5-migration-guide.md is clearer and avoids path ambiguity.

Suggested doc tweak
-> **v5 Note**: Several server-side APIs changed in v5. See `references/v5-migration-guide.md` for details.
+> **v5 Note**: Several server-side APIs changed in v5. See `./v5-migration-guide.md` for details.
🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In `@plugins/nuxt-seo/skills/nuxt-seo/references/advanced-seo-guides.md` at line
5, Update the migration-guide link in advanced-seo-guides.md: replace the
relative path string "references/v5-migration-guide.md" with a direct relative
path "./v5-migration-guide.md" so the link is unambiguous from this document's
location; locate the reference text "**v5 Note**: Several server-side APIs
changed in v5. See `references/v5-migration-guide.md` for details." and change
the backticked path accordingly.
plugins/dependency-upgrade/skills/dependency-upgrade/templates/npmrc-security.tmpl-9-10 (1)

9-10: ⚠️ Potential issue | 🟡 Minor

Update the npm CLI version requirement in the npmrc template comment.

The allow-git=none option was introduced in npm CLI 11.9.0, not 11.10.0. Update line 9 to reflect the correct version: npm CLI 11.9.0+ instead of npm CLI 11.10.0+.

🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In
`@plugins/dependency-upgrade/skills/dependency-upgrade/templates/npmrc-security.tmpl`
around lines 9 - 10, Update the inline comment above the `allow-git=none`
setting in the npmrc template to state the correct npm CLI version; change the
text that currently says "npm CLI 11.10.0+" to "npm CLI 11.9.0+" so the comment
accurately reflects when `allow-git=none` was introduced (the setting is defined
on the `allow-git=none` line in the npmrc-security.tmpl template).
plugins/nuxt-v5/skills/nuxt-data/references/composables.md-1-3 (1)

1-3: ⚠️ Potential issue | 🟡 Minor

Version mismatch: Document references Nuxt 4 but is in nuxt-v5 plugin.

Line 3 states "Comprehensive guide to creating and using composables in Nuxt 4" but this file resides in plugins/nuxt-v5/. Update to reference Nuxt 5 for consistency with the plugin scope.

Proposed fix
 # Composables - Advanced Patterns
 
-Comprehensive guide to creating and using composables in Nuxt 4.
+Comprehensive guide to creating and using composables in Nuxt 5.
🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In `@plugins/nuxt-v5/skills/nuxt-data/references/composables.md` around lines 1 -
3, Update the heading sentence that currently reads "Comprehensive guide to
creating and using composables in Nuxt 4" to reference Nuxt 5 (e.g.,
"Comprehensive guide to creating and using composables in Nuxt 5"); search the
same file for any other "Nuxt 4" occurrences and replace them with "Nuxt 5" to
keep the documentation consistent with the nuxt-v5 plugin.
plugins/nuxt-seo/skills/nuxt-seo/references/installation-guide.md-407-419 (1)

407-419: ⚠️ Potential issue | 🟡 Minor

Mislabeled package manager command.

Line 409-410 is labeled as "Bun" but shows an npm uninstall command. This should either be labeled correctly or changed to bun remove.

🔧 Proposed fix
 Remove individual packages:
 ```bash
-# Bun
-npm uninstall nuxt-robots nuxt-sitemap nuxt-og-image nuxt-schema-org
+# Bun
+bun remove nuxt-robots nuxt-sitemap nuxt-og-image nuxt-schema-org
 
 # npm
 npm uninstall nuxt-robots nuxt-sitemap nuxt-og-image nuxt-schema-org
🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In `@plugins/nuxt-seo/skills/nuxt-seo/references/installation-guide.md` around
lines 407 - 419, The "Bun" label in the uninstall section is incorrect: replace
the npm command under the "Bun" heading with the proper Bun command so the block
shows "bun remove nuxt-robots nuxt-sitemap nuxt-og-image nuxt-schema-org" while
leaving the "npm" section unchanged; update the text in the
installation-guide.md near the uninstall examples so the "Bun" heading matches
the command shown.
plugins/dependency-upgrade/skills/dependency-upgrade/references/staged-upgrades.md-146-162 (1)

146-162: ⚠️ Potential issue | 🟡 Minor

Regex test() before replace() may skip matches.

Using test() on a global regex (/g flag) advances lastIndex, so the subsequent replace() may skip the first match. Either use replace() alone (it's a no-op if no match) or reset lastIndex after test().

🔧 Proposed fix
   for (const [pattern, replacement] of replacements) {
-    if (pattern.test(content)) {
-      content = content.replace(pattern, replacement);
+    const newContent = content.replace(pattern, replacement);
+    if (newContent !== content) {
+      content = newContent;
       changed = true;
       totalChanges++;
     }
   }
🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In
`@plugins/dependency-upgrade/skills/dependency-upgrade/references/staged-upgrades.md`
around lines 146 - 162, The loop uses pattern.test(content) before
content.replace(), which breaks for global regexes because test() advances
lastIndex; instead call content.replace(pattern, replacement) directly and
detect changes by comparing the new string to the old (e.g., newContent !==
content) to set changed and write the file; update totalChanges by the number of
replacements found (use (content.match(pattern) || []).length) and assign
content = newContent; adjust references to files, content, replacements,
pattern, replacement, changed, and totalChanges accordingly.
plugins/nuxt-ui-v4/skills/nuxt-ui-v4/references/nuxt-v4-features.md-166-178 (1)

166-178: ⚠️ Potential issue | 🟡 Minor

Truncated content placeholder left in document.

Line 168 contains ...) which appears to be leftover from an incomplete edit. The v4.2.0 components section header exists but the actual component list was removed, leaving only this artifact before the v4.6 section.

🔧 Proposed fix - Remove or complete the section
 ### New Components (v4.2.0)

-...)
-
-### New Components (v4.6)
+See v4.6 below for the latest additions.
+
+### New Components (v4.6)

Or if v4.2.0 components should be listed, add them back.

🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In `@plugins/nuxt-ui-v4/skills/nuxt-ui-v4/references/nuxt-v4-features.md` around
lines 166 - 178, Remove the stray placeholder "...)" under the "### New
Components (v4.2.0)" heading (it is an unfinished edit) and either delete the
entire empty v4.2.0 section or restore the original component list for v4.2.0 so
the document flows correctly before the "### New Components (v4.6)" section;
search for the "### New Components (v4.2.0)" header and the exact token "...)"
to locate the spot to fix in nuxt-v4-features.md and update accordingly.
plugins/nuxt-seo/skills/nuxt-seo/references/modules-overview.md-10-11 (1)

10-11: ⚠️ Potential issue | 🟡 Minor

Broken anchor links in Table of Contents.

The anchor fragments don't match the actual heading IDs. When @nuxtjs/robots and @nuxtjs/sitemap were renamed from nuxt-robots and nuxt-sitemap, the ToC anchors weren't updated to match.

🔧 Proposed fix
-2. [`@nuxtjs/robots` (Robots.txt & Bot Detection)](`#2-nuxt-robots-robotstxt--bot-detection`)
-3. [`@nuxtjs/sitemap` (XML Sitemap Generation)](`#3-nuxt-sitemap-xml-sitemap-generation`)
+2. [`@nuxtjs/robots` (Robots.txt & Bot Detection)](`#2-nuxtjsrobots-robotstxt--bot-detection`)
+3. [`@nuxtjs/sitemap` (XML Sitemap Generation)](`#3-nuxtjssitemap-xml-sitemap-generation`)
🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In `@plugins/nuxt-seo/skills/nuxt-seo/references/modules-overview.md` around lines
10 - 11, Update the broken Table of Contents anchor fragments so they match the
actual heading IDs for the renamed packages: replace the existing anchors
linking to "#2-nuxt-robots-robotstxt--bot-detection" and
"#3-nuxt-sitemap-xml-sitemap-generation" with anchors that reflect the current
headings for "@nuxtjs/robots" and "@nuxtjs/sitemap" (e.g.,
"#2-@nuxtjs/robots-robotstxt--bot-detection" and
"#3-@nuxtjs/sitemap-xml-sitemap-generation" or whatever the generated slugger
produces), ensuring the ToC entries for `@nuxtjs/robots` and `@nuxtjs/sitemap`
exactly match the heading IDs in the document.
plugins/nuxt-v5/skills/nuxt-production/references/deployment-cloudflare.md-1-4 (1)

1-4: ⚠️ Potential issue | 🟡 Minor

Inconsistent Nuxt version reference.

The document header mentions "Nuxt 4 applications" but this file is located in the nuxt-v5 plugin. Update to reflect Nuxt 5.

-Comprehensive guide to deploying Nuxt 4 applications on Cloudflare Pages and Workers, including NuxtHub integration and all bindings.
+Comprehensive guide to deploying Nuxt 5 applications on Cloudflare Pages and Workers, including NuxtHub integration and all bindings.
🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In `@plugins/nuxt-v5/skills/nuxt-production/references/deployment-cloudflare.md`
around lines 1 - 4, Update the document's Nuxt version references: change the
header phrase "Nuxt 4 applications" to "Nuxt 5 applications" and scan the file
for any other occurrences of "Nuxt 4" (e.g., in the opening line or description)
and replace them with "Nuxt 5" so the content matches the nuxt-v5 plugin
context.
plugins/nuxt-v5/skills/nuxt-core/templates/nuxt.config.ts-82-96 (1)

82-96: ⚠️ Potential issue | 🟡 Minor

Remove the unnecessary empty optimizeDeps.include array.

The optimizeDeps.include: [] configuration has no effect and can be safely removed.

♻️ Remove unnecessary empty array
   vite: {
     build: {
       rolldownOptions: {
         output: {
           manualChunks: {
             vendor: ['vue', 'vue-router']
           }
         }
       }
-    },
-
-    optimizeDeps: {
-      include: []
     }
   },
🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In `@plugins/nuxt-v5/skills/nuxt-core/templates/nuxt.config.ts` around lines 82 -
96, Remove the no-op empty array optimizeDeps.include from the Vite config:
locate the vite block (vite: { ... }) and delete the optimizeDeps: { include: []
} entry so the configuration no longer contains the unnecessary
optimizeDeps.include key; ensure commas/braces around vite.build.rolldownOptions
and the remaining vite settings are adjusted so the object remains valid.
plugins/dependency-upgrade/skills/dependency-upgrade/SKILL.md-193-198 (1)

193-198: ⚠️ Potential issue | 🟡 Minor

Typo: "pnnpm" should be "pnpm".

Proposed fix
-**pnnpm (10.0+)**: Disabled by default. Allow specific packages in `pnpm-workspace.yaml`:
+**pnpm (10.0+)**: Disabled by default. Allow specific packages in `pnpm-workspace.yaml`:
🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In `@plugins/dependency-upgrade/skills/dependency-upgrade/SKILL.md` around lines
193 - 198, The README/skill documentation contains a typo: the heading and
reference "**pnnpm (10.0+)**" should be corrected to "**pnpm (10.0+)**"; update
the SKILL.md entry (the line containing the bolded package name) to replace
"pnnpm" with "pnpm" so the documentation correctly references pnpm and its
example `pnpm-workspace.yaml` settings.
plugins/nuxt-ui-v4/README.md-224-225 (1)

224-225: ⚠️ Potential issue | 🟡 Minor

Version number inconsistency with PR objectives.

The README shows Version: 3.1.0 but the PR is for release v3.2.1. This should be updated to reflect the correct version.

Proposed fix
 **Last Updated**: 2026-03-30
-**Version**: 3.1.0
+**Version**: 3.2.1
🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In `@plugins/nuxt-ui-v4/README.md` around lines 224 - 225, The README contains an
incorrect version string "Version: 3.1.0" that must be updated to match the
release v3.2.1; update the literal "Version: 3.1.0" to "Version: 3.2.1" in the
README (look for the Version header line near the "Last Updated" metadata) and
verify the displayed version exactly matches the PR/release tag.
plugins/nuxt-v5/skills/nuxt-data/templates/composables/useAuth.ts-74-84 (1)

74-84: ⚠️ Potential issue | 🟡 Minor

Session check doesn't clear auth state when user is missing from response.

When checkSession receives a successful response but data.user is undefined/null (e.g., session expired), the existing user and isAuthenticated values remain unchanged. This could leave stale authentication state.

Proposed fix to handle missing user in session response
     try {
       const data = await $fetch<{ user?: User }>('/api/auth/session')

       if (data?.user) {
         state.value.user = data.user
         state.value.isAuthenticated = true
+      } else {
+        state.value.user = null
+        state.value.isAuthenticated = false
       }

       // Clear any previous session errors on success
       state.value.sessionError = null
       state.value.lastSessionCheck = Date.now()
🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In `@plugins/nuxt-v5/skills/nuxt-data/templates/composables/useAuth.ts` around
lines 74 - 84, The session check currently only updates state when data.user
exists, leaving stale auth when the response is successful but user is missing;
inside the checkSession try block (the $fetch call) ensure you explicitly clear
authentication when data.user is falsy by setting state.value.user = null and
state.value.isAuthenticated = false (while still clearing
state.value.sessionError and updating state.value.lastSessionCheck), so that
checkSession reliably resets auth state when the session has expired or no user
is returned.
🧹 Nitpick comments (22)
plugins/dependency-upgrade/skills/dependency-upgrade/references/compatibility-matrix.md (1)

101-103: Remove or link hardcoded Node.js LTS dates to official schedule.

Node 18's "LTS until April 2025" is already outdated. Rather than maintaining hardcoded dates, link to the official Node.js release schedule or GitHub's Release WG where EOL dates are maintained. Update the table to focus on version compatibility and npm support, removing temporal data that decays.

🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In
`@plugins/dependency-upgrade/skills/dependency-upgrade/references/compatibility-matrix.md`
around lines 101 - 103, Update the compatibility table in
compatibility-matrix.md by removing hardcoded LTS end-date text (e.g., the "LTS
until April 2025/2026/2027" cells) and instead either add a link to the official
Node.js release schedule (https://nodejs.org/en/about/releases) or the Node.js
Release WG (https://github.com/nodejs/release) in a table caption or a new
"Notes" column; keep rows like "18 LTS | 9.x | Yes" focused on version
compatibility and npm support (refer to the three rows shown for 18/20/22 LTS)
and ensure no static temporal data remains in those cells.
plugins/nuxt-v5/skills/nuxt-production/references/testing-vitest.md (1)

370-384: Mock example missing ref import.

The useFetch mock example uses ref() but doesn't show the import. This could confuse users following the documentation.

Proposed fix
 ### Mock useFetch
 
 ```typescript
-import { vi } from 'vitest'
+import { vi } from 'vitest'
+import { ref } from 'vue'
 
 vi.mock('#app', () => ({
   useFetch: vi.fn((url) => ({
🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In `@plugins/nuxt-v5/skills/nuxt-production/references/testing-vitest.md` around
lines 370 - 384, The example mock uses ref() but doesn't import it, causing the
snippet to be invalid; update the mock example by adding an import for ref from
'vue' alongside the existing import of vi from 'vitest' so the mocked useFetch
(in the vi.mock callback) can return data: ref(...), error: ref(...), and
pending: ref(...) without errors; ensure the top of the snippet includes "import
{ ref } from 'vue'" and keep the vi.mock / useFetch names unchanged.
plugins/nuxt-v5/skills/nuxt-production/references/performance.md (1)

398-412: Clarify Terser dependency requirement for terserOptions.

Vite uses esbuild for minification by default. The terserOptions configuration only works if terser is explicitly installed as a dependency and the build is configured to use it. Consider adding a note about this requirement.

Suggested clarification
 4. **Enable tree shaking**
 ```typescript
 // nuxt.config.ts
+// Note: Requires `terser` to be installed: npm install -D terser
 export default defineNuxtConfig({
   vite: {
     build: {
+      minify: 'terser',  // Switch from esbuild to terser
       terserOptions: {
         compress: {
           drop_console: true  // Remove console.logs
         }
       }
     }
   }
 })
</details>

<details>
<summary>🤖 Prompt for AI Agents</summary>

Verify each finding against the current code and only fix it if needed.

In @plugins/nuxt-v5/skills/nuxt-production/references/performance.md around
lines 398 - 412, The docs show using terserOptions but don't state that Vite
uses esbuild by default; update the nuxt.config.ts example and note that
terserOptions only works when you switch minification to terser and install
terser as a dev dependency (e.g., npm install -D terser). Instruct readers to
set minify: 'terser' alongside terserOptions in the defineNuxtConfig Vite build
block and add a short comment/note about installing terser so terserOptions will
be applied.


</details>

</blockquote></details>
<details>
<summary>plugins/dependency-upgrade/README.md (1)</summary><blockquote>

`59-66`: **Add language identifier to fenced code block.**

The "Quick Usage" code block is missing a language identifier, which causes a markdownlint warning. Since these are example user prompts rather than executable code, use `text` as the language identifier.



<details>
<summary>📝 Proposed fix for markdown linting</summary>

```diff
 ## Quick Usage
 
-```
+```text
 "Set up secure dependency management for my project using Bun"
 "Configure a 7-day cooldown period for npm installs"
 "Help me upgrade React from 18 to 19 safely"
 "Set up Dependabot with a cooldown period"
 "Configure post-install script blocking for pnpm"
</details>

As per static analysis, fenced code blocks should have a language specified (markdownlint rule MD040).

<details>
<summary>🤖 Prompt for AI Agents</summary>

Verify each finding against the current code and only fix it if needed.

In @plugins/dependency-upgrade/README.md around lines 59 - 66, The "Quick Usage"
fenced code block is missing a language identifier; update the markdown in the
README's "Quick Usage" block to include the language tag text on the opening
triple backticks (so the block that contains the five example prompts is text ... ). Locate the fenced block in the README (the example prompts like "Set
up secure dependency management for my project using Bun") and add text after
the opening ``` to satisfy markdownlint MD040.


</details>

</blockquote></details>
<details>
<summary>README.md (1)</summary><blockquote>

`148-162`: **New additions section is well-documented.**

The "February - April 2026" section clearly documents the new plugins (nuxt-v5, supabase-postgres-best-practices, threejs), infrastructure additions, and plugin enhancements included in this release.

*Minor typographical note*: Static analysis suggests using an en dash (–) instead of a hyphen (-) in "February - April 2026" for proper date range formatting.

<details>
<summary>🤖 Prompt for AI Agents</summary>

```
Verify each finding against the current code and only fix it if needed.

In `@README.md` around lines 148 - 162, Replace the hyphen in the heading
"February - April 2026" with an en dash (–) to use proper date range
punctuation; locate the heading text "February - April 2026" in the README and
update it to "February – April 2026" while ensuring surrounding formatting (the
markdown heading and surrounding section content for Full-Stack Frameworks,
Infrastructure, and Plugin Enhancements) remains unchanged.
```

</details>

</blockquote></details>
<details>
<summary>plugins/nuxt-v5/skills/nuxt-data/references/composables.md (1)</summary><blockquote>

`767-767`: **Stale "Last Updated" date.**

The date shows `2025-11-09` but this is a new file in a v3.2.1 release (April 2026). Consider updating to reflect the actual creation date.

<details>
<summary>🤖 Prompt for AI Agents</summary>

```
Verify each finding against the current code and only fix it if needed.

In `@plugins/nuxt-v5/skills/nuxt-data/references/composables.md` at line 767,
Update the stale "**Last Updated**" metadata in
plugins/nuxt-v5/skills/nuxt-data/references/composables.md by replacing the
2025-11-09 date with the actual creation/release date for this v3.2.1 file
(April 2026); locate the "**Last Updated**:" line and set it to the correct
ISO-style date (e.g., 2026-04-XX) that reflects the file's creation in the
v3.2.1 release.
```

</details>

</blockquote></details>
<details>
<summary>plugins/dependency-upgrade/skills/dependency-upgrade/references/staged-upgrades.md (2)</summary><blockquote>

`22-35`: **Add language specifier to code block.**

The code block showing upgrade ordering lacks a language specifier, which triggers a markdown lint warning. Adding `text` or `plaintext` would resolve this.


<details>
<summary>📝 Proposed fix</summary>

```diff
-```
+```text
 1. TypeScript / build tools
 2. Core framework (React, Next.js, etc.)
 3. Routing
```
</details>

<details>
<summary>🤖 Prompt for AI Agents</summary>

Verify each finding against the current code and only fix it if needed.

In
@plugins/dependency-upgrade/skills/dependency-upgrade/references/staged-upgrades.md
around lines 22 - 35, The fenced code block under "Phase 2: Ordering" is missing
a language specifier and triggers markdown-lint; update the triple-backtick
fence that contains the ordered list (the block starting with "1. TypeScript /
build tools") to include a language such as text or plaintext (e.g., replace withtext) so the linter recognizes it as plain text while preserving the
existing list content.


</details>

---

`194-218`: **Rollback script has potential state issue.**

The script does `git stash` then `git checkout -b upgrade-branch`, but if the upgrade fails, uncommitted stashed changes are never restored. Consider adding `git stash pop` in the failure path or documenting that stash is intentionally discarded.


<details>
<summary>💡 Suggested improvement</summary>

```diff
 # Save current state
-git stash
+git stash push -m "pre-upgrade-backup"
 git checkout -b upgrade-branch
 
 # Attempt upgrade
@@ -213,4 +213,5 @@
   echo "Upgrade failed, rolling back"
   git checkout main
   git branch -D upgrade-branch
+  git stash pop  # Restore any uncommitted work
   bun install  # Restore from lockfile
 fi
```
</details>

<details>
<summary>🤖 Prompt for AI Agents</summary>

```
Verify each finding against the current code and only fix it if needed.

In
`@plugins/dependency-upgrade/skills/dependency-upgrade/references/staged-upgrades.md`
around lines 194 - 218, The rollback.sh script stashes local changes then
creates upgrade-branch but never restores the stash on failure, risking lost
uncommitted work; update the failure path in rollback.sh to restore the stashed
changes (e.g. run git stash pop or git stash apply followed by git stash drop)
before deleting upgrade-branch and switching back to main, and ideally also pop
or drop the stash on successful commit so the working tree is consistent; ensure
you reference the git stash/gist handling near the git checkout -b
upgrade-branch, the failure branch that checks bun test && bun run build, and
the cleanup steps that run git checkout main and git branch -D upgrade-branch.
```

</details>

</blockquote></details>
<details>
<summary>plugins/dependency-upgrade/skills/dependency-upgrade/references/secrets-and-containers.md (1)</summary><blockquote>

`85-90`: **Redundant `--env-file` flags in example.**

Line 89 shows `op run --env-file="./.env" -- node --env-file="./.env" server.js` which passes `--env-file` twice. If `op run` is resolving secrets from `.env`, Node's `--env-file` would re-read the unresolved secret references. Consider clarifying the intent or simplifying.


<details>
<summary>💡 Suggested clarification</summary>

```diff
 # Run with secret injection
 op run -- npm start
 
-# With explicit env file
-op run --env-file="./.env" -- node --env-file="./.env" server.js
+# With explicit env file (op resolves secrets before passing to node)
+op run --env-file="./.env" -- node server.js
```
</details>

<details>
<summary>🤖 Prompt for AI Agents</summary>

```
Verify each finding against the current code and only fix it if needed.

In
`@plugins/dependency-upgrade/skills/dependency-upgrade/references/secrets-and-containers.md`
around lines 85 - 90, The example shows redundant --env-file usage: the command
`op run --env-file="./.env" -- node --env-file="./.env" server.js` passes the
same env file to both `op run` and the `node` process, which is confusing;
update the example to express the intended behavior by either removing the Node
flag when `op run` is supplying the environment (e.g., `op run
--env-file="./.env" -- node server.js`) or, if the intent is to demonstrate Node
reading the file itself, move the env-file only to `node` (e.g., `op run -- node
--env-file="./.env" server.js`), and add a short clarifying note referencing `op
run` and `node --env-file` so readers know which process is responsible for
loading the .env.
```

</details>

</blockquote></details>
<details>
<summary>plugins/nuxt-v5/skills/nuxt-core/SKILL.md (1)</summary><blockquote>

`46-82`: **Consider adding language identifier to directory structure code block.**

Static analysis flagged this code block for missing a language specifier. For directory structure diagrams, you could use `text` or `plaintext`.


<details>
<summary>♻️ Proposed fix</summary>

```diff
-```
+```text
 my-nuxt-app/
 ├── app/                    # Default srcDir
```
</details>

<details>
<summary>🤖 Prompt for AI Agents</summary>

Verify each finding against the current code and only fix it if needed.

In @plugins/nuxt-v5/skills/nuxt-core/SKILL.md around lines 46 - 82, Update the
fenced directory-structure code block in SKILL.md to include a language
identifier (e.g., change the opening totext) so the block is treated as
plain text; locate the directory diagram inside SKILL.md (the multiline block
starting with "my-nuxt-app/") and modify only the opening fence to ```text (no
other content changes).


</details>

</blockquote></details>
<details>
<summary>plugins/dependency-upgrade/skills/dependency-upgrade/references/testing-strategy.md (1)</summary><blockquote>

`7-15`: **Consider adding a language identifier to the fenced code block.**

Static analysis flagged this code block for missing a language specifier. Since this is an ASCII diagram, you could use `text` or `plaintext` as the language identifier to satisfy linters while preserving the content.


<details>
<summary>♻️ Proposed fix</summary>

```diff
-```
+```text
         E2E Tests
        /          \
     Integration Tests
     /                \
   Unit Tests
   /                    \
 Static Analysis (tsc, lint)
 ```
```
</details>

<details>
<summary>🤖 Prompt for AI Agents</summary>

Verify each finding against the current code and only fix it if needed.

In
@plugins/dependency-upgrade/skills/dependency-upgrade/references/testing-strategy.md
around lines 7 - 15, The fenced ASCII-art code block in testing-strategy.md
lacks a language identifier which triggers static analysis; update the
triple-backtick fence to include a plain-language tag (e.g., "text" or
"plaintext") so the block becomes text (or plaintext) and preserves the
diagram while satisfying linters—target the ASCII diagram block between the
existing backticks in the file.


</details>

</blockquote></details>
<details>
<summary>plugins/nuxt-v5/skills/nuxt-server/templates/server/api/blog/index.get.ts (1)</summary><blockquote>

`46-54`: **Avoid duplicate `Number(count)` conversion.**

`Number(count)` is called twice on lines 51 and 52. Store the result in a variable for cleaner code.


<details>
<summary>♻️ Proposed fix</summary>

```diff
+  const total = Number(count)
+
   return {
     data: allPosts,
     meta: {
       page,
       limit,
-      total: Number(count),
-      totalPages: Math.ceil(Number(count) / limit)
+      total,
+      totalPages: Math.ceil(total / limit)
     }
   }
```
</details>

<details>
<summary>🤖 Prompt for AI Agents</summary>

```
Verify each finding against the current code and only fix it if needed.

In `@plugins/nuxt-v5/skills/nuxt-server/templates/server/api/blog/index.get.ts`
around lines 46 - 54, The code calls Number(count) twice when building the
response object; assign Number(count) to a local variable (e.g., totalCount)
before the return and use that variable for both total and totalPages
calculations so the conversion is done once; update the return object (data:
allPosts, meta: { page, limit, total: totalCount, totalPages:
Math.ceil(totalCount / limit) }) and keep references to page, limit, allPosts,
and count as-is.
```

</details>

</blockquote></details>
<details>
<summary>plugins/nuxt-v5/skills/nuxt-production/templates/wrangler.toml (1)</summary><blockquote>

`4-4`: **Compatibility date is set to a future date.**

The `compatibility_date = "2025-12-19"` appears to be a placeholder or future date. Consider using a current or recent date, or add a comment indicating this should be updated to the deployment date.

<details>
<summary>🤖 Prompt for AI Agents</summary>

```
Verify each finding against the current code and only fix it if needed.

In `@plugins/nuxt-v5/skills/nuxt-production/templates/wrangler.toml` at line 4,
The compatibility_date in wrangler.toml is set to a future placeholder
("2025-12-19"); update the compatibility_date value to a current/recent
deployment date (or replace it with a template placeholder and add a comment) so
deployments use a realistic Cloudflare Workers compatibility date — look for the
compatibility_date key in wrangler.toml and either set it to today's/recent date
or add a clear comment explaining it must be updated at deploy time.
```

</details>

</blockquote></details>
<details>
<summary>plugins/nuxt-v5/skills/nuxt-server/SKILL.md (1)</summary><blockquote>

`1-519`: **SKILL.md exceeds 500-line limit.**

At 519 lines, this file slightly exceeds the 500-line limit specified in the coding guidelines. Consider extracting one of the larger sections (e.g., "Database Integration" at lines 319-374 or "File Uploads" at lines 376-401) to a reference file.

As per coding guidelines: "Maintain SKILL.md files at less than 500 lines after refactoring to ensure progressive disclosure of content."

<details>
<summary>🤖 Prompt for AI Agents</summary>

```
Verify each finding against the current code and only fix it if needed.

In `@plugins/nuxt-v5/skills/nuxt-server/SKILL.md` around lines 1 - 519, SKILL.md
is 519 lines and exceeds the 500-line limit; extract one large section
(recommend "Database Integration" or "File Uploads") into a new reference file
(e.g., references/server-database.md or references/server-uploads.md), keep a
short summary + pointer in SKILL.md, and remove the full copied section so
SKILL.md drops below 500 lines. Update any internal references in SKILL.md that
point to the moved content (e.g., "Database Integration", "File Uploads", and
examples like useDB, readMultipartFormData) to reference the new file and ensure
exported section titles and example symbols (useDB, drizzle, R2,
readMultipartFormData) remain accurate in the new reference. Ensure
metadata/versioning remains unchanged and run a quick line-count to confirm
SKILL.md is under 500 lines.
```

</details>

</blockquote></details>
<details>
<summary>plugins/nuxt-v5/commands/nuxt-setup.md (1)</summary><blockquote>

`26-39`: **Consider adding language identifiers to code blocks.**

The wizard configuration blocks lack language specifiers. While these aren't standard code, adding `yaml` or `text` would improve markdown lint compliance and editor syntax highlighting.


<details>
<summary>💡 Example fix for one block</summary>

```diff
-```
+```yaml
 header: "Project Type"
 question: "What type of application are you building?"
```
</details>

<details>
<summary>🤖 Prompt for AI Agents</summary>

Verify each finding against the current code and only fix it if needed.

In @plugins/nuxt-v5/commands/nuxt-setup.md around lines 26 - 39, The markdown
code blocks for the wizard config (the snippet containing keys like header,
question, options and the "Store as: projectType" note) should include a
language identifier (e.g., ```yaml) to improve linting and editor highlighting;
update each such block by prefixing the opening backticks with the appropriate
language (yaml or text) for all similar config/code blocks in the file.


</details>

</blockquote></details>
<details>
<summary>plugins/nuxt-ui-v4/skills/nuxt-ui-v4/SKILL.md (1)</summary><blockquote>

`1-6`: **Description exceeds maximum length guideline.**

The description is ~276 characters, exceeding the 200-character maximum specified in coding guidelines. Consider condensing while preserving key information.


<details>
<summary>💡 Suggested shorter description</summary>

```diff
-description: Nuxt UI v4 component library for building Nuxt v4 applications. 125+ accessible components with Tailwind v4, Reka UI, dark mode, theming. Use for dashboards, forms, overlays, editors, page layouts, pricing pages, or encountering component, theming, or TypeScript errors.
+description: Nuxt UI v4 - 125+ accessible components with Tailwind v4, Reka UI, theming. Use for dashboards, forms, AI chat, page layouts, or component/TypeScript errors.
```
</details>

As per coding guidelines: "Keep skill descriptions concise (ideal <100 characters, maximum <200 characters)".

<details>
<summary>🤖 Prompt for AI Agents</summary>

```
Verify each finding against the current code and only fix it if needed.

In `@plugins/nuxt-ui-v4/skills/nuxt-ui-v4/SKILL.md` around lines 1 - 6, The
SKILL.md description for "name: nuxt-ui-v4" is too long (>200 chars); update the
"description:" field to a concise version under 200 characters (ideally <100)
that preserves key points (Nuxt UI v4, 125+ accessible components, Tailwind v4,
theming/dark mode, MIT license) and replace the long sentence with a shortened
phrase so the file's description meets the coding guideline.
```

</details>

</blockquote></details>
<details>
<summary>plugins/nuxt-ui-v4/skills/nuxt-ui-v4/templates/components/ui-chat-full.vue (1)</summary><blockquote>

`107-118`: **Consider adding type annotation for message parameter.**

The `message: any` type loses type safety. Consider using the proper AI SDK message type if available.


<details>
<summary>💡 Suggested improvement</summary>

```diff
-async function copyMessage(message: any) {
+async function copyMessage(message: { id: string; parts?: Array<{ type: string; text?: string }> }) {
```

Or import the proper type from AI SDK if available:
```typescript
import type { UIMessage } from '@ai-sdk/vue'
```
</details>

<details>
<summary>🤖 Prompt for AI Agents</summary>

```
Verify each finding against the current code and only fix it if needed.

In `@plugins/nuxt-ui-v4/skills/nuxt-ui-v4/templates/components/ui-chat-full.vue`
around lines 107 - 118, The copyMessage function currently types its parameter
as message: any which loses type safety; change the signature to use the proper
AI SDK message type (e.g., import and use UIMessage or the correct exported
message type) and update usages inside copyMessage (such as message.parts and
isTextUIPart checks) to reflect that type so TypeScript can validate
properties—import the type (for example import type { UIMessage } from
'@ai-sdk/vue') and replace message: any with message: UIMessage (or the
SDK-equivalent) in the copyMessage declaration.
```

</details>

</blockquote></details>
<details>
<summary>plugins/nuxt-v5/skills/nuxt-data/SKILL.md (1)</summary><blockquote>

`110-112`: **Consider safer error handling in the example.**

The error object may not have a `message` property depending on the error type. Consider using a safer pattern in the example code.


<details>
<summary>💡 Suggested improvement</summary>

```diff
     } catch (error) {
-      return { success: false, error: error.message }
+      return { success: false, error: error instanceof Error ? error.message : 'Login failed' }
     } finally {
```
</details>

<details>
<summary>🤖 Prompt for AI Agents</summary>

```
Verify each finding against the current code and only fix it if needed.

In `@plugins/nuxt-v5/skills/nuxt-data/SKILL.md` around lines 110 - 112, The catch
block currently returns error.message which can be undefined for non-Error
throws; update the catch to normalize the thrown value (e.g., const errMsg =
error instanceof Error ? error.message : String(error)) and return { success:
false, error: errMsg } (or use JSON.stringify for objects) so the example
reliably produces a string error; locate the catch that references error.message
and replace with this safer pattern.
```

</details>

</blockquote></details>
<details>
<summary>plugins/nuxt-v5/skills/nuxt-production/references/deployment-cloudflare.md (1)</summary><blockquote>

`762-764`: **Update the "Last Updated" date.**

The date (2025-11-09) appears stale given this is part of the v3.2.1 release (2026-04-01).

<details>
<summary>🤖 Prompt for AI Agents</summary>

```
Verify each finding against the current code and only fix it if needed.

In `@plugins/nuxt-v5/skills/nuxt-production/references/deployment-cloudflare.md`
around lines 762 - 764, Update the "Last Updated" date string under the document
header (the line containing "**Last Updated**: 2025-11-09") to reflect the
v3.2.1 release date by changing it to "**Last Updated**: 2026-04-01" so the
document timestamp matches the release.
```

</details>

</blockquote></details>
<details>
<summary>plugins/dependency-upgrade/skills/dependency-upgrade/references/supply-chain-security.md (1)</summary><blockquote>

`331-333`: **Add language identifier to fenced code block.**

The code block showing the Snyk URL pattern lacks a language identifier. Use `text` or `plaintext` for non-code content.

```diff
-```
+```text
 https://security.snyk.io/package/npm/<package-name>
 ```
```

<details>
<summary>🤖 Prompt for AI Agents</summary>

Verify each finding against the current code and only fix it if needed.

In
@plugins/dependency-upgrade/skills/dependency-upgrade/references/supply-chain-security.md
around lines 331 - 333, The fenced code block that contains the Snyk URL pattern
(the block showing "https://security.snyk.io/package/npm/") is
missing a language identifier; update that fenced block in
supply-chain-security.md (the snippet with the Snyk URL) to use a non-code
language tag such as text or plaintext so the URL is rendered as plain
text.


</details>

</blockquote></details>
<details>
<summary>plugins/nuxt-v5/agents/nuxt-migration-assistant.md (1)</summary><blockquote>

`222-246`: **Verification steps assume Bun package manager.**

The verification commands use `bun` exclusively. Consider noting alternatives for teams using npm or pnpm, or detecting the package manager from lockfiles.

```diff
 1. Install dependencies:
    ```bash
    rm -rf node_modules .nuxt .output
    bun install
+   # Or: npm install / pnpm install
    ```
```

<details>
<summary>🤖 Prompt for AI Agents</summary>

```
Verify each finding against the current code and only fix it if needed.

In `@plugins/nuxt-v5/agents/nuxt-migration-assistant.md` around lines 222 - 246,
Update the "Install dependencies" step to include alternative package-manager
commands and/or an auto-detection note: keep the existing bun commands but also
list "npm install" and "pnpm install" as alternatives, and add a short guidance
to detect the package manager from lockfiles (bun.lockb, package-lock.json,
pnpm-lock.yaml) and choose the correct install command accordingly; reference
the "Install dependencies" step and the specific commands (bun install, npm
install, pnpm install) so readers or automated scripts can switch based on the
detected lockfile.
```

</details>

</blockquote></details>
<details>
<summary>plugins/nuxt-seo/skills/nuxt-seo/SKILL.md (1)</summary><blockquote>

`1-867`: **SKILL.md exceeds recommended line count.**

At 867 lines, this file significantly exceeds the 500-line guideline. Consider extracting additional content to reference files. Candidates for extraction:
- Version History section (lines 764-867) → `references/version-history.md`
- New v5 Features section (lines 395-442) could be consolidated into the migration guide

As per coding guidelines: "Maintain SKILL.md files at less than 500 lines after refactoring".

<details>
<summary>🤖 Prompt for AI Agents</summary>

```
Verify each finding against the current code and only fix it if needed.

In `@plugins/nuxt-seo/skills/nuxt-seo/SKILL.md` around lines 1 - 867, SKILL.md is
too long (867 lines) and must be trimmed below 500 lines by extracting large
sections; move the "Version History" block (the existing Version History
section) into a new references/version-history.md and consolidate the "New v5
Features" block into the existing references/v5-migration-guide.md (or
references/advanced-configuration.md if more appropriate), update SKILL.md to
replace those blocks with short cross-reference links to the new files, and
verify final SKILL.md length is <500 lines; edit the SKILL.md sections named
"Version History" and "New v5 Features" accordingly (search for those headers to
locate the content).
```

</details>

</blockquote></details>

</blockquote></details>

---

<details>
<summary>ℹ️ Review info</summary>

<details>
<summary>⚙️ Run configuration</summary>

**Configuration used**: Organization UI

**Review profile**: CHILL

**Plan**: Pro

**Run ID**: `03831b6e-acdd-475d-a9aa-6c51d7fc3b38`

</details>

<details>
<summary>📥 Commits</summary>

Reviewing files that changed from the base of the PR and between 90d6bd7de47ac8f79bdf2f2d06b26d513814f764 and 1dfc0767221db5f20ad9bc7cbf9649325d9c7de4.

</details>

<details>
<summary>📒 Files selected for processing (74)</summary>

* `.claude-plugin/marketplace.json`
* `.factory/settings.json`
* `CHANGELOG.md`
* `README.md`
* `plugins/dependency-upgrade/.claude-plugin/plugin.json`
* `plugins/dependency-upgrade/README.md`
* `plugins/dependency-upgrade/skills/dependency-upgrade/SKILL.md`
* `plugins/dependency-upgrade/skills/dependency-upgrade/references/compatibility-matrix.md`
* `plugins/dependency-upgrade/skills/dependency-upgrade/references/cooldown-config-guide.md`
* `plugins/dependency-upgrade/skills/dependency-upgrade/references/package-manager-security.md`
* `plugins/dependency-upgrade/skills/dependency-upgrade/references/secrets-and-containers.md`
* `plugins/dependency-upgrade/skills/dependency-upgrade/references/staged-upgrades.md`
* `plugins/dependency-upgrade/skills/dependency-upgrade/references/supply-chain-security.md`
* `plugins/dependency-upgrade/skills/dependency-upgrade/references/testing-strategy.md`
* `plugins/dependency-upgrade/skills/dependency-upgrade/templates/bunfig-security.tmpl`
* `plugins/dependency-upgrade/skills/dependency-upgrade/templates/dependabot-security.tmpl`
* `plugins/dependency-upgrade/skills/dependency-upgrade/templates/devcontainer-security.tmpl`
* `plugins/dependency-upgrade/skills/dependency-upgrade/templates/npmrc-security.tmpl`
* `plugins/dependency-upgrade/skills/dependency-upgrade/templates/pnpm-workspace-security.tmpl`
* `plugins/dependency-upgrade/skills/dependency-upgrade/templates/renovate-security.tmpl`
* `plugins/dependency-upgrade/skills/dependency-upgrade/templates/yarnrc-security.tmpl`
* `plugins/nuxt-seo/.claude-plugin/plugin.json`
* `plugins/nuxt-seo/README.md`
* `plugins/nuxt-seo/skills/nuxt-seo/SKILL.md`
* `plugins/nuxt-seo/skills/nuxt-seo/assets/package-versions.json`
* `plugins/nuxt-seo/skills/nuxt-seo/references/advanced-seo-guides.md`
* `plugins/nuxt-seo/skills/nuxt-seo/references/common-patterns.md`
* `plugins/nuxt-seo/skills/nuxt-seo/references/installation-guide.md`
* `plugins/nuxt-seo/skills/nuxt-seo/references/module-details.md`
* `plugins/nuxt-seo/skills/nuxt-seo/references/modules-overview.md`
* `plugins/nuxt-seo/skills/nuxt-seo/references/nuxt-content-integration.md`
* `plugins/nuxt-seo/skills/nuxt-seo/references/pro-modules.md`
* `plugins/nuxt-seo/skills/nuxt-seo/references/v5-migration-guide.md`
* `plugins/nuxt-ui-v4/.claude-plugin/plugin.json`
* `plugins/nuxt-ui-v4/README.md`
* `plugins/nuxt-ui-v4/agents/nuxt-ui-migration-assistant.md`
* `plugins/nuxt-ui-v4/agents/nuxt-ui-troubleshooter.md`
* `plugins/nuxt-ui-v4/commands/setup.md`
* `plugins/nuxt-ui-v4/skills/nuxt-ui-v4/SKILL.md`
* `plugins/nuxt-ui-v4/skills/nuxt-ui-v4/references/COMMON_ERRORS_DETAILED.md`
* `plugins/nuxt-ui-v4/skills/nuxt-ui-v4/references/ai-sdk-v5-integration.md`
* `plugins/nuxt-ui-v4/skills/nuxt-ui-v4/references/auth-form.md`
* `plugins/nuxt-ui-v4/skills/nuxt-ui-v4/references/chat-components.md`
* `plugins/nuxt-ui-v4/skills/nuxt-ui-v4/references/chat-reasoning.md`
* `plugins/nuxt-ui-v4/skills/nuxt-ui-v4/references/chat-shimmer.md`
* `plugins/nuxt-ui-v4/skills/nuxt-ui-v4/references/chat-tool.md`
* `plugins/nuxt-ui-v4/skills/nuxt-ui-v4/references/form-components-reference.md`
* `plugins/nuxt-ui-v4/skills/nuxt-ui-v4/references/nuxt-v4-features.md`
* `plugins/nuxt-ui-v4/skills/nuxt-ui-v4/templates/components/ui-chat-full.vue`
* `plugins/nuxt-ui-v4/skills/nuxt-ui-v4/templates/nuxt.config.ts`
* `plugins/nuxt-v5/.claude-plugin/plugin.json`
* `plugins/nuxt-v5/.mcp.json`
* `plugins/nuxt-v5/README.md`
* `plugins/nuxt-v5/agents/nuxt-debugger.md`
* `plugins/nuxt-v5/agents/nuxt-migration-assistant.md`
* `plugins/nuxt-v5/agents/nuxt-performance-analyzer.md`
* `plugins/nuxt-v5/commands/nuxt-setup.md`
* `plugins/nuxt-v5/skills/nuxt-core/SKILL.md`
* `plugins/nuxt-v5/skills/nuxt-core/templates/app.vue`
* `plugins/nuxt-v5/skills/nuxt-core/templates/nuxt.config.ts`
* `plugins/nuxt-v5/skills/nuxt-data/SKILL.md`
* `plugins/nuxt-v5/skills/nuxt-data/references/composables.md`
* `plugins/nuxt-v5/skills/nuxt-data/references/data-fetching.md`
* `plugins/nuxt-v5/skills/nuxt-data/templates/composables/useAuth.ts`
* `plugins/nuxt-v5/skills/nuxt-production/SKILL.md`
* `plugins/nuxt-v5/skills/nuxt-production/references/deployment-cloudflare.md`
* `plugins/nuxt-v5/skills/nuxt-production/references/hydration.md`
* `plugins/nuxt-v5/skills/nuxt-production/references/performance.md`
* `plugins/nuxt-v5/skills/nuxt-production/references/testing-vitest.md`
* `plugins/nuxt-v5/skills/nuxt-production/templates/tests/components/BlogPost.test.ts`
* `plugins/nuxt-v5/skills/nuxt-production/templates/wrangler.toml`
* `plugins/nuxt-v5/skills/nuxt-server/SKILL.md`
* `plugins/nuxt-v5/skills/nuxt-server/references/server.md`
* `plugins/nuxt-v5/skills/nuxt-server/templates/server/api/blog/index.get.ts`

</details>

</details>

<!-- This is an auto-generated comment by CodeRabbit for review status -->

- Fix defineLazyHydrationComponent signature to (strategy, source)
  per Nuxt 5 docs in nuxt-production SKILL.md
- Fix broken TOC anchors in modules-overview.md and server.md
- Fix manualChunks -> advancedChunks for Rolldown in nuxt-setup.md
  and nuxt.config.ts; remove no-op optimizeDeps.include
- Fix scoped package names (@nuxtjs/robots, @nuxtjs/sitemap) in
  nuxt-seo install commands and modules array
- Fix Bun install/uninstall commands in installation-guide.md
- Fix regex test-before-replace bug in staged-upgrades.md
- Fix useAuth.ts to clear auth state when session user is missing
- Fix chat-components model string (period -> hyphen)
- Fix typo "pnnpm" -> "pnpm" in dependency-upgrade SKILL.md
- Fix relative path in advanced-seo-guides.md
- Shorten nuxt-seo SKILL.md description to <100 chars
- Update nuxt-ui-v4 version 3.1.0 -> 3.2.1
- Update Next.js 15 Node.js requirement to >=20.9
- Fix Tailwind v4 migration bullets and npmrc CLI version
- Remove static LTS dates from Node.js compatibility table
- Update "Nuxt 4" -> "Nuxt 5" across nuxt-v5 plugin references
- Remove stray placeholder in nuxt-v4-features.md
- Add missing ref() import in testing-vitest mock example
- Update sync-plugins.sh to support multi-skill plugins (bun,
  cloudflare-workers, nuxt-v4, nuxt-v5) by detecting skills/*/SKILL.md
  instead of requiring root SKILL.md; preserve extra plugin.json
  fields (mcpServers, homepage) via jq merge for multi-skill plugins
- Sync all 170 plugins including 4 previously-skipped multi-skill plugins
- scan_agents/scan_commands return empty string instead of "null",
  so agents/commands fields are omitted (not null) in plugin.json,
  fixing JSON schema validation failures for 153 plugins
- Multi-skill jq merge uses del(.agents)/del(.commands) to remove
  stale null values from existing plugin.json files
- validate-frontmatter.sh --dir scans skills/*/SKILL.md instead of
  hardcoded skills/<plugin-name>/SKILL.md, supporting multi-skill
  plugins (bun, cloudflare-workers, nuxt-v4, nuxt-v5)
- validate-frontmatter.sh --dir validates ALL sub-skills, not just
  the first one
- Restore missing categorize_skill call for multi-skill plugins
Copy link
Copy Markdown
Contributor

@coderabbitai coderabbitai bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actionable comments posted: 18

Note

Due to the large number of review comments, Critical, Major severity comments were prioritized as inline comments.

Caution

Some comments are outside the diff and can’t be posted inline due to platform limitations.

⚠️ Outside diff range comments (3)
plugins/cloudflare-kv/.claude-plugin/plugin.json (1)

1-20: ⚠️ Potential issue | 🔴 Critical

Remove the removal of agents and commands arrays from plugin.json — these directories exist.

The agents and commands arrays were removed from this plugin.json, but the corresponding directories exist at plugins/cloudflare-kv/skills/cloudflare-kv/:

  • agents/: Contains kv-debugger.md, kv-optimizer.md
  • commands/: Contains setup-kv.md, test-kv.md, optimize-kv.md

Per coding guidelines, these arrays must be included when the directories exist and are detected by sync-plugins.sh. Run ./scripts/sync-plugins.sh to regenerate this file with the correct agents and commands arrays.

🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In `@plugins/cloudflare-kv/.claude-plugin/plugin.json` around lines 1 - 20,
plugin.json is missing the agents and commands arrays even though the plugin's
directories contain those files; restore the "agents" and "commands" arrays in
plugins/cloudflare-kv/.claude-plugin/plugin.json to list the existing entries
(e.g., kv-debugger.md, kv-optimizer.md in agents and setup-kv.md, test-kv.md,
optimize-kv.md in commands) by re-running the provided sync script: execute
./scripts/sync-plugins.sh to regenerate plugin.json so it includes the agents
and commands arrays that match the files under skills/cloudflare-kv/agents and
skills/cloudflare-kv/commands.
plugins/nuxt-seo/skills/nuxt-seo/SKILL.md (1)

39-867: 🛠️ Refactor suggestion | 🟠 Major

Refactor oversized SKILL.md to restore progressive disclosure.

This file is still far above the 500-line cap. Move detailed sections (long feature docs/version history/deep examples) into references/*.md and keep Quick Start + top errors in SKILL.md with brief pointers.

As per coding guidelines, "Maintain SKILL.md files at less than 500 lines after refactoring to ensure progressive disclosure of content. Quick Start and top 3-5 errors must remain in SKILL.md while detailed sections are extracted to references."

🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In `@plugins/nuxt-seo/skills/nuxt-seo/SKILL.md` around lines 39 - 867, SKILL.md is
too large and must be reduced below 500 lines by extracting long, detailed
sections into reference files; move the large blocks such as "Module Overview"
deep dives, "Integration Patterns" long examples, full "Module Overview", full
"Using Bundled Resources", extensive "References" listings, complete "Version
History", and long "Package Versions" JSON into new or existing references/*.md
files (e.g., references/module-details.md, references/installation-guide.md,
references/version-history.md) while keeping only the Quick Start, the top 3–5
Known Issues (e.g., Issue `#1`–#5), Critical Rules summary, and a short pointer
section that lists and links to the extracted reference files; update SKILL.md
to include brief headers (Quick Start, Critical Rules, Top Errors, References
pointer) and ensure content under symbols like "Quick Start", "Critical Rules",
"Known Issues Prevention", and "Version History" is reduced to summaries with
links to the corresponding references so the final SKILL.md is under 500 lines.
plugins/maz-ui/.claude-plugin/plugin.json (1)

3-17: ⚠️ Potential issue | 🟠 Major

Resync the manifest with the Maz UI plugin surface.

This file still advertises autonomous agents, but the manifest no longer exposes any agents or commands. If those directories still exist, installs will silently lose that functionality; if they were removed, the description is now stale. Please regenerate this manifest via ./scripts/sync-plugins.sh or update the description to match what actually ships.

As per coding guidelines, "Use the official './scripts/sync-plugins.sh' command as the single entry point for all plugin management to sync versions, add categories, detect agents/commands, and regenerate marketplace.json." and "Include 'agents' and 'commands' arrays in plugin.json only if agents/ or commands/ directories exist in the skill, detected and added automatically by sync-plugins.sh."

🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In `@plugins/maz-ui/.claude-plugin/plugin.json` around lines 3 - 17, The plugin
manifest's "description" advertises autonomous agents but the manifest no longer
exposes any agents/commands; run the official sync script or update the
manifest: regenerate plugin.json using ./scripts/sync-plugins.sh so it
auto-detects and populates agents/commands arrays if the agents/ or commands/
directories exist, or edit the "description" field in plugin.json to remove
references to autonomous agents and ensure no agents/commands arrays are present
unless those directories actually exist.
♻️ Duplicate comments (2)
plugins/nuxt-seo/skills/nuxt-seo/SKILL.md (1)

3-3: ⚠️ Potential issue | 🟠 Major

Shorten description to under 200 characters.

The frontmatter description is still above the documented maximum; this hurts discoverability and violates skill metadata constraints.

As per coding guidelines, "Keep skill descriptions concise (ideal <100 characters, maximum <200 characters) and include 'Use when' scenarios to improve discoverability in Claude Code."

🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In `@plugins/nuxt-seo/skills/nuxt-seo/SKILL.md` at line 3, The SKILL.md
frontmatter description is too long; update the frontmatter "description" value
in the file (the description field at top of SKILL.md for Nuxt SEO) to be under
200 characters (preferably <100) while preserving the "Use when" scenarios —
condense to a short summary like "Nuxt SEO v5 modules: robots, sitemap,
og-image, schema-org, link-checker, seo-utils, site-config. Use when
implementing SEO, sitemaps, OG images, Schema.org, meta tags, or link checks in
Nuxt apps." and replace the existing description line.
plugins/nuxt-v5/commands/nuxt-setup.md (1)

195-203: ⚠️ Potential issue | 🟠 Major

Switch this example back to build.rollupOptions.

The earlier chunking fix addressed manualChunks, but the parent key is still wrong: Vite’s Rolldown docs keep this under vite.build.rollupOptions, with advancedChunks nested inside output. rolldownOptions is not the documented config shape, and Line 499 repeats the same wrong key in the summary. (vite.dev)

Also applies to: 499-499

🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In `@plugins/nuxt-v5/commands/nuxt-setup.md` around lines 195 - 203, The example
uses the wrong key name "rolldownOptions"; update the Vite config to use
vite.build.rollupOptions (so keep the existing output.advancedChunks grouping
but move it under rollupOptions) and also fix the repeated typo at the summary
occurrence (line with the duplicate "rolldownOptions") so both references read
rollupOptions; confirm the nested symbol names remain output -> advancedChunks
(and any manualChunks mention remains under rollupOptions.output).
🟡 Minor comments (9)
plugins/nuxt-v5/skills/nuxt-production/references/performance.md-103-109 (1)

103-109: ⚠️ Potential issue | 🟡 Minor

Add explicit languages to fenced code blocks.

These fenced blocks are missing a language tag, which triggers MD040 and reduces editor/linter consistency.

Suggested fix
-```
+```text
 components/
 ├── HeavyChart.vue          # Auto-imported
 ├── LazyHeavyChart.vue      # Lazy-loaded
 ├── InteractiveMap.vue      # Auto-imported
 └── LazyInteractiveMap.vue  # Lazy-loaded

- +text
pages/
├── index.vue → index-[hash].js
├── about.vue → about-[hash].js
└── blog/
├── index.vue → blog-index-[hash].js
└── [slug].vue → blog-slug-[hash].js

Also applies to: 243-250

🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In `@plugins/nuxt-v5/skills/nuxt-production/references/performance.md` around
lines 103 - 109, The fenced code blocks showing the directory trees (starting
with "components/" and "pages/") lack a language tag and trigger MD040; add an
explicit language (e.g., ```text) to each of those fenced blocks so they become
```text ... ``` to satisfy the linter and maintain editor consistency, updating
both the block that starts with "components/" and the other that starts with
"pages/" (also applies to the similar block at the other occurrence).
plugins/nuxt-v5/skills/nuxt-production/references/testing-vitest.md-532-552 (1)

532-552: ⚠️ Potential issue | 🟡 Minor

Specify a language for the test-structure code fence.

This block is currently untyped and triggers MD040.

Suggested fix
-```
+```text
 tests/
 ├── components/
 │   ├── Button.test.ts
 │   ├── Card.test.ts
 │   └── Modal.test.ts
 ├── composables/
 │   ├── useAuth.test.ts
 │   ├── useCart.test.ts
 │   └── useCounter.test.ts
 ├── server/
 │   ├── api/
 │   │   ├── users.get.test.ts
 │   │   └── users.post.test.ts
 │   └── utils/
 │       └── validation.test.ts
 └── e2e/
     ├── login.test.ts
     ├── checkout.test.ts
     └── navigation.test.ts
</details>

<details>
<summary>🤖 Prompt for AI Agents</summary>

Verify each finding against the current code and only fix it if needed.

In @plugins/nuxt-v5/skills/nuxt-production/references/testing-vitest.md around
lines 532 - 552, The fenced code block showing the tests/ directory tree is
missing a language tag and triggers MD040; add a language identifier (e.g.,
"text") to the opening fence so the block becomes ```text and the linter stops
complaining; update the block in testing-vitest.md that contains the tests/ tree
(the ASCII tree of Button.test.ts, useAuth.test.ts, users.get.test.ts, etc.) to
include the language tag.


</details>

</blockquote></details>
<details>
<summary>plugins/nuxt-ui-v4/README.md-39-43 (1)</summary><blockquote>

`39-43`: _⚠️ Potential issue_ | _🟡 Minor_

**Fix Dashboard count mismatch (and verify aggregate count).**

Line 39 says 11 dashboard components, but the listed items are 10. Please align the heading and re-check the top-level “125+ components” claim for internal consistency.

<details>
<summary>🤖 Prompt for AI Agents</summary>

```
Verify each finding against the current code and only fix it if needed.

In `@plugins/nuxt-ui-v4/README.md` around lines 39 - 43, The Dashboard section
header is inconsistent with the listed components: the heading claims 11
dashboard components but the list contains 10 (DashboardGroup, DashboardSidebar,
DashboardPanel, DashboardNavbar, DashboardToolbar, DashboardSidebarToggle,
DashboardSidebarCollapse, DashboardSearch, DashboardSearchButton,
DashboardResizeHandle); either add the missing Dashboard component to the list
or change the heading to "10 components". After fixing the Dashboard count,
recalculate and update the top-level "125+ components" aggregate so it reflects
the actual total of all listed components across the README.
```

</details>

</blockquote></details>
<details>
<summary>plugins/nuxt-ui-v4/README.md-224-224 (1)</summary><blockquote>

`224-224`: _⚠️ Potential issue_ | _🟡 Minor_

**Update stale release metadata date.**

Line 224 still shows `2026-03-30` even though this v3.2.1 release PR is dated April 2026. Please update the timestamp to the actual release/update date.

<details>
<summary>🤖 Prompt for AI Agents</summary>

```
Verify each finding against the current code and only fix it if needed.

In `@plugins/nuxt-ui-v4/README.md` at line 224, Update the stale release metadata
date in the README: replace the current "**Last Updated**: 2026-03-30" entry
with the actual release/update date for this v3.2.1 PR (the April 2026 date used
for the release) so the README's Last Updated value matches the PR/release date.
```

</details>

</blockquote></details>
<details>
<summary>plugins/nuxt-seo/skills/nuxt-seo/references/installation-guide.md-29-33 (1)</summary><blockquote>

`29-33`: _⚠️ Potential issue_ | _🟡 Minor_

**Standardize install command and package naming to official canonical forms.**

The guide inconsistently uses `npx nuxt module add seo` alongside `npx nuxt module add `@nuxtjs/seo``, and mixes unscoped vs. scoped package names (`nuxt-robots`/`nuxt-sitemap` vs. `@nuxtjs/robots`/`@nuxtjs/sitemap`). Per [official Nuxt SEO docs](https://nuxtseo.com/docs/nuxt-seo/getting-started/installation), the canonical forms are:
- `npx nuxt module add `@nuxtjs/seo`` (not `npx nuxt module add seo`)
- `@nuxtjs/robots` and `@nuxtjs/sitemap` (scoped packages)

Update all install snippets across lines 29–33, 85–93, 128–129, 201–203, and 418–419 to use only these canonical forms.

<details>
<summary>🤖 Prompt for AI Agents</summary>

```
Verify each finding against the current code and only fix it if needed.

In `@plugins/nuxt-seo/skills/nuxt-seo/references/installation-guide.md` around
lines 29 - 33, Replace all unscoped package names and the shorthand install
command with the official scoped canonical forms: change any occurrence of "npx
nuxt module add seo" to "npx nuxt module add `@nuxtjs/seo`", and replace
"nuxt-robots"/"nuxt-sitemap" (and any other unscoped variants) with
"@nuxtjs/robots" and "@nuxtjs/sitemap" respectively; apply these edits in the
affected snippets referenced (the blocks around lines 29–33, 85–93, 128–129,
201–203, and 418–419) so all install commands and package names consistently use
the scoped "@nuxtjs/..." forms.
```

</details>

</blockquote></details>
<details>
<summary>plugins/dependency-upgrade/skills/dependency-upgrade/SKILL.md-100-107 (1)</summary><blockquote>

`100-107`: _⚠️ Potential issue_ | _🟡 Minor_

**Inconsistent hyphenation: "pre-install" vs "preinstall".**

The document uses both "pre-install" (Line 104, 237) and "preinstall" (referenced in context of lifecycle scripts) inconsistently. For clarity and consistency, standardize to one form. The npm/Node.js ecosystem typically uses "preinstall" (no hyphen) when referring to the lifecycle script name, but "pre-install" (hyphenated) as an adjective is also acceptable.

Recommendation: Use "preinstall" when referring to the npm lifecycle script specifically, and "pre-install" as an adjective elsewhere.

<details>
<summary>🤖 Prompt for AI Agents</summary>

```
Verify each finding against the current code and only fix it if needed.

In `@plugins/dependency-upgrade/skills/dependency-upgrade/SKILL.md` around lines
100 - 107, The text uses both "pre-install" and "preinstall" inconsistently;
update the glossary in the "7. Install-Time Auditing" section and all other
occurrences so that npm lifecycle script references use "preinstall" (no hyphen)
and adjective uses remain "pre-install" (hyphenated). Search for the tokens
"pre-install" and "preinstall" and replace them according to this rule, ensuring
instances that refer to the npm lifecycle script (e.g., mentions of lifecycle
scripts or hooks) are changed to "preinstall" and descriptive/adjective uses
keep "pre-install".
```

</details>

</blockquote></details>
<details>
<summary>plugins/dependency-upgrade/skills/dependency-upgrade/references/staged-upgrades.md-26-34 (1)</summary><blockquote>

`26-34`: _⚠️ Potential issue_ | _🟡 Minor_

**Add language identifier to fenced code block.**

The dependency ordering list should specify a language identifier (e.g., `text` or `markdown`) for the fenced code block to improve rendering and comply with Markdown best practices.



<details>
<summary>📝 Proposed fix</summary>

```diff
-```
+```text
 1. TypeScript / build tools
 2. Core framework (React, Next.js, etc.)
 3. Routing
```
</details>

<details>
<summary>🤖 Prompt for AI Agents</summary>

Verify each finding against the current code and only fix it if needed.

In
@plugins/dependency-upgrade/skills/dependency-upgrade/references/staged-upgrades.md
around lines 26 - 34, The fenced code block in staged-upgrades.md lacks a
language identifier; update the triple-backtick fence that surrounds the
dependency ordering list to include a language (e.g., change totext or

practices—modify the fenced block around the list starting with "1. TypeScript /
build tools" accordingly.
FRONTMATTER_VALIDATION_REPORT.md-3-11 (1)

3-11: ⚠️ Potential issue | 🟡 Minor

The committed counts no longer match the validator output.

scripts/validate-frontmatter.sh counts one critical failure per failing file, and CI is currently reporting 57 of them. This report still says 39 failed skills, so the checked-in remediation summary is already stale/misleading.

🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In `@FRONTMATTER_VALIDATION_REPORT.md` around lines 3 - 11, The checked-in
FRONTMATTER_VALIDATION_REPORT.md is stale: the counts (Total Skills / Passed /
Failed / Warnings and the "Critical Issues (39)" header) no longer match the
current output of scripts/validate-frontmatter.sh (CI shows 57 failures). Re-run
scripts/validate-frontmatter.sh to regenerate the validator output, update the
numeric summary and the "Critical Issues" count and description to match the
fresh output, and commit the updated FRONTMATTER_VALIDATION_REPORT.md so the
file reflects the authoritative validator results used by CI.
plugins/nuxt-v5/commands/nuxt-setup.md-26-38 (1)

26-38: ⚠️ Potential issue | 🟡 Minor

Add fence languages to the remaining snippets.

These unlabeled fenced blocks are already triggering MD040 warnings. Adding yaml to the question blocks and text/plaintext to the summary/error blocks will keep markdownlint clean.

Also applies to: 42-54, 58-71, 75-87, 91-105, 109-119, 127-130, 431-463, 470-475, 478-482, 485-490

🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In `@plugins/nuxt-v5/commands/nuxt-setup.md` around lines 26 - 38, Update the
unlabeled fenced code blocks so markdownlint MD040 is satisfied: add "yaml" to
the fenced blocks that show frontmatter-like question/config snippets (e.g., the
block containing header/question/options) and add "text" or "plaintext" to plain
summary or error example blocks elsewhere; apply the same change to the other
listed blocks (the ones around lines with question/summary/error content) so
every triple-backtick fence has an explicit language tag.
🤖 Prompt for all review comments with AI agents
Verify each finding against the current code and only fix it if needed.

Inline comments:
In @.githooks/pre-push:
- Around line 44-47: The --dir argument is pointed at the parent directory of
the skill folder (using dirname dirname "$full_path") but
validate-frontmatter.sh expects the actual skill directory (or plugin root);
change the call that invokes "$REPO_ROOT/scripts/validate-frontmatter.sh" to
pass the skill directory by using --dir "$(dirname "$full_path")" (reference
variables: skill_file, full_path and the script validate-frontmatter.sh).
- Line 24: The current CHANGED_SKILLS assignment uses a grep pattern that only
matches nested SKILL.md (plugins/<plugin>/skills/<skill>/SKILL.md) and therefore
misses root plugin SKILL.md files; update the grep -E expression used when
populating CHANGED_SKILLS to also match top-level plugin SKILL.md (i.e., allow
either plugins/<plugin>/skills/.../SKILL.md OR plugins/<plugin>/SKILL.md).
Modify the pattern in the CHANGED_SKILLS line (the grep -E argument) so it
accepts both paths and preserves the existing fallback (|| true).

In @.github/workflows/validate-frontmatter.yml:
- Around line 21-22: The workflow currently runs the "Validate all SKILL.md
frontmatter" job which executes ./scripts/validate-frontmatter.sh across the
whole repo and blocks CI because there are 57 historical failures; instead scope
the job to only validate changed SKILL.md files in the PR (or make the job
non-blocking) by updating the job logic that calls
./scripts/validate-frontmatter.sh to accept a list of changed files (e.g.,
generate git diff --name-only ${{ github.sha }} against base and filter for
**/SKILL.md) and pass only those paths to the script, or change the job to run
conditionally only on pull_request and skip when no SKILL.md files changed so
unrelated PRs are not blocked.

In `@plugins/cloudflare-durable-objects/.claude-plugin/plugin.json`:
- Line 4: The manifest version was downgraded to "3.0.0" which can break upgrade
flows; update the "version" field in plugin.json (currently "3.0.0") to at least
the prior published version (e.g., "3.2.0" or your current release version) and
ensure this version bump is propagated consistently in any related
marketplace/release metadata so semver remains monotonic.

In `@plugins/dependency-upgrade/skills/dependency-upgrade/SKILL.md`:
- Line 3: The SKILL.md description is too long (≈310 chars); shorten the YAML
description value in SKILL.md to under 200 characters (ideally <100) while
keeping the core intent: secure dependency upgrades with supply chain
protection, cooldowns, post-install hardening, lockfile validation, and staged
rollout across npm, Bun, pnpm, and Yarn; update the description string
accordingly.

In `@plugins/nuxt-seo/skills/nuxt-seo/SKILL.md`:
- Around line 343-366: Add verified source links for each new v5 known-issue
entry (Issue `#11` through Issue `#14`) by appending or inline-referencing the
authoritative docs/PR/issue URLs that demonstrate the breaking change or
recommended workaround; specifically update the entries mentioning
site.name/NUXT_SITE_NAME (Issue `#11`) with the Nuxt v5 docs or migration guide,
replace the server-side useSiteConfig note (Issue `#12`) with the GitHub issue or
release notes showing getSiteConfig(event) deprecation, attach Content
composables renaming references (Issue `#13`) to the Content v3 migration docs or
PRs, and add the OG image signing docs/issue (Issue `#14`) that explain URL
signing and the defineOgImage() usage—ensure each issue line includes the link
text and URL so readers can follow up.
- Around line 161-173: Replace all occurrences of the unscoped package names
"nuxt-robots" and "nuxt-sitemap" in SKILL.md with the scoped package names
"@nuxtjs/robots" and "@nuxtjs/sitemap" so the doc consistently matches the
installer/config examples, and update the keys in assets/package-versions.json
changing "nuxt-robots" -> "@nuxtjs/robots" and "nuxt-sitemap" ->
"@nuxtjs/sitemap" so the version source file matches the actual npm package
names.

In `@plugins/nuxt-v4/.claude-plugin/plugin.json`:
- Line 4: The "version" field for the nuxt-v4 plugin was lowered to "3.0.0"
which causes a semver regression; update the "version" property in plugin.json
(the "version" key) to match or exceed the previous release (restore the prior
version or increment appropriately) so consumers will see this as a newer
release rather than a downgrade.

In `@plugins/nuxt-v5/commands/nuxt-setup.md`:
- Around line 74-106: The scaffold currently selects adapters from `deployment`
only, causing invalid combos (e.g., D1+Vercel) and missing installs/imports;
change to a single source of truth by deriving the DB adapter from the
`database` answer (the `database` field) and use that to generate the helper
code and imports in the deployment-driven templates referenced (the helper that
imports `postgres` and `~/server/database/schema`), ensure that when
`PostgreSQL` is chosen you add the `postgres` dependency to the install step and
create `server/database/` and `server/database/schema` files, and when
`Cloudflare D1` or `NuxtHub` are chosen generate the correct adapter files and
avoid importing `~/server/database/schema` if that directory isn’t created;
update all affected blocks (the helper generation and the Question/Step outputs
around the shown diffs) to read from `database` instead of `deployment` so
scaffolds match selected options.
- Around line 348-386: The auth composable (useAuth) calls /api/auth/login and
/api/auth/logout but no server routes or session logic are generated; add server
API handlers for the POST routes used by useAuth (e.g., authLogin handler for
POST /api/auth/login and authLogout handler for POST /api/auth/logout) that
validate credentials, set/clear a session or cookie, and return a user object
(used by useAuth.login) and a success response (used by useAuth.logout); update
or create corresponding session helpers used by these handlers so
navigateTo('/login') and isAuthenticated computed state work as intended and
ensure the middleware (defineNuxtRouteMiddleware in auth.ts) relies on the same
session/state mechanism.
- Around line 166-173: The Nitro preset strings and their explanatory comments
use hyphenated IDs which are incorrect; update the preset values and comment
examples to use underscores instead (change 'cloudflare-pages' →
'cloudflare_pages' and 'cloudflare-module' → 'cloudflare_module') so the preset
property (preset: 'cloudflare-pages') and the two comment lines refer to the
documented IDs used by Nitro.
- Around line 108-120: The setup flow currently hardcodes the Bun launcher
("bunx") which forces Bun even if the user selected another package manager;
update the launcher usage to use the collected packageManager variable instead
so the chosen tool runs commands. Replace the hardcoded bunx invocation that
runs nuxi init so it uses the selected packageManager to execute nuxi (i.e., use
the packageManager to exec nuxi@latest init with the --package-manager set to
packageManager and then change into projectName), and replace the bunx run
typecheck call to use the packageManager so it runs the "typecheck" script via
packageManager run typecheck; ensure you reference the existing packageManager
and projectName variables when building these command strings.

In `@plugins/nuxt-v5/skills/nuxt-core/templates/nuxt.config.ts`:
- Around line 56-58: The Nitro config in the nuxt.config.ts template uses the
wrong preset string; update the nitro.preset value used in the template from
'cloudflare-pages' to the documented 'cloudflare_pages' (underscore) in the
nuxt-core template so deployments use the correct Nitro preset, then verify the
template by building/deploying to Cloudflare Pages to confirm it works.
- Around line 82-90: Update the Vite build config: replace the deprecated
vite.build.rolldownOptions with vite.build.rollupOptions and rename
output.advancedChunks to output.codeSplitting while preserving the groups array
and the vendor test regex (the existing groups [{ name: 'vendor', test:
/\/(vue|vue-router)/ }]). Edit the block that currently references
rolldownOptions and advancedChunks to use rollupOptions and codeSplitting
respectively so the grouping behavior remains unchanged.
- Around line 1-6: The validateSecret function and runtimeConfig must not read
process.env for non-NUXT_ vars or throw during config evaluation—remove direct
process.env reads/throws from validateSecret and from runtimeConfig so keys are
defined as nullable/default placeholders (let runtime injection via NUXT_*
happen at runtime) and move any strict presence checks into app startup logic;
change nitro.preset value from 'cloudflare-pages' to the correct
'cloudflare_pages'; and update the Rollup/Rolldown config by replacing the
deprecated advancedChunks option (referenced in rollupOptions/advancedChunks)
with the new output.codeSplitting flag to enable advanced chunking.

In `@scripts/sync-plugins.sh`:
- Around line 563-575: The merge currently preserves all fields except .agents
and .commands, so any stale .category remains; update the jq transformation
built in jq_filter (used with jq_args and applied to "$plugin_json" producing
"$plugin_json.tmp") to also remove the category by adding | del(.category)
(e.g., include " | del(.category)" in the base jq_filter string), ensuring
.category is stripped regardless of agents_json/commands_json branches so old
plugin.json files cannot retain a forbidden category field.

In `@scripts/validate-frontmatter.sh`:
- Around line 279-285: The current find command assigns skill_files using a path
filter that only matches nested skills (find ... -name 'SKILL.md' -path
'*/skills/*/SKILL.md'), skipping root-level plugins; update the skill_files
assignment to discover all SKILL.md files under plugins (for example, use find
"$REPO_ROOT/plugins" -name 'SKILL.md' | sort or change the -path to
'*/skills/*/SKILL.md' -o '*/SKILL.md') so variable skill_files contains both
root-level plugins and nested skills for validation.
- Around line 90-146: The script detects a description key but doesn't fail when
its value is empty; update the validation around the extracted desc_text (the
variable computed by the awk block) to treat an absent or empty description as
an error: after computing desc_text, add a check that if desc_text is empty or
only whitespace then append an error like "missing required field 'description'
or description is empty", otherwise proceed with the existing length check
against MAX_DESCRIPTION_LENGTH; ensure you reference desc_text and
MAX_DESCRIPTION_LENGTH so the check runs in the same block that now computes
description.

---

Outside diff comments:
In `@plugins/cloudflare-kv/.claude-plugin/plugin.json`:
- Around line 1-20: plugin.json is missing the agents and commands arrays even
though the plugin's directories contain those files; restore the "agents" and
"commands" arrays in plugins/cloudflare-kv/.claude-plugin/plugin.json to list
the existing entries (e.g., kv-debugger.md, kv-optimizer.md in agents and
setup-kv.md, test-kv.md, optimize-kv.md in commands) by re-running the provided
sync script: execute ./scripts/sync-plugins.sh to regenerate plugin.json so it
includes the agents and commands arrays that match the files under
skills/cloudflare-kv/agents and skills/cloudflare-kv/commands.

In `@plugins/maz-ui/.claude-plugin/plugin.json`:
- Around line 3-17: The plugin manifest's "description" advertises autonomous
agents but the manifest no longer exposes any agents/commands; run the official
sync script or update the manifest: regenerate plugin.json using
./scripts/sync-plugins.sh so it auto-detects and populates agents/commands
arrays if the agents/ or commands/ directories exist, or edit the "description"
field in plugin.json to remove references to autonomous agents and ensure no
agents/commands arrays are present unless those directories actually exist.

In `@plugins/nuxt-seo/skills/nuxt-seo/SKILL.md`:
- Around line 39-867: SKILL.md is too large and must be reduced below 500 lines
by extracting long, detailed sections into reference files; move the large
blocks such as "Module Overview" deep dives, "Integration Patterns" long
examples, full "Module Overview", full "Using Bundled Resources", extensive
"References" listings, complete "Version History", and long "Package Versions"
JSON into new or existing references/*.md files (e.g.,
references/module-details.md, references/installation-guide.md,
references/version-history.md) while keeping only the Quick Start, the top 3–5
Known Issues (e.g., Issue `#1`–#5), Critical Rules summary, and a short pointer
section that lists and links to the extracted reference files; update SKILL.md
to include brief headers (Quick Start, Critical Rules, Top Errors, References
pointer) and ensure content under symbols like "Quick Start", "Critical Rules",
"Known Issues Prevention", and "Version History" is reduced to summaries with
links to the corresponding references so the final SKILL.md is under 500 lines.

---

Minor comments:
In `@FRONTMATTER_VALIDATION_REPORT.md`:
- Around line 3-11: The checked-in FRONTMATTER_VALIDATION_REPORT.md is stale:
the counts (Total Skills / Passed / Failed / Warnings and the "Critical Issues
(39)" header) no longer match the current output of
scripts/validate-frontmatter.sh (CI shows 57 failures). Re-run
scripts/validate-frontmatter.sh to regenerate the validator output, update the
numeric summary and the "Critical Issues" count and description to match the
fresh output, and commit the updated FRONTMATTER_VALIDATION_REPORT.md so the
file reflects the authoritative validator results used by CI.

In
`@plugins/dependency-upgrade/skills/dependency-upgrade/references/staged-upgrades.md`:
- Around line 26-34: The fenced code block in staged-upgrades.md lacks a
language identifier; update the triple-backtick fence that surrounds the
dependency ordering list to include a language (e.g., change ``` to ```text or
```markdown) so the block is rendered correctly and follows Markdown best
practices—modify the fenced block around the list starting with "1. TypeScript /
build tools" accordingly.

In `@plugins/dependency-upgrade/skills/dependency-upgrade/SKILL.md`:
- Around line 100-107: The text uses both "pre-install" and "preinstall"
inconsistently; update the glossary in the "7. Install-Time Auditing" section
and all other occurrences so that npm lifecycle script references use
"preinstall" (no hyphen) and adjective uses remain "pre-install" (hyphenated).
Search for the tokens "pre-install" and "preinstall" and replace them according
to this rule, ensuring instances that refer to the npm lifecycle script (e.g.,
mentions of lifecycle scripts or hooks) are changed to "preinstall" and
descriptive/adjective uses keep "pre-install".

In `@plugins/nuxt-seo/skills/nuxt-seo/references/installation-guide.md`:
- Around line 29-33: Replace all unscoped package names and the shorthand
install command with the official scoped canonical forms: change any occurrence
of "npx nuxt module add seo" to "npx nuxt module add `@nuxtjs/seo`", and replace
"nuxt-robots"/"nuxt-sitemap" (and any other unscoped variants) with
"@nuxtjs/robots" and "@nuxtjs/sitemap" respectively; apply these edits in the
affected snippets referenced (the blocks around lines 29–33, 85–93, 128–129,
201–203, and 418–419) so all install commands and package names consistently use
the scoped "@nuxtjs/..." forms.

In `@plugins/nuxt-ui-v4/README.md`:
- Around line 39-43: The Dashboard section header is inconsistent with the
listed components: the heading claims 11 dashboard components but the list
contains 10 (DashboardGroup, DashboardSidebar, DashboardPanel, DashboardNavbar,
DashboardToolbar, DashboardSidebarToggle, DashboardSidebarCollapse,
DashboardSearch, DashboardSearchButton, DashboardResizeHandle); either add the
missing Dashboard component to the list or change the heading to "10
components". After fixing the Dashboard count, recalculate and update the
top-level "125+ components" aggregate so it reflects the actual total of all
listed components across the README.
- Line 224: Update the stale release metadata date in the README: replace the
current "**Last Updated**: 2026-03-30" entry with the actual release/update date
for this v3.2.1 PR (the April 2026 date used for the release) so the README's
Last Updated value matches the PR/release date.

In `@plugins/nuxt-v5/commands/nuxt-setup.md`:
- Around line 26-38: Update the unlabeled fenced code blocks so markdownlint
MD040 is satisfied: add "yaml" to the fenced blocks that show frontmatter-like
question/config snippets (e.g., the block containing header/question/options)
and add "text" or "plaintext" to plain summary or error example blocks
elsewhere; apply the same change to the other listed blocks (the ones around
lines with question/summary/error content) so every triple-backtick fence has an
explicit language tag.

In `@plugins/nuxt-v5/skills/nuxt-production/references/performance.md`:
- Around line 103-109: The fenced code blocks showing the directory trees
(starting with "components/" and "pages/") lack a language tag and trigger
MD040; add an explicit language (e.g., ```text) to each of those fenced blocks
so they become ```text ... ``` to satisfy the linter and maintain editor
consistency, updating both the block that starts with "components/" and the
other that starts with "pages/" (also applies to the similar block at the other
occurrence).

In `@plugins/nuxt-v5/skills/nuxt-production/references/testing-vitest.md`:
- Around line 532-552: The fenced code block showing the tests/ directory tree
is missing a language tag and triggers MD040; add a language identifier (e.g.,
"text") to the opening fence so the block becomes ```text and the linter stops
complaining; update the block in testing-vitest.md that contains the tests/ tree
(the ASCII tree of Button.test.ts, useAuth.test.ts, users.get.test.ts, etc.) to
include the language tag.

---

Duplicate comments:
In `@plugins/nuxt-seo/skills/nuxt-seo/SKILL.md`:
- Line 3: The SKILL.md frontmatter description is too long; update the
frontmatter "description" value in the file (the description field at top of
SKILL.md for Nuxt SEO) to be under 200 characters (preferably <100) while
preserving the "Use when" scenarios — condense to a short summary like "Nuxt SEO
v5 modules: robots, sitemap, og-image, schema-org, link-checker, seo-utils,
site-config. Use when implementing SEO, sitemaps, OG images, Schema.org, meta
tags, or link checks in Nuxt apps." and replace the existing description line.

In `@plugins/nuxt-v5/commands/nuxt-setup.md`:
- Around line 195-203: The example uses the wrong key name "rolldownOptions";
update the Vite config to use vite.build.rollupOptions (so keep the existing
output.advancedChunks grouping but move it under rollupOptions) and also fix the
repeated typo at the summary occurrence (line with the duplicate
"rolldownOptions") so both references read rollupOptions; confirm the nested
symbol names remain output -> advancedChunks (and any manualChunks mention
remains under rollupOptions.output).
🪄 Autofix (Beta)

Fix all unresolved CodeRabbit comments on this PR:

  • Push a commit to this branch (recommended)
  • Create a new PR with the fixes

ℹ️ Review info
⚙️ Run configuration

Configuration used: Organization UI

Review profile: CHILL

Plan: Pro

Run ID: df674e93-7ef8-47a4-a4b9-1467363cc44a

📥 Commits

Reviewing files that changed from the base of the PR and between 1dfc076 and 5af43b4.

📒 Files selected for processing (81)
  • .claude-plugin/marketplace.json
  • .githooks/pre-push
  • .github/workflows/validate-frontmatter.yml
  • FRONTMATTER_VALIDATION_REPORT.md
  • plugins/aceternity-ui/.claude-plugin/plugin.json
  • plugins/api-authentication/.claude-plugin/plugin.json
  • plugins/better-auth/.claude-plugin/plugin.json
  • plugins/bun/.claude-plugin/plugin.json
  • plugins/cloudflare-d1/.claude-plugin/plugin.json
  • plugins/cloudflare-durable-objects/.claude-plugin/plugin.json
  • plugins/cloudflare-images/.claude-plugin/plugin.json
  • plugins/cloudflare-kv/.claude-plugin/plugin.json
  • plugins/cloudflare-queues/.claude-plugin/plugin.json
  • plugins/cloudflare-r2/.claude-plugin/plugin.json
  • plugins/cloudflare-turnstile/.claude-plugin/plugin.json
  • plugins/cloudflare-workers/.claude-plugin/plugin.json
  • plugins/cloudflare-workflows/.claude-plugin/plugin.json
  • plugins/content-collections/.claude-plugin/plugin.json
  • plugins/dependency-upgrade/.claude-plugin/plugin.json
  • plugins/dependency-upgrade/skills/dependency-upgrade/SKILL.md
  • plugins/dependency-upgrade/skills/dependency-upgrade/references/compatibility-matrix.md
  • plugins/dependency-upgrade/skills/dependency-upgrade/references/staged-upgrades.md
  • plugins/dependency-upgrade/skills/dependency-upgrade/templates/npmrc-security.tmpl
  • plugins/design-system-creation/.claude-plugin/plugin.json
  • plugins/drizzle-orm-d1/.claude-plugin/plugin.json
  • plugins/inspira-ui/.claude-plugin/plugin.json
  • plugins/maz-ui/.claude-plugin/plugin.json
  • plugins/multi-ai-consultant/.claude-plugin/plugin.json
  • plugins/mutation-testing/.claude-plugin/plugin.json
  • plugins/neon-vercel-postgres/.claude-plugin/plugin.json
  • plugins/nuxt-content/.claude-plugin/plugin.json
  • plugins/nuxt-seo/.claude-plugin/plugin.json
  • plugins/nuxt-seo/skills/nuxt-seo/SKILL.md
  • plugins/nuxt-seo/skills/nuxt-seo/references/advanced-seo-guides.md
  • plugins/nuxt-seo/skills/nuxt-seo/references/installation-guide.md
  • plugins/nuxt-seo/skills/nuxt-seo/references/modules-overview.md
  • plugins/nuxt-studio/.claude-plugin/plugin.json
  • plugins/nuxt-ui-v4/.claude-plugin/plugin.json
  • plugins/nuxt-ui-v4/README.md
  • plugins/nuxt-ui-v4/skills/nuxt-ui-v4/references/chat-components.md
  • plugins/nuxt-ui-v4/skills/nuxt-ui-v4/references/nuxt-v4-features.md
  • plugins/nuxt-v4/.claude-plugin/plugin.json
  • plugins/nuxt-v5/.claude-plugin/plugin.json
  • plugins/nuxt-v5/commands/nuxt-setup.md
  • plugins/nuxt-v5/skills/nuxt-core/templates/nuxt.config.ts
  • plugins/nuxt-v5/skills/nuxt-data/references/composables.md
  • plugins/nuxt-v5/skills/nuxt-data/references/data-fetching.md
  • plugins/nuxt-v5/skills/nuxt-data/templates/composables/useAuth.ts
  • plugins/nuxt-v5/skills/nuxt-production/SKILL.md
  • plugins/nuxt-v5/skills/nuxt-production/references/deployment-cloudflare.md
  • plugins/nuxt-v5/skills/nuxt-production/references/hydration.md
  • plugins/nuxt-v5/skills/nuxt-production/references/performance.md
  • plugins/nuxt-v5/skills/nuxt-production/references/testing-vitest.md
  • plugins/nuxt-v5/skills/nuxt-production/templates/wrangler.toml
  • plugins/nuxt-v5/skills/nuxt-server/references/server.md
  • plugins/plan-interview/.claude-plugin/plugin.json
  • plugins/playwright/.claude-plugin/plugin.json
  • plugins/react-best-practices/.claude-plugin/plugin.json
  • plugins/react-composition-patterns/.claude-plugin/plugin.json
  • plugins/react-native-skills/.claude-plugin/plugin.json
  • plugins/session-management/.claude-plugin/plugin.json
  • plugins/supabase-postgres-best-practices/.claude-plugin/plugin.json
  • plugins/sveltia-cms/.claude-plugin/plugin.json
  • plugins/swift-best-practices/.claude-plugin/plugin.json
  • plugins/swift-settingskit/.claude-plugin/plugin.json
  • plugins/tailwind-v4-shadcn/.claude-plugin/plugin.json
  • plugins/tanstack-ai/.claude-plugin/plugin.json
  • plugins/tanstack-router/.claude-plugin/plugin.json
  • plugins/tanstack-start/.claude-plugin/plugin.json
  • plugins/tanstack-table/.claude-plugin/plugin.json
  • plugins/threejs/.claude-plugin/plugin.json
  • plugins/turborepo/.claude-plugin/plugin.json
  • plugins/ultracite/.claude-plugin/plugin.json
  • plugins/vercel-blob/.claude-plugin/plugin.json
  • plugins/vercel-kv/.claude-plugin/plugin.json
  • plugins/vulnerability-scanning/.claude-plugin/plugin.json
  • plugins/xss-prevention/.claude-plugin/plugin.json
  • plugins/zod/.claude-plugin/plugin.json
  • plugins/zustand-state-management/.claude-plugin/plugin.json
  • scripts/sync-plugins.sh
  • scripts/validate-frontmatter.sh
✅ Files skipped from review due to trivial changes (50)
  • plugins/api-authentication/.claude-plugin/plugin.json
  • plugins/swift-settingskit/.claude-plugin/plugin.json
  • plugins/aceternity-ui/.claude-plugin/plugin.json
  • plugins/inspira-ui/.claude-plugin/plugin.json
  • plugins/threejs/.claude-plugin/plugin.json
  • plugins/sveltia-cms/.claude-plugin/plugin.json
  • plugins/cloudflare-d1/.claude-plugin/plugin.json
  • plugins/tanstack-table/.claude-plugin/plugin.json
  • plugins/zod/.claude-plugin/plugin.json
  • plugins/drizzle-orm-d1/.claude-plugin/plugin.json
  • plugins/mutation-testing/.claude-plugin/plugin.json
  • plugins/zustand-state-management/.claude-plugin/plugin.json
  • plugins/tanstack-start/.claude-plugin/plugin.json
  • plugins/vulnerability-scanning/.claude-plugin/plugin.json
  • plugins/playwright/.claude-plugin/plugin.json
  • plugins/design-system-creation/.claude-plugin/plugin.json
  • plugins/tailwind-v4-shadcn/.claude-plugin/plugin.json
  • plugins/tanstack-router/.claude-plugin/plugin.json
  • plugins/nuxt-seo/skills/nuxt-seo/references/advanced-seo-guides.md
  • plugins/cloudflare-workflows/.claude-plugin/plugin.json
  • plugins/vercel-blob/.claude-plugin/plugin.json
  • plugins/session-management/.claude-plugin/plugin.json
  • plugins/multi-ai-consultant/.claude-plugin/plugin.json
  • plugins/dependency-upgrade/skills/dependency-upgrade/references/compatibility-matrix.md
  • plugins/react-best-practices/.claude-plugin/plugin.json
  • plugins/cloudflare-turnstile/.claude-plugin/plugin.json
  • plugins/nuxt-content/.claude-plugin/plugin.json
  • plugins/cloudflare-queues/.claude-plugin/plugin.json
  • plugins/react-composition-patterns/.claude-plugin/plugin.json
  • plugins/tanstack-ai/.claude-plugin/plugin.json
  • plugins/plan-interview/.claude-plugin/plugin.json
  • plugins/neon-vercel-postgres/.claude-plugin/plugin.json
  • plugins/swift-best-practices/.claude-plugin/plugin.json
  • plugins/dependency-upgrade/skills/dependency-upgrade/templates/npmrc-security.tmpl
  • plugins/react-native-skills/.claude-plugin/plugin.json
  • plugins/supabase-postgres-best-practices/.claude-plugin/plugin.json
  • plugins/nuxt-v5/skills/nuxt-data/references/composables.md
  • plugins/vercel-kv/.claude-plugin/plugin.json
  • plugins/nuxt-v5/skills/nuxt-production/templates/wrangler.toml
  • plugins/nuxt-v5/.claude-plugin/plugin.json
  • plugins/nuxt-v5/skills/nuxt-production/SKILL.md
  • plugins/cloudflare-images/.claude-plugin/plugin.json
  • plugins/nuxt-v5/skills/nuxt-production/references/hydration.md
  • plugins/nuxt-v5/skills/nuxt-data/references/data-fetching.md
  • plugins/xss-prevention/.claude-plugin/plugin.json
  • plugins/nuxt-studio/.claude-plugin/plugin.json
  • plugins/nuxt-v5/skills/nuxt-server/references/server.md
  • plugins/nuxt-v5/skills/nuxt-production/references/deployment-cloudflare.md
  • plugins/dependency-upgrade/.claude-plugin/plugin.json
  • plugins/cloudflare-r2/.claude-plugin/plugin.json
🚧 Files skipped from review as they are similar to previous changes (5)
  • plugins/nuxt-seo/.claude-plugin/plugin.json
  • plugins/nuxt-v5/skills/nuxt-data/templates/composables/useAuth.ts
  • plugins/nuxt-seo/skills/nuxt-seo/references/modules-overview.md
  • plugins/nuxt-ui-v4/skills/nuxt-ui-v4/references/nuxt-v4-features.md
  • plugins/nuxt-ui-v4/skills/nuxt-ui-v4/references/chat-components.md

…ush, and content

- Fix CRITICAL pre-push hook: use 3 dirname calls to resolve plugin
  root (was 2, causing skills/skills/ double path)
- Fix pre-push dedup: skip duplicate validations when multiple
  sub-skills in same plugin change
- Fix sync-plugins total counter: count plugin directories
  instead of nonexistent root SKILL.md files
- Fix sync-plugins dead error handling: use `if jq` pattern
  instead of separate $? check (set -e made else unreachable)
- Fix sync-plugins multi-skill first-run: add elif block for
  multi-skill plugins without existing plugin.json
- Fix sync-plugins word-splitting: use while IFS= read -r instead
  of for..in $(find) for directory names with spaces
- Fix sync-plugins inconsistent empty checks: standardize on
  -n instead of != ""
- Add jq preflight check in sync-plugins.sh
- Fix validate-frontmatter --dir: detect when --dir is already
  a skills/ subdirectory and don't append /skills again
- Fix validate-frontmatter --quiet: suppress "No SKILL.md found"
  error in quiet mode
- Add 2>/dev/null to validate-frontmatter full-repo find
- Fix nuxt-seo SKILL.md description to ~190 chars (<200 limit)
- Fix yarnrc-security.tmpl npmMinimalAgeGate to numeric 10080
Copy link
Copy Markdown
Contributor

@coderabbitai coderabbitai bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actionable comments posted: 1

♻️ Duplicate comments (2)
scripts/validate-frontmatter.sh (2)

90-92: ⚠️ Potential issue | 🟠 Major

Blank description: values pass validation.

The script checks that a description: key exists (line 90) but never fails when the value is empty. A frontmatter with description: followed by nothing or whitespace-only will pass validation since:

  1. Line 90 only checks for key presence
  2. Lines 140-146 only run the length check when desc_text is non-empty
Suggested fix
-  if [ -n "$desc_text" ]; then
+  if [ -z "$(printf '%s' "$desc_text" | tr -d '[:space:]')" ]; then
+    errors="${errors}  description must be non-empty\n"
+  else
     local desc_len
-    desc_len=$(echo "$desc_text" | tr -d '\n' | wc -c | tr -d ' ')
+    desc_len=$(printf '%s' "$desc_text" | tr -d '\n' | wc -c | tr -d ' ')
     if [ "$desc_len" -gt "$MAX_DESCRIPTION_LENGTH" ]; then
       errors="${errors}  description exceeds ${MAX_DESCRIPTION_LENGTH} chars (${desc_len})\n"
     fi
   fi

Also applies to: 140-146

🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In `@scripts/validate-frontmatter.sh` around lines 90 - 92, The current
frontmatter validation only ensures the "description:" key exists but allows
empty or whitespace-only values; update scripts/validate-frontmatter.sh to
require a non-empty, non-whitespace description by extracting the value into
desc_text (the existing desc_text logic) then trimming whitespace and failing if
the trimmed desc_text is empty; ensure the initial presence check (where
frontmatter is grepped for "^description:") is replaced or supplemented so that
an empty description triggers the same error path (add an error like "missing
required field 'description' or empty description") and keep the existing length
checks (lines referencing desc_text) to run only when desc_text is non-empty
after trimming.

287-293: ⚠️ Potential issue | 🟠 Major

Default mode skips root-level single-skill plugins.

The find command at line 288 uses -path '*/skills/*/SKILL.md', which only matches nested skill files like plugins/foo/skills/bar/SKILL.md. Root-level plugins at plugins/foo/SKILL.md are never validated in default mode.

This is inconsistent with the --dir mode which has a fallback (lines 271-275). The pipeline failure with 57 critical issues may partially stem from this—verify if single-skill plugins are being missed.

Suggested fix
-  skill_files=$(find "$REPO_ROOT/plugins" -name 'SKILL.md' -path '*/skills/*/SKILL.md' 2>/dev/null | sort)
+  skill_files=$(find "$REPO_ROOT/plugins" -type f -name 'SKILL.md' 2>/dev/null | sort)
🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In `@scripts/validate-frontmatter.sh` around lines 287 - 293, The current
default-mode find that populates the skill_files variable uses -path
'*/skills/*/SKILL.md' and therefore excludes root-level SKILL.md files (e.g.
plugins/foo/SKILL.md); update the find invocation in validate-frontmatter.sh
that sets skill_files to include both nested and root-level SKILL.md files (for
example, combine predicates with -o like \( -path '*/skills/*/SKILL.md' -o -path
'*/SKILL.md' \) or simply use -name 'SKILL.md' and filter duplicates) so default
mode validates single-skill plugins the same way the --dir fallback does,
keeping the variable name skill_files and the rest of the validation flow
unchanged.
🤖 Prompt for all review comments with AI agents
Verify each finding against the current code and only fix it if needed.

Inline comments:
In `@scripts/validate-frontmatter.sh`:
- Line 194: The printf invocation uses the variable as the format string which
is unsafe; update the two printf calls that currently use the variable errors
(the occurrences around the printf "$errors" and the similar one later) to use
an explicit format specifier that interprets backslash escapes (e.g., use %b)
and pass errors as an argument so the variable is not treated as the format
string; locate the printf calls in the script that reference the errors variable
and replace them accordingly.

---

Duplicate comments:
In `@scripts/validate-frontmatter.sh`:
- Around line 90-92: The current frontmatter validation only ensures the
"description:" key exists but allows empty or whitespace-only values; update
scripts/validate-frontmatter.sh to require a non-empty, non-whitespace
description by extracting the value into desc_text (the existing desc_text
logic) then trimming whitespace and failing if the trimmed desc_text is empty;
ensure the initial presence check (where frontmatter is grepped for
"^description:") is replaced or supplemented so that an empty description
triggers the same error path (add an error like "missing required field
'description' or empty description") and keep the existing length checks (lines
referencing desc_text) to run only when desc_text is non-empty after trimming.
- Around line 287-293: The current default-mode find that populates the
skill_files variable uses -path '*/skills/*/SKILL.md' and therefore excludes
root-level SKILL.md files (e.g. plugins/foo/SKILL.md); update the find
invocation in validate-frontmatter.sh that sets skill_files to include both
nested and root-level SKILL.md files (for example, combine predicates with -o
like \( -path '*/skills/*/SKILL.md' -o -path '*/SKILL.md' \) or simply use -name
'SKILL.md' and filter duplicates) so default mode validates single-skill plugins
the same way the --dir fallback does, keeping the variable name skill_files and
the rest of the validation flow unchanged.
🪄 Autofix (Beta)

Fix all unresolved CodeRabbit comments on this PR:

  • Push a commit to this branch (recommended)
  • Create a new PR with the fixes

ℹ️ Review info
⚙️ Run configuration

Configuration used: Organization UI

Review profile: CHILL

Plan: Pro

Run ID: ff69ec81-385c-4a6c-be67-e7514a87400b

📥 Commits

Reviewing files that changed from the base of the PR and between 5af43b4 and c569725.

📒 Files selected for processing (5)
  • .githooks/pre-push
  • plugins/dependency-upgrade/skills/dependency-upgrade/templates/yarnrc-security.tmpl
  • plugins/nuxt-seo/skills/nuxt-seo/SKILL.md
  • scripts/sync-plugins.sh
  • scripts/validate-frontmatter.sh
✅ Files skipped from review due to trivial changes (2)
  • plugins/dependency-upgrade/skills/dependency-upgrade/templates/yarnrc-security.tmpl
  • plugins/nuxt-seo/skills/nuxt-seo/SKILL.md
🚧 Files skipped from review as they are similar to previous changes (1)
  • .githooks/pre-push

- Add missing fields: homepage, skills, outputStyles, lspServers, userConfig, channels
- Fix agents/commands to accept string | array per official spec
- Fix hooks/mcpServers to accept string | array | object
- Fix author to object-only with url support
- Relax license to accept any SPDX identifier
- Fix repository to string-only
- Update sync-plugins.sh to merge (not overwrite) existing plugin.json fields
- Update CLAUDE.md with complete schema documentation
Copy link
Copy Markdown
Contributor

@coderabbitai coderabbitai bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actionable comments posted: 1

🤖 Prompt for all review comments with AI agents
Verify each finding against the current code and only fix it if needed.

Inline comments:
In `@schemas/plugin.schema.json`:
- Around line 249-264: The nested "userConfig" inside "channels" currently
allows arbitrary extra fields because its additionalProperties schema omits an
"additionalProperties": false constraint; update the nested additionalProperties
object for the channels' "userConfig" to include "additionalProperties": false
(mirroring the top-level "userConfig" entries) so each channel config entry only
permits the defined "description" and optional "sensitive" boolean properties.
🪄 Autofix (Beta)

Fix all unresolved CodeRabbit comments on this PR:

  • Push a commit to this branch (recommended)
  • Create a new PR with the fixes

ℹ️ Review info
⚙️ Run configuration

Configuration used: Organization UI

Review profile: CHILL

Plan: Pro

Run ID: 594e4a63-7679-4d40-bb2c-2746c1147e32

📥 Commits

Reviewing files that changed from the base of the PR and between c569725 and 697c054.

📒 Files selected for processing (3)
  • CLAUDE.md
  • schemas/plugin.schema.json
  • scripts/sync-plugins.sh
✅ Files skipped from review due to trivial changes (1)
  • CLAUDE.md

…fix nuxt-v5 scaffold

- Fix .githooks/pre-push grep to match root-level and nested SKILL.md
- Fix validate-frontmatter.sh find to discover all SKILL.md (not just nested)
- Add empty description validation error in validate-frontmatter.sh
- Add del(.category) to sync-plugins.sh jq filters
- Shorten dependency-upgrade description to <200 chars
- Remove false agent claims from maz-ui description
- Fix nuxt-setup.md: DB adapter from database var, add auth handlers, use packageManager
- Remove process.env/validateSecret from nuxt.config.ts template (edge compat)
- Condense nuxt-seo SKILL.md from 867→314 lines, add source links for issues #11-#14
- Fix unscoped package names: nuxt-robots→@nuxtjs/robots, nuxt-sitemap→@nuxtjs/sitemap
- Add fence language tags to nuxt-setup, performance.md, testing-vitest, staged-upgrades
- Fix nuxt-ui-v4 Dashboard component count (10, not 11)
- Scope CI workflow to changed files for PRs, full validation on push to main
- Add missing license: MIT to YAML frontmatter for 92 skills (0 warnings now)
- Fix Nitro presets: cloudflare-pages -> cloudflare_pages, cloudflare-module -> cloudflare_module
- Updated across nuxt-v5 templates, commands, production skill, and deployment refs
Copy link
Copy Markdown
Contributor

@coderabbitai coderabbitai bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actionable comments posted: 11

Caution

Some comments are outside the diff and can’t be posted inline due to platform limitations.

⚠️ Outside diff range comments (1)
plugins/bun/skills/bun-nextjs/SKILL.md (1)

46-48: ⚠️ Potential issue | 🟠 Major

Update package versions to current stable releases.

The following packages in the SKILL.md are outdated and should be updated:

  • next: ^16.1.1 → ^16.2.2
  • react: ^19.2.3 → ^19.2.4
  • react-dom: ^19.2.3 → ^19.2.4
🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In `@plugins/bun/skills/bun-nextjs/SKILL.md` around lines 46 - 48, Update the
package version strings in SKILL.md for the Next/React dependencies: change
"next" from ^16.1.1 to ^16.2.2 and update both "react" and "react-dom" from
^19.2.3 to ^19.2.4 so the dependency block reflects the current stable releases.
🧹 Nitpick comments (3)
plugins/maz-ui/.claude-plugin/plugin.json (1)

13-16: Consider adding a couple of more specific keywords for search relevance.

This set is valid, but tooling/workflow are broad. Adding targeted terms (for example vue, nuxt, components) would likely improve marketplace discoverability.

🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In `@plugins/maz-ui/.claude-plugin/plugin.json` around lines 13 - 16, The keywords
array in plugin.json is too broad; update the "keywords" entry (the list
containing "maz", "tooling", "workflow", "ssr") to include more targeted search
terms such as "vue", "nuxt", "components" (and optionally "vite" or
"ui-library") so the plugin is more discoverable in the marketplace.
plugins/bun/skills/bun-test-lifecycle/SKILL.md (1)

3-3: Rewrite description to use third-person perspective.

The description currently uses imperative form ("Use for..."), but should follow third-person perspective. As per coding guidelines, skill descriptions should use forms like "This skill should be used when..." rather than imperative commands.

📝 Suggested rewording options
-description: Use for test lifecycle hooks: beforeAll, afterAll, beforeEach, afterEach, fixtures, preload.
+description: Provides guidance on Bun test lifecycle hooks including beforeAll, afterAll, beforeEach, afterEach, fixtures, and preload.

Alternative:

-description: Use for test lifecycle hooks: beforeAll, afterAll, beforeEach, afterEach, fixtures, preload.
+description: Covers Bun test lifecycle hooks for setup and teardown including beforeAll, afterAll, beforeEach, afterEach, fixtures, and preload.

As per coding guidelines: "Use third-person perspective in skill descriptions (e.g., 'This skill should be used when...' instead of 'You should...')".

🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In `@plugins/bun/skills/bun-test-lifecycle/SKILL.md` at line 3, Update the skill
description line in SKILL.md to use third-person perspective instead of
imperative voice; replace "Use for test lifecycle hooks: beforeAll, afterAll,
beforeEach, afterEach, fixtures, preload." with a phrasing like "This skill
should be used for test lifecycle hooks such as beforeAll, afterAll, beforeEach,
afterEach, fixtures, and preload." to match style guidelines and maintain the
same enumerated hooks.
plugins/nuxt-v5/skills/nuxt-core/SKILL.md (1)

14-499: Add an explicit keywords section to improve discoverability.

The skill currently lacks comprehensive keyword coverage in a dedicated section; adding one improves matching for technologies/use-cases/errors.

As per coding guidelines, "Include comprehensive keywords in skill.md that cover technologies, frameworks, use cases, and errors the skill prevents."

🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In `@plugins/nuxt-v5/skills/nuxt-core/SKILL.md` around lines 14 - 499, Add a new
"## Keywords" section to SKILL.md (e.g., after the "Quick Reference" or
top-level header "Nuxt 5 Core Fundamentals") that lists comprehensive keywords
covering technologies, frameworks, use-cases and common errors (include terms
like: nuxt, nuxt 5, vue, nitro, vite, rolldown, typescript, routing, file-based
routing, middleware, runtime-config, app.config, nuxt.config, vite-environment,
vite-plugin, jsx, seo, meta-tags, error-handling, clearNuxtState, createError,
useRuntimeConfig, useSeoMeta, useFetch, server routes, nitro v3,
cloudflare_pages, build, deployment, typecheck, and common errors like "route
not found", "vite plugin warnings", "non-reactive route params"). Ensure the
section is clearly titled "Keywords" and formatted as a comma- or
newline-separated list to improve discoverability and match the guideline.
🤖 Prompt for all review comments with AI agents
Verify each finding against the current code and only fix it if needed.

Inline comments:
In `@plugins/bun/skills/bun-sveltekit/SKILL.md`:
- Line 3: The description field uses second-person phrasing; change it to
third-person to match repo standards by replacing the current value of the
description key with a third-person sentence such as "This skill should be used
when building or running SvelteKit apps on Bun, including SSR, adapters, and
Bun-specific APIs." Update the description entry in SKILL.md (the description
key) accordingly.

In `@plugins/dependency-upgrade/skills/dependency-upgrade/SKILL.md`:
- Line 3: Update the frontmatter description in SKILL.md to third-person
wording: replace the phrase starting "Use when upgrading deps, configuring
security policies, or preventing supply chain attacks." with a third-person form
such as "This skill should be used when upgrading dependencies, configuring
security policies, or preventing supply chain attacks." Ensure the frontmatter
key 'description' is edited (and expand "deps" to "dependencies") to match repo
style.
- Around line 206-213: Update the Deno row in the package manager table: replace
the command `deno install --frozen` with the idiomatic project-level option such
as `deno cache --frozen` (or note configuring `"frozen": true` in deno.json) and
change the description to match others, e.g. "Fails if lockfile is out of sync"
to indicate lockfile enforcement during installation.

In `@plugins/nuxt-seo/skills/nuxt-seo/references/installation-guide.md`:
- Around line 53-60: Documentation uses unscoped module names in many places;
update every occurrence of the unscoped names used in installation commands and
module configuration blocks to their scoped equivalents (e.g., replace nuxt
module add
robots/sitemap/nuxt-og-image/nuxt-schema-org/nuxt-link-checker/nuxt-seo-utils/nuxt-site-config
with npx nuxt module add `@nuxtjs/robots`, `@nuxtjs/sitemap`, `@nuxtjs/og-image`,
`@nuxtjs/schema-org`, `@nuxtjs/link-checker`, `@nuxtjs/seo-utils`, `@nuxtjs/site-config`
respectively) in the listed docs (nuxt-content-integration.md,
module-details.md, modules-overview.md, seo-guides.md, troubleshooting.md,
common-patterns.md, api-reference.md, advanced-seo-guides.md); update both code
blocks and headings/inline mentions to keep terminology consistent and run a
repo-wide search for the old unscoped names to catch any remaining occurrences.

In `@plugins/nuxt-seo/skills/nuxt-seo/SKILL.md`:
- Around line 115-129: The doc line incorrectly recommends defineSitemapSchema()
for Content v3 in v5; update the phrasing to instruct using
asSitemapCollection() from `@nuxtjs/sitemap/content` instead, and remove the note
that asSitemapCollection() is deprecated; keep the server-side API note intact
(getSiteConfig(event) replaces useSiteConfig(event)). Ensure the line references
the correct symbols: replace mentions of defineSitemapSchema() with
asSitemapCollection(), and keep getSiteConfig(event) / useSiteConfig(event)
as-is.

In `@plugins/nuxt-v5/skills/nuxt-core/SKILL.md`:
- Line 46: The fenced code blocks showing directory examples (the blocks
containing "my-nuxt-app/" and "app/pages/") are missing language identifiers and
trigger markdownlint MD040; update each triple-backtick fence to include a
language tag such as ```text (or ```bash if you prefer) so the blocks become
"```text" at the start and close with "```", and apply the same change to the
other occurrence noted (the second directory example) to satisfy the lint rule
and the ONE_PAGE_CHECKLIST.md validation.
- Line 3: Update the frontmatter "description" in SKILL.md to a concise,
third-person sentence under 200 characters (preferably <100), e.g., start with
"This skill should be used when…" and summarize the intent (Nuxt 5 core setup,
routing, SEO, error handling, Vite/Nitro config); replace the current long,
first-person-style sentence with that shorter third-person phrasing.

In `@plugins/nuxt-v5/skills/nuxt-core/templates/nuxt.config.ts`:
- Around line 1-98: This Nuxt template (export default defineNuxtConfig) must be
executed and the results documented before merging: run type checking (tsc or
npm run build/typecheck) to verify typescript.strict and shim settings, start
the app locally (npm run dev) and do a production build+preview (npm run build
&& npm run preview) to validate nitro.preset, nitro.routeRules
(prerender/ssr/isr behaviors), vite/rollup output, image.cloudflare.baseURL and
fonts families; confirm devtools/modules load and that runtimeConfig/public
values are applied. After testing, add a concise “template testing” note to the
PR description (or the template frontmatter) listing the exact commands run and
observed results (success, any warnings, pages checked) so CI reviewers can
accept the template without code changes.

In `@plugins/nuxt-v5/skills/nuxt-production/SKILL.md`:
- Around line 1-517: SKILL.md is 517 lines—extract lower-priority, verbose
examples and long code blocks into references/*.md to reduce the main file under
500 lines: move extended Deployment examples (Cloudflare Workers, Vercel/Netlify
snippets), detailed Migration Steps 3–10 code blocks (server error handling,
event API, Vite rolldownOptions, routeRules, import path examples, JSX plugin),
long Troubleshooting sections and Rolldown/Vite warnings into new reference
files (e.g., references/deployment.md, references/migration.md,
references/troubleshooting.md), and keep only quick-start bullets, the short
"What's New in Nuxt 5" table, top-level headings like "Hydration Best
Practices", "Performance Optimization", and the minimal examples used for
immediate debugging (client-only placeholder, lazy hydration, and the Vitest
quick setup). Update SKILL.md links to point to the new references and remove
the moved code blocks and long tables to bring file length below 500 lines.
- Around line 3-14: Rewrite the SKILL.md frontmatter "description" field into a
concise third-person sentence (prefer <100 characters, maximum <200) that
summarizes the skill (e.g., "Optimizes Nuxt 5 production for hydration,
performance, testing, and deployment."). Replace the current multiline
"description" block with that single-line third-person sentence, remove usage
examples from the description (keep them in other fields if needed), and
eliminate the "comment placeholder" from Keywords; leave the existing Keywords
field intact otherwise.

In `@plugins/recommendation-engine/skills/recommendation-engine/SKILL.md`:
- Line 3: Update the description field in SKILL.md to a concise, third-person
sentence under 200 characters (ideally <100); replace the current
imperative/long line with a third-person summary such as: "Provides
collaborative filtering, matrix factorization, and hybrid approaches for product
recommendations and personalization, addressing cold-start and sparsity." Ensure
the updated value is assigned to the existing description key.

---

Outside diff comments:
In `@plugins/bun/skills/bun-nextjs/SKILL.md`:
- Around line 46-48: Update the package version strings in SKILL.md for the
Next/React dependencies: change "next" from ^16.1.1 to ^16.2.2 and update both
"react" and "react-dom" from ^19.2.3 to ^19.2.4 so the dependency block reflects
the current stable releases.

---

Nitpick comments:
In `@plugins/bun/skills/bun-test-lifecycle/SKILL.md`:
- Line 3: Update the skill description line in SKILL.md to use third-person
perspective instead of imperative voice; replace "Use for test lifecycle hooks:
beforeAll, afterAll, beforeEach, afterEach, fixtures, preload." with a phrasing
like "This skill should be used for test lifecycle hooks such as beforeAll,
afterAll, beforeEach, afterEach, fixtures, and preload." to match style
guidelines and maintain the same enumerated hooks.

In `@plugins/maz-ui/.claude-plugin/plugin.json`:
- Around line 13-16: The keywords array in plugin.json is too broad; update the
"keywords" entry (the list containing "maz", "tooling", "workflow", "ssr") to
include more targeted search terms such as "vue", "nuxt", "components" (and
optionally "vite" or "ui-library") so the plugin is more discoverable in the
marketplace.

In `@plugins/nuxt-v5/skills/nuxt-core/SKILL.md`:
- Around line 14-499: Add a new "## Keywords" section to SKILL.md (e.g., after
the "Quick Reference" or top-level header "Nuxt 5 Core Fundamentals") that lists
comprehensive keywords covering technologies, frameworks, use-cases and common
errors (include terms like: nuxt, nuxt 5, vue, nitro, vite, rolldown,
typescript, routing, file-based routing, middleware, runtime-config, app.config,
nuxt.config, vite-environment, vite-plugin, jsx, seo, meta-tags, error-handling,
clearNuxtState, createError, useRuntimeConfig, useSeoMeta, useFetch, server
routes, nitro v3, cloudflare_pages, build, deployment, typecheck, and common
errors like "route not found", "vite plugin warnings", "non-reactive route
params"). Ensure the section is clearly titled "Keywords" and formatted as a
comma- or newline-separated list to improve discoverability and match the
guideline.
🪄 Autofix (Beta)

Fix all unresolved CodeRabbit comments on this PR:

  • Push a commit to this branch (recommended)
  • Create a new PR with the fixes

ℹ️ Review info
⚙️ Run configuration

Configuration used: Organization UI

Review profile: CHILL

Plan: Pro

Run ID: 6e2bdcf3-28fe-4159-9ccf-49a9e3787512

📥 Commits

Reviewing files that changed from the base of the PR and between 697c054 and 75421fa.

📒 Files selected for processing (129)
  • .claude-plugin/marketplace.json
  • .githooks/pre-push
  • .github/workflows/validate-frontmatter.yml
  • FRONTMATTER_VALIDATION_REPORT.md
  • plugins/access-control-rbac/skills/access-control-rbac/SKILL.md
  • plugins/api-authentication/skills/api-authentication/SKILL.md
  • plugins/api-changelog-versioning/skills/api-changelog-versioning/SKILL.md
  • plugins/api-contract-testing/skills/api-contract-testing/SKILL.md
  • plugins/api-design-principles/skills/api-design-principles/SKILL.md
  • plugins/api-error-handling/skills/api-error-handling/SKILL.md
  • plugins/api-filtering-sorting/skills/api-filtering-sorting/SKILL.md
  • plugins/api-gateway-configuration/skills/api-gateway-configuration/SKILL.md
  • plugins/api-pagination/skills/api-pagination/SKILL.md
  • plugins/api-rate-limiting/skills/api-rate-limiting/SKILL.md
  • plugins/api-reference-documentation/skills/api-reference-documentation/SKILL.md
  • plugins/api-response-optimization/skills/api-response-optimization/SKILL.md
  • plugins/api-security-hardening/skills/api-security-hardening/SKILL.md
  • plugins/api-testing/skills/api-testing/SKILL.md
  • plugins/api-versioning-strategy/skills/api-versioning-strategy/SKILL.md
  • plugins/app-store-deployment/skills/app-store-deployment/SKILL.md
  • plugins/architecture-patterns/skills/architecture-patterns/SKILL.md
  • plugins/better-auth/skills/better-auth/SKILL.md
  • plugins/bun/skills/bun-bundler/SKILL.md
  • plugins/bun/skills/bun-cloudflare-workers/SKILL.md
  • plugins/bun/skills/bun-docker/SKILL.md
  • plugins/bun/skills/bun-drizzle-integration/SKILL.md
  • plugins/bun/skills/bun-ffi/SKILL.md
  • plugins/bun/skills/bun-file-io/SKILL.md
  • plugins/bun/skills/bun-hono-integration/SKILL.md
  • plugins/bun/skills/bun-hot-reloading/SKILL.md
  • plugins/bun/skills/bun-http-server/SKILL.md
  • plugins/bun/skills/bun-jest-migration/SKILL.md
  • plugins/bun/skills/bun-macros/SKILL.md
  • plugins/bun/skills/bun-nextjs/SKILL.md
  • plugins/bun/skills/bun-nuxt/SKILL.md
  • plugins/bun/skills/bun-package-manager/SKILL.md
  • plugins/bun/skills/bun-react-ssr/SKILL.md
  • plugins/bun/skills/bun-redis/SKILL.md
  • plugins/bun/skills/bun-runtime/SKILL.md
  • plugins/bun/skills/bun-shell/SKILL.md
  • plugins/bun/skills/bun-sqlite/SKILL.md
  • plugins/bun/skills/bun-sveltekit/SKILL.md
  • plugins/bun/skills/bun-tanstack-start/SKILL.md
  • plugins/bun/skills/bun-test-basics/SKILL.md
  • plugins/bun/skills/bun-test-coverage/SKILL.md
  • plugins/bun/skills/bun-test-lifecycle/SKILL.md
  • plugins/bun/skills/bun-test-mocking/SKILL.md
  • plugins/bun/skills/bun-websocket-server/SKILL.md
  • plugins/bun/skills/bun-workers/SKILL.md
  • plugins/claude-hook-writer/skills/claude-hook-writer/SKILL.md
  • plugins/cloudflare-workers/skills/cloudflare-workers-ci-cd/SKILL.md
  • plugins/cloudflare-workers/skills/cloudflare-workers-dev-experience/SKILL.md
  • plugins/cloudflare-workers/skills/cloudflare-workers-frameworks/SKILL.md
  • plugins/cloudflare-workers/skills/cloudflare-workers-migration/SKILL.md
  • plugins/cloudflare-workers/skills/cloudflare-workers-multi-lang/SKILL.md
  • plugins/cloudflare-workers/skills/cloudflare-workers-observability/SKILL.md
  • plugins/cloudflare-workers/skills/cloudflare-workers-performance/SKILL.md
  • plugins/cloudflare-workers/skills/cloudflare-workers-runtime-apis/SKILL.md
  • plugins/cloudflare-workers/skills/cloudflare-workers-security/SKILL.md
  • plugins/cloudflare-workers/skills/cloudflare-workers-testing/SKILL.md
  • plugins/code-review/skills/code-review/SKILL.md
  • plugins/csrf-protection/skills/csrf-protection/SKILL.md
  • plugins/database-schema-design/skills/database-schema-design/SKILL.md
  • plugins/database-sharding/skills/database-sharding/SKILL.md
  • plugins/defense-in-depth-validation/skills/defense-in-depth-validation/SKILL.md
  • plugins/dependency-upgrade/skills/dependency-upgrade/SKILL.md
  • plugins/dependency-upgrade/skills/dependency-upgrade/references/staged-upgrades.md
  • plugins/graphql-implementation/skills/graphql-implementation/SKILL.md
  • plugins/health-check-endpoints/skills/health-check-endpoints/SKILL.md
  • plugins/idempotency-handling/skills/idempotency-handling/SKILL.md
  • plugins/internationalization-i18n/skills/internationalization-i18n/SKILL.md
  • plugins/jest-generator/skills/jest-generator/SKILL.md
  • plugins/logging-best-practices/skills/logging-best-practices/SKILL.md
  • plugins/maz-ui/.claude-plugin/plugin.json
  • plugins/maz-ui/skills/maz-ui/SKILL.md
  • plugins/mcp-management/skills/mcp-management/SKILL.md
  • plugins/microservices-patterns/skills/microservices-patterns/SKILL.md
  • plugins/ml-model-training/skills/ml-model-training/SKILL.md
  • plugins/ml-pipeline-automation/skills/ml-pipeline-automation/SKILL.md
  • plugins/mobile-app-debugging/skills/mobile-app-debugging/SKILL.md
  • plugins/mobile-app-testing/skills/mobile-app-testing/SKILL.md
  • plugins/mobile-first-design/skills/mobile-first-design/SKILL.md
  • plugins/mobile-offline-support/skills/mobile-offline-support/SKILL.md
  • plugins/model-deployment/skills/model-deployment/SKILL.md
  • plugins/neon-vercel-postgres/skills/neon-vercel-postgres/SKILL.md
  • plugins/nuxt-seo/skills/nuxt-seo/SKILL.md
  • plugins/nuxt-seo/skills/nuxt-seo/assets/package-versions.json
  • plugins/nuxt-seo/skills/nuxt-seo/references/installation-guide.md
  • plugins/nuxt-studio/skills/nuxt-studio/SKILL.md
  • plugins/nuxt-ui-v4/README.md
  • plugins/nuxt-ui-v4/skills/nuxt-ui-v4/SKILL.md
  • plugins/nuxt-v5/commands/nuxt-setup.md
  • plugins/nuxt-v5/skills/nuxt-core/SKILL.md
  • plugins/nuxt-v5/skills/nuxt-core/templates/nuxt.config.ts
  • plugins/nuxt-v5/skills/nuxt-production/SKILL.md
  • plugins/nuxt-v5/skills/nuxt-production/references/deployment-cloudflare.md
  • plugins/nuxt-v5/skills/nuxt-production/references/performance.md
  • plugins/nuxt-v5/skills/nuxt-production/references/testing-vitest.md
  • plugins/oauth-implementation/skills/oauth-implementation/SKILL.md
  • plugins/payment-gateway-integration/skills/payment-gateway-integration/SKILL.md
  • plugins/plan-interview/skills/plan-interview/SKILL.md
  • plugins/playwright/skills/playwright/SKILL.md
  • plugins/push-notification-setup/skills/push-notification-setup/SKILL.md
  • plugins/react-best-practices/skills/react-best-practices/SKILL.md
  • plugins/recommendation-engine/skills/recommendation-engine/SKILL.md
  • plugins/recommendation-system/skills/recommendation-system/SKILL.md
  • plugins/responsive-web-design/skills/responsive-web-design/SKILL.md
  • plugins/rest-api-design/skills/rest-api-design/SKILL.md
  • plugins/root-cause-tracing/skills/root-cause-tracing/SKILL.md
  • plugins/security-headers-configuration/skills/security-headers-configuration/SKILL.md
  • plugins/seo-keyword-cluster-builder/skills/seo-keyword-cluster-builder/SKILL.md
  • plugins/seo-optimizer/skills/seo-optimizer/SKILL.md
  • plugins/session-management/skills/session-management/SKILL.md
  • plugins/systematic-debugging/skills/systematic-debugging/SKILL.md
  • plugins/technical-specification/skills/technical-specification/SKILL.md
  • plugins/test-quality-analysis/skills/test-quality-analysis/SKILL.md
  • plugins/threejs/skills/threejs/SKILL.md
  • plugins/turborepo/skills/turborepo/SKILL.md
  • plugins/verification-before-completion/skills/verification-before-completion/SKILL.md
  • plugins/vitest-testing/skills/vitest-testing/SKILL.md
  • plugins/vulnerability-scanning/skills/vulnerability-scanning/SKILL.md
  • plugins/websocket-implementation/skills/websocket-implementation/SKILL.md
  • plugins/woocommerce-backend-dev/skills/woocommerce-backend-dev/SKILL.md
  • plugins/woocommerce-code-review/skills/woocommerce-code-review/SKILL.md
  • plugins/woocommerce-copy-guidelines/skills/woocommerce-copy-guidelines/SKILL.md
  • plugins/woocommerce-dev-cycle/skills/woocommerce-dev-cycle/SKILL.md
  • schemas/plugin.schema.json
  • scripts/sync-plugins.sh
  • scripts/validate-frontmatter.sh
✅ Files skipped from review due to trivial changes (88)
  • plugins/claude-hook-writer/skills/claude-hook-writer/SKILL.md
  • plugins/bun/skills/bun-redis/SKILL.md
  • plugins/csrf-protection/skills/csrf-protection/SKILL.md
  • plugins/logging-best-practices/skills/logging-best-practices/SKILL.md
  • plugins/api-authentication/skills/api-authentication/SKILL.md
  • plugins/graphql-implementation/skills/graphql-implementation/SKILL.md
  • plugins/mobile-first-design/skills/mobile-first-design/SKILL.md
  • plugins/api-pagination/skills/api-pagination/SKILL.md
  • plugins/mobile-offline-support/skills/mobile-offline-support/SKILL.md
  • plugins/bun/skills/bun-sqlite/SKILL.md
  • plugins/jest-generator/skills/jest-generator/SKILL.md
  • plugins/api-error-handling/skills/api-error-handling/SKILL.md
  • plugins/access-control-rbac/skills/access-control-rbac/SKILL.md
  • plugins/microservices-patterns/skills/microservices-patterns/SKILL.md
  • plugins/api-reference-documentation/skills/api-reference-documentation/SKILL.md
  • plugins/defense-in-depth-validation/skills/defense-in-depth-validation/SKILL.md
  • plugins/better-auth/skills/better-auth/SKILL.md
  • plugins/api-response-optimization/skills/api-response-optimization/SKILL.md
  • plugins/health-check-endpoints/skills/health-check-endpoints/SKILL.md
  • plugins/api-contract-testing/skills/api-contract-testing/SKILL.md
  • plugins/cloudflare-workers/skills/cloudflare-workers-runtime-apis/SKILL.md
  • plugins/api-rate-limiting/skills/api-rate-limiting/SKILL.md
  • plugins/cloudflare-workers/skills/cloudflare-workers-dev-experience/SKILL.md
  • plugins/maz-ui/skills/maz-ui/SKILL.md
  • plugins/api-testing/skills/api-testing/SKILL.md
  • plugins/session-management/skills/session-management/SKILL.md
  • plugins/cloudflare-workers/skills/cloudflare-workers-observability/SKILL.md
  • plugins/mobile-app-debugging/skills/mobile-app-debugging/SKILL.md
  • plugins/bun/skills/bun-websocket-server/SKILL.md
  • plugins/api-security-hardening/skills/api-security-hardening/SKILL.md
  • plugins/oauth-implementation/skills/oauth-implementation/SKILL.md
  • plugins/neon-vercel-postgres/skills/neon-vercel-postgres/SKILL.md
  • plugins/code-review/skills/code-review/SKILL.md
  • plugins/cloudflare-workers/skills/cloudflare-workers-performance/SKILL.md
  • plugins/api-filtering-sorting/skills/api-filtering-sorting/SKILL.md
  • plugins/payment-gateway-integration/skills/payment-gateway-integration/SKILL.md
  • plugins/bun/skills/bun-package-manager/SKILL.md
  • plugins/architecture-patterns/skills/architecture-patterns/SKILL.md
  • plugins/turborepo/skills/turborepo/SKILL.md
  • plugins/bun/skills/bun-hot-reloading/SKILL.md
  • plugins/bun/skills/bun-shell/SKILL.md
  • plugins/test-quality-analysis/skills/test-quality-analysis/SKILL.md
  • plugins/playwright/skills/playwright/SKILL.md
  • plugins/api-design-principles/skills/api-design-principles/SKILL.md
  • plugins/api-versioning-strategy/skills/api-versioning-strategy/SKILL.md
  • plugins/push-notification-setup/skills/push-notification-setup/SKILL.md
  • plugins/api-changelog-versioning/skills/api-changelog-versioning/SKILL.md
  • plugins/react-best-practices/skills/react-best-practices/SKILL.md
  • plugins/cloudflare-workers/skills/cloudflare-workers-ci-cd/SKILL.md
  • plugins/rest-api-design/skills/rest-api-design/SKILL.md
  • plugins/bun/skills/bun-drizzle-integration/SKILL.md
  • plugins/app-store-deployment/skills/app-store-deployment/SKILL.md
  • plugins/security-headers-configuration/skills/security-headers-configuration/SKILL.md
  • plugins/seo-optimizer/skills/seo-optimizer/SKILL.md
  • plugins/bun/skills/bun-cloudflare-workers/SKILL.md
  • plugins/cloudflare-workers/skills/cloudflare-workers-migration/SKILL.md
  • plugins/database-sharding/skills/database-sharding/SKILL.md
  • plugins/bun/skills/bun-test-mocking/SKILL.md
  • plugins/bun/skills/bun-nuxt/SKILL.md
  • plugins/api-gateway-configuration/skills/api-gateway-configuration/SKILL.md
  • plugins/model-deployment/skills/model-deployment/SKILL.md
  • plugins/bun/skills/bun-runtime/SKILL.md
  • plugins/responsive-web-design/skills/responsive-web-design/SKILL.md
  • plugins/bun/skills/bun-tanstack-start/SKILL.md
  • plugins/recommendation-system/skills/recommendation-system/SKILL.md
  • plugins/plan-interview/skills/plan-interview/SKILL.md
  • plugins/bun/skills/bun-test-coverage/SKILL.md
  • plugins/bun/skills/bun-jest-migration/SKILL.md
  • plugins/seo-keyword-cluster-builder/skills/seo-keyword-cluster-builder/SKILL.md
  • plugins/bun/skills/bun-file-io/SKILL.md
  • plugins/bun/skills/bun-macros/SKILL.md
  • plugins/bun/skills/bun-workers/SKILL.md
  • plugins/bun/skills/bun-react-ssr/SKILL.md
  • plugins/cloudflare-workers/skills/cloudflare-workers-multi-lang/SKILL.md
  • plugins/bun/skills/bun-http-server/SKILL.md
  • plugins/bun/skills/bun-bundler/SKILL.md
  • plugins/bun/skills/bun-docker/SKILL.md
  • plugins/root-cause-tracing/skills/root-cause-tracing/SKILL.md
  • plugins/technical-specification/skills/technical-specification/SKILL.md
  • plugins/internationalization-i18n/skills/internationalization-i18n/SKILL.md
  • plugins/idempotency-handling/skills/idempotency-handling/SKILL.md
  • plugins/dependency-upgrade/skills/dependency-upgrade/references/staged-upgrades.md
  • plugins/bun/skills/bun-test-basics/SKILL.md
  • plugins/nuxt-v5/skills/nuxt-production/references/deployment-cloudflare.md
  • plugins/nuxt-v5/skills/nuxt-production/references/performance.md
  • plugins/nuxt-v5/skills/nuxt-production/references/testing-vitest.md
  • plugins/nuxt-v5/commands/nuxt-setup.md
  • plugins/nuxt-ui-v4/skills/nuxt-ui-v4/SKILL.md
🚧 Files skipped from review as they are similar to previous changes (5)
  • FRONTMATTER_VALIDATION_REPORT.md
  • .githooks/pre-push
  • .github/workflows/validate-frontmatter.yml
  • plugins/nuxt-seo/skills/nuxt-seo/assets/package-versions.json
  • plugins/nuxt-ui-v4/README.md

---
name: Bun SvelteKit
name: bun-sveltekit
description: Use when building or running SvelteKit apps on Bun, including SSR, adapters, and Bun-specific APIs
Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

⚠️ Potential issue | 🟡 Minor

Use third-person phrasing in description.

Please rewrite the description to third-person style to match repo standards (e.g., “This skill should be used when…”).

✏️ Suggested update
-description: Use when building or running SvelteKit apps on Bun, including SSR, adapters, and Bun-specific APIs
+description: This skill should be used when building or running SvelteKit apps on Bun, including SSR, adapters, and Bun-specific APIs

As per coding guidelines, "Use third-person perspective in skill descriptions (e.g., 'This skill should be used when...' instead of 'You should...') and imperative/infinitive form in instructions."

📝 Committable suggestion

‼️ IMPORTANT
Carefully review the code before committing. Ensure that it accurately replaces the highlighted code, contains no missing lines, and has no issues with indentation. Thoroughly test & benchmark the code to ensure it meets the requirements.

Suggested change
description: Use when building or running SvelteKit apps on Bun, including SSR, adapters, and Bun-specific APIs
description: This skill should be used when building or running SvelteKit apps on Bun, including SSR, adapters, and Bun-specific APIs
🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In `@plugins/bun/skills/bun-sveltekit/SKILL.md` at line 3, The description field
uses second-person phrasing; change it to third-person to match repo standards
by replacing the current value of the description key with a third-person
sentence such as "This skill should be used when building or running SvelteKit
apps on Bun, including SSR, adapters, and Bun-specific APIs." Update the
description entry in SKILL.md (the description key) accordingly.

---
name: dependency-upgrade
description: Manage major dependency version upgrades with compatibility analysis, staged rollout, and comprehensive testing. Use when upgrading framework versions, updating major dependencies, or managing breaking changes in libraries.
description: "Secure dependency upgrades with supply chain protection, cooldowns, and staged rollout. Use when upgrading deps, configuring security policies, or preventing supply chain attacks."
Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

⚠️ Potential issue | 🟡 Minor

Use third-person wording in the frontmatter description.

The description currently uses “Use when …”; switch to third-person style per repo standard.

Suggested edit
-description: "Secure dependency upgrades with supply chain protection, cooldowns, and staged rollout. Use when upgrading deps, configuring security policies, or preventing supply chain attacks."
+description: "This skill should be used to secure dependency upgrades with supply chain protection, cooldowns, and staged rollout."

As per coding guidelines, "Use third-person perspective in skill descriptions (e.g., 'This skill should be used when...' instead of 'You should...') and imperative/infinitive form in instructions."

📝 Committable suggestion

‼️ IMPORTANT
Carefully review the code before committing. Ensure that it accurately replaces the highlighted code, contains no missing lines, and has no issues with indentation. Thoroughly test & benchmark the code to ensure it meets the requirements.

Suggested change
description: "Secure dependency upgrades with supply chain protection, cooldowns, and staged rollout. Use when upgrading deps, configuring security policies, or preventing supply chain attacks."
description: "This skill should be used to secure dependency upgrades with supply chain protection, cooldowns, and staged rollout."
🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In `@plugins/dependency-upgrade/skills/dependency-upgrade/SKILL.md` at line 3,
Update the frontmatter description in SKILL.md to third-person wording: replace
the phrase starting "Use when upgrading deps, configuring security policies, or
preventing supply chain attacks." with a third-person form such as "This skill
should be used when upgrading dependencies, configuring security policies, or
preventing supply chain attacks." Ensure the frontmatter key 'description' is
edited (and expand "deps" to "dependencies") to match repo style.

Comment on lines +206 to +213
| Package Manager | Command | What It Does |
|----------------|---------|-------------|
| npm | `npm ci` | Deletes node_modules, installs exact lockfile versions |
| Bun | `bun install --frozen-lockfile` | Fails if lockfile is out of sync |
| pnpm | `pnpm install --frozen-lockfile` | Fails if lockfile is out of sync |
| Yarn | `yarn install --immutable --immutable-cache` | Validates lockfile and cache |
| Deno | `deno install --frozen` | Frozen installation |

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

⚠️ Potential issue | 🟡 Minor

🧩 Analysis chain

🌐 Web query:

What is the correct Deno command/workflow to enforce lockfile-frozen dependency installs in current Deno (v2+)?

💡 Result:

The correct Deno command/workflow to enforce lockfile-frozen dependency installs in Deno v2+ uses the --frozen flag (alias --frozen-lockfile) on commands that resolve dependencies like deno run, deno install, deno test, deno cache, deno doc, and deno compile. This flag errors if the lockfile (deno.lock) is out of date or missing entries, preventing unintended dependency changes. ### Workflow: 1. Development (update lockfile): Run without --frozen or with --frozen=false to allow updates: deno install # or deno cache --entrypoint main.ts deno run main.ts Commit deno.lock. 2. CI/Production (enforce frozen): Use --frozen to verify exact match: deno run --frozen main.ts deno test --frozen deno install --frozen ### Configuration Alternative: Set "lock": { "frozen": true } in deno.json for project-wide enforcement (override with --frozen=false). To update: Temporarily set "frozen": false or use --frozen=false, update, review deno.lock diff, re-freeze, and commit. This ensures reproducible builds; new/unseen dependencies fail fast. Examples from errors: "Run deno install --frozen=false" to update.

Citations:


Clarify Deno command for frozen dependency installs.

deno install --frozen is valid but not idiomatic for freezing project dependencies. For the context of this table (dependency lock enforcement during installation), use deno cache --frozen or configure "frozen": true in deno.json instead. The description should also specify the behavior (e.g., "Fails if lockfile is out of sync") to match other entries.

🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In `@plugins/dependency-upgrade/skills/dependency-upgrade/SKILL.md` around lines
206 - 213, Update the Deno row in the package manager table: replace the command
`deno install --frozen` with the idiomatic project-level option such as `deno
cache --frozen` (or note configuring `"frozen": true` in deno.json) and change
the description to match others, e.g. "Fails if lockfile is out of sync" to
indicate lockfile enforcement during installation.

Comment on lines +53 to 60
npx nuxt module add @nuxtjs/robots
npx nuxt module add @nuxtjs/sitemap
npx nuxt module add nuxt-og-image
npx nuxt module add nuxt-schema-org
npx nuxt module add nuxt-link-checker
npx nuxt module add nuxt-seo-utils
npx nuxt module add nuxt-site-config
```
Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

⚠️ Potential issue | 🟡 Minor

🧩 Analysis chain

🏁 Script executed:

#!/bin/bash
# Find unscoped nuxt-robots and nuxt-sitemap references in nuxt-seo docs
rg -n '\bnuxt-(robots|sitemap)\b' plugins/nuxt-seo/ -g '*.md' -C2

Repository: secondsky/claude-skills

Length of output: 13700


Expand scope: multiple reference files still use unscoped package names.

While installation-guide.md consistently uses scoped package names (@nuxtjs/robots, @nuxtjs/sitemap), many other documentation files still reference the unscoped module names. This creates inconsistency across the documentation:

  • nuxt-content-integration.md (lines 60-61)
  • module-details.md (lines 11-12, 54, 67, 165, 178)
  • modules-overview.md (lines 344-345, 396-397, 404-405)
  • seo-guides.md (lines 689, 694)
  • troubleshooting.md (multiple occurrences)
  • common-patterns.md (lines 388-389)
  • api-reference.md (section headers)
  • advanced-seo-guides.md (lines 30, 673)

Update these files to consistently use scoped package names in installation commands and module configurations.

🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In `@plugins/nuxt-seo/skills/nuxt-seo/references/installation-guide.md` around
lines 53 - 60, Documentation uses unscoped module names in many places; update
every occurrence of the unscoped names used in installation commands and module
configuration blocks to their scoped equivalents (e.g., replace nuxt module add
robots/sitemap/nuxt-og-image/nuxt-schema-org/nuxt-link-checker/nuxt-seo-utils/nuxt-site-config
with npx nuxt module add `@nuxtjs/robots`, `@nuxtjs/sitemap`, `@nuxtjs/og-image`,
`@nuxtjs/schema-org`, `@nuxtjs/link-checker`, `@nuxtjs/seo-utils`, `@nuxtjs/site-config`
respectively) in the listed docs (nuxt-content-integration.md,
module-details.md, modules-overview.md, seo-guides.md, troubleshooting.md,
common-patterns.md, api-reference.md, advanced-seo-guides.md); update both code
blocks and headings/inline mentions to keep terminology consistent and run a
repo-wide search for the old unscoped names to catch any remaining occurrences.

Comment on lines +115 to +129
- Set `site.url` AND `site.name` explicitly in nuxt.config.ts (v5: name no longer auto-inferred)
- Use environment variables for multi-environment setups
- Configure robots.txt to block admin/private pages
- Add Schema.org structured data to all important pages
- Generate OG images for social sharing
- Use `getSiteConfig(event)` on server side (v5: `useSiteConfig(event)` removed)
- Use `defineSitemapSchema()` for Content v3 (v5: `asSitemapCollection()` deprecated)

### Never Do

❌ Forget to set `site.url` (breaks sitemaps and canonical URLs)
❌ Allow crawling of staging environments
❌ Skip Schema.org for key pages (products, articles, events)
❌ Deploy without testing OG images
❌ Use outdated module versions
❌ Ignore broken links found by link checker
❌ Forget to exclude admin/private routes from sitemap
❌ Use wrong rendering engine for OG images (Chromium vs Satori)
- Forget to set `site.url` and `site.name` (breaks sitemaps, canonical URLs, titles)
- Allow crawling of staging environments
- Use `useSiteConfig(event)` on server side (v5: use `getSiteConfig(event)`)
- Use `asSitemapCollection()` (v5: use `defineSitemapSchema()`)
- Use `getSiteIndexable()` (v5: use `{ indexable } = getSiteConfig(event)`)
Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

⚠️ Potential issue | 🟠 Major

🧩 Analysis chain

🌐 Web query:

What are the correct composables for accessing site configuration in Nuxt SEO v5 and nuxt-site-config v4? Is it useSiteConfig() or getSiteConfig(event) for server-side usage?

💡 Result:

In Nuxt SEO v5 (which depends on nuxt-site-config v4), the correct composables for accessing site configuration are: - useSiteConfig for client-side and general Nuxt contexts (components, composables, plugins). - getSiteConfig(event) for server-side Nitro contexts (server routes, middleware, plugins requiring H3Event). The previous server-side useSiteConfig(event) was removed in nuxt-site-config v4 to avoid auto-import conflicts; use getSiteConfig(event) instead.

Citations:


🌐 Web query:

What are the correct Nuxt Content v3 composables for sitemap integration in Nuxt SEO v5? Is it defineSitemapSchema() or asSitemapCollection()?

💡 Result:

For Nuxt Content v3 sitemap integration with Nuxt SEO v5 (which includes @nuxtjs/sitemap v8), the correct composable is asSitemapCollection from '@nuxtjs/sitemap/content'. It wraps defineCollection in content.config.ts to enable sitemap frontmatter. Example from official docs: content.config.ts import { defineCollection, defineContentConfig } from '@nuxt/content' import { asSitemapCollection } from '@nuxtjs/sitemap/content' export default defineContentConfig({ collections: { content: defineCollection( asSitemapCollection({ type: 'page', source: '/*.md', }), ), }, }) Some docs mention defineSitemapSchema added to the Zod schema: import { defineSitemapSchema } from '@nuxtjs/sitemap/content' import { z } from 'zod' schema: z.object({ sitemap: defineSitemapSchema, }), However, the primary and most consistently documented method across recent official Nuxt SEO / Sitemap docs (updated Jan 2026) is asSitemapCollection. Load '@nuxtjs/sitemap' before '@nuxt/content' in modules array. defineSitemapSchema appears as a schema helper for typed frontmatter, but asSitemapCollection is the integration wrapper. Use asSitemapCollection for full integration.

Citations:


🏁 Script executed:

#!/bin/bash
# Search for getSiteConfig and useSiteConfig usage patterns in reference docs
echo "=== Searching for getSiteConfig usage ==="
rg -n "getSiteConfig" plugins/nuxt-seo/skills/nuxt-seo/references/ -A2 -B2

echo -e "\n=== Searching for useSiteConfig usage ==="
rg -n "useSiteConfig" plugins/nuxt-seo/skills/nuxt-seo/references/ -A2 -B2

echo -e "\n=== Searching for defineSitemapSchema and asSitemapCollection ==="
rg -n "(defineSitemapSchema|asSitemapCollection)" plugins/nuxt-seo/skills/nuxt-seo/references/ -A2 -B2

Repository: secondsky/claude-skills

Length of output: 18348


Fix incorrect sitemap API reference: use asSitemapCollection() not defineSitemapSchema() for Nuxt Content v3 in v5.

Line 121 states "Use defineSitemapSchema() for Content v3 (v5: asSitemapCollection() deprecated)", but official Nuxt SEO v5 documentation (updated January 2026) indicates the opposite: asSitemapCollection() from @nuxtjs/sitemap/content is the correct integration wrapper for Content v3 sitemaps in v5, while defineSitemapSchema() is only a schema helper for Zod frontmatter typing—not the primary integration method.

Replace the defineSitemapSchema() reference with asSitemapCollection() to align with current v5 API.

Note: The server-side API statement on the same line—"Use getSiteConfig(event) on server side (v5: useSiteConfig(event) removed)"—is correct and verified.

🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In `@plugins/nuxt-seo/skills/nuxt-seo/SKILL.md` around lines 115 - 129, The doc
line incorrectly recommends defineSitemapSchema() for Content v3 in v5; update
the phrasing to instruct using asSitemapCollection() from
`@nuxtjs/sitemap/content` instead, and remove the note that asSitemapCollection()
is deprecated; keep the server-side API note intact (getSiteConfig(event)
replaces useSiteConfig(event)). Ensure the line references the correct symbols:
replace mentions of defineSitemapSchema() with asSitemapCollection(), and keep
getSiteConfig(event) / useSiteConfig(event) as-is.


## Directory Structure (Nuxt v5)

```
Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

⚠️ Potential issue | 🟡 Minor

Add language identifiers to fenced code blocks.

These fences are missing a language tag, which triggers markdownlint (MD040).

📝 Suggested update
-```
+```text
 my-nuxt-app/
 ...
-```
+```

-```
+```text
 app/pages/
 ...
-```
+```

As per coding guidelines, "Validate skill YAML frontmatter format and ensure all required fields are present before committing using the ONE_PAGE_CHECKLIST.md verification process."

Also applies to: 241-241

🧰 Tools
🪛 markdownlint-cli2 (0.22.0)

[warning] 46-46: Fenced code blocks should have a language specified

(MD040, fenced-code-language)

🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In `@plugins/nuxt-v5/skills/nuxt-core/SKILL.md` at line 46, The fenced code blocks
showing directory examples (the blocks containing "my-nuxt-app/" and
"app/pages/") are missing language identifiers and trigger markdownlint MD040;
update each triple-backtick fence to include a language tag such as ```text (or
```bash if you prefer) so the blocks become "```text" at the start and close
with "```", and apply the same change to the other occurrence noted (the second
directory example) to satisfy the lint rule and the ONE_PAGE_CHECKLIST.md
validation.

Comment on lines +1 to +98
export default defineNuxtConfig({
future: {
compatibilityVersion: 5
},

devtools: { enabled: true },

modules: [
'@nuxt/ui',
'@nuxt/image',
'@nuxt/fonts',
'@nuxthub/core'
],

hub: {
database: true,
kv: true,
blob: true,
cache: true
},

runtimeConfig: {
apiSecret: '',
databaseUrl: '',
jwtSecret: '',

public: {
apiBase: '/api',
appName: 'My Nuxt App',
appUrl: 'http://localhost:3000'
}
},

app: {
head: {
title: 'My Nuxt App',
titleTemplate: '%s | My Nuxt App',
meta: [
{ charset: 'utf-8' },
{ name: 'viewport', content: 'width=device-width, initial-scale=1' },
{ name: 'description', content: 'My awesome Nuxt application' }
],
link: [
{ rel: 'icon', type: 'image/x-icon', href: '/favicon.ico' }
]
}
},

nitro: {
preset: 'cloudflare_pages',

experimental: {
websocket: true
},

routeRules: {
'/': { prerender: true },
'/about': { prerender: true },
'/blog/**': { swr: 3600, isr: true },
'/api/posts': { swr: 600 },
'/dashboard/**': { ssr: false },
'/_nuxt/**': { headers: { 'Cache-Control': 'public, max-age=31536000, immutable' } }
},

compressPublicAssets: true,
minify: true
},

typescript: {
strict: true,
typeCheck: true,
shim: false
},

vite: {
build: {
rolldownOptions: {
output: {
advancedChunks: {
groups: [{ name: 'vendor', test: /\/(vue|vue-router)/ }]
}
}
}
}
},

image: {
cloudflare: {
baseURL: ''
}
},

fonts: {
families: [
{ name: 'Inter', provider: 'google' }
]
}
})
Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

⚠️ Potential issue | 🔴 Critical

🧩 Analysis chain

🏁 Script executed:

#!/bin/bash
set -euo pipefail

# Confirm file presence
fd -a "nuxt.config.ts" | rg -n "plugins/nuxt-v5/skills/nuxt-core/templates/nuxt.config.ts"

# Look for tests or validators referencing nuxt-v5 templates
rg -n -C2 --iglob '*{test,spec}*' 'nuxt-v5|nuxt-core/templates|template.*validate|validate.*template'

# Look for CI workflow steps that validate templates/plugins
rg -n -C2 --iglob '*.yml' --iglob '*.yaml' 'template|validate|plugin|marketplace|nuxt-v5' .github/workflows

Repository: secondsky/claude-skills

Length of output: 145


🏁 Script executed:

# Check if there's a test directory or test configuration
fd -type f -name "*.json" | head -20 | xargs grep -l "test\|jest\|vitest" 2>/dev/null | head -10

Repository: secondsky/claude-skills

Length of output: 237


🏁 Script executed:

# Look for any existing templates in the repository to understand testing patterns
fd -path "*/templates/*" -type f | head -20

Repository: secondsky/claude-skills

Length of output: 235


🏁 Script executed:

# Search for template-related test/validation infrastructure
rg -l "template" --type js --type ts --type json | grep -E "(test|spec|validate|check)" | head -20

Repository: secondsky/claude-skills

Length of output: 243


🏁 Script executed:

# Check for any test or build scripts in package.json files
find . -name "package.json" -type f | head -10 | xargs cat | grep -A 5 -B 5 "test\|script"

Repository: secondsky/claude-skills

Length of output: 5641


🏁 Script executed:

# Check the validate script
cat ./scripts/validate-json-schemas.sh

Repository: secondsky/claude-skills

Length of output: 3429


🏁 Script executed:

# Look for GitHub Actions workflows that might test templates
find .github/workflows -name "*.yml" -o -name "*.yaml" 2>/dev/null | head -10

Repository: secondsky/claude-skills

Length of output: 153


🏁 Script executed:

# Check if there's any test infrastructure at the root or in nuxt-v5 plugin
find . -path "./plugins/nuxt-v5*" -name "*.json" | head -20

Repository: secondsky/claude-skills

Length of output: 139


🏁 Script executed:

# Search for any documentation on template testing
find . -name "README.md" -o -name "TESTING.md" -o -name "CONTRIBUTING.md" | xargs ls -la 2>/dev/null

Repository: secondsky/claude-skills

Length of output: 14152


🏁 Script executed:

cat .github/workflows/validate-json-schemas.yml

Repository: secondsky/claude-skills

Length of output: 1117


🏁 Script executed:

cat .github/workflows/validate-frontmatter.yml

Repository: secondsky/claude-skills

Length of output: 1651


🏁 Script executed:

cat ./plugins/nuxt-v5/README.md

Repository: secondsky/claude-skills

Length of output: 5761


Template execution evidence required per coding guidelines.

The coding guidelines mandate that all code templates in skill template directories must be tested before committing. The current CI workflows (validate-json-schemas.yml and validate-frontmatter.yml) only validate JSON schemas and frontmatter metadata—they do not execute or verify the functionality of template code itself.

Please confirm this template has been executed and tested locally, and document the testing approach (e.g., npm run dev with the generated config, type checking, or specific validation steps) before merging.

🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In `@plugins/nuxt-v5/skills/nuxt-core/templates/nuxt.config.ts` around lines 1 -
98, This Nuxt template (export default defineNuxtConfig) must be executed and
the results documented before merging: run type checking (tsc or npm run
build/typecheck) to verify typescript.strict and shim settings, start the app
locally (npm run dev) and do a production build+preview (npm run build && npm
run preview) to validate nitro.preset, nitro.routeRules (prerender/ssr/isr
behaviors), vite/rollup output, image.cloudflare.baseURL and fonts families;
confirm devtools/modules load and that runtimeConfig/public values are applied.
After testing, add a concise “template testing” note to the PR description (or
the template frontmatter) listing the exact commands run and observed results
(success, any warnings, pages checked) so CI reviewers can accept the template
without code changes.

Comment on lines +1 to +517
---
name: nuxt-production
description: |
Nuxt 5 production optimization: hydration, performance, testing with Vitest,
deployment to Cloudflare/Vercel/Netlify, and migration from Nuxt 4.

Use when: debugging hydration mismatches, optimizing performance and Core Web Vitals,
writing tests with Vitest, deploying to Cloudflare Pages/Workers/Vercel/Netlify,
or migrating from Nuxt 4 to Nuxt 5.

Keywords: hydration, hydration mismatch, ClientOnly, SSR, performance,
lazy loading, lazy hydration, Vitest, testing, deployment, Cloudflare Pages,
Cloudflare Workers, Vercel, Netlify, NuxtHub, migration, Nuxt 4 to Nuxt 5,
Rolldown, Vite 8, Nitro v3, comment placeholder
license: MIT
metadata:
version: 5.0.0
author: Claude Skills Maintainers
category: Framework
framework: Nuxt
framework-version: 5.x
last-verified: 2026-03-30
---

# Nuxt 5 Production Guide

Hydration, performance, testing, deployment, and migration patterns.

## What's New in Nuxt 5

### v5 Key Changes

| Change | Nuxt 4 | Nuxt 5 |
|--------|--------|--------|
| Bundler | Vite 6 (esbuild + Rollup) | Vite 8 (Rolldown) |
| Server engine | Nitro v2 | Nitro v3 (h3 v2) |
| Server errors | `createError({statusCode})` | `HTTPError({status})` |
| Client-only placeholder | Empty `<div>` | HTML comment node |
| callHook | Always returns Promise | May return void |
| clearNuxtState | Sets to `undefined` | Resets to initial default |
| Page names | Auto-generated | Normalized to route names |
| JSX support | Included by default | Optional (on-demand) |
| externalVue | Configurable | Removed (always mocked) |

### Client-Only Comment Placeholders (v5)

Client-only components (`.client.vue` files and `createClientOnly()` wrappers) now render an HTML comment on the server instead of an empty `<div>`. This fixes scoped styles hydration issues.

```vue
<!-- If you relied on the placeholder <div> for layout -->
<ClientOnly>
<MyComponent />
<template #fallback>
<div class="placeholder" style="min-height: 200px"></div>
</template>
</ClientOnly>
```

To revert to the old `<div>` behavior:

```typescript
// nuxt.config.ts
export default defineNuxtConfig({
experimental: {
clientNodePlaceholder: false
}
})
```

### Non-Async callHook (v5)

`callHook` may now return `void` instead of always returning `Promise`. Always use `await`:

```typescript
// WRONG
nuxtApp.callHook('my:hook', data).then(() => { ... })

// CORRECT
await nuxtApp.callHook('my:hook', data)
```

## When to Load References

**Load `references/hydration.md` when:**
- Debugging "Hydration node mismatch" errors
- Implementing ClientOnly components
- Fixing non-deterministic rendering issues

**Load `references/performance.md` when:**
- Optimizing Core Web Vitals scores
- Implementing lazy loading and code splitting
- Reducing bundle size

**Load `references/testing-vitest.md` when:**
- Writing component tests with @nuxt/test-utils
- Testing composables with Nuxt context
- Mocking Nuxt APIs

**Load `references/deployment-cloudflare.md` when:**
- Deploying to Cloudflare Pages or Workers
- Configuring wrangler.toml
- Setting up NuxtHub integration

## Hydration Best Practices

### What Causes Hydration Mismatches

| Cause | Example | Fix |
|-------|---------|-----|
| Non-deterministic values | `Math.random()` | Use `useState` |
| Browser APIs on server | `window.innerWidth` | Use `onMounted` |
| Date/time on server | `new Date()` | Use `useState` or `ClientOnly` |
| Third-party scripts | Analytics | Use `ClientOnly` |

### Fix Patterns

```vue
<!-- Non-deterministic values -->
<script setup>
const id = useState('random-id', () => Math.random())
</script>

<!-- Browser APIs -->
<script setup>
const width = ref(0)
onMounted(() => {
width.value = window.innerWidth
})
</script>

<!-- ClientOnly component -->
<template>
<ClientOnly>
<MyMapComponent />
<template #fallback>
<div class="skeleton">Loading map...</div>
</template>
</ClientOnly>
</template>
```

## Performance Optimization

### Lazy Loading Components

```vue
<script setup>
const HeavyChart = defineAsyncComponent(() =>
import('~/components/HeavyChart.vue')
)
</script>
```

### Lazy Hydration

```vue
<script setup>
const LazyComponent = defineLazyHydrationComponent(
'visible',
() => import('./HeavyComponent.vue')
)

const InteractiveComponent = defineLazyHydrationComponent(
'interaction',
() => import('./InteractiveComponent.vue')
)

const IdleComponent = defineLazyHydrationComponent(
'idle',
() => import('./IdleComponent.vue')
)
</script>
```

### Route Caching

```typescript
export default defineNuxtConfig({
routeRules: {
'/': { prerender: true },
'/about': { prerender: true },
'/blog/**': { swr: 3600 },
'/products/**': { isr: 3600 },
'/dashboard/**': { ssr: false },
'/static/**': {
headers: { 'Cache-Control': 'public, max-age=31536000' }
}
}
})
```

### Image Optimization

```vue
<template>
<NuxtImg
src="/images/hero.jpg"
alt="Hero image"
width="800"
height="400"
loading="lazy"
placeholder
format="webp"
/>

<NuxtPicture
src="/images/product.jpg"
alt="Product"
sizes="sm:100vw md:50vw lg:400px"
:modifiers="{ quality: 80 }"
/>
</template>
```

## Testing with Vitest

### Setup

```bash
bun add -d @nuxt/test-utils vitest @vue/test-utils happy-dom
```

```typescript
// vitest.config.ts
import { defineVitestConfig } from '@nuxt/test-utils/config'

export default defineVitestConfig({
test: {
environment: 'nuxt',
environmentOptions: {
nuxt: {
domEnvironment: 'happy-dom'
}
}
}
})
```

### Component Testing

```typescript
import { describe, it, expect } from 'vitest'
import { mountSuspended } from '@nuxt/test-utils/runtime'
import UserCard from '~/components/UserCard.vue'

describe('UserCard', () => {
it('renders user name', async () => {
const wrapper = await mountSuspended(UserCard, {
props: {
user: { id: 1, name: 'John Doe', email: 'john@example.com' }
}
})

expect(wrapper.text()).toContain('John Doe')
})
})
```

### Mocking Composables

```typescript
import { mockNuxtImport } from '@nuxt/test-utils/runtime'

mockNuxtImport('useFetch', () => {
return () => ({
data: ref({ users: [{ id: 1, name: 'John' }] }),
pending: ref(false),
error: ref(null)
})
})
```

## Deployment

### Cloudflare Pages (Recommended)

```bash
bun run build
bunx wrangler pages deploy .output/public
```

```typescript
export default defineNuxtConfig({
nitro: { preset: 'cloudflare_pages' }
})
```

### Cloudflare Workers

```typescript
export default defineNuxtConfig({
nitro: { preset: 'cloudflare_module' }
})
```

### Vercel / Netlify

```typescript
// Vercel
export default defineNuxtConfig({
nitro: { preset: 'vercel' }
})

// Netlify
export default defineNuxtConfig({
nitro: { preset: 'netlify' }
})
```

### NuxtHub (Cloudflare All-in-One)

```bash
bun add @nuxthub/core
```

```typescript
export default defineNuxtConfig({
modules: ['@nuxthub/core'],
hub: {
database: true,
kv: true,
blob: true,
cache: true
}
})
```

## Migration from Nuxt 4

### Step 1: Update package.json

```json
{
"devDependencies": {
"nuxt": "^5.0.0"
}
}
```

### Step 2: Enable Compatibility Mode

```typescript
// nuxt.config.ts
export default defineNuxtConfig({
future: {
compatibilityVersion: 5
}
})
```

### Step 3: Update Server Error Handling

```typescript
// Before (Nuxt 4)
import { createError } from 'h3'
throw createError({ statusCode: 404, statusMessage: 'Not Found' })

// After (Nuxt 5)
import { HTTPError } from 'nitro/h3'
throw new HTTPError({ status: 404, statusText: 'Not Found' })
```

### Step 4: Update Server Event API

```typescript
// Before (Nuxt 4)
const path = event.path
event.node.res.statusCode = 200
setResponseHeader(event, 'x-custom', 'value')
const config = useRuntimeConfig(event)

// After (Nuxt 5)
const path = event.url.pathname
event.res.status = 200
event.res.headers.set('x-custom', 'value')
const config = useRuntimeConfig()
```

### Step 5: Update Vite Config

```typescript
// Before (Nuxt 4)
export default defineNuxtConfig({
vite: {
build: {
rollupOptions: { ... }
}
}
})

// After (Nuxt 5) - use rolldownOptions
export default defineNuxtConfig({
vite: {
build: {
rolldownOptions: { ... }
}
}
})
```

### Step 6: Update Route Rules

```typescript
// Before
routeRules: {
'/old': { redirect: { to: '/new', statusCode: 302 } }
}

// After
routeRules: {
'/old': { redirect: { to: '/new', status: 302 } }
}
```

### Step 7: Update Import Paths

```typescript
// Before
import { defineEventHandler, getQuery } from 'h3'

// After
import { defineEventHandler, getQuery } from 'nitro/h3'
// Or rely on auto-imports (no import needed)
```

### Step 8: Remove Deprecated Options

```typescript
// Remove these from nuxt.config.ts
export default defineNuxtConfig({
experimental: {
externalVue: false, // REMOVED - delete this
viteEnvironmentApi: true, // REMOVED - always enabled
}
})
```

### Step 9: Install JSX Plugin (If Needed)

```bash
# Only if your project uses .jsx/.tsx files
bun add -D @vitejs/plugin-vue-jsx
```

### Step 10: Update callHook Usage

```typescript
// Before
nuxtApp.callHook('my:hook', data).then(() => { ... })

// After
await nuxtApp.callHook('my:hook', data)
```

## Common Anti-Patterns

### Client-Only Code on Server

```typescript
// WRONG
const width = window.innerWidth

// CORRECT
if (import.meta.client) {
const width = window.innerWidth
}

// Or use onMounted
onMounted(() => {
const width = window.innerWidth
})
```

### Non-Deterministic SSR

```typescript
// WRONG
const id = Math.random()
const time = Date.now()

// CORRECT
const id = useState('id', () => Math.random())
const time = useState('time', () => Date.now())
```

## Troubleshooting

**Hydration Mismatch:**
- Check for `window`, `document`, `localStorage` usage
- Wrap in `ClientOnly` or use `onMounted`
- Look for `Math.random()`, `Date.now()`
- Check if relying on `<div>` placeholder for client-only components

**Build Errors:**
```bash
rm -rf .nuxt .output node_modules/.vite && bun install
```

**Vite Plugin Warnings:**
- Migrate from `extendViteConfig({ server })` to `configEnvironment`
- Use `applyToEnvironment` instead of `server: false` / `client: false`

**Rolldown Build Issues:**
- Replace `rollupOptions` with `rolldownOptions`
- Replace `vite.esbuild` with `vite.oxc`
- Check CJS interop changes in Vite 8

## Related Skills

- **nuxt-core**: Project setup, routing, configuration
- **nuxt-data**: Composables, data fetching, state
- **nuxt-server**: Server routes, API patterns (Nitro v3)
- **cloudflare-d1**: D1 database patterns

---

**Version**: 5.0.0 | **Last Updated**: 2026-03-30 | **License**: MIT
Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

⚠️ Potential issue | 🟠 Major

Reduce this SKILL.md below 500 lines by extracting more detail into references.

This file is 517 lines, exceeding the repository limit. Move lower-priority detail (e.g., part of migration/troubleshooting/deployment examples) into references/*.md and keep quick-start + top errors in the main file.

As per coding guidelines, "Maintain SKILL.md files at less than 500 lines after refactoring to ensure progressive disclosure of content."

🧰 Tools
🪛 markdownlint-cli2 (0.22.0)

[warning] 46-46: Fenced code blocks should have a language specified

(MD040, fenced-code-language)


[warning] 241-241: Fenced code blocks should have a language specified

(MD040, fenced-code-language)

🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In `@plugins/nuxt-v5/skills/nuxt-production/SKILL.md` around lines 1 - 517,
SKILL.md is 517 lines—extract lower-priority, verbose examples and long code
blocks into references/*.md to reduce the main file under 500 lines: move
extended Deployment examples (Cloudflare Workers, Vercel/Netlify snippets),
detailed Migration Steps 3–10 code blocks (server error handling, event API,
Vite rolldownOptions, routeRules, import path examples, JSX plugin), long
Troubleshooting sections and Rolldown/Vite warnings into new reference files
(e.g., references/deployment.md, references/migration.md,
references/troubleshooting.md), and keep only quick-start bullets, the short
"What's New in Nuxt 5" table, top-level headings like "Hydration Best
Practices", "Performance Optimization", and the minimal examples used for
immediate debugging (client-only placeholder, lazy hydration, and the Vitest
quick setup). Update SKILL.md links to point to the new references and remove
the moved code blocks and long tables to bring file length below 500 lines.

Comment on lines +3 to +14
description: |
Nuxt 5 production optimization: hydration, performance, testing with Vitest,
deployment to Cloudflare/Vercel/Netlify, and migration from Nuxt 4.

Use when: debugging hydration mismatches, optimizing performance and Core Web Vitals,
writing tests with Vitest, deploying to Cloudflare Pages/Workers/Vercel/Netlify,
or migrating from Nuxt 4 to Nuxt 5.

Keywords: hydration, hydration mismatch, ClientOnly, SSR, performance,
lazy loading, lazy hydration, Vitest, testing, deployment, Cloudflare Pages,
Cloudflare Workers, Vercel, Netlify, NuxtHub, migration, Nuxt 4 to Nuxt 5,
Rolldown, Vite 8, Nitro v3, comment placeholder
Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

⚠️ Potential issue | 🟡 Minor

Frontmatter description is too long and should be rewritten in concise third-person.

The current multiline description exceeds the configured length guidance.

✂️ Suggested update
-description: |
-  Nuxt 5 production optimization: hydration, performance, testing with Vitest,
-  deployment to Cloudflare/Vercel/Netlify, and migration from Nuxt 4.
-
-  Use when: debugging hydration mismatches, optimizing performance and Core Web Vitals,
-  writing tests with Vitest, deploying to Cloudflare Pages/Workers/Vercel/Netlify,
-  or migrating from Nuxt 4 to Nuxt 5.
-
-  Keywords: hydration, hydration mismatch, ClientOnly, SSR, performance,
-  lazy loading, lazy hydration, Vitest, testing, deployment, Cloudflare Pages,
-  Cloudflare Workers, Vercel, Netlify, NuxtHub, migration, Nuxt 4 to Nuxt 5,
-  Rolldown, Vite 8, Nitro v3, comment placeholder
+description: This skill should be used when optimizing Nuxt 5 production hydration, performance, testing, and deployment.

As per coding guidelines, "Keep skill descriptions concise (ideal <100 characters, maximum <200 characters) ... [and] Use third-person perspective in skill descriptions."

🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In `@plugins/nuxt-v5/skills/nuxt-production/SKILL.md` around lines 3 - 14, Rewrite
the SKILL.md frontmatter "description" field into a concise third-person
sentence (prefer <100 characters, maximum <200) that summarizes the skill (e.g.,
"Optimizes Nuxt 5 production for hydration, performance, testing, and
deployment."). Replace the current multiline "description" block with that
single-line third-person sentence, remove usage examples from the description
(keep them in other fields if needed), and eliminate the "comment placeholder"
from Keywords; leave the existing Keywords field intact otherwise.

@@ -1,8 +1,9 @@
---
name: recommendation-engine
description: Build recommendation systems with collaborative filtering, matrix factorization, hybrid approaches. Use for product recommendations, personalization, or encountering cold start, sparsity, quality evaluation issues.
Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

⚠️ Potential issue | 🟡 Minor

Condense description to meet length and perspective guidelines.

The description is approximately 235 characters, exceeding the 200-character maximum, and uses imperative form instead of third-person perspective. As per coding guidelines, descriptions should be concise (<200 characters) and use third-person perspective for better discoverability in Claude Code.

✏️ Proposed condensed third-person description
-description: Build recommendation systems with collaborative filtering, matrix factorization, hybrid approaches. Use for product recommendations, personalization, or encountering cold start, sparsity, quality evaluation issues.
+description: Provides recommendation systems using collaborative filtering, matrix factorization, and hybrid approaches. Use for personalization, cold start, sparsity, and quality evaluation.

This revision is approximately 180 characters and uses third-person perspective ("Provides" instead of "Build").

As per coding guidelines: "Keep skill descriptions concise (ideal <100 characters, maximum <200 characters)" and "Use third-person perspective in skill descriptions (e.g., 'This skill should be used when...' instead of 'You should...')".

📝 Committable suggestion

‼️ IMPORTANT
Carefully review the code before committing. Ensure that it accurately replaces the highlighted code, contains no missing lines, and has no issues with indentation. Thoroughly test & benchmark the code to ensure it meets the requirements.

Suggested change
description: Build recommendation systems with collaborative filtering, matrix factorization, hybrid approaches. Use for product recommendations, personalization, or encountering cold start, sparsity, quality evaluation issues.
description: Provides recommendation systems using collaborative filtering, matrix factorization, and hybrid approaches. Use for personalization, cold start, sparsity, and quality evaluation.
🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In `@plugins/recommendation-engine/skills/recommendation-engine/SKILL.md` at line
3, Update the description field in SKILL.md to a concise, third-person sentence
under 200 characters (ideally <100); replace the current imperative/long line
with a third-person summary such as: "Provides collaborative filtering, matrix
factorization, and hybrid approaches for product recommendations and
personalization, addressing cold-start and sparsity." Ensure the updated value
is assigned to the existing description key.

- Fix --dir path detection: check for SKILL.md directly before appending /skills,
  correctly handling full skill paths passed by the workflow (e.g. plugins/x/skills/x)
- Fix silent pipeline death: add || true to find|sort pipelines so set -euo pipefail
  doesn't kill the script before reaching fallback checks
- Fix --quiet mode: FAIL errors and final failure count are always printed;
  --quiet now only suppresses PASS and WARN output
- Fix workflow loop: accumulate all failures instead of dying on first, with
  ::error:: annotation reporting total count
- nuxt-robots → @nuxtjs/robots in modules arrays and bun commands
- nuxt-sitemap → @nuxtjs/sitemap in modules arrays and bun commands
- npx nuxt module add nuxt-robots → npx nuxt module add robots (short key)
- Other modules (og-image, schema-org, link-checker, seo-utils,
  site-config) left unchanged — no @nuxtjs/ scoped variant exists
@secondsky secondsky merged commit 168cb02 into main Apr 2, 2026
4 of 6 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant