Skip to content

chore(skills): rewrite agent skill with opinionated guidelines and recipes#6347

Merged
benjamincanac merged 6 commits into
v4from
chore/rewrite-agent-skill
Apr 14, 2026
Merged

chore(skills): rewrite agent skill with opinionated guidelines and recipes#6347
benjamincanac merged 6 commits into
v4from
chore/rewrite-agent-skill

Conversation

@benjamincanac
Copy link
Copy Markdown
Member

@benjamincanac benjamincanac commented Apr 14, 2026

🔗 Linked issue

Related to #6341

❓ Type of change

  • 📖 Documentation (updates to the documentation or readme)
  • 🐞 Bug fix (a non-breaking change that fixes an issue)
  • 👌 Enhancement (improving an existing functionality)
  • ✨ New feature (a non-breaking change that adds functionality)
  • 🧹 Chore (updates to the build process or auxiliary tools and libraries)
  • ⚠️ Breaking change (fix or feature that would cause existing functionality to change)

📚 Description

Rewrites the agent skill from an API reference into an opinionated guide, MCP = facts (props, slots, events). Skill = judgment (when to use what, how to build well).

Also adds index.json manifest, /.well-known/skills/ serving, and alternative install via npx skills add https://ui.nuxt.com.

📝 Checklist

  • I have linked an issue or discussion.
  • I have updated the documentation accordingly.

@benjamincanac benjamincanac marked this pull request as ready for review April 14, 2026 10:47
@github-actions github-actions Bot added the v4 #4488 label Apr 14, 2026
@coderabbitai
Copy link
Copy Markdown
Contributor

coderabbitai Bot commented Apr 14, 2026

No actionable comments were generated in the recent review. 🎉

ℹ️ Recent review info
⚙️ Run configuration

Configuration used: Organization UI

Review profile: CHILL

Plan: Pro

Run ID: 8494ce65-13f3-47d8-8c45-dfeb63de121a

📥 Commits

Reviewing files that changed from the base of the PR and between fe4fe91 and 483968e.

📒 Files selected for processing (5)
  • skills/nuxt-ui/references/guidelines/forms.md
  • skills/nuxt-ui/references/layouts/editor.md
  • skills/nuxt-ui/references/recipes/auth.md
  • skills/nuxt-ui/references/recipes/data-tables.md
  • skills/nuxt-ui/references/recipes/overlays.md
✅ Files skipped from review due to trivial changes (5)
  • skills/nuxt-ui/references/recipes/auth.md
  • skills/nuxt-ui/references/recipes/overlays.md
  • skills/nuxt-ui/references/recipes/data-tables.md
  • skills/nuxt-ui/references/layouts/editor.md
  • skills/nuxt-ui/references/guidelines/forms.md

📝 Walkthrough

Walkthrough

This PR modifies documentation and a small Nuxt config: it updates a comment in docs/.env.example, adds an alternative installer command in AI docs, and configures nitro.publicAssets in docs/nuxt.config.ts to serve files from ../skills at /.well-known/skills. It adds skills/index.json and a skills/nuxt-ui set of documentation changes: adds many new guideline and recipe pages (conventions, design-system, forms, component-selection, auth, data-tables, navigation, overlays), removes references/composables.md and references/theming.md, substantially rewrites references/components.md, and updates multiple layout and SKILL.md contents (including an MCP Server section).

Estimated code review effort

🎯 4 (Complex) | ⏱️ ~45 minutes

🚥 Pre-merge checks | ✅ 3
✅ Passed checks (3 passed)
Check name Status Explanation
Title check ✅ Passed The title accurately describes the main change: a rewrite of the agent skill into an opinionated guide with guidelines and recipes, which aligns with the substantial documentation restructuring across multiple files.
Description check ✅ Passed The description is directly related to the changeset, explaining the rewrite philosophy (MCP vs Skill distinction), the addition of index.json manifest, /.well-known/skills/ serving, and alternative installation method via npx skills add.
Docstring Coverage ✅ Passed No functions found in the changed files to evaluate docstring coverage. Skipping docstring coverage check.

✏️ Tip: You can configure your own custom pre-merge checks in the settings.

✨ Finishing Touches
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Commit unit tests in branch chore/rewrite-agent-skill

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

Comment @coderabbitai help to get the list of available commands and usage tips.

@benjamincanac
Copy link
Copy Markdown
Member Author

@CodeRabbit review

@coderabbitai
Copy link
Copy Markdown
Contributor

coderabbitai Bot commented Apr 14, 2026

✅ Actions performed

Review triggered.

Note: CodeRabbit is an incremental review system and does not re-review already reviewed commits. This command is applicable only when automatic reviews are paused.

@pkg-pr-new
Copy link
Copy Markdown

pkg-pr-new Bot commented Apr 14, 2026

npm i https://pkg.pr.new/@nuxt/ui@6347

commit: 483968e

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: 7

Caution

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

⚠️ Outside diff range comments (1)
skills/nuxt-ui/references/layouts/editor.md (1)

108-116: ⚠️ Potential issue | 🟠 Major

Wire collapsed through sidebar default slot in the editor layout example.

This collapsible sidebar example omits the collapsed slot prop and does not pass :collapsed into UNavigationMenu, so labels/icons won’t adapt on collapse.

Suggested patch
-      <template `#default`>
+      <template `#default`="{ collapsed }">
         <UNavigationMenu
+          :collapsed="collapsed"
           :items="documents.map(doc => ({
             label: doc.title,
             to: `/editor/${doc.id}`,
             icon: 'i-lucide-file-text'
           }))"
           orientation="vertical"
         />
       </template>
🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In `@skills/nuxt-ui/references/layouts/editor.md` around lines 108 - 116, The
sidebar default slot needs to accept the collapsed slot prop and forward it into
UNavigationMenu so the menu adapts on collapse; update the template default slot
definition to destructure the slot prop (e.g., template `#default`="{ collapsed
}") and pass the prop into UNavigationMenu (e.g., bind :collapsed="collapsed")
while keeping the existing items mapping (documents.map(...)) so labels/icons
toggle correctly when collapsed.
🧹 Nitpick comments (2)
skills/nuxt-ui/references/layouts/landing.md (1)

135-142: Add alt text in the variation image examples.

These examples are likely to be copied directly; adding alt keeps them accessibility-safe by default.

♿ Suggested patch
 <UPageSection title="Feature A" orientation="horizontal">
-  <img src="/feature-a.png" />
+  <img src="/feature-a.png" alt="Feature A screenshot" />
 </UPageSection>
 
 <UPageSection title="Feature B" orientation="horizontal" reverse>
-  <img src="/feature-b.png" />
+  <img src="/feature-b.png" alt="Feature B screenshot" />
 </UPageSection>
🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In `@skills/nuxt-ui/references/layouts/landing.md` around lines 135 - 142, The
example image tags in the UPageSection showcase lack alt text which hurts
accessibility; update the two <img> elements in the landing.md examples (the
ones inside the UPageSection titled "Feature A" and the UPageSection titled
"Feature B") to include descriptive alt attributes (e.g., alt="Screenshot of
Feature A" and alt="Screenshot of Feature B" or similar meaningful descriptions)
so that the examples are accessible by default.
skills/nuxt-ui/references/components.md (1)

3-3: Avoid hardcoded component count in the intro sentence.

“125+” will go stale quickly; prefer count-free wording (e.g., “Quick-reference index of Nuxt UI components”) or generate the number automatically from source metadata.

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

In `@skills/nuxt-ui/references/components.md` at line 3, Replace the hardcoded
"125+" count in the intro sentence ("Quick-reference index of all 125+
components.") with count-free wording or a dynamic generation using the existing
metadata tools; either change it to a static phrase like "Quick-reference index
of Nuxt UI components" or fetch the actual number via the MCP get_component or
get_component_metadata tools and inject that value into the sentence at render
time so the count never goes stale.
🤖 Prompt for all review comments with AI agents
Verify each finding against the current code and only fix it if needed.

Inline comments:
In `@skills/nuxt-ui/references/guidelines/forms.md`:
- Around line 191-200: The example currently calls form.value?.validate,
form.value?.setErrors, and form.value?.clearErrors at top-level (setup-time);
move these calls into explicit user-driven actions (e.g., button handlers or
helper functions such as onValidateClick, onSetError, onClearErrors) so
validation and error control run only when invoked; update the snippet to show
the handler names (calling form.value?.validate({ name: 'email' }),
form.value?.setErrors([...]), and form.value?.clearErrors()) and wire them to
buttons or event handlers instead of executing them at module/setup
initialization.

In `@skills/nuxt-ui/references/layouts/chat.md`:
- Around line 57-65: The fenced code block showing the component tree
(containing UDashboardPanel, UDashboardNavbar, UContainer, UChatMessages,
UChatReasoning, UChatTool, MDC, UChatPrompt, UChatPromptSubmit) needs a language
specifier to satisfy markdownlint MD040; update the triple-backtick that wraps
the component-tree block to include a language like "text" (e.g., ```text) so
the block becomes a fenced code block with an explicit language.

In `@skills/nuxt-ui/references/layouts/editor.md`:
- Around line 13-20: The fenced code block showing the UEditor component tree is
missing a language tag; update the markdown in layouts/editor.md by adding an
appropriate language identifier (e.g., "text" or "bash" or "text-tree") to the
opening triple-backtick that precedes the UEditor tree so the code fence
includes a language tag and satisfies markdownlint MD040.

In `@skills/nuxt-ui/references/recipes/auth.md`:
- Around line 47-49: The example handler onSubmit should not log full validated
auth payloads (including passwords); locate the onSubmit function and remove or
replace the console.log('Submitted', payload.data) with a non-sensitive action
(e.g., call a submit handler, emit a success event, or log only a non-sensitive
status or masked fields). Also apply the same change to the other instance
around the referenced 114-116 region so no authentication credentials are
printed to the console.

In `@skills/nuxt-ui/references/recipes/data-tables.md`:
- Around line 11-25: The columns example uses typeof data[number] before data is
defined, causing a TS error; fix by declaring the reactive data first (define
data = ref([...]) and/or create a type alias like DataItem = typeof data[number]
after data is declared) and then declare columns: TableColumn<DataItem>[] (or
TableColumn<typeof data[number]>[]) so the type reference resolves; update
references to the symbols data and columns (and TableColumn) accordingly.

In `@skills/nuxt-ui/references/recipes/overlays.md`:
- Around line 153-166: The drawer example uses v-model:open="isOpen" but never
defines isOpen; add a reactive boolean state named isOpen and bind it to
UDrawer. In a <script setup> or component setup() define isOpen (e.g., a
ref(false) or reactive property) and export/use it so the UDrawer v-model:open
works; ensure the symbol name matches exactly (isOpen) and that any toggles or
buttons that should open/close the drawer reference the same isOpen variable.
- Around line 99-112: The Save button bypasses UForm's validation because it
calls onSave via `@click`; remove the `@click` on the UButton labeled "Save" and
make it submit the form instead (set the button's type="submit"). If the footer
slot renders outside the UForm, give the UForm a unique id (e.g., formId) and
set the UButton's form attribute to that id so clicking "Save" triggers the
UForm `@submit`="onSave" and runs validation.

---

Outside diff comments:
In `@skills/nuxt-ui/references/layouts/editor.md`:
- Around line 108-116: The sidebar default slot needs to accept the collapsed
slot prop and forward it into UNavigationMenu so the menu adapts on collapse;
update the template default slot definition to destructure the slot prop (e.g.,
template `#default`="{ collapsed }") and pass the prop into UNavigationMenu (e.g.,
bind :collapsed="collapsed") while keeping the existing items mapping
(documents.map(...)) so labels/icons toggle correctly when collapsed.

---

Nitpick comments:
In `@skills/nuxt-ui/references/components.md`:
- Line 3: Replace the hardcoded "125+" count in the intro sentence
("Quick-reference index of all 125+ components.") with count-free wording or a
dynamic generation using the existing metadata tools; either change it to a
static phrase like "Quick-reference index of Nuxt UI components" or fetch the
actual number via the MCP get_component or get_component_metadata tools and
inject that value into the sentence at render time so the count never goes
stale.

In `@skills/nuxt-ui/references/layouts/landing.md`:
- Around line 135-142: The example image tags in the UPageSection showcase lack
alt text which hurts accessibility; update the two <img> elements in the
landing.md examples (the ones inside the UPageSection titled "Feature A" and the
UPageSection titled "Feature B") to include descriptive alt attributes (e.g.,
alt="Screenshot of Feature A" and alt="Screenshot of Feature B" or similar
meaningful descriptions) so that the examples are accessible by default.
🪄 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: 2902936b-da33-455b-93e1-8350f9819bb1

📥 Commits

Reviewing files that changed from the base of the PR and between 0fc05b7 and fe4fe91.

📒 Files selected for processing (21)
  • docs/.env.example
  • docs/content/docs/1.getting-started/7.ai/3.skills.md
  • docs/nuxt.config.ts
  • skills/index.json
  • skills/nuxt-ui/SKILL.md
  • skills/nuxt-ui/references/components.md
  • skills/nuxt-ui/references/composables.md
  • skills/nuxt-ui/references/guidelines/component-selection.md
  • skills/nuxt-ui/references/guidelines/conventions.md
  • skills/nuxt-ui/references/guidelines/design-system.md
  • skills/nuxt-ui/references/guidelines/forms.md
  • skills/nuxt-ui/references/layouts/chat.md
  • skills/nuxt-ui/references/layouts/dashboard.md
  • skills/nuxt-ui/references/layouts/docs.md
  • skills/nuxt-ui/references/layouts/editor.md
  • skills/nuxt-ui/references/layouts/landing.md
  • skills/nuxt-ui/references/recipes/auth.md
  • skills/nuxt-ui/references/recipes/data-tables.md
  • skills/nuxt-ui/references/recipes/navigation.md
  • skills/nuxt-ui/references/recipes/overlays.md
  • skills/nuxt-ui/references/theming.md
💤 Files with no reviewable changes (2)
  • skills/nuxt-ui/references/theming.md
  • skills/nuxt-ui/references/composables.md

Comment thread skills/nuxt-ui/references/guidelines/forms.md Outdated
Comment thread skills/nuxt-ui/references/layouts/chat.md
Comment thread skills/nuxt-ui/references/layouts/editor.md
Comment thread skills/nuxt-ui/references/recipes/auth.md
Comment thread skills/nuxt-ui/references/recipes/data-tables.md Outdated
Comment thread skills/nuxt-ui/references/recipes/overlays.md Outdated
Comment thread skills/nuxt-ui/references/recipes/overlays.md
@benjamincanac benjamincanac merged commit e33e4b3 into v4 Apr 14, 2026
22 checks passed
@benjamincanac benjamincanac deleted the chore/rewrite-agent-skill branch April 14, 2026 13:05
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

v4 #4488

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant