本文へ移動
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(原文)

インストールする前に、エージェントに与えられる指示の中身を確認できます。

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).

レビュー

まだレビューはありません。使ってみた感想をお寄せください。

同じリポジトリのスキル

概要と使いどころ

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月13日 更新

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月13日 更新

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月13日 更新

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月13日 更新

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月13日 更新

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月13日 更新

FriendlyInternet のスキルをすべて見る

このスキルの問題を報告する