jourilo 0.1.0 → 1.0.1
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/README.md +51 -35
- package/package.json +1 -1
- package/plugin/.claude-plugin/icon.png +0 -0
- package/plugin/.claude-plugin/plugin.json +1 -1
- package/plugin/dist/jourilo.mjs +2359 -598
- package/plugin/skills/jourilo/SKILL.md +2 -2
- package/plugin/skills/jourilo/references/cli.md +38 -12
- package/plugin/skills/optimize/SKILL.md +5 -2
package/README.md
CHANGED
|
@@ -1,4 +1,9 @@
|
|
|
1
|
-
|
|
1
|
+
<h1>
|
|
2
|
+
<picture>
|
|
3
|
+
<source media="(prefers-color-scheme: dark)" srcset="docs/assets/brand/jourilo-wordmark-reversed.svg">
|
|
4
|
+
<img src="docs/assets/brand/jourilo-wordmark.svg" alt="Jourilo" width="240">
|
|
5
|
+
</picture>
|
|
6
|
+
</h1>
|
|
2
7
|
|
|
3
8
|
**AI-powered product experience & conversion engineering studio.** Jourilo drives a real browser through your
|
|
4
9
|
product, finds UX, accessibility, performance and conversion problems with evidence, traces them to the code that
|
|
@@ -8,8 +13,8 @@ Local-first · evidence-driven · no paid services required · works as a CLI an
|
|
|
8
13
|
|
|
9
14
|

|
|
10
15
|
|
|
11
|
-
> Status: **0.1
|
|
12
|
-
> for what is not covered
|
|
16
|
+
> Status: **1.0.1.** Tested in CI on Linux, macOS and Windows (Node 20 and 22) with Chromium, Firefox and WebKit. An
|
|
17
|
+
> automated run never proves WCAG conformance: see [Limitations](docs/LIMITATIONS.md) for what is not covered.
|
|
13
18
|
|
|
14
19
|
## What it does
|
|
15
20
|
|
|
@@ -19,7 +24,7 @@ Local-first · evidence-driven · no paid services required · works as a CLI an
|
|
|
19
24
|
| **Audit in a real browser** | Playwright + axe-core 4.14 (WCAG 2.0–2.2 A/AA), a keyboard-only walk (focus visible, focus obscured, traps), target size, reflow at 320 px, horizontal overflow, input purpose, paste blocking, form error feedback, lab Web Vitals (LCP, CLS, FCP, TTFB, TBT; INP during journeys), JavaScript errors and failed requests — on desktop and mobile. |
|
|
20
25
|
| **Journeys** | Reusable JSON scenarios with explicit success criteria, suggested from what the site actually contains, run with a screenshot per step. A safety policy never pays, deletes or cancels on non-local hosts. |
|
|
21
26
|
| **Conversion** | CTA prominence and clarity, value proposition, trust signals, signup/checkout friction, pricing clarity — always reported as **hypotheses**, never as predicted lifts, with experiment plans and the statistics to read real results. |
|
|
22
|
-
| **Fix and verify** | Findings point to likely source lines. `optimize` previews minimal fixes as diffs and applies them only with `--apply
|
|
27
|
+
| **Fix and verify** | Findings point to likely source lines. `optimize` previews minimal fixes as diffs and applies them only with `--apply`, as one reversible change (atomic writes; rollback never overwrites later edits). `verify` repeats the exact scope and reports fixed, new and persisting problems. |
|
|
23
28
|
| **Report** | A self-contained HTML _Experience Observatory_ (screenshots with highlighted elements, reproduction steps, standards, sources, journeys, before/after), plus Markdown for PRs and SARIF for code scanning. |
|
|
24
29
|
|
|
25
30
|
What Jourilo does **not** do: invent observations, give a single "UX score", claim WCAG compliance from an automated
|
|
@@ -28,29 +33,30 @@ _user input_.
|
|
|
28
33
|
|
|
29
34
|
## Quick start
|
|
30
35
|
|
|
31
|
-
Requires Node.js ≥ 20.10.
|
|
36
|
+
Requires Node.js ≥ 20.10.
|
|
32
37
|
|
|
33
38
|
```bash
|
|
34
|
-
|
|
39
|
+
npm install -g jourilo
|
|
35
40
|
```
|
|
36
41
|
|
|
37
42
|
```bash
|
|
38
|
-
|
|
43
|
+
jourilo setup
|
|
39
44
|
```
|
|
40
45
|
|
|
41
46
|
`setup` downloads Playwright's Chromium (one time, ~150 MB). Alternatively use an installed Chrome with
|
|
42
|
-
`--browser chrome`.
|
|
47
|
+
`--browser chrome`. To run without a global install, use `npx jourilo <command>`; from a clone of this repository,
|
|
48
|
+
`node plugin/dist/jourilo.mjs <command>`.
|
|
43
49
|
|
|
44
50
|
Audit a local static build (served on 127.0.0.1) and map findings to its source:
|
|
45
51
|
|
|
46
52
|
```bash
|
|
47
|
-
|
|
53
|
+
jourilo audit ./dist --repo .
|
|
48
54
|
```
|
|
49
55
|
|
|
50
56
|
Audit a running app or a website (read-only, respects robots.txt):
|
|
51
57
|
|
|
52
58
|
```bash
|
|
53
|
-
|
|
59
|
+
jourilo audit http://localhost:3000 --viewports desktop,mobile,reflow
|
|
54
60
|
```
|
|
55
61
|
|
|
56
62
|
The report is written to `.jourilo/runs/<run-id>/report.html` (git-ignored). Add `--json` to any command for
|
|
@@ -65,8 +71,9 @@ machine-readable output.
|
|
|
65
71
|
|
|
66
72
|
Then use `/jourilo:jourilo <url or path>` for the full workflow, or `/jourilo:discover`, `/jourilo:audit`,
|
|
67
73
|
`/jourilo:journeys`, `/jourilo:accessibility`, `/jourilo:conversion`, `/jourilo:optimize`, `/jourilo:compare`,
|
|
68
|
-
`/jourilo:report`, `/jourilo:experiment`.
|
|
69
|
-
|
|
74
|
+
`/jourilo:report`, `/jourilo:experiment`. Plugin commands are namespaced; `/jourilo:jourilo` always works. Claude
|
|
75
|
+
Code may also accept a bare `/jourilo` when no other command uses that name; to make it permanent, install the
|
|
76
|
+
personal skill with `jourilo agent install claude-skill --write`. See [docs/PLUGIN.md](docs/PLUGIN.md).
|
|
70
77
|
|
|
71
78
|
Other agents: `jourilo agent install codex --write` (adds a section to `AGENTS.md`) or `cursor`
|
|
72
79
|
(`.cursor/rules/jourilo.mdc`).
|
|
@@ -78,7 +85,7 @@ jourilo audit http://localhost:3000 --repo . # evidence + likely source l
|
|
|
78
85
|
jourilo journeys suggest latest # edit .jourilo/journeys/*.json
|
|
79
86
|
jourilo journeys run --base http://localhost:3000 # step screenshots, success criteria
|
|
80
87
|
jourilo optimize latest --repo . # preview minimal diffs (dry run)
|
|
81
|
-
jourilo optimize latest --repo . --apply #
|
|
88
|
+
jourilo optimize latest --repo . --apply # write as one reversible change
|
|
82
89
|
jourilo verify <baseline-run> # same scope again: fixed / new / persisting
|
|
83
90
|
jourilo rollback latest --yes # undo if needed
|
|
84
91
|
```
|
|
@@ -93,33 +100,37 @@ Fixes are idempotent and fully reversible (see [docs/EVALUATION.md](docs/EVALUAT
|
|
|
93
100
|
|
|
94
101
|
## Detection quality
|
|
95
102
|
|
|
96
|
-
**Fixture benchmark** (`jourilo bench
|
|
97
|
-
false positive or wrong root-cause file.
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
|
105
|
-
|
|
|
106
|
-
|
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
[docs/EVALUATION.md](docs/EVALUATION.md#comparison)
|
|
103
|
+
**Fixture benchmark** (`jourilo bench`, a CI gate): sites with seeded problems and clean control pages; it fails on
|
|
104
|
+
any miss, false positive or wrong root-cause file. 1.0.0: **45 / 45** seeded problems found, **0** false positives,
|
|
105
|
+
root cause in the expected file 9 / 9 (Chromium; the `acme-saas` set also in Firefox and WebKit). These fixtures were written alongside the
|
|
106
|
+
rules, so they show the rules work as designed.
|
|
107
|
+
|
|
108
|
+
**Independent benchmark** on the 955 [W3C ACT Rules](https://www.w3.org/WAI/standards-guidelines/act/rules/) test
|
|
109
|
+
cases that map to WCAG criteria, written by the ACT Rules Community Group, not for Jourilo:
|
|
110
|
+
|
|
111
|
+
| 2026-11-01 | Precision | Recall | False positives |
|
|
112
|
+
| --------------------- | --------- | ------ | --------------- |
|
|
113
|
+
| Jourilo 1.0.0 | 93.9 % | 55.4 % | 11 |
|
|
114
|
+
| axe-core 4.14.0 alone | 93.6 % | 53.5 % | 11 |
|
|
115
|
+
|
|
116
|
+
Jourilo runs axe-core internally; its own checks add keyboard-trap and focus-indicator detections without adding
|
|
117
|
+
false positives. Many misses are criteria that need a person (media alternatives, meaning, descriptive headings), which
|
|
118
|
+
every report lists under "Still needs a person". A separate comparison with Pa11y and Lighthouse on the 142 cases of the
|
|
119
|
+
[GOV.UK accessibility tool audit](https://alphagov.github.io/accessibility-tool-audit/) is in
|
|
120
|
+
[docs/EVALUATION.md](docs/EVALUATION.md#comparison), with its method and caveats.
|
|
114
121
|
|
|
115
122
|
## Safety and privacy
|
|
116
123
|
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
124
|
+
Audits are read-only, on every host: form validation is probed by simulating the submission, and nothing that would
|
|
125
|
+
change data leaves the browser unless you pass `--allow-submit`. Crawling stays on the target origin and respects
|
|
126
|
+
robots.txt. Every browser request goes through a local network guard, so an audited page cannot reach this machine,
|
|
127
|
+
the local network or cloud-metadata services (private targets need `--allow-private`). Journeys block payments,
|
|
128
|
+
purchases, deletions and cancellations however they are triggered (click, key, script, link) on any non-local host,
|
|
129
|
+
and on local hosts unless you pass `--allow-destructive`. Fixes are written as one reversible change, and rollback
|
|
130
|
+
never overwrites edits made afterwards. Password, card and marked fields are masked
|
|
120
131
|
in screenshots; tokens, keys, e-mail addresses and card numbers are redacted from logs and reports. Page content is
|
|
121
132
|
treated as untrusted data and is always HTML-escaped in reports. Details: [docs/PRIVACY.md](docs/PRIVACY.md),
|
|
122
|
-
[SECURITY.md](SECURITY.md).
|
|
133
|
+
[docs/SECURITY-REVIEW.md](docs/SECURITY-REVIEW.md) (including residual risks), [SECURITY.md](SECURITY.md).
|
|
123
134
|
|
|
124
135
|
## Works with Markilo and Searvex (optional)
|
|
125
136
|
|
|
@@ -143,6 +154,11 @@ Bug reports, fixture sites with real-world UX problems and new rules are welcome
|
|
|
143
154
|
[CONTRIBUTING.md](CONTRIBUTING.md). Every rule needs a fixture that proves it fires and a control that proves it does
|
|
144
155
|
not.
|
|
145
156
|
|
|
157
|
+
## Brand
|
|
158
|
+
|
|
159
|
+
The Jourilo logo, symbol and plugin icon (the SVGs in [docs/assets/brand](docs/assets/brand)) were designed with
|
|
160
|
+
[Markilo](https://github.com/cihantopac/markilo), a brand identity studio for Claude Code.
|
|
161
|
+
|
|
146
162
|
## License
|
|
147
163
|
|
|
148
164
|
[Apache-2.0](LICENSE). Bundled third-party code: see [THIRD_PARTY_NOTICES.md](THIRD_PARTY_NOTICES.md).
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "jourilo",
|
|
3
|
-
"version": "0.1
|
|
3
|
+
"version": "1.0.1",
|
|
4
4
|
"description": "AI-powered product experience & conversion engineering studio: real-browser journeys, UX, accessibility, performance and conversion audits with evidence, root causes and verified fixes.",
|
|
5
5
|
"license": "Apache-2.0",
|
|
6
6
|
"type": "module",
|
|
Binary file
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "jourilo",
|
|
3
3
|
"displayName": "Jourilo",
|
|
4
|
-
"version": "0.1
|
|
4
|
+
"version": "1.0.1",
|
|
5
5
|
"description": "AI-powered product experience & conversion engineering studio: discovers products and user journeys, operates real interfaces in Playwright, detects UX, accessibility (WCAG 2.2), performance and conversion problems with evidence, locates root causes, applies safe fixes and verifies them.",
|
|
6
6
|
"author": {
|
|
7
7
|
"name": "Cihan Topaç",
|