# Code Review System Documentation

Complete documentation for the Claude Code-powered commit validation system.

## Quick Navigation

**Want to get started in 3 steps?**
→ Read: [`CODE_REVIEW_QUICK_START.md`](./CODE_REVIEW_QUICK_START.md)

**Want complete technical details?**
→ Read: [`CODE_REVIEW_SETUP.md`](./CODE_REVIEW_SETUP.md)

---

## What This System Does

Automatically validates code against AGENTS.md standards when you commit using Claude Code.

```
git commit
  ↓
(Optional) Claude Code validation
  ↓
If violations found → Commit is BLOCKED ❌
If code complies → Commit continues ✅
```

**Key Feature:** Configurable with a single variable in `.env`
- `CODE_REVIEW_ENABLED=true` → Validates (recommended before commits)
- `CODE_REVIEW_ENABLED=false` → Skip validation (default, for iteration)

---

## File Guide

| File | Purpose | Read Time |
|------|---------|-----------|
| [`CODE_REVIEW_QUICK_START.md`](./CODE_REVIEW_QUICK_START.md) | 3-step setup & examples | 5 min |
| [`CODE_REVIEW_SETUP.md`](./CODE_REVIEW_SETUP.md) | Complete technical guide | 15 min |

---

## What Gets Validated

When validation is enabled, the system checks:

✅ **React Imports**
- Must use: `import { useState } from "react"`
- Not: `import * as React` or `import React, {`

✅ **TypeScript Types**
- Must use: `const STATUS = {...} as const; type Status = typeof STATUS[...]`
- Not: `type Status = "a" | "b"`

✅ **Tailwind CSS**
- Must use: `className="bg-card-bg text-white"`
- Not: `className="bg-[var(...)]"` or `className="text-[#fff]"`

✅ **cn() Utility**
- Must use for: `cn("h-3", isActive && "bg-blue")`
- Not for: `cn("static-class")`

✅ **React 19 Hooks**
- No: `useMemo()` / `useCallback()` without documented reason
- Use: Nothing (React Compiler handles optimization)

✅ **Zod v4 Syntax**
- Must use: `z.email()`, `.min(1)`
- Not: `z.string().email()`, `.nonempty()`

✅ **File Organization**
- 1 feature uses → Keep local in feature folder
- 2+ features use → Move to shared/global

✅ **Directives**
- Server Actions must have: `"use server"`
- Client Components must have: `"use client"`

---

## Installation (For Your Team)

### Step 1: Decide if you want validation
- **Optional:** Each developer decides
- **Team policy:** Consider making it standard before commits

### Step 2: Enable in your environment
```bash
# Edit ui/.env
CODE_REVIEW_ENABLED=true
```

### Step 3: Done!
Your next `git commit` will validate automatically.

---

## Support

| Question | Answer |
|----------|--------|
| How do I enable it? | Change `CODE_REVIEW_ENABLED=true` in `.env` |
| How do I disable it? | Change `CODE_REVIEW_ENABLED=false` in `.env` |
| How do I bypass? | Use `git commit --no-verify` (emergency only) |
| What if Claude Code isn't found? | Check PATH: `which claude` |
| What if hook doesn't run? | Check executable: `chmod +x .husky/pre-commit` |
| How do I test it? | Enable validation and commit code with violations to test |
| What if I don't have Claude Code? | Validation is skipped gracefully |

---

## Key Features

✅ **No Setup Required**
- Uses Claude Code already in your PATH
- No API keys needed
- Works offline (if Claude Code supports it)

✅ **Smart Validation**
- Only checks files being committed
- Not the entire codebase
- Fast: ~10-30 seconds with validation enabled

✅ **Flexible**
- Can be enabled/disabled per developer
- Can be disabled temporarily with `git commit --no-verify`
- Default is disabled (doesn't interrupt workflow)

✅ **Clear Feedback**
- Shows exactly what violates standards
- Shows file:line references
- Explains how to fix each issue

✅ **Well Documented**
- 5 different documentation files
- For different needs and levels
- Examples and troubleshooting included

---

## Architecture

```
┌─────────────────────────────────────────┐
│  Developer commits code                 │
└────────────────┬────────────────────────┘
                 ↓
        ┌─────────────────┐
        │ Pre-Commit Hook │
        │ (.husky/pre-commit)
        └────────┬────────┘
                 ↓
        Read CODE_REVIEW_ENABLED from .env
                 ↓
        ┌──────────────────────────┐
        │ If false (disabled)      │
        └────────┬─────────────────┘
                 ↓
            exit 0 (OK)
                 ↓
            Commit continues ✅

        ┌──────────────────────────┐
        │ If true (enabled)        │
        └────────┬─────────────────┘
                 ↓
        Extract staged files
        (git diff --cached)
                 ↓
        Build prompt with git diff
                 ↓
        Send to: claude < prompt
                 ↓
        Analyze against AGENTS.md
                 ↓
        Return: STATUS: PASSED or FAILED
                 ↓
        Parse with: grep "^STATUS:"
                 ↓
        ┌──────────────────┐
        │ PASSED detected  │
        └────────┬─────────┘
                 ↓
            exit 0 (OK)
                 ↓
            Commit continues ✅

        ┌──────────────────┐
        │ FAILED detected  │
        └────────┬─────────┘
                 ↓
        Show violations
                 ↓
            exit 1 (FAIL)
                 ↓
        Commit is BLOCKED ❌
                 ↓
        Developer fixes code
        Developer commits again
```

---

## Getting Started

1. **Read:** [`CODE_REVIEW_QUICK_START.md`](./CODE_REVIEW_QUICK_START.md) (5 minutes)
2. **Enable:** Set `CODE_REVIEW_ENABLED=true` in your `ui/.env`
3. **Test:** Commit some code and see validation in action
4. **For help:** See the troubleshooting section in [`CODE_REVIEW_SETUP.md`](./CODE_REVIEW_SETUP.md)

---

## Implementation Details

- **Files Modified:** 1 (`.husky/pre-commit`)
- **Files Created:** 3 (documentation)
- **Hook Size:** ~120 lines of bash
- **Dependencies:** Claude Code CLI (already available)
- **Setup Time:** 1 minute
- **Default:** Disabled (no workflow interruption)

---

## Questions?

- **How to enable?** → `CODE_REVIEW_QUICK_START.md`
- **How does it work?** → `CODE_REVIEW_SETUP.md`
- **Troubleshooting?** → See troubleshooting section in `CODE_REVIEW_SETUP.md`

---

## Status

✅ **Ready to Use**

The system is fully implemented, documented, and tested. You can enable it immediately with a single variable change.

---

**Last Updated:** November 6, 2024
**Status:** Complete Implementation
