devrites 2.5.1 → 2.6.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/CHANGELOG.md CHANGED
@@ -2,6 +2,18 @@
2
2
 
3
3
  All notable changes to DevRites are documented here. The format follows [Keep a Changelog](https://keepachangelog.com/en/1.1.0/) and DevRites adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html). Releases are generated automatically by [semantic-release](https://semantic-release.gitbook.io/) from Conventional Commits on `main`.
4
4
 
5
+ ## [2.6.0](https://github.com/ViktorsBaikers/DevRites/compare/v2.5.2...v2.6.0) (2026-07-05)
6
+
7
+ ### Added
8
+
9
+ * **installer:** add Codex support ([cd19c70](https://github.com/ViktorsBaikers/DevRites/commit/cd19c70e6c6df5a38a3524c4cb3f8e9885ffedc3))
10
+
11
+ ## [2.5.2](https://github.com/ViktorsBaikers/DevRites/compare/v2.5.1...v2.5.2) (2026-06-28)
12
+
13
+ ### Changed
14
+
15
+ * **skills:** swap browser-harness for Playwright MCP ([9c13e72](https://github.com/ViktorsBaikers/DevRites/commit/9c13e72c94e81f7df6dc7d07bf23acdfd4d18ddd))
16
+
5
17
  ## [2.5.1](https://github.com/ViktorsBaikers/DevRites/compare/v2.5.0...v2.5.1) (2026-06-28)
6
18
 
7
19
  ### Fixed
package/README.md CHANGED
@@ -36,7 +36,7 @@ recorded-exception escape hatch instead of silent work-arounds.
36
36
  archive/<slug>/ # shipped task, moved here intact (all .md preserved)
37
37
  ```
38
38
 
39
- **Stop your AI from shipping half-baked code.** DevRites turns Claude Code into a
39
+ **Stop your AI from shipping half-baked code.** DevRites turns Claude Code or Codex into a
40
40
  disciplined senior engineer — one that asks the right questions before writing a line,
41
41
  ships features you can actually trust, and refuses to claim "done" without proof.
42
42
 
@@ -101,14 +101,14 @@ Full diagram set (lifecycle, polish orchestrator, review fan-out, debug loop,
101
101
  rules carrier, workspace state, namespace map) →
102
102
  [`docs/flow.md`](docs/flow.md).
103
103
 
104
- **Status:** [`v2.5.1`](https://github.com/ViktorsBaikers/DevRites/releases/tag/v2.5.1) — see [`CHANGELOG.md`](CHANGELOG.md) for release notes.
104
+ **Status:** [`v2.6.0`](https://github.com/ViktorsBaikers/DevRites/releases/tag/v2.6.0) — see [`CHANGELOG.md`](CHANGELOG.md) for release notes.
105
105
 
106
106
  ## Contents
107
107
 
108
108
  - [Why distributed skills](#why-distributed-skills-not-one-engine)
109
109
  - [Modes — HITL & AFK](#modes--hitl--afk)
110
110
  - [Install](#install) — [npx / bash](#installing) · [upgrade](#upgrading-an-existing-install)
111
- - [Recommended setup](#recommended-setup-optional-but-devrites-is-much-sharper-with-it) — codegraph · graphify · browser-harness
111
+ - [Recommended setup](#recommended-setup-optional-but-devrites-is-much-sharper-with-it) — codegraph · graphify · Playwright MCP
112
112
  - [Skills](#skills) — 36 total · full catalogue in [`docs/skills.md`](docs/skills.md)
113
113
  - [Typical workflow](#typical-workflow) · [Worked examples](docs/usage.md)
114
114
  - [Engineering rules](#engineering-rules) · [Browser proof ladder](#browser-proof-ladder) · [Frontend & fullstack](#frontend--fullstack)
@@ -145,8 +145,9 @@ Full rationale: [`docs/architecture.md`](docs/architecture.md).
145
145
  ## Install
146
146
 
147
147
  DevRites installs **into a project** (project-local only — it never writes to
148
- `~/.claude`). Install with `npx` (recommended) or the `curl | bash` one-liner —
149
- both run the same installer and ship skills, agents, **rules**, and aliases.
148
+ `~/.claude` or `~/.codex`). Install with `npx` (recommended) or the `curl | bash`
149
+ one-liner — both run the same installer and ship Claude Code skills, Codex skills,
150
+ agents, **rules**, and aliases.
150
151
 
151
152
  ### Installing
152
153
 
@@ -168,7 +169,7 @@ npx devrites@latest uninstall
168
169
  `npx devrites` is a thin wrapper over the same installer below — the pack is bundled in the
169
170
  package, so the install runs **offline** and is **pinned** to the version you request
170
171
  (`@latest`, `@1.18.0`, …). It accepts every flag the bash installer does and is still
171
- project-local (it never writes to `~/.claude`). Requires `bash` — built in on macOS/Linux;
172
+ project-local (it never writes to `~/.claude` or `~/.codex`). Requires `bash` — built in on macOS/Linux;
172
173
  on Windows run it inside Git Bash or WSL, or use the `curl | bash` one-liner below.
173
174
 
174
175
  **One-liner over the network** — no `git clone` or Node required:
@@ -189,7 +190,7 @@ curl -fsSL https://raw.githubusercontent.com/ViktorsBaikers/DevRites/main/instal
189
190
 
190
191
  The script is self-bootstrapping: when piped through `bash` it auto-downloads the latest
191
192
  release tarball (or the `main` source archive as fallback) into `/tmp` and re-execs from
192
- there. Requires `curl` and `tar`. No global writes, ever — `~/.claude` is refused.
193
+ there. Requires `curl` and `tar`. No global writes, ever — global agent homes are refused.
193
194
 
194
195
  **From a local checkout** (same script, no network needed):
195
196
 
@@ -208,6 +209,7 @@ Common flags:
208
209
  | `--force` | Overwrite existing non-DevRites files |
209
210
  | `--no-rules` | Skip the engineering rules |
210
211
  | `--no-agents` | Skip the review subagents |
212
+ | `--no-codex` | Skip Codex support files (`.agents/skills`, `.codex/agents`, `AGENTS.md`) |
211
213
  | `--rules-only` | Install only the engineering rules |
212
214
  | `--short-aliases=all` | Add `/define`, `/build`, `/prove`, `/seal` short aliases (off by default) |
213
215
 
@@ -261,7 +263,8 @@ curl -fsSL https://raw.githubusercontent.com/ViktorsBaikers/DevRites/main/uninst
261
263
  ./uninstall.sh --dry-run # preview, change nothing
262
264
  ```
263
265
 
264
- Removes only files listed in `.claude/devrites.manifest` and prunes empty dirs.
266
+ Removes only files listed in `.claude/devrites.manifest` and prunes empty dirs,
267
+ including Codex mirrors when they were installed.
265
268
  `.devrites/work/` (your feature data) is always preserved.
266
269
 
267
270
  ## Recommended setup (optional, but DevRites is much sharper with it)
@@ -274,7 +277,7 @@ one and **degrades gracefully** when it's absent.
274
277
  |---|---|---|
275
278
  | **codegraph** | A code-intelligence index. `/rite-spec`, `/rite-define`, and `/rite-plan` use it to understand structure, **placement**, callers, and **impact** cheaply — deeper investigation and sharper specs, at a fraction of the tokens of reading files. | Build the index in your project (e.g. `codegraph init`) so its `codegraph_*` tools / a `.codegraph/` are present. |
276
279
  | **graphify** | A codebase → knowledge-graph (`graphify-out/`) — same benefit for "where is X / what calls Y / what would Z break". | Generate it for your project (the `/graphify` skill). |
277
- | **[browser-harness](https://github.com/browser-use/browser-harness)** | Drives your real browser so `/rite-prove` and `/rite-polish` capture **real UI evidence** — screenshots, console, network, responsive — the top rung of the proof ladder. | Install it, connect it to your Chrome, and verify with its doctor. |
280
+ | **[Playwright MCP](https://github.com/microsoft/playwright-mcp)** | Drives a real browser so `/rite-prove` and `/rite-polish` capture **real UI evidence** — screenshots, console, network, responsive — the top rung of the proof ladder (paired with **Chrome DevTools MCP** for Lighthouse / perf trace). | Configure the Playwright MCP server in Claude Code; DevRites detects it, never installs it. |
278
281
 
279
282
  Without them, DevRites reads files instead of a code graph and uses Claude Code's built-in
280
283
  `/run`+`/verify` (or documented manual steps) instead of a browser. With them: deeper
@@ -282,9 +285,15 @@ investigation, cheaper context, and real browser proof. None are required.
282
285
 
283
286
  ## Skills
284
287
 
285
- The pack ships **36 skills total** — 24 user-invocable `rite-*` workflow + utility skills, 11 model-invoked `devrites-*` specialists, plus the internal `devrites-lib` library (scripts the workflow skills run, not a command). **Prefix convention:** `rite-*` is the user-facing slash-command surface; `devrites-*` is internal (model-invoked, hidden from the menu). Each skill is a structured workflow with its own operating rules, anti-rationalization tables, and red flags. Engineering rules live at `.claude/rules/`; each `rite-*` skill Reads `.claude/rules/core.md` as its first step, and the other 22 rule files load on demand.
288
+ The pack ships **36 skills total** — 24 user-invocable `rite-*` workflow + utility skills, 11 model-invoked `devrites-*` specialists, plus the internal `devrites-lib` library (scripts the workflow skills run, not a command). **Prefix convention:** `rite-*` is the user-facing command surface; `devrites-*` is internal (model-invoked, hidden from the menu). Each skill is a structured workflow with its own operating rules, anti-rationalization tables, and red flags. Engineering rules live at `.claude/rules/`; each `rite-*` skill Reads `.claude/rules/core.md` as its first step, and the other 22 rule files load on demand.
286
289
 
287
- **Two invocation forms.** Every user-invocable skill responds to **both** `/rite <verb>` (menu form — type `/rite` to discover) and `/rite-<verb>` (direct shortcut — muscle memory). The forms are equivalent: `/rite build slice-2` ≡ `/rite-build slice-2`. Use whichever reads more naturally.
290
+ **Claude Code invocation.** Every user-invocable skill responds to **both** `/rite <verb>` (menu form — type `/rite` to discover) and `/rite-<verb>` (direct shortcut — muscle memory). The forms are equivalent: `/rite build slice-2` ≡ `/rite-build slice-2`. Use whichever reads more naturally.
291
+
292
+ **Codex invocation.** The installer mirrors the same skills to `.agents/skills/`, mirrors DevRites rules to `.agents/devrites/rules/`, injects a Codex compatibility block after each skill's front matter, generates project custom agents in `.codex/agents/`, installs Codex hooks in `.codex/hooks.json` + `.codex/hooks/`, installs the DevRites MCP server at `.codex/mcp/devrites-mcp.mjs`, and creates or merges the needed Codex guidance into `AGENTS.md`. If `AGENTS.md` already exists, DevRites adds a marked block instead of replacing your guidance. In Codex, invoke DevRites via `$rite`, `$rite-spec`, or `/skills`; if you prefer a Claude-only footprint, install with `--no-codex`. Codex must trust the project `.codex/` layer and review the hooks via `/hooks` before non-managed hooks run.
293
+
294
+ **Rules in Codex.** DevRites engineering rules are mirrored as Markdown under `.agents/devrites/rules/` because they are workflow/craft instructions, not Codex command-approval `.rules` files. The generated `AGENTS.md` block and every mirrored `.agents/skills/*/SKILL.md` tell Codex to read `.agents/devrites/rules/core.md` before workflow work and load the other `.agents/devrites/rules/*.md` files on demand.
295
+
296
+ **DevRites MCP in Codex.** The installer adds a marked `[mcp_servers.devrites]` block to `.codex/config.toml` and copies the MCP server into `.codex/mcp/`. That gives Codex deterministic tools for DevRites state and gates (`devrites_status`, `devrites_ready`, `devrites_evidence_fresh`, `devrites_acceptance`, and related workspace helpers) without relying on prose or ad-hoc shell commands.
288
297
 
289
298
  **Custom pinned aliases** (optional). Add your own one-word shortcuts to any `rite-*` skill at runtime with `scripts/pin.sh` — useful for muscle-memory commands like `/b` → `/rite-build` or `/ship` → `/rite-ship`. The wrapper is a thin delegate (same shape the installer uses for `--short-aliases=all`); pinned aliases are manifest-tracked so `./uninstall.sh` cleans them up.
290
299
 
@@ -295,7 +304,7 @@ The pack ships **36 skills total** — 24 user-invocable `rite-*` workflow + uti
295
304
  ./scripts/pin.sh remove b # drop the alias
296
305
  ```
297
306
 
298
- Pinned aliases live at `.claude/skills/<alias>/SKILL.md`. The script refuses `rite-*` names, unknown targets, and writes to `~/.claude`.
307
+ Pinned aliases live at `.claude/skills/<alias>/SKILL.md` and mirror to `.agents/skills/<alias>/SKILL.md` when Codex support is installed. The script refuses `rite-*` names, unknown targets, and global agent homes.
299
308
 
300
309
  ### Full skill + agent inventory
301
310
 
@@ -431,7 +440,7 @@ the build, records the drift in `drift.md`, asks you when product behavior
431
440
  changes, and routes through `/rite-plan repair` before resuming.
432
441
 
433
442
  Worked examples (spec-then-plan, mid-build drift, UI feature with
434
- browser-harness, backend-only, polish modes, zoom-out, mid-flight handoff):
443
+ Playwright MCP, backend-only, polish modes, zoom-out, mid-flight handoff):
435
444
  **[docs/usage.md](docs/usage.md)**.
436
445
 
437
446
  ## Engineering rules
@@ -452,9 +461,10 @@ diagram: [`docs/flow.md` § Engineering-rules loading](docs/flow.md#6-engineerin
452
461
 
453
462
  ## Browser proof ladder
454
463
 
455
- For UI work DevRites prefers real runtime evidence, top-down: **browser-harness** (if
456
- installed) **Chrome DevTools MCP** Claude Code **`/run`+`/verify`****project-native
457
- E2E** (Playwright / Cypress / Capybara) → **manual fallback**. It detects tooling but
464
+ For UI work DevRites prefers real runtime evidence, top-down: **Playwright MCP** (if
465
+ configured, paired with **Chrome DevTools MCP** for Lighthouse / perf trace) Claude Code
466
+ **`/run`+`/verify`** → **project-native E2E** (Playwright / Cypress / Capybara) → **manual
467
+ fallback**. It detects tooling but
458
468
  never installs it, stops at auth walls, and treats a screenshot **path** as unproven
459
469
  until it's opened and described.
460
470
 
@@ -478,7 +488,7 @@ real UI state, and **prove both layers** (contract tests + browser proof).
478
488
 
479
489
  ## Safety & scope
480
490
 
481
- - **Project-local only.** Never writes to `~/.claude`. Manifest-managed install/uninstall.
491
+ - **Project-local only.** Never writes to `~/.claude` or `~/.codex`. Manifest-managed install/uninstall.
482
492
  - **Feature scope only.** Review/simplify/polish/security stay within the active feature
483
493
  and touched files — no project-wide refactors, no drive-by cleanup.
484
494
  - **One slice at a time.** `/rite-build` stops after a single verified slice.
@@ -502,6 +512,8 @@ devrites/
502
512
  pack/.claude/ # skills/ 36 skills — 24 public + 12 internal ─┐
503
513
  # agents/ 13 read-only + 1 writer (slice-wright) ├─ the pack
504
514
  # rules/ 23 rule files + README index ┘
515
+ installed projects # .claude/ runtime assets; .agents/skills + .codex/agents
516
+ # + .codex/hooks/config/mcp + AGENTS.md for Codex
505
517
  evals/ # trigger evals (20/skill) + golden/ outcome-eval fixtures
506
518
  docs/ # architecture · skills · command-map · usage · flow · release · cli-mcp
507
519
  internal/ # research, development notes (gitignored)
@@ -525,7 +537,7 @@ Cross-links: [architecture](docs/architecture.md) ·
525
537
  DevRites is auditable Markdown + a small set of shell scripts. The complete security
526
538
  policy, including private vulnerability reporting and recommended managed-deployment
527
539
  settings, lives in [`SECURITY.md`](SECURITY.md). Highlights: **project-local only**
528
- (installer refuses any target under `~/.claude`); **no network access** in installer or
540
+ (installer refuses global Claude/Codex agent homes); **no network access** in installer or
529
541
  skills (no remote code execution); **`!` shell injection removed** from `/rite` and
530
542
  `/rite-status` (state loaded via a `Bash`-invoked script that reads only DevRites' own
531
543
  state under `.devrites/`); **auto-trigger** is a deliberate design choice mitigated by
@@ -550,4 +562,4 @@ repository in package registries or plugin marketplaces* are permitted without a
550
562
  distributing it, distributing modified versions, mirroring as a fork, or commercial /
551
563
  organizational use — requires **approval on request** (ask via
552
564
  [the repo](https://github.com/ViktorsBaikers/DevRites)). Source-available. See
553
- [`LICENSE`](LICENSE). DevRites is independent software for use with Claude Code.
565
+ [`LICENSE`](LICENSE). DevRites is independent software for use with Claude Code and Codex.
package/SECURITY.md CHANGED
@@ -175,7 +175,7 @@ settings file is never overwritten on update, so your own permission rules are s
175
175
 
176
176
  DevRites vendors no third-party code (see `NOTICE.md`). It depends on Claude
177
177
  Code itself and, optionally and at the user's choice, on codegraph /
178
- graphify / browser-harness — each of which is invoked through its own
178
+ graphify / Playwright MCP — each of which is invoked through its own
179
179
  documented interface, not bundled.
180
180
 
181
181
  ### Known non-issues
package/bin/devrites.mjs CHANGED
@@ -44,13 +44,14 @@ Common flags (passed straight through to the installer):
44
44
  --dry-run Show the plan, change nothing
45
45
  --force Overwrite existing non-DevRites files
46
46
  --rules-only Install only the engineering rules
47
+ --no-codex Skip Codex support files (.agents, .codex, AGENTS.md)
47
48
  --short-aliases=all Also install /define /build /prove /seal
48
49
  --no-agents Skip the review subagents
49
50
 
50
51
  --version Print the devrites version
51
52
  --help Show this help (use "<subcommand> --help" for installer-level detail)
52
53
 
53
- DevRites is project-local — it never writes to ~/.claude.
54
+ DevRites is project-local — it never writes to ~/.claude or ~/.codex.
54
55
  Requires bash (Git Bash or WSL on Windows). No-Node fallback:
55
56
  curl -fsSL https://raw.githubusercontent.com/ViktorsBaikers/DevRites/main/install.sh | bash
56
57
  `);
package/docs/cli-mcp.md CHANGED
@@ -27,14 +27,19 @@ any agent's loop or a pre-merge CI step. `devrites help` lists them all.
27
27
 
28
28
  ## The MCP server
29
29
 
30
- `mcp/devrites-mcp.mjs` (in the DevRites source) is a dependency-free MCP **stdio** server
31
- that exposes the read/gate operations as MCP tools (`devrites_orient`, `devrites_ready`,
30
+ `mcp/devrites-mcp.mjs` is a dependency-free MCP **stdio** server that exposes the
31
+ read/gate operations as MCP tools (`devrites_orient`, `devrites_ready`,
32
32
  `devrites_evidence_fresh`, `devrites_acceptance`, `devrites_status`, `devrites_active`,
33
33
  `devrites_list`, `devrites_use`). It shells out to the CLI, so it stays a thin surface over
34
34
  the same scripts — no SDK, no dependencies.
35
35
 
36
- Register it in a project's `.mcp.json`, running from the project root (it auto-finds the
37
- installed CLI; override the path with the `DEVRITES_CLI` env var):
36
+ For Codex installs, DevRites copies the server to `.codex/mcp/devrites-mcp.mjs` and
37
+ adds a marked `[mcp_servers.devrites]` block to `.codex/config.toml`. After the project
38
+ `.codex/` layer is trusted, Codex can use those MCP tools directly.
39
+
40
+ For other MCP clients, register the source server in a project's `.mcp.json`, running
41
+ from the project root (it auto-finds the installed CLI; override the path with the
42
+ `DEVRITES_CLI` env var):
38
43
 
39
44
  ```json
40
45
  {
package/docs/skills.md CHANGED
@@ -1,6 +1,6 @@
1
1
  # All 36 skills
2
2
 
3
- The pack ships **36 skills total** — 24 user-invocable `rite-*` workflow + utility skills and 11 model-invoked `devrites-*` specialists, plus the internal `devrites-lib` library skill (`user-invocable: false`, not a command) that ships the cross-cutting scripts the workflow skills run: the read-only orientation preamble and the `readiness` / `evidence-fresh` / `acceptance` gate scripts, plus the `tick-afk` / `resolve` / `close-out` state mutators. Each skill is a structured workflow with its own operating rules, anti-rationalization tables, and red flags. Engineering rules live at `.claude/rules/`; each `rite-*` skill Reads `.claude/rules/core.md` as its first step (step 0) and pulls the other 22 rule files on demand (no carrier skill, no session-start autoload). A unified `devrites` CLI and an MCP server expose the `devrites-lib` ops to any tool (see [`cli-mcp.md`](cli-mcp.md)).
3
+ The pack ships **36 skills total** — 24 user-invocable `rite-*` workflow + utility skills and 11 model-invoked `devrites-*` specialists, plus the internal `devrites-lib` library skill (`user-invocable: false`, not a command) that ships the cross-cutting scripts the workflow skills run: the read-only orientation preamble and the `readiness` / `evidence-fresh` / `acceptance` gate scripts, plus the `tick-afk` / `resolve` / `close-out` state mutators. Each skill is a structured workflow with its own operating rules, anti-rationalization tables, and red flags. Engineering rules live at `.claude/rules/`; each `rite-*` skill Reads `.claude/rules/core.md` as its first step (step 0) and pulls the other 22 rule files on demand (no carrier skill, no session-start autoload). The installer mirrors skills to `.agents/skills` for Codex, mirrors rules to `.agents/devrites/rules`, injects Codex-specific dispatch/rules guidance into those mirrors, generates `.codex/agents` from the DevRites review agents, installs Codex hooks in `.codex/hooks.json` + `.codex/hooks/`, merges DevRites guidance into `AGENTS.md`, and registers the project-local DevRites MCP server through `.codex/config.toml`. A unified `devrites` CLI and an MCP server expose the `devrites-lib` ops to any tool (see [`cli-mcp.md`](cli-mcp.md)).
4
4
 
5
5
  **Naming convention.** `rite-*` is the user-facing slash-command surface (lifecycle phases plus utilities — `rite-quick`, `rite-frame`, `rite-adopt`, `rite-learn`, `rite-doctor`, `rite-prototype`, `rite-handoff`, `rite-zoom-out`, `rite-pressure-test`). `devrites-*` is internal (model-invoked, hidden from the menu) and collision-avoiding against bundled Claude Code skill names. Visibility is governed by each skill's `user-invocable:` flag; the prefix mirrors it.
6
6
 
@@ -31,7 +31,7 @@ single `## Gotchas` heading is a possible future normalization; the content alre
31
31
 
32
32
  ## Commands quick reference
33
33
 
34
- Every user-invocable skill responds to **both** `/rite <verb>` (menu form — type `/rite` for the discoverable entry point) and `/rite-<verb>` (direct shortcut). Both hit the same skill; use whichever reads more naturally.
34
+ In Claude Code, every user-invocable skill responds to **both** `/rite <verb>` (menu form — type `/rite` for the discoverable entry point) and `/rite-<verb>` (direct shortcut). Both hit the same skill; use whichever reads more naturally. In Codex, use `$rite`, `$rite-<verb>`, or `/skills` to select the mirrored skill from `.agents/skills`; when a skill dispatches a DevRites subagent, the Codex mirror instructs Codex to use the matching `.codex/agents/devrites-*.toml` custom agent. The generated `AGENTS.md` block tells Codex to read `.agents/devrites/rules/core.md` before DevRites workflow work.
35
35
 
36
36
  | Menu form | Direct shortcut | Phase | Does |
37
37
  |---|---|---|---|
@@ -126,7 +126,7 @@ The 11 model-invoked internal specialists (hidden from the menu): `devrites-inte
126
126
  | Skill | What It Does | Use When |
127
127
  |---|---|---|
128
128
  | [`rite-prove`](../pack/.claude/skills/rite-prove/SKILL.md) | Tests + build + runtime + browser evidence for the current scope. | All slices built; ready for full verification. |
129
- | [`devrites-browser-proof`](../pack/.claude/skills/devrites-browser-proof/SKILL.md) | Browser proof ladder: browser-harness → Chrome DevTools MCP → `/run`+`/verify` → project E2E → manual. Auto-emits the structured **Visual Verdict** (per-criterion PASS/FAIL vs `design-brief.md`) for UI slices — consumed by `devrites-frontend-reviewer` and gated at `/rite-seal`. | Scope touches UI. |
129
+ | [`devrites-browser-proof`](../pack/.claude/skills/devrites-browser-proof/SKILL.md) | Browser proof ladder: Playwright MCP → Chrome DevTools MCP → `/run`+`/verify` → project E2E → manual. Auto-emits the structured **Visual Verdict** (per-criterion PASS/FAIL vs `design-brief.md`) for UI slices — consumed by `devrites-frontend-reviewer` and gated at `/rite-seal`. | Scope touches UI. |
130
130
 
131
131
  ### Polish — Normalize, then ship-quality detail pass
132
132
 
package/docs/usage.md CHANGED
@@ -115,7 +115,7 @@ You: 2
115
115
  /rite-build # resumes on the corrected plan
116
116
  ```
117
117
 
118
- ## 4) UI feature with browser-harness
118
+ ## 4) UI feature with Playwright MCP
119
119
 
120
120
  ```text
121
121
  /rite-spec settings-theme-toggle
@@ -133,7 +133,7 @@ You: 2
133
133
  anti-AI-slop
134
134
 
135
135
  /rite-prove
136
- → devrites-browser-proof: browser-harness detected → new_tab(route),
136
+ → devrites-browser-proof: Playwright MCP detected → browser_navigate(route),
137
137
  screenshot at 375 + 1280, exercise the toggle, check console clean,
138
138
  **compare to references/**, record to browser-evidence.md
139
139