The extension helps you write. It also tracks blocking points.
The browser extension makes Conventional Comments easy to use while you're reviewing: a toolbar, keyboard shortcuts, and feedback as you type. It also tracks unresolved blocking threads and shows their count directly on the pull request. Enforce is intended to add an authoritative platform-level merge check that runs independently of the browser. That capability is not available yet.
What the extension adds to the page
A two-row toolbar
Labels are on the first row. Decorations are on the second. They stay separate regardless of the available width because choosing a label and qualifying it with a decoration are two different actions. Putting everything in one wrapping row would eventually place the two side by side as though they meant the same thing.
Clicking a label inserts or replaces the prefix without touching the rest of what you've written. Click the same label again to remove it. Hover over any label to see its definition and an example.
Keyboard controls
If you prefer the keyboard, type / or : at the beginning of the comment box to open a filterable list. Use ↑ and ↓ to navigate, Enter or Tab to select, and Esc to close it.
You can also expand abbreviations with Tab:
?i → issue: ?ib → issue (blocking):
Direct shortcuts such as Alt+I are available as well.
Live validation below the comment box
A status indicator tells you whether the comment is:
- compliant;
- compliant with warnings; or
- non-compliant.
If several problems are present, the extension shows all of them at once. Showing only one would simply force you to fix issues one after another to discover what comes next.
Validation is debounced by 150 ms, so the interface remains stable while you type.
Badges on published comments
Once comments are published, their labels are rendered as badges without modifying the stored comment itself. A banner at the top of the pull request shows how many unresolved blocking threads remain and links directly to them.
That count is computed directly by the extension from the threads currently displayed on the page — no server involved.
There is no “publish anyway” button.
In its strictest mode, the extension can prevent a malformed comment from being submitted. There is no local override button. That's deliberate, for two reasons.
A bypass button wouldn't provide real control
A browser extension can be disabled in a couple of clicks. Someone determined to bypass it already can. Adding a dedicated bypass button would not create any meaningful new capability — only an extra ceremony, a reason field, another log, and the appearance of control where none actually exists.
The justification belongs in the review
“We decided not to address this point, and here's why” is part of the review itself. It should appear as a labelled comment in the thread, visible to everyone and preserved with the pull request. It should not disappear into a separate technical audit log.
A guardrail, not a wall.
The extension catches mistakes and lapses of attention — the common case. It is not intended to stop someone who deliberately chooses to bypass it. Closing that gap is exactly what platform-level enforcement is meant to do: evaluate the pull request independently of every reviewer's browser. That part doesn't exist yet — it's on the roadmap, not in the extension.
Three conditions must be met
Strict mode alone is not enough. Unless all three conditions below are satisfied, the extension reports diagnostics but still allows the comment to be submitted.
- 1Strict mode is actually in effectThe effective mode is resolved from the organization's configuration. It is never assumed locally.
- 2The pull request is within scopeIf a repository starts enforcing the convention from a particular date, older pull requests do not suddenly become blocked retroactively.
- 3The configuration was successfully readIf the configuration cannot be retrieved, the extension does not reject anything. A user should never be blocked in the name of a rule the extension itself could not read.
These conditions all protect the same principle: the extension must never reject something it cannot confirm the rules actually call for.
What an authoritative check would evaluate
The capabilities described below are not available yet, so there is nothing to install or enable today. This section describes the direction: an evaluation that runs independently of any single reviewer's browser, and that a platform's own merge rules could rely on. Conceptually, it would still ask the same two questions the extension already asks locally.
Are the comments correctly formed?
A comment is compliant when it produces no error-level diagnostic. Warnings are reported and counted, but do not fail the check by themselves. Most teams keep formatting errors non-blocking.
Have all blocking points been resolved?
A thread becomes blocking when its comment resolves to a blocking verdict. Once blocking, it remains blocking until either the thread is resolved, or an authorized person records a decision explaining why the point will not be addressed.
This is the criterion that would eventually be able to prevent a merge.
The default plan is the simplest, most platform-native mechanism for each platform — not a general-purpose backend. A dedicated service only enters the picture if a concrete requirement later shows that a platform-native integration genuinely isn't enough. Nothing here is documented as a concrete capability until it actually ships.
One validation engine, not two implementations to keep in sync.
The extension does not maintain a separate implementation of the validation rules. It uses a single validation package, and no validation rule exists outside it. Whatever eventually evaluates a pull request at the platform level will consume the same package, so results won't quietly diverge from what the extension already tells you.
The validation library itself knows nothing about browsers or networks. Everything it needs is passed in as data, and everything it wants the caller to do comes back as a list of actions. That separation is also why the same validation engine can run directly in the browser — and why the playground is possible.
The extension is all you need to get started.
Assist and warn work today, entirely in your browser. Enforce, at the platform level, is on the roadmap.