跳到正文
cccskills
免费在 GitHub 公开

frontend-review

Front-end conventions review for Vue surfaces — the component-usage analog of /a11y, pointed at Nuxt UI 4 + crouton conventions instead of WCAG. Reviews just your diff (or a package/file) for v3 component names, the v4 overlay pattern, Options API, raw-HTML re-implementations, and hardcoded colors; rates findings by severity; and either comments inline on the PR (--comment) or applies the safe fixes for you (--fix). Steers the depth-aware `frontend-review` subagent. Use when asked to "check the frontend", "are we using Nuxt UI right", "review component usage", "frontend-review this", or run /frontend-review.

中文简介正在准备中。当前显示原文说明。

查看安装方法

包含的文件(1)

  • SKILL.md10.3 KB

SKILL.md(原文)

安装前可以查看交给 AI 代理的指令内容。

Frontend-review Skill — the steering brain

You drive a front-end conventions review. The actual analysis lives in the frontend-review subagent (.claude/agents/frontend-review.md) — this skill decides what scope and how deep, spawns the agent (fanning out for 5+ files), collates findings into one severity-rated report, and then offers to comment them on the PR or fix the safe ones. Keep the analysis logic in the agent; keep orchestration here.

This is the front-end-conventions member of the code-cleaning family. It deliberately mirrors .claude/skills/a11y/SKILL.md (diff-scoped, 3-level severity, the same report format, an offer-to-fix step) and the red-team skill/agent split (depth ladder, spawn-and-collate) — just for Nuxt UI 4 / crouton component conventions instead of accessibility or bugs.

Why a separate skill (not folded into /review)

/review is a broad correctness/security/dead-code pass and only carries a handful of Nuxt UI bullets as honor-system reminders. This skill is the dedicated, diff-scoped, severity-rated, fixable, CI-gated front-end-conventions layer — it owns the full convention checklist, the v3→v4 rename autofix, and the per-PR gate. Exactly like /a11y and /red-team sit beside /review rather than inside it.

What it does not do: visual/layout taste ("this should be a card") — that's the human /ui-proposal sign-off; accessibility — that's /a11y; security — that's /red-team. Conventions only.

1. Resolve { depth, scope, comment, fix } from the request

Scope (mirrors the review skill's modes):

InvocationWhat it reviewsscope passed to agent
/frontend-reviewAll uncommitted .vue changes (staged + unstaged)"diff"
/frontend-review last N.vue files in the last N commits"diff" (vs HEAD~N)
/frontend-review --scope <pkg>A whole package's .vuepackages/<pkg> (or apps/<pkg>)
/frontend-review --file <path>A single .vue filethat path

Depth (mirrors red-team's ladder):

The user said…depth
/frontend-review (bare), a PR/diff context, quickquick (static, diff-scoped)
/frontend-review --scope <pkg> / standardstandard (full static sweep of the scope)
/frontend-review deep / "check against real Nuxt UI"deep (static + cross-check the real @nuxt/ui component set)

Defaults: a bare /frontend-review on a working tree → quick + "diff". A --scope/--file with no depth → standard. Only go deep when explicitly asked.

Flags: --comment → post findings as inline PR comments. --fix → apply the safe remediations (v3→v4 renames, redundant-overlay-UCard unwraps) to the working tree. Both can combine with any scope/depth.

2. Severity map (reuse the review skill's 3 levels + format)

LevelMeaningSources
🔴 CriticalA hard, documented convention break — blocks the CI gatev3 component name (UDropdown/UDivider/UToggle/UNotification); UCard inside UModal/USlideover/UDrawer; Options API in a .vue; overlay clearly missing the #content="{ close }" pattern
🟡 WarningLikely off-convention; advisoryraw <button>/<input>/<select>/<textarea>/internal <a> where a Nuxt UI / crouton component applies; hand-rolled overlay markup; hardcoded brand/semantic color
🔵 NotePolishbare export default {} nit; one-off hardcoded color; minor drift

Same emoji + report format as /review and /a11y, so a mixed code-cleaning pass reads consistently.

3. Gather the scope

Uncommitted (/frontend-review, --scope, --file):

git diff --name-only --diff-filter=d | grep -E '\.vue$'          # unstaged
git diff --cached --name-only --diff-filter=d | grep -E '\.vue$' # staged

Recent commits (/frontend-review last N):

git diff --name-only HEAD~N..HEAD | grep -E '\.vue$'

If --scope is set, Glob packages/<pkg>/**/*.vue (or apps/<pkg>/**/*.vue). If the diff has no .vue files, say so and stop — this skill only reviews templates.

4. Spawn the subagent

Spawn frontend-review via the Agent tool with { scope, depth, fix } in the prompt.

  • < 5 files → one subagent (or just do the static pass inline if it's a single small file — agent overhead isn't worth it for one --file).
  • 5+ files → fan out: split the files into groups (by directory — components/, pages/, layouts/), spawn one frontend-review subagent per group with its file subset as scope, and launch them in parallel (multiple Agent calls in one message). Same parallelization rule as /review. The agents are synchronous — you hold their results when they return; never report "running in the background".

Pass fix through only when the user asked for --fix (so a plain review run never touches files).

5. Collate & report

Merge the agents' findings, de-dupe anything the same rule flagged twice, and print the review skill's report format:

## Frontend Review Summary

| Severity | Count |
|----------|-------|
| 🔴 Critical | X |
| 🟡 Warning | Y |
| 🔵 Note | Z |

### 🔴 Critical

#### [Short title]
**File:** `path/to/file.vue:42`
**Rule:** `v3-name` (or overlay-ucard / overlay-content-slot / options-api / raw-html / hardcoded-color)
**Issue:** [Which convention is broken — "uses the v3 `UDropdown`; v4 is `UDropdownMenu`"]
**Fix:** [The exact rename/component to use]

--- (repeat for 🟡 / 🔵)

If nothing found:

## Frontend Review: clean ✅
Reviewed N templates, no convention issues found.

Mark each finding confirmed (a deterministic signal backs it) vs suspected (a reasoned smell), mirroring red-team/a11y — don't present a reasoned raw-<button> call as a confirmed violation.

6. --comment — inline PR comments

When --comment is set and the work is on a PR, post each finding as an inline review comment on the offending file:line, dovetailing with the existing 🎯 Preview feedback / ♿ A11y machinery:

  1. mcp__github__pull_request_read to resolve the PR for the current branch and its head SHA.
  2. For each finding, mcp__github__add_comment_to_pending_review with the file path and line, body = the finding (lead with the 🔴/🟡/🔵 + rule, then Issue/Fix). Prefix the body with a 🧩 Frontend tag so it's distinguishable from 🎯 Preview feedback, ♿ A11y, and code-review comments.
  3. mcp__github__pull_request_review_write to submit the pending review as COMMENT (never auto-REQUEST_CHANGES / APPROVE).

If there's no PR (local-only), skip inline comments and just print the report — say so rather than erroring.

7. --fix — apply safe remediations

When --fix is set, the agent applies (or you apply, for a small inline run) only the safe, deterministic rewrites — the same set the agent doc lists:

  • v3 → v4 name rename (UDropdown→UDropdownMenu, UDivider→USeparator, UToggle→USwitch, UNotification→UToast) — checking props still map; report anything ambiguous instead of guessing.
  • Redundant UCard inside an overlay (pure wrapper, no card props) → unwrap into the #content slot's <div class="p-6">.

Then pnpm typecheck the affected app(s)/package — never leave the tree red:

pnpm -r --filter './apps/*' typecheck   # or the specific package's typecheck

Anything needing real judgment (raw <button>→UButton behaviour, an Options→<script setup> migration, a color→token swap) is reported, not auto-fixed.

8. Offer to fix (when not already --fix)

After printing the report (and any --comments), close with the review skill's offer:

Want me to fix any of these? (all / critical only / pick by number)

If the user says "all" or "critical only", apply the safe remediations directly — no per-fix confirmation — then pnpm typecheck. Findings that aren't in the safe set get called out as "needs a human decision" with the reason (e.g. "raw <button>→UButton needs prop/slot judgment").

Relationship to the other entry points

  • /review carries a few Nuxt UI v4 bullets as honor-system reminders; /frontend-review is the dedicated, diff-scoped, severity-rated, fixable layer that owns the full convention checklist + the v3→v4 autofix.
  • It sits beside /a11y (accessibility), /ui-proposal (human design-look sign-off), /review (general code review), and /red-team (security) — same spawn-and-collate shape, different lens. Reach for /frontend-review when you specifically want "are we on Nuxt UI 4 / crouton components, correctly", with the option to comment or fix.
  • CI runs the same engine automatically (mirroring the red-team/a11y workflows): .github/workflows/frontend-review.yml runs the subagent at depth=quick on a PR diff — posts a sticky <!-- frontend-review --> comment and fails the check on a 🔴 finding (diff-scoped, so never on the pre-existing backlog). /frontend-review is the on-demand brain and human entry point for the same machinery. The workflow MUST follow the Claude-action workflow standard in .claude/agents/CLAUDE.md — notably the --allowedTools grant, without which the gate fails open (#834/#1036).

评价

还没有评价。欢迎分享你的使用感受。

评论

无需登录即可发表。欢迎分享使用感受、提问,或说明在哪些环境下无法运行。

还没有评论。来写第一条吧。

提交后会立即公开。请勿填写邮箱、电话等个人信息。URL 最多 2 个。

0 / 1000 字

此表单受 reCAPTCHA 保护,适用 Google 的隐私权政策和服务条款。

同一仓库的技能

a11y

免费

Accessibility review for Vue surfaces — the code-cleaning analog of /code-review and /simplify, pointed at WCAG/ARIA. Reviews just your diff (or a package/file), rates findings by severity, and either comments inline on the PR (--comment) or applies the safe fixes for you (--fix). Steers the depth-aware `a11y` subagent. Use when asked to "check accessibility", "a11y this", "audit ARIA/keyboard", or run /a11y.

中文简介正在准备中。当前显示原文说明。

FriendlyInternet/nuxt-crouton102026年10月21日 更新

ask-human

免费

Emit a blocking question the owner can read in ~10 seconds and answer in one reply — the scannable, recommendation-first handoff every agent posts when it hits a fork it can't own. Leads with the one decision + a recommendation, carries the 🤖 provenance header, doubles as the

中文简介正在准备中。当前显示原文说明。

FriendlyInternet/nuxt-crouton102026年10月21日 更新

audit

免费

Audit packages for documentation completeness, detect drift between code and docs, and maintain documentation quality across the monorepo. Use when checking package docs, running audits, or reviewing documentation health.

中文简介正在准备中。当前显示原文说明。

FriendlyInternet/nuxt-crouton102026年10月21日 更新

Author a placeable layout block that looks right at ANY pane size. The one hard rule — size to the PANE with container queries (@container), never the viewport — plus list/form playbooks and the sizing contract (minWidth etc.) the viability metric reads. Use when adding/converting a croutonLayoutBlocks block, or when a block overflows/breaks in a narrow pane.

中文简介正在准备中。当前显示原文说明。

FriendlyInternet/nuxt-crouton102026年10月21日 更新

When a bug or regression is reported, the FIRST step — before fixing — is to research how and when it was introduced (git archaeology), then record that finding on the tracking issue/PR. Use the moment a bug, error, broken build, or "this used to work" is reported, before writing a fix. Produces a first-bad-commit (or "not a code regression") note you paste onto the issue.

中文简介正在准备中。当前显示原文说明。

FriendlyInternet/nuxt-crouton102026年10月21日 更新

commit

免费

Smart, granular git commits following monorepo conventions. Analyzes changes, filters to session-relevant files, groups by intent, and uses conventional commit format. Use when committing code changes.

中文简介正在准备中。当前显示原文说明。

FriendlyInternet/nuxt-crouton102026年10月21日 更新

查看 FriendlyInternet 的全部技能

报告此技能的问题