mirror of
https://github.com/prowler-cloud/prowler.git
synced 2026-05-06 08:47:18 +00:00
chore: prek workspace for UI + builtin hooks + parallel execution (#10651)
Co-authored-by: Rubén De la Torre Vico <ruben@prowler.com> Co-authored-by: Pablo F.G <pablo.fernandez@prowler.com> Co-authored-by: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
This commit is contained in:
committed by
GitHub
parent
548389d79f
commit
570c86948e
+1
-1
@@ -13,5 +13,5 @@ README.md
|
||||
!.next/static
|
||||
!.next/standalone
|
||||
.git
|
||||
.husky
|
||||
.pre-commit-config.yaml
|
||||
scripts/setup-git-hooks.js
|
||||
|
||||
@@ -0,0 +1,37 @@
|
||||
orphan: true
|
||||
|
||||
repos:
|
||||
- repo: local
|
||||
hooks:
|
||||
- id: ui-typecheck
|
||||
name: UI - TypeScript Check
|
||||
entry: pnpm run typecheck
|
||||
language: system
|
||||
files: '\.(ts|tsx|js|jsx)$'
|
||||
pass_filenames: false
|
||||
priority: 0
|
||||
|
||||
- id: ui-lint
|
||||
name: UI - ESLint
|
||||
entry: pnpm run lint:check
|
||||
language: system
|
||||
files: '\.(ts|tsx|js|jsx)$'
|
||||
pass_filenames: false
|
||||
priority: 0
|
||||
|
||||
- id: ui-tests
|
||||
name: UI - Unit Tests
|
||||
entry: pnpm exec vitest related --run
|
||||
language: system
|
||||
files: '\.(ts|tsx|js|jsx)$'
|
||||
exclude: '\.test\.|\.spec\.|vitest\.config|vitest\.setup'
|
||||
pass_filenames: true
|
||||
priority: 1
|
||||
|
||||
- id: ui-build
|
||||
name: UI - Build
|
||||
entry: pnpm run build
|
||||
language: system
|
||||
files: '\.(ts|tsx|js|jsx|json|css)$'
|
||||
pass_filenames: false
|
||||
priority: 2
|
||||
+2
-2
@@ -85,10 +85,10 @@ git clone git@github.com:prowler-cloud/ui.git
|
||||
pnpm install
|
||||
```
|
||||
|
||||
**Note:** The `pnpm install` command will automatically configure Git hooks for code quality checks. If you experience issues, you can manually configure them:
|
||||
**Note:** The `pnpm install` command will automatically configure prek Git hooks for code quality checks. If hooks are not installed, run from the repo root:
|
||||
|
||||
```bash
|
||||
git config core.hooksPath "ui/.husky"
|
||||
prek install
|
||||
```
|
||||
|
||||
#### Run the development server
|
||||
|
||||
@@ -1015,14 +1015,6 @@
|
||||
"strategy": "installed",
|
||||
"generatedAt": "2026-01-19T13:54:24.770Z"
|
||||
},
|
||||
{
|
||||
"section": "devDependencies",
|
||||
"name": "husky",
|
||||
"from": "9.1.7",
|
||||
"to": "9.1.7",
|
||||
"strategy": "installed",
|
||||
"generatedAt": "2025-10-22T12:36:37.962Z"
|
||||
},
|
||||
{
|
||||
"section": "devDependencies",
|
||||
"name": "jsdom",
|
||||
@@ -1031,14 +1023,6 @@
|
||||
"strategy": "installed",
|
||||
"generatedAt": "2026-01-29T16:42:27.795Z"
|
||||
},
|
||||
{
|
||||
"section": "devDependencies",
|
||||
"name": "lint-staged",
|
||||
"from": "15.5.2",
|
||||
"to": "15.5.2",
|
||||
"strategy": "installed",
|
||||
"generatedAt": "2025-10-22T12:36:37.962Z"
|
||||
},
|
||||
{
|
||||
"section": "devDependencies",
|
||||
"name": "postcss",
|
||||
|
||||
@@ -1,115 +0,0 @@
|
||||
# Code Review - Quick Start
|
||||
|
||||
## 3 Steps to Enable
|
||||
|
||||
### 1. Open `.env`
|
||||
```bash
|
||||
nano ui/.env
|
||||
# or your favorite editor
|
||||
```
|
||||
|
||||
### 2. Find this line
|
||||
```bash
|
||||
CODE_REVIEW_ENABLED=false
|
||||
```
|
||||
|
||||
### 3. Change it to
|
||||
```bash
|
||||
CODE_REVIEW_ENABLED=true
|
||||
```
|
||||
|
||||
**Done! ✅**
|
||||
|
||||
---
|
||||
|
||||
## What Happens Now
|
||||
|
||||
Every time you `git commit`:
|
||||
|
||||
```
|
||||
✅ If your code complies with AGENTS.md standards:
|
||||
→ Commit executes normally
|
||||
|
||||
❌ If there are standard violations:
|
||||
→ Commit is BLOCKED
|
||||
→ You see the errors in the terminal
|
||||
→ Fix the code
|
||||
→ Commit again
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## Example
|
||||
|
||||
```bash
|
||||
$ git commit -m "feat: add new component"
|
||||
|
||||
🏁 Prowler UI - Pre-Commit Hook
|
||||
|
||||
ℹ️ Code Review Status: true
|
||||
|
||||
🔍 Running Claude Code standards validation...
|
||||
|
||||
📋 Files to validate:
|
||||
- components/my-feature.tsx
|
||||
|
||||
📤 Sending to Claude Code for validation...
|
||||
|
||||
STATUS: FAILED
|
||||
- File: components/my-feature.tsx:45
|
||||
Rule: React Imports
|
||||
Issue: Using 'import * as React'
|
||||
Expected: import { useState } from "react"
|
||||
|
||||
❌ VALIDATION FAILED
|
||||
Fix violations before committing
|
||||
|
||||
# Fix the file and commit again
|
||||
$ git commit -m "feat: add new component"
|
||||
|
||||
🏁 Prowler UI - Pre-Commit Hook
|
||||
|
||||
ℹ️ Code Review Status: true
|
||||
|
||||
🔍 Running Claude Code standards validation...
|
||||
|
||||
✅ VALIDATION PASSED
|
||||
|
||||
# Commit successful ✅
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## Disable Temporarily
|
||||
|
||||
If you need to commit without validation:
|
||||
|
||||
```bash
|
||||
# Option 1: Change in .env
|
||||
CODE_REVIEW_ENABLED=false
|
||||
|
||||
# Option 2: Bypass (use with caution!)
|
||||
git commit --no-verify
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## What Gets Validated
|
||||
|
||||
- ✅ Correct React imports
|
||||
- ✅ TypeScript patterns (const-based types)
|
||||
- ✅ Tailwind CSS (no var() or hex in className)
|
||||
- ✅ cn() utility (only for conditionals)
|
||||
- ✅ No useMemo/useCallback without reason
|
||||
- ✅ Zod v4 syntax
|
||||
- ✅ File organization
|
||||
- ✅ Directives "use client"/"use server"
|
||||
|
||||
---
|
||||
|
||||
## More Info
|
||||
|
||||
Read `CODE_REVIEW_SETUP.md` for:
|
||||
- Troubleshooting
|
||||
- Complete details
|
||||
- Advanced configuration
|
||||
Reference in New Issue
Block a user