devrites 2.5.0 → 2.5.2

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.5.2](https://github.com/ViktorsBaikers/DevRites/compare/v2.5.1...v2.5.2) (2026-06-28)
6
+
7
+ ### Changed
8
+
9
+ * **skills:** swap browser-harness for Playwright MCP ([9c13e72](https://github.com/ViktorsBaikers/DevRites/commit/9c13e72c94e81f7df6dc7d07bf23acdfd4d18ddd))
10
+
11
+ ## [2.5.1](https://github.com/ViktorsBaikers/DevRites/compare/v2.5.0...v2.5.1) (2026-06-28)
12
+
13
+ ### Fixed
14
+
15
+ * **rite:** ask HITL build gaps inline instead of deferring to resolve ([33266f1](https://github.com/ViktorsBaikers/DevRites/commit/33266f19d9ad30f53fc8ef267f486a5562be61c7))
16
+
5
17
  ## [2.5.0](https://github.com/ViktorsBaikers/DevRites/compare/v2.4.0...v2.5.0) (2026-06-28)
6
18
 
7
19
  ### Added
package/README.md CHANGED
@@ -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.0`](https://github.com/ViktorsBaikers/DevRites/releases/tag/v2.5.0) — see [`CHANGELOG.md`](CHANGELOG.md) for release notes.
104
+ **Status:** [`v2.5.2`](https://github.com/ViktorsBaikers/DevRites/releases/tag/v2.5.2) — 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)
@@ -274,7 +274,7 @@ one and **degrades gracefully** when it's absent.
274
274
  |---|---|---|
275
275
  | **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
276
  | **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. |
277
+ | **[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
278
 
279
279
  Without them, DevRites reads files instead of a code graph and uses Claude Code's built-in
280
280
  `/run`+`/verify` (or documented manual steps) instead of a browser. With them: deeper
@@ -431,7 +431,7 @@ the build, records the drift in `drift.md`, asks you when product behavior
431
431
  changes, and routes through `/rite-plan repair` before resuming.
432
432
 
433
433
  Worked examples (spec-then-plan, mid-build drift, UI feature with
434
- browser-harness, backend-only, polish modes, zoom-out, mid-flight handoff):
434
+ Playwright MCP, backend-only, polish modes, zoom-out, mid-flight handoff):
435
435
  **[docs/usage.md](docs/usage.md)**.
436
436
 
437
437
  ## Engineering rules
@@ -452,9 +452,10 @@ diagram: [`docs/flow.md` § Engineering-rules loading](docs/flow.md#6-engineerin
452
452
 
453
453
  ## Browser proof ladder
454
454
 
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
455
+ For UI work DevRites prefers real runtime evidence, top-down: **Playwright MCP** (if
456
+ configured, paired with **Chrome DevTools MCP** for Lighthouse / perf trace) Claude Code
457
+ **`/run`+`/verify`** → **project-native E2E** (Playwright / Cypress / Capybara) → **manual
458
+ fallback**. It detects tooling but
458
459
  never installs it, stops at auth walls, and treats a screenshot **path** as unproven
459
460
  until it's opened and described.
460
461
 
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/docs/skills.md CHANGED
@@ -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
 
@@ -14,13 +14,17 @@ The same ladder captures a **developer-facing docs / getting-started page** for
14
14
  commands match what actually runs, and note the result in `browser-evidence.md` / `devex.md`.
15
15
 
16
16
  ## Ladder (top-down)
17
- 1. **browser-harness** — detect `command -v browser-harness`. Connects to the user's
18
- Chrome over CDP. Pattern: `new_tab(url)` `wait_for_load()` `capture_screenshot()`
19
- read the pixel → `click_at_xy(x,y)` re-screenshot. Coordinate clicks pass through
20
- iframes/shadow/cross-origin. `print(page_info())` for liveness. Don't launch a new
21
- browser; don't auto-install.
22
- 2. **Chrome DevTools MCP** (if configured) screenshots, DOM, console, network,
23
- performance, accessibility tree.
17
+ 1. **Playwright MCP** (preferred) — detect by tool availability (the `browser_*` tools are
18
+ present, e.g. `browser_navigate`); detect, don't install. Drives a Playwright-managed
19
+ browser. Pattern: `browser_navigate(url)` → `browser_snapshot()` (the accessibility tree
20
+ is the primary perception) → `browser_click` / `browser_type` on a **ref from the
21
+ snapshot** `browser_take_screenshot()`. Read `browser_console_messages()` and
22
+ `browser_network_requests()` for console/network evidence; `browser_resize(w,h)` for each
23
+ responsive viewport. Act on snapshot refs, not pixel coordinates.
24
+ 2. **Chrome DevTools MCP** (when configured — use **alongside** Playwright MCP for more
25
+ detail) — screenshots, DOM, console, network, performance trace, accessibility tree, and
26
+ `lighthouse_audit`. Playwright MCP drives the flow; DevTools MCP adds Lighthouse + the perf
27
+ trace Playwright can't produce.
24
28
  3. **Claude Code `/run` + `/verify`** (if available) — launch + observe the app.
25
29
  4. **Project-native E2E** (only if present) — Playwright/Cypress/Capybara/Selenium via
26
30
  the project's existing commands. Don't add a new framework.
@@ -31,11 +35,13 @@ If `spec.md` carries a perf budget — or a frontend regression risk is visible
31
35
  CWV numbers here so the perf reviewer judges real data instead of guessing. Use the highest
32
36
  rung available; **detect, don't install**.
33
37
 
34
- 1. **Chrome DevTools MCP** (if configured) — `lighthouse_audit` for LCP/INP/CLS + the
35
- Lighthouse performance score. Source label: **Lab (Lighthouse)**. A `performance_*` trace
36
- gives **Trace (DevTools)** attribution.
37
- 2. **browser-harness** — drive the route, capture a performance trace over CDP. Source
38
- label: **Trace (DevTools)**.
38
+ 1. **Chrome DevTools MCP** (preferred for CWV when configured) — `lighthouse_audit` for
39
+ LCP/INP/CLS + the Lighthouse performance score. Source label: **Lab (Lighthouse)**. A
40
+ `performance_*` trace gives **Trace (DevTools)** attribution.
41
+ 2. **Playwright MCP** — `browser_navigate` the route, then `browser_evaluate` the web-vitals
42
+ library to read LCP/INP/CLS off the live page. Source label: **Trace (DevTools)** (a
43
+ real-page number, not a Lighthouse score). Use **alongside** rung 1 when both are present —
44
+ the lab score and the trace corroborate each other.
39
45
  3. **CrUX / PageSpeed Insights** — only if the user supplied an API key. Field data, p75.
40
46
  Source label: **Field (CrUX)**.
41
47
  4. **None available** → mark CWV **pending (manual)** and name the exact command
@@ -105,12 +105,23 @@ writes; read them yourself for the doubt/record gates or in the inline fallback:
105
105
  right next slice. Write the slice's `Mode` to `state.md` as `Slice mode: <HITL|AFK>` on
106
106
  **every** selection (not only on the HITL pause path); `/rite-resolve` clears or updates
107
107
  it on resume.
108
- 2a. **HITL gate (pre-action pause).** Read the slice's `Mode`. If `HITL` render the
109
- checkpoint per [`reference/checkpoint-protocol.md`](reference/checkpoint-protocol.md):
110
- append a `questions.md` entry with the slice's `Checkpoint:` + `Gate:` + `SLA:`,
111
- write the `Awaiting human` block to `state.md`, set `Status: awaiting_human`, run
112
- the `notify:` hook if `.devrites/AFK` defines one, then **STOP**. Resume happens
113
- when the user runs `/rite-resolve <qid> "<answer>"`.
108
+ 2a. **HITL gate (pre-action pause).** Read the slice's `Mode`. If `HITL`, surface the
109
+ checkpoint as a ranked **option set** and resolve it **before** any code lands, per
110
+ [`reference/checkpoint-protocol.md`](reference/checkpoint-protocol.md). Branch on whether
111
+ a human is here:
112
+ - **Human present (interactive — no `.devrites/AFK`) ask inline via `AskUserQuestion`.**
113
+ This is the default for an interactive build. Render 2–4 options, the recommended one
114
+ **first and labelled `(Recommended)`**, each with its dimension-tagged rationale + the
115
+ trade-off it accepts, plus the `Something else — I'll describe it` escape hatch. The
116
+ human picks; record the pick to `questions.md` (`answered`) + `decisions.md` (through the
117
+ `resolve.sh` writer), clear the gate, and **continue to step 3 in place** — do **not**
118
+ STOP, do **not** route through `/rite-resolve`.
119
+ - **Human absent / AFK (`.devrites/AFK` present) → auto-pick or persist + STOP.** For a gate
120
+ in `allow_gates`, auto-pick the recommended option (option 1) and proceed; otherwise
121
+ append the `questions.md` entry, write the `Awaiting human` block to `state.md`, set
122
+ `Status: awaiting_human`, fire the `notify:` hook, then **STOP** — resume when the user
123
+ runs `/rite-resolve <qid> "<answer>"`. `blocking` / `escalating` / irreversible-risk gates
124
+ always take this stop path, never the AFK auto-pick.
114
125
  3. **Snapshot the tree, then dispatch the build core to `devrites-slice-wright`** — one `Task`
115
126
  call, fresh context. **First**, capture the pre-dispatch tree so the reconcile gate (step 6)
116
127
  can prove you never touched source — run this immediately before the `Task` call:
@@ -91,7 +91,7 @@ If the project has the tools, run them; capture evidence in `evidence.md`.
91
91
  - `prefers-reduced-motion`: emulate in DevTools → re-verify motion.
92
92
  - Throttle to "Slow 3G" → re-verify loading + error states.
93
93
  - Lighthouse / axe / pa11y → re-verify accessibility floor.
94
- - Browser-harness or Chrome DevTools MCP (per `devrites-browser-proof`) → capture
94
+ - Playwright MCP or Chrome DevTools MCP (per `devrites-browser-proof`) → capture
95
95
  screenshots of the worst-case input states above.
96
96
 
97
97
  ## Reporting in `/rite-polish`
@@ -14,7 +14,7 @@ workspace first; if none, run `/rite-spec <feature>`.
14
14
  > single change; `/run` launches the app. `/rite-prove` is feature-scoped:
15
15
  > it walks `spec.md` acceptance criteria one-by-one, runs the full relevant
16
16
  > test suite + build/typecheck/lint, ascends the browser-proof ladder
17
- > (browser-harness → DevTools MCP → `/run`+`/verify` → project E2E →
17
+ > (Playwright MCP → DevTools MCP → `/run`+`/verify` → project E2E →
18
18
  > manual), and writes `evidence.md` + `browser-evidence.md` keyed to the
19
19
  > active `.devrites/work/<slug>/`. Use `/verify` or `/run` on their own
20
20
  > when there is no DevRites feature workspace.
@@ -5,7 +5,7 @@ What `browser-evidence.md` must capture for a UI slice. Delegates to
5
5
 
6
6
  ```markdown
7
7
  ## Slice <N> — <name> (<date>)
8
- - Tooling: browser-harness | devtools-mcp | /run+/verify | <e2e> | manual
8
+ - Tooling: playwright-mcp | devtools-mcp | /run+/verify | <e2e> | manual
9
9
  - Route(s): <url(s) exercised>
10
10
  - Viewports: 375 / 768 / 1280 (note which were checked)
11
11
  - Screenshots: <path(s)> — described: <what is actually visible>
@@ -3,12 +3,14 @@
3
3
  Prefer real runtime evidence. For UI/browser work, try tools top-down and record which
4
4
  rung you used. Detect, don't install — browser tooling setup is the user's call.
5
5
 
6
- 1. **browser-harness** (preferred when installed & connected)
7
- - Detect: `command -v browser-harness`. Use its doctor/connection check only when
8
- safe. Capabilities: navigation, screenshots, coordinate clicks, console logs, DOM
9
- reads, network, raw CDP. Connects to the user's Chrome — don't launch a new browser.
10
- 2. **Chrome DevTools MCP** (if configured) — screenshots, DOM, console, network,
11
- performance, accessibility tree.
6
+ 1. **Playwright MCP** (preferred when configured)
7
+ - Detect: the Playwright MCP `browser_*` tools are available (e.g. `browser_navigate`).
8
+ Capabilities: navigation, accessibility-tree snapshots, screenshots, ref-based
9
+ clicks/typing, console messages, network requests, `browser_evaluate`. Drives a
10
+ Playwright-managed browser; detect, don't install.
11
+ 2. **Chrome DevTools MCP** (when configured — pairs with Playwright MCP for Lighthouse, the
12
+ perf trace, and deeper DOM) — screenshots, DOM, console, network, performance,
13
+ accessibility tree.
12
14
  3. **Claude Code `/run` and `/verify`** (if available) — launch and observe the app;
13
15
  prefer a project-specific run/verify skill if one exists.
14
16
  4. **Project-native E2E** (only if already present) — Playwright, Cypress, Capybara,
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "devrites",
3
- "version": "2.5.0",
3
+ "version": "2.5.2",
4
4
  "description": "DevRites — disciplined senior-engineer workflow skills pack for Claude Code",
5
5
  "license": "SEE LICENSE IN LICENSE",
6
6
  "homepage": "https://github.com/ViktorsBaikers/DevRites#readme",