jourilo 1.1.0 → 1.2.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/README.md +14 -15
- package/package.json +1 -1
- package/plugin/.claude-plugin/plugin.json +1 -1
- package/plugin/dist/jourilo.mjs +5543 -4610
- package/plugin/skills/jourilo/SKILL.md +4 -2
- package/plugin/skills/jourilo/references/cli.md +115 -7
- package/schemas/run.schema.json +551 -0
|
@@ -23,7 +23,7 @@ node "${CLAUDE_PLUGIN_ROOT}/dist/jourilo.mjs" <command> [options] --json
|
|
|
23
23
|
```
|
|
24
24
|
|
|
25
25
|
(Written below as `jourilo`.) Do not wrap it in shell variables, `cd`, `&&` chains or pipes: the plugin
|
|
26
|
-
pre-approves exactly that form. Output is JSON with `--json`;
|
|
26
|
+
pre-approves exactly that form. Output is JSON with `--json`; with `--json`, stderr is a stream of JSON lines (progress, then any error with a stable `code`).
|
|
27
27
|
Command reference: `${CLAUDE_PLUGIN_ROOT}/skills/jourilo/references/cli.md` — read it once per session.
|
|
28
28
|
Run data lives in `.jourilo/` in the current project (git-ignored automatically).
|
|
29
29
|
|
|
@@ -69,7 +69,9 @@ Tell the user which stage you are in. If they asked for one thing (e.g. "just ac
|
|
|
69
69
|
match the real goals (explicit success criteria), then `jourilo journeys run --base <url>`.
|
|
70
70
|
5. **Judge** — Look at the fold and full-page screenshots of key pages. Record design/usability judgments that
|
|
71
71
|
the rules cannot measure (hierarchy, clarity of the value proposition, confusing copy) with `finding add`,
|
|
72
|
-
each tied to a screenshot, labelled as yours.
|
|
72
|
+
each tied to a screenshot, labelled as yours. When a finding is a confirmed false positive, record it with
|
|
73
|
+
`jourilo finding dismiss <id> --run <run> --reason "<why>" --by agent`: the reason is required, a dismissed
|
|
74
|
+
finding is never counted as "fixed", and you dismiss only when the user agrees or the evidence is clear.
|
|
73
75
|
6. **Prioritize** — Group by root cause, not by symptom. Order: blocked journeys and critical/serious defects on key
|
|
74
76
|
journeys → serious accessibility defects → performance on key pages → conversion hypotheses.
|
|
75
77
|
7. **Fix (repository mode, with permission)** — `jourilo optimize <run> --repo <path>` previews deterministic fixes
|
|
@@ -4,9 +4,11 @@
|
|
|
4
4
|
|
|
5
5
|
Every command prints human-readable text, or JSON with `--json`. Errors go to stderr; with `--json` they are
|
|
6
6
|
`{"error":{"code","message","hint"}}` with a stable `code`. Exit codes: 0 ok, 1 failed gate or error, 2 usage,
|
|
7
|
-
3 blocked by a safety rule (unsafe URL/path, robots.txt, policy), 4 browser unavailable
|
|
7
|
+
3 blocked by a safety rule (unsafe URL/path, robots.txt, policy), 4 browser unavailable, 5 no page could be loaded,
|
|
8
|
+
6 stopped early by SIGINT/SIGTERM or `--max-duration` (a partial run is still written; a second signal exits 130).
|
|
8
9
|
|
|
9
|
-
Global options: `--json`, `--workspace DIR` (default `.jourilo`, or `JOURILO_WORKSPACE`), `--quiet`.
|
|
10
|
+
Global options: `--json`, `--workspace DIR` (default `.jourilo`, or `JOURILO_WORKSPACE`), `--quiet`. With `--json`,
|
|
11
|
+
progress lines on stderr are JSON too: `{"type":"progress","message":"…","at":"<ISO time>"}`.
|
|
10
12
|
|
|
11
13
|
## Understand
|
|
12
14
|
|
|
@@ -15,7 +17,14 @@ Global options: `--json`, `--workspace DIR` (default `.jourilo`, or `JOURILO_WOR
|
|
|
15
17
|
Product intelligence: map a repository (frameworks, routes, design system, i18n, auth, analytics) or a website (pages, conversion points, services).
|
|
16
18
|
|
|
17
19
|
```
|
|
18
|
-
jourilo discover <path|url> [--pages 10]
|
|
20
|
+
jourilo discover <path|url> [--pages 10] [--ignore-robots] [--allow-private]
|
|
21
|
+
```
|
|
22
|
+
|
|
23
|
+
```
|
|
24
|
+
Options:
|
|
25
|
+
--pages N Pages to read when mapping a website (default 10)
|
|
26
|
+
--ignore-robots Ignore robots.txt (only for sites you own or are authorized to test)
|
|
27
|
+
--allow-private Allow private-network hosts (10.x, 192.168.x, ...)
|
|
19
28
|
```
|
|
20
29
|
|
|
21
30
|
## Audit
|
|
@@ -36,10 +45,17 @@ Options:
|
|
|
36
45
|
--include PATH Add pages to discovery (repeatable)
|
|
37
46
|
--viewports LIST desktop, laptop, tablet, mobile, reflow (320px) or WIDTHxHEIGHT (default desktop,mobile)
|
|
38
47
|
--browser NAME chromium (default), firefox, webkit, chrome, msedge
|
|
48
|
+
--headed Show the browser window instead of running headless
|
|
49
|
+
--locale TAG Browser locale for every page (e.g. tr-TR); sets Accept-Language and navigator.language
|
|
50
|
+
--timeout SECS Per-page navigation timeout in seconds (default 30)
|
|
39
51
|
--throttle Simulate a mid-range phone network and 4x CPU slowdown (Chromium)
|
|
40
52
|
--runs N Visits per page and viewport for lab metrics; reports the median and range (default 1, max 9)
|
|
41
53
|
--no-keyboard Skip the keyboard-only walk
|
|
42
54
|
--auth FILE Playwright storage state for authenticated pages (see docs/PRIVACY.md)
|
|
55
|
+
--timezone ZONE IANA time zone for every page (e.g. Europe/Istanbul)
|
|
56
|
+
--clock ISO Freeze the page's Date at this date-time (e.g. 2026-11-03T22:30:00+03:00); timers keep running
|
|
57
|
+
--setup-journey REF Run this journey first (an id or a .json file) and audit the state it leaves, e.g. a chosen theme or
|
|
58
|
+
a dismissed banner; it follows the journeys safety policy and starts from --auth
|
|
43
59
|
--mask SELECTOR Extra elements to black out in screenshots (repeatable)
|
|
44
60
|
--repo PATH Map findings to likely source files in this repository (and read its brand/search context)
|
|
45
61
|
--brand SLUG Markilo brand to check design consistency against (default: master brand)
|
|
@@ -49,9 +65,14 @@ Options:
|
|
|
49
65
|
(by default, on local hosts, an empty submission is simulated: nothing that sends data
|
|
50
66
|
leaves the browser, so no database is written; server-side feedback is reported as untested)
|
|
51
67
|
--allow-submit Really send empty submissions to test server-side validation, on local or other hosts
|
|
52
|
-
(disposable/test environments you are authorized to use only; never to delete/payment URLs)
|
|
68
|
+
(disposable/test environments you are authorized to use only; never to delete/payment URLs);
|
|
69
|
+
also lets a --setup-journey submit forms
|
|
53
70
|
--sarif Also write report.sarif for code scanning
|
|
54
71
|
--fail-on SEVERITY Exit 1 if a defect at or above this severity exists (CI gate)
|
|
72
|
+
--evidence MODE full (default) or minimal: keep first screens and only the full-page screenshots findings need; JPEG quality 55
|
|
73
|
+
--run-id ID Use this run id instead of a generated one (1-64 of A-Z a-z 0-9 _ -); refused if the run exists
|
|
74
|
+
--max-duration SECS Stop after this many seconds and write a partial run (exit 6), as SIGINT/SIGTERM do;
|
|
75
|
+
a second signal quits at once (exit 130)
|
|
55
76
|
```
|
|
56
77
|
|
|
57
78
|
### `jourilo accessibility`
|
|
@@ -70,10 +91,17 @@ Options:
|
|
|
70
91
|
--include PATH Add pages to discovery (repeatable)
|
|
71
92
|
--viewports LIST desktop, laptop, tablet, mobile, reflow (320px) or WIDTHxHEIGHT (default desktop,mobile)
|
|
72
93
|
--browser NAME chromium (default), firefox, webkit, chrome, msedge
|
|
94
|
+
--headed Show the browser window instead of running headless
|
|
95
|
+
--locale TAG Browser locale for every page (e.g. tr-TR); sets Accept-Language and navigator.language
|
|
96
|
+
--timeout SECS Per-page navigation timeout in seconds (default 30)
|
|
73
97
|
--throttle Simulate a mid-range phone network and 4x CPU slowdown (Chromium)
|
|
74
98
|
--runs N Visits per page and viewport for lab metrics; reports the median and range (default 1, max 9)
|
|
75
99
|
--no-keyboard Skip the keyboard-only walk
|
|
76
100
|
--auth FILE Playwright storage state for authenticated pages (see docs/PRIVACY.md)
|
|
101
|
+
--timezone ZONE IANA time zone for every page (e.g. Europe/Istanbul)
|
|
102
|
+
--clock ISO Freeze the page's Date at this date-time (e.g. 2026-11-03T22:30:00+03:00); timers keep running
|
|
103
|
+
--setup-journey REF Run this journey first (an id or a .json file) and audit the state it leaves, e.g. a chosen theme or
|
|
104
|
+
a dismissed banner; it follows the journeys safety policy and starts from --auth
|
|
77
105
|
--mask SELECTOR Extra elements to black out in screenshots (repeatable)
|
|
78
106
|
--repo PATH Map findings to likely source files in this repository (and read its brand/search context)
|
|
79
107
|
--brand SLUG Markilo brand to check design consistency against (default: master brand)
|
|
@@ -83,9 +111,14 @@ Options:
|
|
|
83
111
|
(by default, on local hosts, an empty submission is simulated: nothing that sends data
|
|
84
112
|
leaves the browser, so no database is written; server-side feedback is reported as untested)
|
|
85
113
|
--allow-submit Really send empty submissions to test server-side validation, on local or other hosts
|
|
86
|
-
(disposable/test environments you are authorized to use only; never to delete/payment URLs)
|
|
114
|
+
(disposable/test environments you are authorized to use only; never to delete/payment URLs);
|
|
115
|
+
also lets a --setup-journey submit forms
|
|
87
116
|
--sarif Also write report.sarif for code scanning
|
|
88
117
|
--fail-on SEVERITY Exit 1 if a defect at or above this severity exists (CI gate)
|
|
118
|
+
--evidence MODE full (default) or minimal: keep first screens and only the full-page screenshots findings need; JPEG quality 55
|
|
119
|
+
--run-id ID Use this run id instead of a generated one (1-64 of A-Z a-z 0-9 _ -); refused if the run exists
|
|
120
|
+
--max-duration SECS Stop after this many seconds and write a partial run (exit 6), as SIGINT/SIGTERM do;
|
|
121
|
+
a second signal quits at once (exit 130)
|
|
89
122
|
```
|
|
90
123
|
|
|
91
124
|
### `jourilo conversion`
|
|
@@ -104,10 +137,17 @@ Options:
|
|
|
104
137
|
--include PATH Add pages to discovery (repeatable)
|
|
105
138
|
--viewports LIST desktop, laptop, tablet, mobile, reflow (320px) or WIDTHxHEIGHT (default desktop,mobile)
|
|
106
139
|
--browser NAME chromium (default), firefox, webkit, chrome, msedge
|
|
140
|
+
--headed Show the browser window instead of running headless
|
|
141
|
+
--locale TAG Browser locale for every page (e.g. tr-TR); sets Accept-Language and navigator.language
|
|
142
|
+
--timeout SECS Per-page navigation timeout in seconds (default 30)
|
|
107
143
|
--throttle Simulate a mid-range phone network and 4x CPU slowdown (Chromium)
|
|
108
144
|
--runs N Visits per page and viewport for lab metrics; reports the median and range (default 1, max 9)
|
|
109
145
|
--no-keyboard Skip the keyboard-only walk
|
|
110
146
|
--auth FILE Playwright storage state for authenticated pages (see docs/PRIVACY.md)
|
|
147
|
+
--timezone ZONE IANA time zone for every page (e.g. Europe/Istanbul)
|
|
148
|
+
--clock ISO Freeze the page's Date at this date-time (e.g. 2026-11-03T22:30:00+03:00); timers keep running
|
|
149
|
+
--setup-journey REF Run this journey first (an id or a .json file) and audit the state it leaves, e.g. a chosen theme or
|
|
150
|
+
a dismissed banner; it follows the journeys safety policy and starts from --auth
|
|
111
151
|
--mask SELECTOR Extra elements to black out in screenshots (repeatable)
|
|
112
152
|
--repo PATH Map findings to likely source files in this repository (and read its brand/search context)
|
|
113
153
|
--brand SLUG Markilo brand to check design consistency against (default: master brand)
|
|
@@ -117,9 +157,14 @@ Options:
|
|
|
117
157
|
(by default, on local hosts, an empty submission is simulated: nothing that sends data
|
|
118
158
|
leaves the browser, so no database is written; server-side feedback is reported as untested)
|
|
119
159
|
--allow-submit Really send empty submissions to test server-side validation, on local or other hosts
|
|
120
|
-
(disposable/test environments you are authorized to use only; never to delete/payment URLs)
|
|
160
|
+
(disposable/test environments you are authorized to use only; never to delete/payment URLs);
|
|
161
|
+
also lets a --setup-journey submit forms
|
|
121
162
|
--sarif Also write report.sarif for code scanning
|
|
122
163
|
--fail-on SEVERITY Exit 1 if a defect at or above this severity exists (CI gate)
|
|
164
|
+
--evidence MODE full (default) or minimal: keep first screens and only the full-page screenshots findings need; JPEG quality 55
|
|
165
|
+
--run-id ID Use this run id instead of a generated one (1-64 of A-Z a-z 0-9 _ -); refused if the run exists
|
|
166
|
+
--max-duration SECS Stop after this many seconds and write a partial run (exit 6), as SIGINT/SIGTERM do;
|
|
167
|
+
a second signal quits at once (exit 130)
|
|
123
168
|
```
|
|
124
169
|
|
|
125
170
|
## Journeys
|
|
@@ -139,7 +184,17 @@ Subcommands:
|
|
|
139
184
|
validate [files] Check journey files against the schema
|
|
140
185
|
run [ids|files] Run journeys against --base <url|dir>
|
|
141
186
|
|
|
187
|
+
Suggest options:
|
|
188
|
+
--pages N Pages to read when deriving journeys from a site (default 8)
|
|
189
|
+
--force Overwrite journey files that already exist (by default existing files are kept)
|
|
190
|
+
--allow-private Allow private-network hosts (10.x, 192.168.x, ...)
|
|
191
|
+
|
|
142
192
|
Run options:
|
|
193
|
+
--base URL|DIR The site or static build to run against (required)
|
|
194
|
+
--browser NAME chromium (default), firefox, webkit, chrome, msedge
|
|
195
|
+
--headed Show the browser window instead of running headless
|
|
196
|
+
--timeout SECS Per-step timeout in seconds (default 10)
|
|
197
|
+
--repo PATH Map failed steps to likely source files in this repository (a directory --base implies it)
|
|
143
198
|
--viewport LIST desktop, mobile, … (default: the journey's own viewport or desktop)
|
|
144
199
|
--var key=value Test data for {{key}} placeholders (also JOURILO_VAR_KEY env vars)
|
|
145
200
|
--allow-submit Allow form submission on non-local hosts (authorized test environments only)
|
|
@@ -148,7 +203,11 @@ Run options:
|
|
|
148
203
|
--trace Record a Playwright trace per journey (contains typed values; keep private)
|
|
149
204
|
--auth FILE Playwright storage state for signed-in journeys
|
|
150
205
|
--save-auth FILE After a passing sign-in journey (exactly one), save its session for --auth (test accounts only)
|
|
206
|
+
--timezone ZONE IANA time zone for the page (e.g. Europe/Istanbul)
|
|
207
|
+
--clock ISO Freeze the page's Date at this date-time (e.g. 2026-11-03T22:30:00+03:00); timers keep running
|
|
208
|
+
--evidence MODE full (default) or minimal: keep only the screenshots of the failed step, the step before it and the last step
|
|
151
209
|
--repeat N Run each journey N times (max 10); mixed outcomes are reported as flaky
|
|
210
|
+
--allow-private Allow private-network hosts (10.x, 192.168.x, ...)
|
|
152
211
|
--fail-on-failure Exit 1 when a journey fails
|
|
153
212
|
|
|
154
213
|
Safety: payment, purchase, delete and cancel actions are never performed on non-local hosts; form submission
|
|
@@ -191,6 +250,11 @@ jourilo optimize [run=latest] --repo <path> [--rule id ...] [--apply]
|
|
|
191
250
|
Deterministic fixers (others are reported with source candidates for a person or agent to fix):
|
|
192
251
|
axe/html-has-lang, jourilo/missing-viewport-meta, jourilo/input-purpose, jourilo/focus-visible, jourilo/paste-blocked,
|
|
193
252
|
jourilo/unsized-images, jourilo/placeholder-label
|
|
253
|
+
Options:
|
|
254
|
+
--repo PATH Repository to fix (default: the run's repo, else the current directory)
|
|
255
|
+
--rule ID Only fix findings of this rule (repeatable)
|
|
256
|
+
--finding ID Only fix this finding, by fingerprint (repeatable)
|
|
257
|
+
--apply Write the changes
|
|
194
258
|
Without --apply nothing is written. With --apply, all files are written as one change: each file must be unchanged
|
|
195
259
|
since the plan, writes are atomic, an interrupted apply is undone, and `jourilo rollback <id>` restores the files
|
|
196
260
|
(git is not required).
|
|
@@ -205,6 +269,13 @@ Repeat a run with the same scope (pages, viewports) after a change and compare:
|
|
|
205
269
|
jourilo verify <baseline-run> [--target url|dir] [--fail-on-regression]
|
|
206
270
|
```
|
|
207
271
|
|
|
272
|
+
```
|
|
273
|
+
Options:
|
|
274
|
+
--target URL|DIR Where to repeat the audit (default: the baseline run's target)
|
|
275
|
+
--repo PATH Repository for source mapping (default: the baseline run's repo)
|
|
276
|
+
--fail-on-regression Exit 1 when new serious or critical defects appear
|
|
277
|
+
```
|
|
278
|
+
|
|
208
279
|
### `jourilo checkpoint`
|
|
209
280
|
|
|
210
281
|
Record a git checkpoint of the working tree (no commits, branches or stash entries are created).
|
|
@@ -240,6 +311,13 @@ Re-render the report for a run (html, markdown, sarif or json) — default: late
|
|
|
240
311
|
jourilo report [run-id|latest|path] [--format html|md|sarif|json] [--baseline run-id]
|
|
241
312
|
```
|
|
242
313
|
|
|
314
|
+
```
|
|
315
|
+
Options:
|
|
316
|
+
--format FMT html (default), md, sarif or json; sarif and json print to stdout
|
|
317
|
+
--baseline RUN Include a comparison with this earlier run
|
|
318
|
+
--stdout With --format md, print the Markdown instead of only writing the file
|
|
319
|
+
```
|
|
320
|
+
|
|
243
321
|
### `jourilo compare`
|
|
244
322
|
|
|
245
323
|
Compare two runs (before/after): fixed, new and persisting findings plus lab metric deltas.
|
|
@@ -261,7 +339,37 @@ jourilo runs
|
|
|
261
339
|
Add a judgment (AI inference or user input) to a run, tied to evidence in that run; never mixed with measurements.
|
|
262
340
|
|
|
263
341
|
```
|
|
264
|
-
jourilo finding add --run <id> --title … --category usability --description … --evidence screenshots/x.jpg [--by agent|user]
|
|
342
|
+
jourilo finding add --run <id> --title … --category usability --description … --evidence screenshots/x.jpg [--by agent|user] | finding dismiss <id> --run <run> --reason "<text>" [--by user|agent] | finding undismiss <id> [--run <run>]
|
|
343
|
+
```
|
|
344
|
+
|
|
345
|
+
```
|
|
346
|
+
Subcommands:
|
|
347
|
+
add Record a judgment tied to evidence in a run
|
|
348
|
+
dismiss <id> Mark a finding as not a problem; it is kept out of later runs and listed as dismissed
|
|
349
|
+
undismiss <id> Remove a dismissal; the next run reports the finding again
|
|
350
|
+
|
|
351
|
+
add options:
|
|
352
|
+
--run ID Run to add to (default latest)
|
|
353
|
+
--title TEXT Short title (required)
|
|
354
|
+
--category NAME accessibility, usability, responsive, performance, conversion, reliability, content or design-system (required)
|
|
355
|
+
--description TEXT What is wrong and why it matters (required)
|
|
356
|
+
--evidence FILE Screenshot or file inside the run, e.g. screenshots/home-desktop.jpg (required, repeatable)
|
|
357
|
+
--kind KIND defect, hypothesis or needs-review (default: hypothesis for conversion, else needs-review)
|
|
358
|
+
--severity LEVEL critical, serious, moderate, minor or info (default minor)
|
|
359
|
+
--confidence LEVEL low, medium or high (AI judgments are capped at medium)
|
|
360
|
+
--impact TEXT Who is affected and how
|
|
361
|
+
--recommendation TEXT What to change
|
|
362
|
+
--url URL Page the finding is about (default: the run's first page)
|
|
363
|
+
--viewport NAME Viewport the finding was seen in (e.g. desktop, mobile)
|
|
364
|
+
--by WHO agent (default) or user
|
|
365
|
+
|
|
366
|
+
dismiss options:
|
|
367
|
+
--run ID Run to apply it to now (default latest)
|
|
368
|
+
--reason TEXT Why this is not a problem (required)
|
|
369
|
+
--by WHO user (default) or agent
|
|
370
|
+
|
|
371
|
+
undismiss options:
|
|
372
|
+
--run ID Also bring the finding back into this run
|
|
265
373
|
```
|
|
266
374
|
|
|
267
375
|
## System
|