@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 CHANGED
@@ -1,6 +1,6 @@
1
1
  <!-- doc-language: en; canonical: true -->
2
2
 
3
- [English](https://github.com/hokupod/utsuri/blob/v0.2.0/README.md) | [日本語](https://github.com/hokupod/utsuri/blob/v0.2.0/README.ja.md) | [简体中文](https://github.com/hokupod/utsuri/blob/v0.2.0/README.zh-CN.md)
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 the matching published `@utsu-ri/cli` release. Public Git installation remains gated until that CLI release is published and the Plugin source is merged. The commands below are verified host command shapes; do not substitute `latest`, a range, or another package.
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.2.0/docs/compatibility/plugin-runtime.json).
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 a local evidence-backed report and call out every incomplete or uncovered check.
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
- The final response gives you the local report location, confirmed coverage, findings, failures, and gaps. Opening or serving the report remains a separate explicit action.
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. **Capture** — records separately isolated before/after browser evidence only when configured and authorized.
92
- 3. **Discover and compare** — maps changed code to targets, then compares pixels, DOM, ARIA, styles, accessibility, runtime, network, and overflow evidence.
93
- 4. **Finalize** — publishes an immutable, hash-validated local `report/`; failed or partial evidence is preserved.
94
- 5. **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.
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.2.0/docs/design.md) defines the data model and security boundaries. [The CLI contract](https://github.com/hokupod/utsuri/blob/v0.2.0/skills/utsuri-review/references/cli-contract.md) documents machine-facing behavior.
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.2.0/docs/threat-model.md), [capture boundaries](https://github.com/hokupod/utsuri/blob/v0.2.0/skills/utsuri-review/references/capture-modes.md), and [feedback boundary](https://github.com/hokupod/utsuri/blob/v0.2.0/skills/utsuri-review/references/feedback.md) before handling untrusted projects.
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.2.0/CONTRIBUTING.md)
179
- - [Detailed design](https://github.com/hokupod/utsuri/blob/v0.2.0/docs/design.md)
180
- - [Release and distribution operations](https://github.com/hokupod/utsuri/blob/v0.2.0/docs/release.md)
181
- - [UI guidelines](https://github.com/hokupod/utsuri/blob/v0.2.0/docs/ui-guidelines.md)
182
- - [Skill contract](https://github.com/hokupod/utsuri/blob/v0.2.0/skills/utsuri-review/SKILL.md)
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.