jourilo 1.0.1 → 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.
- package/README.md +108 -117
- package/package.json +1 -1
- package/plugin/.claude-plugin/plugin.json +1 -1
- package/plugin/dist/jourilo.mjs +1989 -665
- package/plugin/skills/accessibility/SKILL.md +1 -0
- package/plugin/skills/audit/SKILL.md +3 -3
- package/plugin/skills/compare/SKILL.md +1 -0
- package/plugin/skills/conversion/SKILL.md +1 -0
- package/plugin/skills/jourilo/SKILL.md +29 -8
- package/plugin/skills/journeys/SKILL.md +1 -0
- package/plugin/skills/optimize/SKILL.md +1 -0
- package/plugin/skills/report/SKILL.md +3 -2
package/README.md
CHANGED
|
@@ -1,37 +1,86 @@
|
|
|
1
|
-
<
|
|
1
|
+
<p align="center">
|
|
2
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="
|
|
3
|
+
<source media="(prefers-color-scheme: dark)" srcset="https://raw.githubusercontent.com/cihantopac/jourilo/v1.1.0/docs/assets/brand/jourilo-wordmark-reversed.svg">
|
|
4
|
+
<img src="https://raw.githubusercontent.com/cihantopac/jourilo/v1.1.0/docs/assets/brand/jourilo-wordmark.svg" alt="Jourilo" width="260">
|
|
5
5
|
</picture>
|
|
6
|
-
</
|
|
6
|
+
</p>
|
|
7
7
|
|
|
8
|
-
|
|
9
|
-
product, finds UX, accessibility, performance and conversion problems with evidence, traces them to the code that
|
|
10
|
-
causes them, applies safe fixes and proves the result with a before/after run.
|
|
8
|
+
<h3 align="center">Walk every journey. Find the friction. Prove the fix.</h3>
|
|
11
9
|
|
|
12
|
-
|
|
10
|
+
<p align="center">
|
|
11
|
+
Jourilo uses your product in a real browser, shows where people get stuck with screenshot evidence,<br>
|
|
12
|
+
traces each problem to its root cause and proves every fix with a before/after run.<br>
|
|
13
|
+
A CLI and a Claude Code plugin. Local-first, open source.
|
|
14
|
+
</p>
|
|
13
15
|
|
|
14
|
-
|
|
16
|
+
<p align="center">
|
|
17
|
+
<a href="https://www.npmjs.com/package/jourilo"><img alt="npm" src="https://img.shields.io/npm/v/jourilo?color=875802&label=npm"></a>
|
|
18
|
+
<a href="https://github.com/cihantopac/jourilo/actions/workflows/ci.yml"><img alt="CI" src="https://github.com/cihantopac/jourilo/actions/workflows/ci.yml/badge.svg"></a>
|
|
19
|
+
<a href="LICENSE"><img alt="License: Apache-2.0" src="https://img.shields.io/badge/license-Apache--2.0-1c1a17"></a>
|
|
20
|
+
<img alt="Node.js ≥ 20.10" src="https://img.shields.io/badge/node-%E2%89%A5%2020.10-1c1a17">
|
|
21
|
+
</p>
|
|
15
22
|
|
|
16
|
-
>
|
|
17
|
-
>
|
|
23
|
+
<p align="center">
|
|
24
|
+
<a href="#install">Install</a> ·
|
|
25
|
+
<a href="#in-claude-code">Claude Code</a> ·
|
|
26
|
+
<a href="#audit--understand--fix--verify">How it works</a> ·
|
|
27
|
+
<a href="#benchmarks">Benchmarks</a> ·
|
|
28
|
+
<a href="docs/WORKFLOW.md">Guide</a> ·
|
|
29
|
+
<a href="docs/">Docs</a>
|
|
30
|
+
</p>
|
|
18
31
|
|
|
19
|
-
|
|
32
|
+
<picture>
|
|
33
|
+
<source media="(prefers-color-scheme: dark)" srcset="https://raw.githubusercontent.com/cihantopac/jourilo/v1.1.0/docs/assets/report-overview-dark.png">
|
|
34
|
+
<img src="https://raw.githubusercontent.com/cihantopac/jourilo/v1.1.0/docs/assets/report-overview.png" alt="The Jourilo report: verified defects, root causes, automatic fixes, manual review and conversion hypotheses as separate counts, then the highest-impact root causes with their screenshots">
|
|
35
|
+
</picture>
|
|
20
36
|
|
|
21
|
-
|
|
22
|
-
| --------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
|
|
23
|
-
| **Understand** | `discover` maps a repository (Next.js, Nuxt, SvelteKit, Astro, Remix, React/Vue Router, Laravel, Flutter web, static sites, monorepos) or a live site: routes, dev command, design system, i18n, auth, payments, analytics, roles and candidate journeys. Every fact names the file or page it came from. |
|
|
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. |
|
|
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. |
|
|
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. |
|
|
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. |
|
|
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. |
|
|
37
|
+
## It walks the journey, step by step
|
|
29
38
|
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
_user input_.
|
|
39
|
+
Jourilo signs up, checks out and follows calls to action like a person would, with a real screenshot of every step.
|
|
40
|
+
When a journey breaks, you see exactly where.
|
|
33
41
|
|
|
34
|
-
|
|
42
|
+
<img src="https://raw.githubusercontent.com/cihantopac/jourilo/v1.1.0/docs/assets/report-journeys.png" alt="A sign-up journey on mobile: the form is filled in, Submit is clicked, the page resets, and the goal 'leaves the form page' is not met">
|
|
43
|
+
|
|
44
|
+
## Evidence you can see
|
|
45
|
+
|
|
46
|
+
Every finding comes with the element outlined on its screenshot, the measured values, the WCAG criterion, reproduction
|
|
47
|
+
steps and the likely source line. Findings with one cause are grouped into one fix. Verified defects, items that need a
|
|
48
|
+
person and conversion hypotheses are always kept apart, and there is no made-up overall score.
|
|
49
|
+
|
|
50
|
+
<img src="https://raw.githubusercontent.com/cihantopac/jourilo/v1.1.0/docs/assets/report-finding.png" alt="A finding: the page scrolls sideways at 390 px, with the measured widths, WCAG 1.4.10, the CSS rule that causes it and the element highlighted on the mobile screenshot">
|
|
51
|
+
|
|
52
|
+
## Audit → Understand → Fix → Verify
|
|
53
|
+
|
|
54
|
+
<img src="https://raw.githubusercontent.com/cihantopac/jourilo/v1.1.0/docs/assets/workflow.png" alt="Four steps: audit in a real browser, understand by root cause, fix with approved patches or a repair prompt, verify with a before/after run">
|
|
55
|
+
|
|
56
|
+
## Fix it yourself, automatically or with your agent
|
|
57
|
+
|
|
58
|
+
- **Automatic fixes** for mechanical defects (missing `lang`, viewport, autocomplete, focus styles, paste blocking,
|
|
59
|
+
image sizes, placeholder labels): `jourilo optimize` previews minimal diffs and writes them only with `--apply`, as
|
|
60
|
+
one reversible change.
|
|
61
|
+
- **Repair prompts** for everything else: select findings or root causes in the report and copy or download an
|
|
62
|
+
editable Markdown prompt for Claude Code or any coding agent. It carries ids, pages, screenshots, likely source files
|
|
63
|
+
and reproduction steps, and asks the agent to revalidate, change as little as possible, add regression tests and
|
|
64
|
+
verify with Jourilo.
|
|
65
|
+
- **Experiment briefs** for conversion hypotheses, never code changes or promised lifts.
|
|
66
|
+
|
|
67
|
+
<img src="https://raw.githubusercontent.com/cihantopac/jourilo/v1.1.0/docs/assets/report-prompt.png" alt="The repair prompt dialog: an editable Markdown brief with copy and download buttons, generated from three selected findings">
|
|
68
|
+
|
|
69
|
+
## Prove it
|
|
70
|
+
|
|
71
|
+
`jourilo verify` repeats the same pages, viewports and journeys and shows what is fixed, new or still present, with the
|
|
72
|
+
same region of the page before and after.
|
|
73
|
+
|
|
74
|
+
<img src="https://raw.githubusercontent.com/cihantopac/jourilo/v1.1.0/docs/assets/report-before-after.png" alt="Before / after: 14 fixed, 0 new, 18 still present, with before and after crops of each fixed problem">
|
|
75
|
+
|
|
76
|
+
## One file, any screen, two languages
|
|
77
|
+
|
|
78
|
+
The report is a single offline HTML file. It follows the browser's language and theme, and you can switch between
|
|
79
|
+
English and Turkish and between light, dark and system appearance.
|
|
80
|
+
|
|
81
|
+
<img src="https://raw.githubusercontent.com/cihantopac/jourilo/v1.1.0/docs/assets/report-mobile.png" alt="The report on two phones: English in the light theme and Turkish in the dark theme">
|
|
82
|
+
|
|
83
|
+
## Install
|
|
35
84
|
|
|
36
85
|
Requires Node.js ≥ 20.10.
|
|
37
86
|
|
|
@@ -43,122 +92,64 @@ npm install -g jourilo
|
|
|
43
92
|
jourilo setup
|
|
44
93
|
```
|
|
45
94
|
|
|
46
|
-
`setup` downloads Playwright's Chromium (one time, ~150 MB). Alternatively use an installed Chrome with
|
|
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>`.
|
|
49
|
-
|
|
50
|
-
Audit a local static build (served on 127.0.0.1) and map findings to its source:
|
|
51
|
-
|
|
52
95
|
```bash
|
|
53
|
-
jourilo audit
|
|
96
|
+
jourilo audit http://localhost:3000 --repo .
|
|
54
97
|
```
|
|
55
98
|
|
|
56
|
-
|
|
99
|
+
`setup` downloads Playwright's Chromium once. The report is written to `.jourilo/runs/<run-id>/report.html`.
|
|
100
|
+
More commands and the full loop: [docs/WORKFLOW.md](docs/WORKFLOW.md) and the [CLI reference](docs/CLI.md).
|
|
57
101
|
|
|
58
|
-
|
|
59
|
-
jourilo audit http://localhost:3000 --viewports desktop,mobile,reflow
|
|
60
|
-
```
|
|
61
|
-
|
|
62
|
-
The report is written to `.jourilo/runs/<run-id>/report.html` (git-ignored). Add `--json` to any command for
|
|
63
|
-
machine-readable output.
|
|
64
|
-
|
|
65
|
-
### Claude Code plugin
|
|
102
|
+
## In Claude Code
|
|
66
103
|
|
|
67
104
|
```text
|
|
68
105
|
/plugin marketplace add cihantopac/jourilo
|
|
69
106
|
/plugin install jourilo@jourilo
|
|
70
107
|
```
|
|
71
108
|
|
|
72
|
-
Then
|
|
73
|
-
|
|
74
|
-
|
|
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).
|
|
77
|
-
|
|
78
|
-
Other agents: `jourilo agent install codex --write` (adds a section to `AGENTS.md`) or `cursor`
|
|
79
|
-
(`.cursor/rules/jourilo.mdc`).
|
|
80
|
-
|
|
81
|
-
## The improvement loop
|
|
82
|
-
|
|
83
|
-
```bash
|
|
84
|
-
jourilo audit http://localhost:3000 --repo . # evidence + likely source lines
|
|
85
|
-
jourilo journeys suggest latest # edit .jourilo/journeys/*.json
|
|
86
|
-
jourilo journeys run --base http://localhost:3000 # step screenshots, success criteria
|
|
87
|
-
jourilo optimize latest --repo . # preview minimal diffs (dry run)
|
|
88
|
-
jourilo optimize latest --repo . --apply # write as one reversible change
|
|
89
|
-
jourilo verify <baseline-run> # same scope again: fixed / new / persisting
|
|
90
|
-
jourilo rollback latest --yes # undo if needed
|
|
91
|
-
```
|
|
92
|
-
|
|
93
|
-
Measured on the seeded demo app (`fixtures/sites/acme-saas`): `verify` after `optimize --apply` reported 11 findings
|
|
94
|
-
fixed and 0 new; on a page with a late-loading image, adding the measured image size took mobile CLS from 0.121 to 0.
|
|
95
|
-
Fixes are idempotent and fully reversible (see [docs/EVALUATION.md](docs/EVALUATION.md)).
|
|
96
|
-
|
|
97
|
-
| Finding with evidence and root cause | Journey storyboard |
|
|
98
|
-
| ------------------------------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------ |
|
|
99
|
-
|  |  |
|
|
100
|
-
|
|
101
|
-
## Detection quality
|
|
109
|
+
Then `/jourilo:jourilo https://your-site.dev` or `/jourilo:jourilo .` for a repository. Claude answers in a few lines
|
|
110
|
+
(blocked journeys, three priorities, the fixes available, the report path and one next step) and keeps the evidence in
|
|
111
|
+
the report. All commands: [docs/PLUGIN.md](docs/PLUGIN.md).
|
|
102
112
|
|
|
103
|
-
|
|
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.
|
|
113
|
+
## Benchmarks
|
|
107
114
|
|
|
108
|
-
|
|
109
|
-
|
|
115
|
+
On the 955 [W3C ACT Rules](https://www.w3.org/WAI/standards-guidelines/act/rules/) test cases that map to WCAG criteria,
|
|
116
|
+
written by the ACT Rules Community Group and not for Jourilo (measured 2026-11-01; the detection engine is unchanged
|
|
117
|
+
in 1.1.0):
|
|
110
118
|
|
|
111
|
-
|
|
|
119
|
+
| | Precision | Recall | False positives |
|
|
112
120
|
| --------------------- | --------- | ------ | --------------- |
|
|
113
121
|
| Jourilo 1.0.0 | 93.9 % | 55.4 % | 11 |
|
|
114
122
|
| axe-core 4.14.0 alone | 93.6 % | 53.5 % | 11 |
|
|
115
123
|
|
|
116
|
-
Jourilo runs axe-core
|
|
117
|
-
|
|
118
|
-
|
|
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.
|
|
121
|
-
|
|
122
|
-
## Safety and privacy
|
|
123
|
-
|
|
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
|
|
131
|
-
in screenshots; tokens, keys, e-mail addresses and card numbers are redacted from logs and reports. Page content is
|
|
132
|
-
treated as untrusted data and is always HTML-escaped in reports. Details: [docs/PRIVACY.md](docs/PRIVACY.md),
|
|
133
|
-
[docs/SECURITY-REVIEW.md](docs/SECURITY-REVIEW.md) (including residual risks), [SECURITY.md](SECURITY.md).
|
|
134
|
-
|
|
135
|
-
## Works with Markilo and Searvex (optional)
|
|
136
|
-
|
|
137
|
-
If a project contains [Markilo](https://github.com/cihantopac/markilo) brand tokens, Jourilo checks buttons and fonts
|
|
138
|
-
against the brand and never recommends changing a locked brand color. If it contains
|
|
139
|
-
[Searvex](https://github.com/cihantopac/searvex) results, search findings for the same pages appear in the report.
|
|
140
|
-
Both are read through a small, versioned, tool-neutral contract, `jourilo.context/v1`
|
|
141
|
-
([docs/INTEGRATIONS.md](docs/INTEGRATIONS.md)). Neither is required.
|
|
124
|
+
Jourilo runs axe-core and adds its own keyboard-trap and focus-indicator checks. Many misses are criteria only a person
|
|
125
|
+
can judge, which every report lists. No automated run shows WCAG conformance. Method, fixture benchmark and a
|
|
126
|
+
comparison with Pa11y and Lighthouse: [docs/EVALUATION.md](docs/EVALUATION.md).
|
|
142
127
|
|
|
143
|
-
##
|
|
128
|
+
## Safe by default
|
|
129
|
+
|
|
130
|
+
Audits are read-only, respect robots.txt and run behind a network guard that keeps audited pages away from your
|
|
131
|
+
machine and network. Journeys never pay, delete or cancel on non-local hosts. Secrets are masked in screenshots and
|
|
132
|
+
redacted from reports. Details: [docs/PRIVACY.md](docs/PRIVACY.md) · [SECURITY.md](SECURITY.md).
|
|
144
133
|
|
|
145
|
-
|
|
146
|
-
- [Architecture](docs/ARCHITECTURE.md) · [Decisions](docs/DECISIONS.md) · [Requirements and quality targets](docs/REQUIREMENTS.md)
|
|
147
|
-
- [Journeys format](docs/JOURNEYS.md) · [Claude Code plugin and agents](docs/PLUGIN.md) · [Integrations](docs/INTEGRATIONS.md)
|
|
148
|
-
- [Evaluation](docs/EVALUATION.md) · [Limitations](docs/LIMITATIONS.md) · [Roadmap](docs/ROADMAP.md) · [Progress log](docs/PROGRESS.md)
|
|
149
|
-
- Research: [tool landscape](docs/research/landscape.md) · [standards reference](docs/research/standards.md)
|
|
134
|
+
## The family
|
|
150
135
|
|
|
151
|
-
|
|
136
|
+
Jourilo works on its own and pairs with its siblings through a small, optional contract
|
|
137
|
+
([docs/INTEGRATIONS.md](docs/INTEGRATIONS.md)):
|
|
152
138
|
|
|
153
|
-
|
|
154
|
-
[
|
|
155
|
-
|
|
139
|
+
- [**Relivaro**](https://github.com/cihantopac/relivaro) — code quality, security and release readiness.
|
|
140
|
+
- [**Searvex**](https://github.com/cihantopac/searvex) — SEO and AI-search findings; Jourilo shows them for the same pages.
|
|
141
|
+
- [**Markilo**](https://github.com/cihantopac/markilo) — brand identity; Jourilo checks against its tokens and never
|
|
142
|
+
changes a locked brand. Jourilo's own logo was made with Markilo.
|
|
143
|
+
|
|
144
|
+
## Documentation
|
|
156
145
|
|
|
157
|
-
|
|
146
|
+
[Guide](docs/WORKFLOW.md) · [CLI](docs/CLI.md) · [Plugin](docs/PLUGIN.md) · [Journeys](docs/JOURNEYS.md) ·
|
|
147
|
+
[Evaluation](docs/EVALUATION.md) · [Limitations](docs/LIMITATIONS.md) · [Architecture](docs/ARCHITECTURE.md) ·
|
|
148
|
+
[Decisions](docs/DECISIONS.md) · [Roadmap](docs/ROADMAP.md) · [Changelog](CHANGELOG.md)
|
|
158
149
|
|
|
159
|
-
|
|
160
|
-
|
|
150
|
+
Contributions are welcome: see [CONTRIBUTING.md](CONTRIBUTING.md). Every rule needs a fixture that proves it fires and a
|
|
151
|
+
control that proves it does not.
|
|
161
152
|
|
|
162
153
|
## License
|
|
163
154
|
|
|
164
|
-
[Apache-2.0](LICENSE). Bundled third-party code:
|
|
155
|
+
[Apache-2.0](LICENSE). Bundled third-party code: [THIRD_PARTY_NOTICES.md](THIRD_PARTY_NOTICES.md).
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "jourilo",
|
|
3
|
-
"version": "1.0
|
|
3
|
+
"version": "1.1.0",
|
|
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",
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "jourilo",
|
|
3
3
|
"displayName": "Jourilo",
|
|
4
|
-
"version": "1.0
|
|
4
|
+
"version": "1.1.0",
|
|
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ç",
|