mozyo-bridge 0.1.9__tar.gz

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.
Files changed (41) hide show
  1. mozyo_bridge-0.1.9/LICENSE +21 -0
  2. mozyo_bridge-0.1.9/PKG-INFO +419 -0
  3. mozyo_bridge-0.1.9/README.md +394 -0
  4. mozyo_bridge-0.1.9/pyproject.toml +52 -0
  5. mozyo_bridge-0.1.9/setup.cfg +4 -0
  6. mozyo_bridge-0.1.9/src/mozyo_bridge/__init__.py +3 -0
  7. mozyo_bridge-0.1.9/src/mozyo_bridge/__main__.py +7 -0
  8. mozyo_bridge-0.1.9/src/mozyo_bridge/application/__init__.py +1 -0
  9. mozyo_bridge-0.1.9/src/mozyo_bridge/application/cli.py +296 -0
  10. mozyo_bridge-0.1.9/src/mozyo_bridge/application/commands.py +533 -0
  11. mozyo_bridge-0.1.9/src/mozyo_bridge/application/doctor.py +512 -0
  12. mozyo_bridge-0.1.9/src/mozyo_bridge/domain/__init__.py +1 -0
  13. mozyo_bridge-0.1.9/src/mozyo_bridge/domain/notification.py +45 -0
  14. mozyo_bridge-0.1.9/src/mozyo_bridge/domain/pane_resolver.py +134 -0
  15. mozyo_bridge-0.1.9/src/mozyo_bridge/infrastructure/__init__.py +1 -0
  16. mozyo_bridge-0.1.9/src/mozyo_bridge/infrastructure/queue_reader.py +47 -0
  17. mozyo_bridge-0.1.9/src/mozyo_bridge/infrastructure/tmux_client.py +81 -0
  18. mozyo_bridge-0.1.9/src/mozyo_bridge/scaffold/__init__.py +2 -0
  19. mozyo_bridge-0.1.9/src/mozyo_bridge/scaffold/presets/__init__.py +2 -0
  20. mozyo_bridge-0.1.9/src/mozyo_bridge/scaffold/presets/asana/AGENTS.md +23 -0
  21. mozyo_bridge-0.1.9/src/mozyo_bridge/scaffold/presets/asana/CLAUDE.md +23 -0
  22. mozyo_bridge-0.1.9/src/mozyo_bridge/scaffold/presets/asana/VERSION +1 -0
  23. mozyo_bridge-0.1.9/src/mozyo_bridge/scaffold/presets/asana/agent-workflow.md +159 -0
  24. mozyo_bridge-0.1.9/src/mozyo_bridge/scaffold/presets/none/AGENTS.md +30 -0
  25. mozyo_bridge-0.1.9/src/mozyo_bridge/scaffold/presets/none/CLAUDE.md +15 -0
  26. mozyo_bridge-0.1.9/src/mozyo_bridge/scaffold/presets/none/VERSION +1 -0
  27. mozyo_bridge-0.1.9/src/mozyo_bridge/scaffold/presets/none/agent-workflow.md +31 -0
  28. mozyo_bridge-0.1.9/src/mozyo_bridge/scaffold/presets/redmine/AGENTS.md +25 -0
  29. mozyo_bridge-0.1.9/src/mozyo_bridge/scaffold/presets/redmine/CLAUDE.md +23 -0
  30. mozyo_bridge-0.1.9/src/mozyo_bridge/scaffold/presets/redmine/VERSION +1 -0
  31. mozyo_bridge-0.1.9/src/mozyo_bridge/scaffold/presets/redmine/agent-workflow.md +167 -0
  32. mozyo_bridge-0.1.9/src/mozyo_bridge/scaffold/rules.py +339 -0
  33. mozyo_bridge-0.1.9/src/mozyo_bridge/shared/__init__.py +1 -0
  34. mozyo_bridge-0.1.9/src/mozyo_bridge/shared/errors.py +8 -0
  35. mozyo_bridge-0.1.9/src/mozyo_bridge/shared/paths.py +45 -0
  36. mozyo_bridge-0.1.9/src/mozyo_bridge.egg-info/PKG-INFO +419 -0
  37. mozyo_bridge-0.1.9/src/mozyo_bridge.egg-info/SOURCES.txt +39 -0
  38. mozyo_bridge-0.1.9/src/mozyo_bridge.egg-info/dependency_links.txt +1 -0
  39. mozyo_bridge-0.1.9/src/mozyo_bridge.egg-info/entry_points.txt +3 -0
  40. mozyo_bridge-0.1.9/src/mozyo_bridge.egg-info/top_level.txt +1 -0
  41. mozyo_bridge-0.1.9/tests/test_mozyo_bridge.py +1983 -0
@@ -0,0 +1,21 @@
1
+ MIT License
2
+
3
+ Copyright (c) 2026 takahorishizuru
4
+
5
+ Permission is hereby granted, free of charge, to any person obtaining a copy
6
+ of this software and associated documentation files (the "Software"), to deal
7
+ in the Software without restriction, including without limitation the rights
8
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9
+ copies of the Software, and to permit persons to whom the Software is
10
+ furnished to do so, subject to the following conditions:
11
+
12
+ The above copyright notice and this permission notice shall be included in all
13
+ copies or substantial portions of the Software.
14
+
15
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21
+ SOFTWARE.
@@ -0,0 +1,419 @@
1
+ Metadata-Version: 2.4
2
+ Name: mozyo-bridge
3
+ Version: 0.1.9
4
+ Summary: Redmine-gated tmux pane notification bridge for Claude Code and Codex terminals
5
+ Author: takahorishizuru
6
+ License-Expression: MIT
7
+ Project-URL: Homepage, https://github.com/hollySizzle/mozyo_bridge
8
+ Project-URL: Repository, https://github.com/hollySizzle/mozyo_bridge
9
+ Project-URL: Issues, https://github.com/hollySizzle/mozyo_bridge/issues
10
+ Keywords: tmux,codex,claude,redmine,cli
11
+ Classifier: Development Status :: 3 - Alpha
12
+ Classifier: Environment :: Console
13
+ Classifier: Intended Audience :: Developers
14
+ Classifier: Programming Language :: Python :: 3
15
+ Classifier: Programming Language :: Python :: 3.10
16
+ Classifier: Programming Language :: Python :: 3.11
17
+ Classifier: Programming Language :: Python :: 3.12
18
+ Classifier: Programming Language :: Python :: 3.13
19
+ Classifier: Topic :: Software Development
20
+ Classifier: Topic :: Terminals
21
+ Requires-Python: >=3.10
22
+ Description-Content-Type: text/markdown
23
+ License-File: LICENSE
24
+ Dynamic: license-file
25
+
26
+ # mozyo-bridge
27
+
28
+ `mozyo-bridge` は ClaudeCode / Codex の tmux pane に Redmine journal id を通知するための小さな bridge です。
29
+
30
+ 正本は Redmine です。`mozyo-bridge` は通知 transport であり、レビュー依頼・監査結果・完了判断の正本にはなりません。
31
+
32
+ `mozyo-bridge` is a small CLI that sends Redmine-gated notifications to Claude Code / Codex tmux panes.
33
+ It is only a notification transport. Redmine remains the source of truth for review requests, audit results, and completion decisions.
34
+
35
+ ## Quick Start
36
+
37
+ Install the CLI:
38
+
39
+ ```bash
40
+ pipx install mozyo-bridge
41
+ ```
42
+
43
+ Alternative install path:
44
+
45
+ ```bash
46
+ python3 -m pip install mozyo-bridge
47
+ python3 -m mozyo_bridge --help
48
+ ```
49
+
50
+ System dependency:
51
+
52
+ - `tmux` must be installed and available on `PATH`.
53
+ - Use `mozyo-bridge doctor` to check CLI, central rules, agent skills, scaffold, and tmux readiness in one command. Add `--target <project>` to also verify a scaffolded project. See `Beta Tester Install (GitHub main)` for the full acceptance smoke.
54
+
55
+ Use the full command in docs and durable task records:
56
+
57
+ ```bash
58
+ mozyo-bridge <command>
59
+ ```
60
+
61
+ The short alias is available for local interactive use:
62
+
63
+ ```bash
64
+ mozyo <command>
65
+ ```
66
+
67
+ ## Beta Tester Install (GitHub main)
68
+
69
+ PyPI release 前の beta tester 向け手順です。`Quick Start` の PyPI install とは別経路で、GitHub `main` の最新 commit を直接 install します。`mozyo-bridge --version` が表示する package version 文字列は `pyproject.toml` の値なので、PyPI release と GitHub `main` で同じ string になる場合があります。実体差は新規 sub-command (例: `mozyo-bridge scaffold status --help` / `mozyo-bridge doctor --json`) や、`mozyo-bridge rules install` が配布する preset 内容で確認してください。
70
+
71
+ PyPI / TestPyPI release の検証手順は本節と同じ acceptance smoke を、GitHub `main` install のかわりに該当 PyPI install で実行してください。release 経路の詳細は `vibes/docs/logics/release-flow.md` を見ます。
72
+
73
+ ### Isolation principle
74
+
75
+ `mozyo-bridge scaffold rules <preset>` は対象 directory の `AGENTS.md` / `CLAUDE.md` を生成 / 上書きします。本 repository (`mozyo_bridge` 自身) の tracked router を壊さないために、検証は必ず以下のどちらかで行います。
76
+
77
+ - `./tmp/mb-smoke-asana` / `./tmp/mb-smoke-redmine` のような isolated target を使う (`./tmp/` は `.gitignore` 配下の作業領域)。
78
+ - もしくは別 directory で `git clone` した fresh checkout、または任意の `/tmp/...` directory を使う。
79
+
80
+ 本 repo の working tree で `mozyo-bridge scaffold rules <preset>` を `--target` 無しで実行しないでください。tracked `AGENTS.md` / `CLAUDE.md` が上書き候補になり、`scaffold rules` 自体は default で既存ファイルを保護しますが、`--force` / `--backup` を伴うと取り違える可能性があります。
81
+
82
+ ### Acceptance smoke
83
+
84
+ 1. GitHub `main` から install (既存 PyPI install を上書き):
85
+
86
+ ```bash
87
+ pipx install --force git+https://github.com/hollySizzle/mozyo_bridge.git
88
+ ```
89
+
90
+ 2. user-global rules を install して状態を確認:
91
+
92
+ ```bash
93
+ mozyo-bridge rules install
94
+ mozyo-bridge rules status
95
+ ```
96
+
97
+ `rules status` は `${MOZYO_BRIDGE_HOME:-~/.mozyo_bridge}/rules/presets/<preset>/` に展開された user-global 規約 (`asana` / `redmine` / `none`) の状態を表示します。
98
+
99
+ 3. agent skill を install:
100
+
101
+ ```bash
102
+ # Codex skill (user-global, ${CODEX_HOME:-~/.codex}/skills/)
103
+ curl -fsSL https://raw.githubusercontent.com/hollySizzle/mozyo_bridge/main/scripts/install_codex_skill.sh | sh
104
+
105
+ # Claude Code skill (user-global, ${MOZYO_BRIDGE_CLAUDE_HOME:-~/.claude}/skills/)
106
+ curl -fsSL https://raw.githubusercontent.com/hollySizzle/mozyo_bridge/main/scripts/install_claude_skill.sh \
107
+ | MOZYO_BRIDGE_CLAUDE_SCOPE=global sh
108
+ ```
109
+
110
+ `project` scope や両 scope 配布、precedence の落とし穴 (Claude Code は同名 skill で personal が project を override) は `Agent Skill Install` 節と `vibes/docs/logics/skill-distribution.md` を参照してください。
111
+
112
+ 注: `MOZYO_BRIDGE_CLAUDE_SCOPE=global curl ... | sh` の形は env var が `curl` にしか渡らないため、`install_claude_skill.sh` は default の `scope=project` で動作してしまいます。pipe の右側で `sh` の直前に env を置く形を使ってください。
113
+
114
+ 4. Claude Code / Codex を再起動して、新しい skill と user-global 規約を再読み込みさせます。同 session 内では skill index がキャッシュされるため再起動を省略しないでください。
115
+
116
+ 5. install 直後の前提を `mozyo-bridge doctor` で一括確認します:
117
+
118
+ ```bash
119
+ mozyo-bridge doctor
120
+ ```
121
+
122
+ このタイミングでは `scaffold` section が `missing` (`-> mozyo-bridge scaffold rules <asana|redmine|none> --target ...`) になりますが、`cli` / `rules` / `codex_skill` / `claude_skill` の 4 section が ok であることを確認します。`next_action` (`-> ...`) を読み、不足があれば該当 install / set up を再実行してください。
123
+
124
+ 6. isolated target に対して Asana / Redmine の repo-local scaffold を smoke:
125
+
126
+ ```bash
127
+ mkdir -p ./tmp/mb-smoke-asana
128
+ mozyo-bridge scaffold rules asana --target ./tmp/mb-smoke-asana
129
+ mozyo-bridge scaffold status --target ./tmp/mb-smoke-asana
130
+ mozyo-bridge doctor --target ./tmp/mb-smoke-asana
131
+
132
+ mkdir -p ./tmp/mb-smoke-redmine
133
+ mozyo-bridge scaffold rules redmine --target ./tmp/mb-smoke-redmine
134
+ mozyo-bridge scaffold status --target ./tmp/mb-smoke-redmine
135
+ mozyo-bridge doctor --target ./tmp/mb-smoke-redmine
136
+ ```
137
+
138
+ 各 target で `scaffold status` が `result: clean` を返し、`mozyo-bridge doctor --target ...` の `scaffold` section が `ok` であれば、user-global 規約・repo-local routers・manifest が整合しています。両 preset (Asana と Redmine) を両方確認します。片側だけで完了させると preset 間 boundary の検証が落ちます。
139
+
140
+ 7. CI / 機械的な acceptance smoke では `--json` を使います:
141
+
142
+ ```bash
143
+ mozyo-bridge doctor --target ./tmp/mb-smoke-asana --json
144
+ ```
145
+
146
+ 出力は `{"ok": <bool>, "sections": {"cli": {...}, "rules": {...}, "codex_skill": {...}, "claude_skill": {...}, "scaffold": {...}, "tmux": {...}}}` 形式で、`jq '.sections.scaffold.status == "ok"'` 等で gate を組めます。exit code は `ok` が false の時に非ゼロです。
147
+
148
+ `mozyo-bridge rules status` (user-global 規約の install 状態) と `mozyo-bridge scaffold status` (repo-local manifest drift) は別責務です。前者は host 全体、後者は 1 つの scaffold 済 project を見ます。`mozyo-bridge doctor` は両者と CLI / Codex skill / Claude skill / tmux を 1 command で見る 6-section diagnostic で、acceptance smoke の標準確認に使います。詳細は次の logic docs を正本にしてください。
149
+
150
+ - `vibes/docs/logics/skill-distribution.md`
151
+ - `vibes/docs/logics/scaffold-rules.md`
152
+
153
+ PyPI / TestPyPI release 後に、ルートの `AGENTS.md` / `CLAUDE.md` を一旦削除して install 済 package だけで scaffold + 自律 handoff まで復旧できるかを検証する破壊的な acceptance test は別経路です。前提 (clean worktree / git-managed) と手順は `vibes/docs/logics/turnkey-e2e-acceptance.md` を参照してください。本 `Beta Tester Install` section の smoke は `./tmp/mb-smoke-*` で実行し、本 repo の tracked router を壊しません。
154
+
155
+ ## Project Root Resolution
156
+
157
+ PyPI / pipx などで CLI としてインストールする場合は、インストール先ではなく実行場所から project root を決めます。
158
+
159
+ 優先順位:
160
+
161
+ 1. `--repo /path/to/repo`
162
+ 2. `MOZYO_REPO=/path/to/repo`
163
+ 3. 現在のディレクトリから親方向に `.git` / `.tmux.conf` / `pyproject.toml` を探索
164
+ 4. 見つからない場合は現在のディレクトリ
165
+
166
+ 例:
167
+
168
+ ```bash
169
+ mozyo-bridge status --repo /path/to/repo
170
+ MOZYO_REPO=/path/to/repo mozyo-bridge tmux-ui-open
171
+ ```
172
+
173
+ `--cwd` を省略した tmux-ui 系コマンドは、解決した project root を作業ディレクトリとして使います。
174
+ `.tmux.conf` は project root にあればそれを使い、なければ `~/.config/mozyo-bridge/tmux.conf` を見ます。
175
+
176
+ ## Pane Setup
177
+
178
+ まず ClaudeCode / Codex の terminal を VS Code の `tmux: New tmux Terminal` または `tmux: Attach to tmux Window` で開きます。
179
+
180
+ 各 terminal の中で pane に名前を付けます。
181
+
182
+ ```bash
183
+ mozyo-bridge init claude
184
+ mozyo-bridge init codex
185
+ ```
186
+
187
+ 状態確認:
188
+
189
+ ```bash
190
+ mozyo-bridge status
191
+ ```
192
+
193
+ Claude Code の project skill は repo root の `.claude/skills/` から解決されます。
194
+ `mozyo-bridge status` / `doctor` が `claude_pane cwd is outside repo root` を出した場合、その pane では `/mozyo-bridge-agent` などの project skill が解決されない可能性があります。
195
+ repo root で Claude Code を起動し直してから `mozyo-bridge init claude` を再実行してください。
196
+
197
+ ## Agent Skill Install
198
+
199
+ Codex skill は Codex home (user-global) に同期します。
200
+
201
+ ```bash
202
+ curl -fsSL https://raw.githubusercontent.com/hollySizzle/mozyo_bridge/main/scripts/install_codex_skill.sh | sh
203
+ ```
204
+
205
+ Claude Code skill は default で project skill として対象 project に同期します。`MOZYO_BRIDGE_CLAUDE_SCOPE` で `project` または `global` を選びます。**Claude Code は同名 skill について personal/user skill (`~/.claude/skills/`) を project skill (`<project>/.claude/skills/`) より優先します** (公式 docs: <https://code.claude.com/docs/en/skills>)。多くの開発ツールと逆向きの慣習なので注意してください。
206
+
207
+ Project skill (default):
208
+
209
+ ```bash
210
+ curl -fsSL https://raw.githubusercontent.com/hollySizzle/mozyo_bridge/main/scripts/install_claude_skill.sh \
211
+ -o /tmp/install_mozyo_bridge_claude_skill.sh
212
+ MOZYO_BRIDGE_CLAUDE_PROJECT_DIR=/path/to/project \
213
+ sh /tmp/install_mozyo_bridge_claude_skill.sh
214
+ ```
215
+
216
+ User-global (personal) skill (Codex の `~/.codex/skills/` と対称な配置):
217
+
218
+ ```bash
219
+ curl -fsSL https://raw.githubusercontent.com/hollySizzle/mozyo_bridge/main/scripts/install_claude_skill.sh \
220
+ -o /tmp/install_mozyo_bridge_claude_skill.sh
221
+ MOZYO_BRIDGE_CLAUDE_SCOPE=global \
222
+ sh /tmp/install_mozyo_bridge_claude_skill.sh
223
+ ```
224
+
225
+ 両方に配布したい場合は、明確な意図のもとで script を二度実行します (`scope=project` と `scope=global` を順に)。同名で両方に install すると Claude Code は personal copy を読み、project copy は shadow されます。
226
+
227
+ Install destinations:
228
+
229
+ - `${CODEX_HOME:-$HOME/.codex}/skills/mozyo-bridge-agent/` (Codex user-global)
230
+ - `${MOZYO_BRIDGE_CLAUDE_HOME:-$HOME/.claude}/skills/mozyo-bridge-agent/` (Claude user/personal, scope=global)
231
+ - `${MOZYO_BRIDGE_CLAUDE_PROJECT_DIR:-$PWD}/.claude/skills/mozyo-bridge-agent/` (Claude project adapter, scope=project)
232
+ - `${MOZYO_BRIDGE_CLAUDE_PROJECT_DIR:-$PWD}/skills/mozyo-bridge-agent/` (Claude project shared body, scope=project)
233
+
234
+ 現在の project root で実行している場合だけ、`MOZYO_BRIDGE_CLAUDE_PROJECT_DIR` を省略できます。
235
+
236
+ ```bash
237
+ sh scripts/install_claude_skill.sh
238
+ ```
239
+
240
+ Both scripts fetch `hollySizzle/mozyo_bridge` `main` by default. Override the source with `MOZYO_BRIDGE_SKILL_REPO`, `MOZYO_BRIDGE_SKILL_REF`, or `MOZYO_BRIDGE_SKILL_ARCHIVE_URL` (the last accepts any tarball URL, including `file:///...` for local-checkout install).
241
+ Claude Code must be started from the target project directory for `.claude/skills/` project skills to resolve. User-global (personal) skills under `~/.claude/skills/` resolve regardless of where Claude Code is started; **personal/user skills override project skills with the same name** per Claude Code's documented precedence (Enterprise → Personal → Project).
242
+
243
+ Detailed distribution rules live in `vibes/docs/logics/skill-distribution.md`.
244
+
245
+ ## Agent Rules Scaffold
246
+
247
+ `mozyo-bridge` can install ticket-system-specific development flow rules and scaffold thin project routers for Claude Code and Codex.
248
+
249
+ Install the central rules store:
250
+
251
+ ```bash
252
+ mozyo-bridge rules install
253
+ mozyo-bridge rules status
254
+ ```
255
+
256
+ Scaffold project routers:
257
+
258
+ ```bash
259
+ mozyo-bridge scaffold rules asana
260
+ mozyo-bridge scaffold rules asana --target /path/to/project
261
+ mozyo-bridge scaffold rules redmine --target /path/to/project
262
+ mozyo-bridge scaffold rules none --target /path/to/project
263
+ ```
264
+
265
+ When `--target` or `--repo` is omitted, scaffold writes to the current working directory. Use an explicit target to scaffold a different directory.
266
+
267
+ This creates:
268
+
269
+ - `AGENTS.md`
270
+ - `CLAUDE.md`
271
+ - `.mozyo-bridge/scaffold.json`
272
+
273
+ The generated routers point to `${MOZYO_BRIDGE_HOME:-~/.mozyo_bridge}/rules/presets/<preset>/agent-workflow.md`. They do not copy the full development flow into each repository.
274
+
275
+ Existing `AGENTS.md` or `CLAUDE.md` files are not overwritten by default. Use `--dry-run` to preview, `--backup` to replace with backups, or `--force` to replace without backups.
276
+
277
+ After upgrading mozyo-bridge (e.g. `pipx upgrade mozyo-bridge && mozyo-bridge rules install`), check each scaffolded project for drift:
278
+
279
+ ```bash
280
+ mozyo-bridge scaffold status # implicit target = cwd
281
+ mozyo-bridge scaffold status --target /path/to/proj
282
+ mozyo-bridge scaffold status --target /path/to/proj --json
283
+ ```
284
+
285
+ The command compares the project's `.mozyo-bridge/scaffold.json` against the installed central preset (content hash, not only the version label) and the on-disk `AGENTS.md` / `CLAUDE.md`. Exit code is non-zero when central preset content drifted, when a router was modified locally, when the central preset is missing, or when the manifest is missing. Use `mozyo-bridge scaffold rules <preset> --backup` to regenerate routers and accept the new central preset content.
286
+
287
+ Detailed scaffold rules live in `vibes/docs/logics/scaffold-rules.md`.
288
+
289
+ ## Notification Commands
290
+
291
+ Claude Code から Codex へレビュー依頼を通知:
292
+
293
+ ```bash
294
+ mozyo-bridge notify-codex-review \
295
+ --issue 9020 \
296
+ --journal 46005 \
297
+ --commit f7b0398dc
298
+ ```
299
+
300
+ Codex から ClaudeCode へ監査結果を通知:
301
+
302
+ ```bash
303
+ mozyo-bridge notify-claude-review-result \
304
+ --issue 9020 \
305
+ --journal 46007 \
306
+ --commit f7b0398dc
307
+ ```
308
+
309
+ 設計相談など、レビュー以外の journal 通知:
310
+
311
+ ```bash
312
+ mozyo-bridge notify-codex \
313
+ --issue 9020 \
314
+ --journal 46005 \
315
+ --type design_consultation
316
+
317
+ mozyo-bridge notify-claude \
318
+ --issue 9020 \
319
+ --journal 46007 \
320
+ --type design_consultation_result
321
+ ```
322
+
323
+ ## Safety
324
+
325
+ - Redmine journal を必ず先に作る。
326
+ - `notify-*` には `--issue` と `--journal` を渡す。
327
+ - pane message の内容だけで作業開始・完了判断をしない。
328
+ - 受信側は通知を見たら Redmine gate を確認してから動く。
329
+ - `notify-*` は短い `[mozyo:notify:...]` marker を送信文へ付与し、target pane 上で marker を確認できた場合だけ Enter を送る。
330
+ - marker を確認できない場合、mozyo-bridge は入力欄を `C-u` で消し、Enter を送らず失敗する。
331
+
332
+ ## Legacy Queue
333
+
334
+ 通常運用では以下を使いません。
335
+
336
+ - `read-next --wait`
337
+ - Stop hook による handoff queue 待機
338
+ - `notify-* --task-id`
339
+ - `tmux-ui-*` による自動 pane 作成
340
+
341
+ `.agent_handoff/tasks.json` は retired queue の棚卸し用であり、standard notification fallback ではありません。退役前 queue の棚卸しだけ、専用コマンドを使います。
342
+
343
+ ```bash
344
+ mozyo-bridge notify-codex-legacy-task \
345
+ --issue 9020 \
346
+ --task-id legacy-task \
347
+ --type review_request
348
+ ```
349
+
350
+ ## Utility Commands
351
+
352
+ pane の内容を読む:
353
+
354
+ ```bash
355
+ mozyo-bridge read codex 30
356
+ ```
357
+
358
+ 明示的な operator 会話を送る:
359
+
360
+ ```bash
361
+ mozyo-bridge message codex '確認してください'
362
+ ```
363
+
364
+ 診断:
365
+
366
+ ```bash
367
+ mozyo-bridge doctor
368
+ ```
369
+
370
+ `message` / `keys` は送信前に `read` が必要です。これは誤送信を減らすためのガードです。
371
+
372
+ ## tmux-ui Helpers
373
+
374
+ `tmux-ui-open` / `tmux-ui-setup` / `tmux-ui-ensure` / `tmux-ui-spawn` は、tmux UI を直接作る環境向けの補助です。
375
+
376
+ VS Code `tmux-integrated` を標準運用にしている場合は使いません。pane が見つからない場合は、人間が terminal を開き、対象 agent を起動してから `init` してください。
377
+
378
+ ## Documentation Map
379
+
380
+ - `README.md`: user-facing install, core commands, and safety summary.
381
+ - `vibes/docs/rules/agent-workflow.md`: AI agent work rules for this repository.
382
+ - `vibes/docs/specs/project-map.md`: repository structure and source-of-truth routing.
383
+ - `vibes/docs/logics/skill-distribution.md`: Claude/Codex skill layout and install logic.
384
+ - `vibes/docs/logics/scaffold-rules.md`: scaffold rules presets for Asana, Redmine, and no-ticket projects.
385
+ - `vibes/docs/logics/release-flow.md`: release and verification gates.
386
+ - `vibes/docs/logics/turnkey-e2e-acceptance.md`: final destructive acceptance test using a published TestPyPI / PyPI install. Separate from `Beta Tester Install` smoke and run only on a clean git worktree.
387
+ - `skills/mozyo-bridge-agent/references/`: compact runtime references consumed by the shared agent skill.
388
+
389
+ ## Tests
390
+
391
+ ```bash
392
+ python3 -m unittest discover -s tests -v
393
+ ```
394
+
395
+ 実 tmux を使う smoke test:
396
+
397
+ ```bash
398
+ python3 smoke/real_tmux_notify_smoke.py
399
+ ```
400
+
401
+ smoke test はローカル tmux server に依存するため、通常の unit test には含めません。
402
+
403
+ Use `vibes/docs/logics/release-flow.md` for the full release verification route.
404
+
405
+ ## Release
406
+
407
+ Build locally:
408
+
409
+ ```bash
410
+ python3 -m pip install build
411
+ python3 -m build
412
+ ```
413
+
414
+ Publishing is intended to run through GitHub Actions and PyPI Trusted Publishing.
415
+ The local `.env` / `.pypirc` path should only be used for temporary release rehearsal, not as the normal production publishing path.
416
+
417
+ ## License
418
+
419
+ MIT