# Eirene

> Performance check only — Core Web Vitals, load time, image optimisation, caching. Returns a performance audit with Pass / Fail per metric. Use when you need a performance audit without the full Themis QA suite.

- Skill: `markbaindesign/eirene` (Agent Skill)
- Install (CLI): `npx skillmds@latest add markbaindesign/eirene`
- Raw SKILL.md: https://api.skillmd.com/api/skills/markbaindesign/eirene/raw
- Safety review: pending
- Works with: Claude Code, Claude.ai, OpenAI Codex
- Category: Security
- Author: markbaindesign (https://skillmd.com/u/markbaindesign)
- Updated: 2026-09-17
- Page: https://skillmd.com/skills/markbaindesign/eirene

---


# 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 |
|---|---|---|
| Images served in modern format (WebP / AVIF) | | |
| Images have explicit width and height attributes | | |
| No render-blocking resources | | |
| JS bundle size reasonable for scope | | |
| Caching headers set appropriately | | |
| Mobile performance (throttled 4G simulation) | | |

### 4. Verdict

**PASS** — all Core Web Vitals green.
**CONDITIONAL PASS** — marginal scores, clear remediation path, no hard fails.
**FAIL** — one or more Core Web Vitals red. List specific fixes for Hephaestus: file name, what to change, expected improvement.

Do not issue vague recommendations. "Optimise images" is not an action item. "Convert `/wp-content/uploads/hero.jpg` (1.2MB) to WebP — expected LCP improvement ~0.8s." is.

