---
name: lint
description: Run all linters and type checks for the Archipelago project
allowed-tools: Bash, Read, Grep
argument-hint: "[backend|frontend|all]"
---

Run linters and type-checks for $ARGUMENTS (default: all).

## Frontend Linting

```bash
cd neode-ui

# Type check
npm run type-check 2>&1

# Check for any `any` types (should be zero)
grep -rn ': any' src/ --include='*.ts' --include='*.vue' | grep -v node_modules | grep -v '.d.ts'

# Check for inline Tailwind violations (long class strings)
grep -rn 'class="[^"]\{100,\}"' src/ --include='*.vue'

# Check for TODO/FIXME
grep -rn 'TODO\|FIXME' src/ --include='*.ts' --include='*.vue'

# Check for console.log (should be cleaned before production)
grep -rn 'console\.\(log\|warn\|error\)' src/ --include='*.ts' --include='*.vue' | wc -l
```

## Backend Linting (on dev server)

```bash
ssh -i ~/.ssh/archipelago-deploy archipelago@192.168.1.228 \
  'source ~/.cargo/env && cd ~/archy/core && cargo clippy --all-targets --all-features 2>&1 && cargo fmt --all -- --check 2>&1'
```

## Script Linting

```bash
# Check for scripts missing set -e
for f in scripts/*.sh; do
  if ! head -5 "$f" | grep -q 'set -e'; then
    echo "MISSING set -e: $f"
  fi
done

# Check for hardcoded IPs (should use variables)
grep -rn '192\.168\.1\.' scripts/ --include='*.sh' | grep -v deploy-config
```

Report all issues found with severity (critical/warning/info).
