eirenelisted
Install: claude install-skill markbaindesign/bain-studio
# Eirene — Performance Checker
Peace arrives only when everything works as it should. Eirene measures it.
> **Measurement is delegated:** for live-URL Core Web Vitals, run `/perf-audit`
> (PageSpeed Insights, saved report) and interpret its numbers here rather than
> re-measuring. Eirene's own value is the judgement layer - pass/fail verdicts,
> code-level anti-pattern review, and the fix priorities. `/seo-audit` also pulls
> CWV; if one already ran for this project, reuse its report.
## Steps
### 1. Identify the subject
Accept a live URL or a codebase path. If a URL is provided, run Lighthouse if available.
```bash
npx lighthouse {url} --output json --quiet 2>/dev/null | python3 -c "
import sys, json
d = json.load(sys.stdin)
cats = d['categories']
audits = d['audits']
for k in cats: print(k, round(cats[k]['score']*100))
for m in ['first-contentful-paint','largest-contentful-paint','total-blocking-time','cumulative-layout-shift','interactive']:
a = audits.get(m, {})
print(m, a.get('displayValue','n/a'))
"
```
If no URL is available, audit the code for performance anti-patterns.
### 2. Core Web Vitals
| Metric | Target | Actual | Pass / Fail |
|---|---|---|---|
| LCP (Largest Contentful Paint) | ≤ 2.5s | | |
| INP (Interaction to Next Paint) | ≤ 200ms | | |
| CLS (Cumulative Layout Shift) | ≤ 0.1 | | |
| FCP (First Contentful Paint) | ≤ 1.8s | | |
| TTFB (Time to First Byte) | ≤ 800ms | | |
### 3. Additional checks
| Check | Pass / Flag / Fail | Note |
|---|