Convention audit and pre-PR code review for Sage/Acorn projects — checks PHP Blade JS CSS against Sage/Acorn/Tailwind v4 conventions; audits ACF Composer field patterns, Livewire component structure, Eloquent models, Acorn routes, Blade components; verifies design alignment; dispatches sage-reviewer agent; prepares code for PR merge. Invoke for: "review before PR", "run sage-reviewer", "convention audit", "/reviewing", "check my block for issues", "pre-merge review", "review this code". Skip ...
Scanned 9/11/2026
Install to Claude Code
npx -y skills add hekivo/superpowers-sage --skill reviewing --agent claude-codeInstalls into .claude/skills of the current project.
Are you the author of Reviewing?
Add the live security badge to your README — it updates automatically with every re-scan.
[](https://www.skillsdirectory.com/skills/hekivo-reviewing)More formats (shields.io, HTML) on the badges page.
---
name: superpowers-sage:reviewing
description: >
Convention audit and pre-PR code review for Sage/Acorn projects — checks PHP Blade JS CSS
against Sage/Acorn/Tailwind v4 conventions; audits ACF Composer field patterns,
Livewire component structure, Eloquent models, Acorn routes, Blade components;
verifies design alignment; dispatches sage-reviewer agent; prepares code for PR merge.
Invoke for: "review before PR", "run sage-reviewer", "convention audit",
"/reviewing", "check my block for issues", "pre-merge review", "review this code".
Skip when: you just need to read or understand a file — that is not a review session.
user-invocable: true
argument-hint: "[file path or scope]"
---
# Reviewing — Convention Audit + Design Alignment
Review code against Sage/Acorn conventions and verify alignment with design reference.
## Inputs
$ARGUMENTS
If no scope specified, review all changed files (`git diff` against base branch).
## Procedure
### 0) Determine scope
- If file path provided, review that file and related files
- If "all" or no argument, scan full project
- If active plan exists, focus on plan components
### 1) Convention checklist
#### Service Providers
- [ ] `ThemeServiceProvider` extends `Roots\Acorn\Sage\SageServiceProvider`; other feature providers extend `Illuminate\Support\ServiceProvider`
- [ ] `register()` only contains bindings (no hooks, no side effects)
- [ ] `boot()` contains hooks and initialization
- [ ] Dependencies injected via constructor
#### ACF Blocks & Fields
- [ ] Blocks created via `acf:block` generator
- [ ] `with()` returns only data the view needs
- [ ] `fields()` uses Builder API
- [ ] Block views use `$variable` not `get_field()`
- [ ] Reusable fields extracted to Partials
#### Blade Templates
- [ ] Composers for data injection, Components for reusable UI
- [ ] No business logic in Blade views
- [ ] Proper layout inheritance (`@extends`, `@section`, `@yield`)
#### Block Views
- [ ] **R-css-vars**: No `match($tone)` → Tailwind class strings; no `tone="*"` props driving color; no hardcoded color utilities on `h2`/`p`/`span` → G10 violation (CRITICAL)
- [ ] **R-component-reuse**: No inline `<x-eyebrow>` + `<h2>` when `<x-section-header>` exists; no raw `<a>` with button utilities when `<x-button>` exists → G9 violation
- [ ] **R-nl2br**: `nl2br()` only on `addTextarea()`/`addWysiwyg()` fields, not `addText()` → G11 violation
- [ ] **R-arbitrary-btn**: No `text-[*px]` or `tracking-[*px]` in block/component views → CRITICAL
#### Routes & Controllers
- [ ] Clean route declarations (no logic in closures)
- [ ] Thin controllers (delegate to services)
- [ ] Prefer Acorn Routes over `register_rest_route()`
#### Frontend
- [ ] Tailwind v4 CSS-first approach
- [ ] Assets referenced via `@vite()` or `Vite::asset()`
- [ ] Editor styles included
#### Hooks Placement
- [ ] `add_action`/`add_filter` in ServiceProvider `boot()`
- [ ] `setup.php` only for `after_setup_theme` essentials
- [ ] No hooks scattered in random files
#### Content Architecture
- [ ] Content that grows over time uses CPTs (not hardcoded arrays)
- [ ] CPTs defined in `config/poet.php` (not `register_post_type()`)
- [ ] Shared content uses Options Pages (not duplicated across blocks)
### 2) Design alignment (if plan exists)
If active plan has assets:
1. Read design reference from `assets/`
2. Compare implemented components with design
3. Flag visual drift
### 3) Report findings
```markdown
## Review: {scope}
### Critical (must fix)
- **{file}:{line}** — {issue}. See `{skill}`.
### Improvement (should fix)
- **{file}:{line}** — {issue}. See `{skill}`.
### Good Practices Found
- {positive observation}
### Design Alignment
- {component}: {MATCH/DRIFT} — {details}
### Summary
{X} critical, {Y} improvements, {Z} good practices.
```
### 4) Visual verification — all components
After sage-reviewer completes:
1. Glob for all spec files: `docs/plans/<active-plan>/assets/section-*-spec.md`
2. For each spec file found:
a. Read the `### Verification Inputs` block — extract `url`, `selector`, `ref`
b. Dispatch `visual-verifier` agent with:
- `url`: from spec Verification Inputs
- `selector`: from spec Verification Inputs
- `spec`: this spec file path
- `ref`: from spec Verification Inputs
c. Collect report: MATCH | DRIFT | MISSING | FAIL_ARBITRARY_VALUES
3. Present consolidated report:
- List all components with their verification status
- If any DRIFT or FAIL: list fixes needed before merge
- If all MATCH: proceed to `finishing-a-development-branch`
### 5) After review
- Offer `finishing-a-development-branch` for merge/PR workflow
- Use base skills: `requesting-code-review`, `receiving-code-review`
## Key Principles
- **Reference the relevant skill** for every issue
- **Be specific** — file path and line number for every issue
- **Acknowledge good code** — don't just report problems
- **Check content architecture** — hardcoded dynamic content is a critical finding
Is this your skill, or is something wrong with this listing? Request removal or report an issue. Author removals are honored within 72 hours.
No comments yet. Be the first to comment!