jourilo 0.1.0 → 1.1.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.
@@ -18,3 +18,4 @@ Toolchain: `node "${CLAUDE_PLUGIN_ROOT}/dist/jourilo.mjs" <command> … --json`
18
18
  3. Be explicit that automated checks cover only part of WCAG 2.2: list the `needs-review` items and the criteria
19
19
  in `limitations` that require a person (e.g. 1.3.3, 2.5.7, 3.2.6, 3.3.7, 3.3.8 beyond paste, screen-reader
20
20
  announcements). Never call a site "WCAG compliant" from an automated run.
21
+ 4. Answer in the short format of `${CLAUDE_PLUGIN_ROOT}/skills/jourilo/SKILL.md` → Answer format (80–150 words, report path, one next step). Name criteria by number (e.g. 1.4.3) in the priorities.
@@ -18,6 +18,6 @@ Toolchain: `node "${CLAUDE_PLUGIN_ROOT}/dist/jourilo.mjs" <command> … --json`
18
18
  Useful options: `--pages N`, `--viewports desktop,mobile,reflow`, `--throttle`, `--url /path` (exact pages).
19
19
  3. Read `summary`, `findings` and `limitations`. Open the screenshots behind the most severe findings with Read
20
20
  and confirm they show what the finding says. If a finding looks wrong, say so — do not repeat it blindly.
21
- 4. Answer with: the 3–7 most important problems grouped by root cause (severity, page, viewport, evidence, likely
22
- source file), conversion hypotheses kept separate as untested ideas, what could not be checked (limitations,
23
- manual review items), and the report path. Offer fixes (`/jourilo:optimize`) or journeys (`/jourilo:journeys`).
21
+ 4. Answer in the short format of `${CLAUDE_PLUGIN_ROOT}/skills/jourilo/SKILL.md` → Answer format (80–150 words, report path, one next step).
22
+ Group by root cause, keep conversion hypotheses apart from defects, and name the biggest limitation in one line.
23
+ Offer fixes (`/jourilo:optimize`) or journeys (`/jourilo:journeys`) as the next step.
@@ -15,3 +15,4 @@ Toolchain: `node "${CLAUDE_PLUGIN_ROOT}/dist/jourilo.mjs" <command> … --json`
15
15
  1. `jourilo runs --json` to find run ids if needed, then `jourilo compare <baseline> [head] --json`.
16
16
  2. Report fixed, new (regressions first) and persisting findings with pages and severities, and metric deltas.
17
17
  Single lab visits are noisy: treat small metric changes as noise unless repeated runs agree.
18
+ 3. Answer in the short format of `${CLAUDE_PLUGIN_ROOT}/skills/jourilo/SKILL.md` → Answer format (80–150 words, report path, one next step). Lead with regressions, then fixed and still-present counts; the report's Before / after tab shows them.
@@ -20,3 +20,4 @@ Toolchain: `node "${CLAUDE_PLUGIN_ROOT}/dist/jourilo.mjs" <command> … --json`
20
20
  3. Present: (a) usability defects blocking the funnel — fix first; (b) hypotheses ranked by how directly they sit on
21
21
  the key journey, each with the metric that would test it. No predicted lifts, ever.
22
22
  4. Offer `jourilo experiment plan --finding <id>` (ask for the baseline rate and daily traffic; do not guess them).
23
+ 5. Answer in the short format of `${CLAUDE_PLUGIN_ROOT}/skills/jourilo/SKILL.md` → Answer format (80–150 words, report path, one next step).
@@ -73,16 +73,37 @@ Tell the user which stage you are in. If they asked for one thing (e.g. "just ac
73
73
  6. **Prioritize** — Group by root cause, not by symptom. Order: blocked journeys and critical/serious defects on key
74
74
  journeys → serious accessibility defects → performance on key pages → conversion hypotheses.
75
75
  7. **Fix (repository mode, with permission)** — `jourilo optimize <run> --repo <path>` previews deterministic fixes
76
- as diffs; apply with `--apply` after the user agrees (a git checkpoint is created). For other defects, use each
76
+ as diffs; apply with `--apply` after the user agrees (one reversible change; its id is printed). For other defects, use each
77
77
  finding's `sources` candidates, read the code, make the minimal edit yourself, and explain it with a diff.
78
78
  Run the project's own lint/tests after editing.
79
79
  8. **Verify** — `jourilo verify <baseline-run>`; rerun journeys. Report fixed / new / persisting with evidence. If
80
- something regressed, fix it or `jourilo rollback <checkpoint> --yes` (with permission).
81
- 9. **Report** — Give the report path (`.jourilo/runs/<id>/report.html`), a short prioritized summary, the
82
- limitations of the run, and next steps. Offer `jourilo experiment plan --finding <id>` for hypotheses.
83
-
84
- ## Good answers look like
85
-
86
- - "Signup fails on mobile: the submit button is covered by the cookie banner (journey `signup-signup`, step 9,
87
- screenshot …). Cause: `CookieBanner.tsx:12` sets `position: fixed` with no inset. Fix: … Verified: journey passes."
88
- - Not: "Your site has some accessibility issues and could convert better."
80
+ something regressed, fix it or `jourilo rollback <id> --yes` (with permission; it never overwrites later edits).
81
+ 9. **Report** — Answer in the short format below. Offer `jourilo experiment plan --finding <id>` for hypotheses.
82
+
83
+ ## Answer format
84
+
85
+ The evidence lives in the report; the chat answer is a short brief of **80–150 words** in the user's language,
86
+ unless they ask for more. Never paste the finding list into chat.
87
+
88
+ 1. **Target** — the project or website and what ran (pages × viewports, journeys).
89
+ 2. **Blocked and broken** — blocked journeys first, then the key verified defects (page, severity, evidence).
90
+ 3. **Three priorities** — numbered, one per root cause (file:line when known), not per symptom.
91
+ 4. **Fixes** — how many are automatic (`jourilo optimize` previews them), agent-assisted, or need a person;
92
+ conversion hypotheses are experiment briefs, never fixes or promised lifts.
93
+ 5. **Report** — the real `report.html` path from the command's JSON (`reports.html` / `report`), and how to open it
94
+ (`open <path>` on macOS, `xdg-open` on Linux, `start` on Windows, or any browser). It works offline, in English
95
+ or Turkish, light or dark, and turns selected findings into a repair prompt.
96
+ 6. **Next** — one recommended action, as an offer.
97
+
98
+ Example (about 90 words):
99
+
100
+ > **acme.dev** — 7 pages × desktop/mobile, 4 journeys.
101
+ > **Blocked:** signup fails on mobile: the submit button sits under the cookie banner (journey `signup`, step 9).
102
+ > 25 verified defects (1 critical) from 19 root causes.
103
+ > **Priorities:** 1) covered submit button (`CookieBanner.tsx:12`); 2) hero image without alt text (critical);
104
+ > 3) focus outline removed in `style.css:14` (6 pages).
105
+ > **Fixes:** 7 automatic, 11 agent-assisted, 1 needs a person; 6 conversion ideas are experiment briefs.
106
+ > **Report:** `.jourilo/runs/20261101-144012-5d4952/report.html` — `open` it in a browser.
107
+ > **Next:** shall I preview the automatic fixes?
108
+
109
+ Not: "Your site has some accessibility issues and could convert better."
@@ -45,8 +45,11 @@ Options:
45
45
  --brand SLUG Markilo brand to check design consistency against (default: master brand)
46
46
  --ignore-robots Ignore robots.txt (only for sites you own or are authorized to test)
47
47
  --allow-private Allow private-network hosts (10.x, 192.168.x, ...)
48
- --no-forms Do not submit forms (by default, forms on local hosts are submitted empty to test validation)
49
- --allow-submit Allow submitting forms on non-local hosts (authorized test environments only)
48
+ --no-forms Skip the form validation probe
49
+ (by default, on local hosts, an empty submission is simulated: nothing that sends data
50
+ leaves the browser, so no database is written; server-side feedback is reported as untested)
51
+ --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)
50
53
  --sarif Also write report.sarif for code scanning
51
54
  --fail-on SEVERITY Exit 1 if a defect at or above this severity exists (CI gate)
52
55
  ```
@@ -76,8 +79,11 @@ Options:
76
79
  --brand SLUG Markilo brand to check design consistency against (default: master brand)
77
80
  --ignore-robots Ignore robots.txt (only for sites you own or are authorized to test)
78
81
  --allow-private Allow private-network hosts (10.x, 192.168.x, ...)
79
- --no-forms Do not submit forms (by default, forms on local hosts are submitted empty to test validation)
80
- --allow-submit Allow submitting forms on non-local hosts (authorized test environments only)
82
+ --no-forms Skip the form validation probe
83
+ (by default, on local hosts, an empty submission is simulated: nothing that sends data
84
+ leaves the browser, so no database is written; server-side feedback is reported as untested)
85
+ --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)
81
87
  --sarif Also write report.sarif for code scanning
82
88
  --fail-on SEVERITY Exit 1 if a defect at or above this severity exists (CI gate)
83
89
  ```
@@ -107,8 +113,11 @@ Options:
107
113
  --brand SLUG Markilo brand to check design consistency against (default: master brand)
108
114
  --ignore-robots Ignore robots.txt (only for sites you own or are authorized to test)
109
115
  --allow-private Allow private-network hosts (10.x, 192.168.x, ...)
110
- --no-forms Do not submit forms (by default, forms on local hosts are submitted empty to test validation)
111
- --allow-submit Allow submitting forms on non-local hosts (authorized test environments only)
116
+ --no-forms Skip the form validation probe
117
+ (by default, on local hosts, an empty submission is simulated: nothing that sends data
118
+ leaves the browser, so no database is written; server-side feedback is reported as untested)
119
+ --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)
112
121
  --sarif Also write report.sarif for code scanning
113
122
  --fail-on SEVERITY Exit 1 if a defect at or above this severity exists (CI gate)
114
123
  ```
@@ -135,13 +144,18 @@ Run options:
135
144
  --var key=value Test data for {{key}} placeholders (also JOURILO_VAR_KEY env vars)
136
145
  --allow-submit Allow form submission on non-local hosts (authorized test environments only)
137
146
  --allow-destructive Allow irreversible/payment actions — local hosts with sandbox data only
147
+ --allow-origin ORIGIN Let the page navigate to another origin you are authorized to test (e.g. a test IdP)
138
148
  --trace Record a Playwright trace per journey (contains typed values; keep private)
139
149
  --auth FILE Playwright storage state for signed-in journeys
140
150
  --save-auth FILE After a passing sign-in journey (exactly one), save its session for --auth (test accounts only)
151
+ --repeat N Run each journey N times (max 10); mixed outcomes are reported as flaky
141
152
  --fail-on-failure Exit 1 when a journey fails
142
153
 
143
154
  Safety: payment, purchase, delete and cancel actions are never performed on non-local hosts; form submission
144
- on non-local hosts needs --allow-submit. Blocked steps are reported, not skipped silently.
155
+ on non-local hosts needs --allow-submit. The policy is checked twice: on the element about to be clicked or
156
+ pressed (its name, link target, form action and identifiers — icon-only buttons included), and on every request
157
+ the page then sends (form posts, DELETE, requests to delete/cancel/payment endpoints, navigation to other
158
+ origins). Blocked steps are reported, not skipped silently.
145
159
  ```
146
160
 
147
161
  ## Experiment
@@ -167,7 +181,7 @@ Jourilo never invents traffic, conversions or effects: every number comes from y
167
181
 
168
182
  ### `jourilo optimize`
169
183
 
170
- Plan (and with --apply, make) minimal source fixes for located findings; shows diffs, checkpoints first.
184
+ Plan (and with --apply, make) minimal source fixes for located findings; shows diffs, writes one reversible change.
171
185
 
172
186
  ```
173
187
  jourilo optimize [run=latest] --repo <path> [--rule id ...] [--apply]
@@ -175,8 +189,11 @@ jourilo optimize [run=latest] --repo <path> [--rule id ...] [--apply]
175
189
 
176
190
  ```
177
191
  Deterministic fixers (others are reported with source candidates for a person or agent to fix):
178
- axe/html-has-lang, jourilo/missing-viewport-meta, jourilo/input-purpose, jourilo/focus-visible, jourilo/paste-blocked
179
- Without --apply nothing is written. With --apply, a git checkpoint is created first (jourilo rollback undoes it).
192
+ axe/html-has-lang, jourilo/missing-viewport-meta, jourilo/input-purpose, jourilo/focus-visible, jourilo/paste-blocked,
193
+ jourilo/unsized-images, jourilo/placeholder-label
194
+ Without --apply nothing is written. With --apply, all files are written as one change: each file must be unchanged
195
+ since the plan, writes are atomic, an interrupted apply is undone, and `jourilo rollback <id>` restores the files
196
+ (git is not required).
180
197
  Afterwards run `jourilo verify <run>` to repeat the audit and compare.
181
198
  ```
182
199
 
@@ -198,10 +215,19 @@ jourilo checkpoint [--repo .] [--note text] | checkpoint diff [id=latest]
198
215
 
199
216
  ### `jourilo rollback`
200
217
 
201
- Restore tracked files to a checkpoint (requires --yes). Untracked files created since are listed, not deleted.
218
+ Undo an applied fix (or restore a checkpoint) without overwriting later edits; requires --yes. The rollback can itself be undone.
202
219
 
203
220
  ```
204
- jourilo rollback <checkpoint-id|latest> --yes [--repo .]
221
+ jourilo rollback <id|latest> --yes [--repo .] [--file path ...] [--force]
222
+ ```
223
+
224
+ ```
225
+ For a change made by `optimize --apply` (or a previous rollback), a file is restored only while it still
226
+ holds exactly what Jourilo wrote. A file edited afterwards is reported as a conflict and left alone; --force restores
227
+ it anyway after saving the current bytes under .jourilo/checkpoints/<id>/conflicts/.
228
+ For a checkpoint made with `jourilo checkpoint`, every tracked file changed since then is restored (everything you
229
+ or an agent changed in the meantime); the current bytes are kept, and the printed id undoes the rollback.
230
+ Untracked files created after a checkpoint are listed, never deleted.
205
231
  ```
206
232
 
207
233
  ## Results
@@ -22,3 +22,4 @@ Toolchain: `node "${CLAUDE_PLUGIN_ROOT}/dist/jourilo.mjs" <command> … --json`
22
22
  `--allow-destructive` and explicit consent. A blocked step is a result: report it, do not work around it.
23
23
  4. For failures, open the failing step's screenshot (Read), explain where and why the user gets stuck, and point to
24
24
  the likely cause. Signed-in journeys need a Playwright storage-state file from the user (`--auth`).
25
+ 5. Answer in the short format of `${CLAUDE_PLUGIN_ROOT}/skills/jourilo/SKILL.md` → Answer format (80–150 words, report path, one next step). Blocked journeys come first, with the step where people get stuck.
@@ -15,10 +15,14 @@ Toolchain: `node "${CLAUDE_PLUGIN_ROOT}/dist/jourilo.mjs" <command> … --json`
15
15
  1. Make sure there is a baseline run with `--repo` (`jourilo audit <url|dir> --repo <path>`).
16
16
  2. `jourilo optimize <run> --repo <path> --json` previews deterministic fixes as diffs and lists the other defects
17
17
  with `sources` (file, line, reason, confidence). Show the user the plan.
18
- 3. With the user's OK: `jourilo optimize <run> --repo <path> --apply` (creates a checkpoint). For the remaining
18
+ 3. With the user's OK: `jourilo optimize <run> --repo <path> --apply` (writes all files as one change and prints its
19
+ id; `jourilo rollback <id>` undoes it, file by file, and never overwrites edits made afterwards).
20
+ Before editing files yourself, run `jourilo checkpoint --repo <path>` so your edits can be rolled back too. For the remaining
19
21
  defects, read each candidate source, confirm it is really the cause, and make the smallest maintainable edit
20
22
  (reuse the project's components and tokens; keep brand and behavior). Show diffs. Do not touch unrelated code.
21
23
  4. Run the project's own lint/type-check/tests.
22
24
  5. `jourilo verify <baseline-run> --json` and rerun affected journeys. Report fixed / new / persisting. If a fix
23
- did not work or regressed something, say so and iterate, or offer `jourilo rollback <checkpoint> --yes`.
25
+ did not work or regressed something, say so and iterate, or offer `jourilo rollback <id> --yes` (show the
26
+ user the preview without `--yes` first; it lists conflicts with edits made after the change).
24
27
  6. Do not commit unless the user asks.
28
+ 7. Answer in the short format of `${CLAUDE_PLUGIN_ROOT}/skills/jourilo/SKILL.md` → Answer format (80–150 words, report path, one next step). Say what was verified as fixed, what is new and what still needs a person.
@@ -14,5 +14,6 @@ Toolchain: `node "${CLAUDE_PLUGIN_ROOT}/dist/jourilo.mjs" <command> … --json`
14
14
 
15
15
  1. `jourilo report [run] --format html|md|sarif|json --json` (default latest run, HTML). `--baseline <run>` adds a
16
16
  before/after section.
17
- 2. Give the file path. For stakeholders, summarize in plain language: what blocks people, what to fix first, what is
18
- a hypothesis to test, and what was not checked. For developers, link findings to source files.
17
+ 2. Answer in the short format of `${CLAUDE_PLUGIN_ROOT}/skills/jourilo/SKILL.md` → Answer format (80–150 words, report path, one next step). For stakeholders, use plain language; for developers, name source files.
18
+ In the report, findings or root-cause groups can be selected and turned into a repair prompt (copy or download
19
+ as Markdown) for a coding agent; the report itself never runs anything.