@utsu-ri/cli 0.2.0 → 0.3.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 +28 -17
- package/dist/build-manifest.json +167 -167
- package/dist/sbom.spdx.json +50 -50
- package/dist/third-party-licenses.json +23 -23
- package/dist/utsuri.mjs +71781 -64544
- package/package.json +6 -6
package/README.md
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
<!-- doc-language: en; canonical: true -->
|
|
2
2
|
|
|
3
|
-
[English](https://github.com/hokupod/utsuri/blob/v0.
|
|
3
|
+
[English](https://github.com/hokupod/utsuri/blob/v0.3.1/README.md) | [日本語](https://github.com/hokupod/utsuri/blob/v0.3.1/README.ja.md) | [简体中文](https://github.com/hokupod/utsuri/blob/v0.3.1/README.zh-CN.md)
|
|
4
4
|
|
|
5
5
|
# Utsuri
|
|
6
6
|
|
|
@@ -14,6 +14,10 @@ Utsuri turns a Git change into a local review that connects code, browser captur
|
|
|
14
14
|
|
|
15
15
|
Use it when a code or UI change needs a durable report, a clear list of review gaps, or structured questions returned to the coding session that created the report.
|
|
16
16
|
|
|
17
|
+
<p align="center">
|
|
18
|
+
<img src="https://raw.githubusercontent.com/hokupod/utsuri/main/docs/assets/utsuri.jpg" alt="Two figures facing each other across a folded mirror" width="480">
|
|
19
|
+
</p>
|
|
20
|
+
|
|
17
21
|
<a id="availability-requirements"></a><!-- section:availability-requirements -->
|
|
18
22
|
|
|
19
23
|
## Availability and requirements
|
|
@@ -21,9 +25,9 @@ Use it when a code or UI change needs a durable report, a clear list of review g
|
|
|
21
25
|
<!-- availability:git-marketplace-source-ready-cli-publication-pending -->
|
|
22
26
|
<!-- support-contract:macos-linux-windows-unsupported -->
|
|
23
27
|
|
|
24
|
-
The source contains a Git Plugin that exact-pins
|
|
28
|
+
The source contains a Git Plugin that exact-pins its matching `@utsu-ri/cli` release. When the source version is newer than the latest verified public release, Git installation of that source remains gated until the exact CLI is published and the Plugin source is publicly reachable. The commands below are verified host command shapes; do not substitute `latest`, a range, or another package.
|
|
25
29
|
|
|
26
|
-
- A Codex or Claude Code release listed in the [runtime compatibility record](https://github.com/hokupod/utsuri/blob/v0.
|
|
30
|
+
- A Codex or Claude Code release listed in the [runtime compatibility record](https://github.com/hokupod/utsuri/blob/v0.3.1/docs/compatibility/plugin-runtime.json).
|
|
27
31
|
- macOS or Linux, Node.js 22 or later, and `npx` for first MCP startup.
|
|
28
32
|
- An existing compatible Chrome/Chromium installation for browser capture. Utsuri never downloads a browser.
|
|
29
33
|
- Optional Docker or Podman capability for the isolated container capture mode. Utsuri never pulls an image.
|
|
@@ -49,7 +53,7 @@ codex plugin marketplace add hokupod/utsuri
|
|
|
49
53
|
codex plugin add utsuri@utsuri
|
|
50
54
|
```
|
|
51
55
|
|
|
52
|
-
Installation enables the Plugin. In the Codex app, the Plugin UI is also the supported place to inspect or change its enabled state.
|
|
56
|
+
Installation enables the Plugin. In the Codex app, the Plugin UI is also the supported place to inspect or change its enabled state. Codex uses the Utsuri product illustration as both the composer icon and Plugin logo.
|
|
53
57
|
|
|
54
58
|
### Claude Code
|
|
55
59
|
|
|
@@ -65,6 +69,8 @@ claude plugin marketplace add hokupod/utsuri
|
|
|
65
69
|
claude plugin install utsuri@utsuri
|
|
66
70
|
```
|
|
67
71
|
|
|
72
|
+
Claude Code's current Plugin manifest does not expose an icon or logo field, so Utsuri does not add unsupported image metadata there.
|
|
73
|
+
|
|
68
74
|
Restart the host after an install or update when it asks you to do so. The Plugin starts the exact CLI through native `npx`; a global Utsuri installation is neither required nor used.
|
|
69
75
|
|
|
70
76
|
<a id="first-review"></a><!-- section:first-review -->
|
|
@@ -76,29 +82,33 @@ Open the repository in Codex or Claude Code, start a new session with Utsuri ena
|
|
|
76
82
|
<!-- sync-command:first-review-prompt -->
|
|
77
83
|
|
|
78
84
|
```text
|
|
79
|
-
Review the current change with Utsuri. Create
|
|
85
|
+
Review the current change with Utsuri. Create and validate an evidence-backed report, explain each change in my language, start the local report viewer, verify that the diff loads, and return its live URL with every incomplete or uncovered check.
|
|
80
86
|
```
|
|
81
87
|
|
|
82
88
|
Utsuri first checks available capabilities without installing anything. It can produce a code-only report when browser evidence was not requested or is unavailable. For browser evidence, start any required before/after application yourself and approve only explicit commands you trust.
|
|
83
89
|
|
|
84
|
-
|
|
90
|
+
In a human conversation, the Agent authors the evidence-backed interpretation in your selected language, strictly validates the report, starts the appropriate persistent loopback viewer, verifies that the report and diff load, and returns the live URL with confirmed coverage, findings, failures, and gaps. A filesystem path alone is not a completed handoff. Serving is skipped only for an explicitly requested artifact-only or CI workflow.
|
|
85
91
|
|
|
86
92
|
<a id="how-it-works"></a><!-- section:how-it-works -->
|
|
87
93
|
|
|
88
94
|
## How it works
|
|
89
95
|
|
|
90
96
|
1. **Collect** — reads the requested patch, worktree, range, or merge base into a bounded run.
|
|
91
|
-
2. **
|
|
92
|
-
3. **
|
|
93
|
-
4. **
|
|
94
|
-
5. **
|
|
97
|
+
2. **Interpret** — the current Agent uses the conversation, diff, and indexed evidence to group causally related hunks across files into semantic changes, explains each change, and adds a concise purpose and meaning for every hunk without inventing unsupported intent.
|
|
98
|
+
3. **Capture** — records separately isolated before/after browser evidence only when configured and authorized.
|
|
99
|
+
4. **Discover and compare** — maps changed code to targets, then compares pixels, DOM, ARIA, styles, accessibility, runtime, network, and overflow evidence.
|
|
100
|
+
5. **Finalize** — publishes an immutable, hash-validated local `report/` with the Agent-authored annotations; failed or partial evidence is preserved.
|
|
101
|
+
6. **Serve and verify** — keeps the appropriate loopback viewer alive, confirms that the review brief, first semantic change, code diff, and Agent interpretation load, then returns the live URL.
|
|
102
|
+
7. **Review and return feedback** — stores viewed state, human judgment, and comments outside `report/`. Agent questions can return only to the registered originating project and session.
|
|
95
103
|
|
|
96
|
-
[The detailed design](https://github.com/hokupod/utsuri/blob/v0.
|
|
104
|
+
[The detailed design](https://github.com/hokupod/utsuri/blob/v0.3.1/docs/design.md) defines the data model and security boundaries. [The CLI contract](https://github.com/hokupod/utsuri/blob/v0.3.1/skills/utsuri-review/references/cli-contract.md) documents machine-facing behavior.
|
|
97
105
|
|
|
98
106
|
<a id="understand-report"></a><!-- section:understand-report -->
|
|
99
107
|
|
|
100
108
|
## Understand the report
|
|
101
109
|
|
|
110
|
+
- **Review brief** combines the Agent-authored overview, deterministic evidence posture, and a prioritized map of semantic changes. One semantic change may span several files; file and hunk links are evidence, not review boundaries.
|
|
111
|
+
- **Hunk explanations** put the Agent-authored purpose and meaning immediately before each annotated code hunk. New annotations that omit or duplicate a collected hunk are rejected; `unclassifiedHunkRefs` is reserved for deterministic fallback reports created without annotations. Older reports without these fields remain viewable and omit the panel.
|
|
102
112
|
- **Findings** are evidence-backed observations, not automatic proof of a regression.
|
|
103
113
|
- **`INCOMPLETE`** means required evidence failed, was malformed, exceeded a limit, or was unavailable. It is never converted to pass.
|
|
104
114
|
- **`UNCOVERED`** means changed code has no verified target or the coverage denominator is unknown.
|
|
@@ -119,10 +129,11 @@ The report preserves source identity, evidence hashes, and review gaps so anothe
|
|
|
119
129
|
- MCP tools can use only schema-valid reports registered for the canonical current project and the same Origin Session. Cross-project, cross-host, cross-session, stale, or swapped registrations fail closed.
|
|
120
130
|
- Raw host session values are used only for equality checking and opaque hashing. They are not persisted, logged, diagnosed, or returned by tools.
|
|
121
131
|
- The Marketplace broker accepts only `CODEX_THREAD_ID` or the `CLAUDE_CODE_SESSION_ID` + `CLAUDE_PROJECT_DIR` host contract. Fixed-run `finalize`, `feedback`, and `review-mcp` also retain `UTSURI_CODEX_SESSION_ID` and `CLAUDE_SESSION_ID` compatibility; conflicting legacy/new values are rejected. Claude Plugin finalization always binds to the canonical host project root, including when launched from a child directory.
|
|
132
|
+
- Release artifacts include deterministic SPDX and license inventories for the production dependency graph. Its identity uses exact lockfile integrity values and installed package bytes; unrelated development-only lock changes do not alter the published inventory.
|
|
122
133
|
|
|
123
134
|
Claude Code may pass other ambient variables to MCP subprocesses. Utsuri does not use them as identity or expose them. `CLAUDE_CODE_SUBPROCESS_ENV_SCRUB=1` is optional host hardening when supported by your Claude Code installation; the Plugin cannot enforce host-wide environment scrubbing.
|
|
124
135
|
|
|
125
|
-
See the [threat model](https://github.com/hokupod/utsuri/blob/v0.
|
|
136
|
+
See the [threat model](https://github.com/hokupod/utsuri/blob/v0.3.1/docs/threat-model.md), [capture boundaries](https://github.com/hokupod/utsuri/blob/v0.3.1/skills/utsuri-review/references/capture-modes.md), and [feedback boundary](https://github.com/hokupod/utsuri/blob/v0.3.1/skills/utsuri-review/references/feedback.md) before handling untrusted projects.
|
|
126
137
|
|
|
127
138
|
<a id="troubleshooting-lifecycle"></a><!-- section:troubleshooting-lifecycle -->
|
|
128
139
|
|
|
@@ -175,10 +186,10 @@ claude plugin uninstall utsuri@utsuri
|
|
|
175
186
|
|
|
176
187
|
## Documentation, contributing, and license
|
|
177
188
|
|
|
178
|
-
- [Contributing and developer setup](https://github.com/hokupod/utsuri/blob/v0.
|
|
179
|
-
- [Detailed design](https://github.com/hokupod/utsuri/blob/v0.
|
|
180
|
-
- [Release and distribution operations](https://github.com/hokupod/utsuri/blob/v0.
|
|
181
|
-
- [UI guidelines](https://github.com/hokupod/utsuri/blob/v0.
|
|
182
|
-
- [Skill contract](https://github.com/hokupod/utsuri/blob/v0.
|
|
189
|
+
- [Contributing and developer setup](https://github.com/hokupod/utsuri/blob/v0.3.1/CONTRIBUTING.md)
|
|
190
|
+
- [Detailed design](https://github.com/hokupod/utsuri/blob/v0.3.1/docs/design.md)
|
|
191
|
+
- [Release and distribution operations](https://github.com/hokupod/utsuri/blob/v0.3.1/docs/release.md)
|
|
192
|
+
- [UI guidelines](https://github.com/hokupod/utsuri/blob/v0.3.1/docs/ui-guidelines.md)
|
|
193
|
+
- [Skill contract](https://github.com/hokupod/utsuri/blob/v0.3.1/skills/utsuri-review/SKILL.md)
|
|
183
194
|
|
|
184
195
|
Utsuri is licensed under `AGPL-3.0-or-later`. The publisher is `hokupod`. CLI publication, Git Plugin promotion, Git push, tags, and releases are separate operator-authorized actions; source changes alone perform none of them.
|