{"id":51562044,"url":"https://github.com/kazuph/yunomi","last_synced_at":"2026-07-10T11:30:58.811Z","repository":{"id":326761811,"uuid":"1104416122","full_name":"kazuph/yunomi","owner":"kazuph","description":"Human-in-the-loop review interface for AI coding workflows","archived":false,"fork":false,"pushed_at":"2026-07-04T00:40:00.000Z","size":61906,"stargazers_count":18,"open_issues_count":0,"forks_count":1,"subscribers_count":0,"default_branch":"main","last_synced_at":"2026-07-04T02:22:51.143Z","etag":null,"topics":["ai-agents","claude-code","code-review","developer-tools","human-in-the-loop","moonbit"],"latest_commit_sha":null,"homepage":"https://www.npmjs.com/package/yunomi","language":"MoonBit","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/kazuph.png","metadata":{"files":{"readme":"README.ja.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2025-11-26T07:24:33.000Z","updated_at":"2026-07-04T00:40:04.000Z","dependencies_parsed_at":null,"dependency_job_id":null,"html_url":"https://github.com/kazuph/yunomi","commit_stats":null,"previous_names":["kazuph/annotab","kazuph/dozo","kazuph/yunomi"],"tags_count":27,"template":false,"template_full_name":null,"purl":"pkg:github/kazuph/yunomi","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/kazuph%2Fyunomi","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/kazuph%2Fyunomi/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/kazuph%2Fyunomi/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/kazuph%2Fyunomi/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/kazuph","download_url":"https://codeload.github.com/kazuph/yunomi/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/kazuph%2Fyunomi/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":35330738,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-05-26T15:22:16.424Z","status":"online","status_checked_at":"2026-07-10T02:00:06.465Z","response_time":60,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["ai-agents","claude-code","code-review","developer-tools","human-in-the-loop","moonbit"],"created_at":"2026-07-10T11:30:58.073Z","updated_at":"2026-07-10T11:30:58.805Z","avatar_url":"https://github.com/kazuph.png","language":"MoonBit","funding_links":[],"categories":[],"sub_categories":[],"readme":"\u003ch1 align=\"center\"\u003eどうぞ 🍵\u003c/h1\u003e\n\n\u003cp align=\"center\"\u003e\n  \u003cimg src=\"https://raw.githubusercontent.com/kazuph/yunomi/main/assets/hero.png\" alt=\"お茶をそっと差し出すボクセルロボットと、報告書を読むエンジニア\" width=\"720\"\u003e\n\u003c/p\u003e\n\n\u003cp align=\"center\"\u003e\n  \u003cstrong\u003eレビューを、お茶のように差し出す。\u003c/strong\u003e\u003cbr\u003e\n  \u003cstrong\u003eyunomi\u003c/strong\u003e（湯のみ）— AIコーディングワークフローのためのHuman-in-the-loop承認ゲート\n\u003c/p\u003e\n\n\u003cp align=\"center\"\u003e\n  \u003ca href=\"https://www.npmjs.com/package/yunomi\"\u003e\u003cimg src=\"https://img.shields.io/npm/v/yunomi.svg\" alt=\"npm version\"\u003e\u003c/a\u003e\n  \u003ca href=\"https://github.com/kazuph/yunomi/blob/main/LICENSE\"\u003e\u003cimg src=\"https://img.shields.io/npm/l/yunomi.svg\" alt=\"license\"\u003e\u003c/a\u003e\n  \u003ca href=\"./README.md\"\u003eEnglish\u003c/a\u003e\n\u003c/p\u003e\n\n\u003cp align=\"center\"\u003e\n  \u003cimg src=\"https://raw.githubusercontent.com/kazuph/yunomi/main/assets/demo.gif\" alt=\"yunomiデモ: エージェントが報告書を差し出し、エビデンスを読み、コメントして承認するまで\" width=\"960\"\u003e\n\u003c/p\u003e\n\n---\n\n\u003e **インストール手順はありません。** AIに *「`npx yunomi` を実行してね」* と言うだけ。あとはAIが分かってくれます。\n\n**yunomi**（湯のみ）は、日本の暮らしのなかのあの器。取っ手も受け皿もなく、両手で包むと温かい。湯のみのお茶はいつも同じ出され方をします——そっと目の前に置かれて、小さな会釈と、ひとこと——「どうぞ」。\n\n## ストーリー\n\nyunomiは、人間が「やったものを見せろ」と要求するためのツールではありません。\nその**逆の所作**のためのツールです。\n\nAIエージェントは仕事を終えたとき、ただ「できました」と言うべきではありません。\n報告書を淹れるべきです——何を変えたのか、なぜか、エビデンスとテスト結果——それを湯のみに注いで、あなたの前にそっと置く:\n\n```bash\nnpx yunomi REPORT.md\n```\n\n「どうぞ🍵」\n\nブラウザが開きます。あなたは自分のペースで読み、コメントを残し、承認するか、突き返すか決めます。エージェントは良い給仕がそうするように、静かに待ちます——あなたが決めるまで。Submitするとyunomiは終了し、あなたの判断を構造化YAMLとしてエージェントへ返します。承認が出るまで、このループが続きます。\n\nvibe codingの時代、人間はもうすべてのdiffを読みません。読むのは仕事そのもの——**意図・変更・証拠**です。yunomiは、AIの仕事と人間の判断のあいだの受け渡しの瞬間。毎回、礼儀正しく差し出されます。\n\n## ロードマップ: The Review Loop 🔁\n\n一杯で会話は終わりません。yunomiの次のメジャー進化は、1回のレビューを**多ラウンドのループ**へ変えること——AIネイティブレビューツールを定義するワークフローです：\n\n- **ラウンド** — 修正依頼のあと、エージェントが直して `yunomi go` を実行すると、ブラウザに新しいラウンドが開き、**コメント以降に実際に何が変わったかのdiff**が表示される\n- **消えないスレッド** — コメントはラウンドを跨いで行に張り付き続け、**あなたが解決するまで未解決のまま**。「直したつもり」でフィードバックが闇に消えることはもうできない\n- **レビューファイル** — 判定は `.yunomi/reviews/` にブランチ単位で永続化。ターミナルが消えても、どのエージェント（Claude Code / Codex / Cursor / OpenCode…）でも翌日ループを再開できる\n- **ライブアプリレビュー** — `yunomi live http://localhost:3000` がdevサーバーをプロキシし、動いているアプリの**DOM要素に直接ピンコメント**できる\n- **レビュー中に話しかける** — 読み進めながらコメント1件だけをエージェントへ即送信し、返信がスレッドに届くのを眺められる\n- **`yunomi install \u003cagent\u003e`** / **`yunomi mcp`** — 全エージェント環境へのワンコマンドskill配布と、MCPサーバーモード\n\n[crit](https://crit.md/) などとのギャップ分析を含む機能単位の完全な計画は [PLAN.md](./PLAN.md) にあります。中心にあるのは変わらずEvidence-firstの報告文化——yunomiはこれからも**diffではなく、仕事そのもの**をレビューします。\n\n## はじめかた（手順はこれだけ）\n\nAIエージェントにこう言ってください:\n\n\u003e 「これから、仕事が終わったら `npx yunomi` を実行してね」\n\n以上です。エージェントが引数なしで `npx yunomi` を実行すると、スキル文書が出力され、エージェントはすべてを理解します——良い報告書の書き方、差し出し方、あなたの判断の受け取り方、承認まで続くループの回し方。続けてエージェントが「yunomiを永続スキルとしてインストールしますか？」と提案するので、一度YESと答えれば、以降は二度と言う必要はありません。\n\nグローバルインストール不要。プラグイン設定不要。設定ファイル不要。**お茶は勝手に出てきます。**\n\n---\n\nyunomi（旧名 **reviw**）は、Markdown報告書・表形式データ・テキスト・diffファイルをレビュー・注釈するための軽量ブラウザベースツール。[MoonBit](https://www.moonbitlang.com/)で書かれており、手書きJavaScriptはゼロ。CSV、TSV、プレーンテキスト、Markdown、unified diff形式をサポート。コメントはYAML形式で標準出力に出力されます。\n\n## 機能\n\n### ファイル形式サポート\n- **CSV/TSV**: スティッキーヘッダー、カラム固定、フィルタリング、カラムリサイズ付きで表形式データを表示\n- **Markdown**: 同期スクロール付きサイドバイサイドプレビュー、プレビューからクリックでコメント\n- **Diff/Patch**: シンタックスハイライト付きGitHubスタイルdiffビュー、500行以上の大きなファイルは折りたたみ可能、バイナリファイルは末尾にソート\n- **テキスト**: プレーンテキストファイルの行ごとコメント\n\n### Mermaid.jsダイアグラム\n- MarkdownファイルのMermaidダイアグラムを自動検出・レンダリング\n- ダイアグラムをクリックでミニマップ付きフルスクリーンビューアを開く\n- マウスホイールでズーム（カーソル位置を中心に、最大10倍）\n- マウスドラッグでパン\n- トラックパッドのピンチズーム・タッチジェスチャー対応\n- Windows向けShift+スクロールズーム対応\n- ダークモードでのサムネイル表示対応\n- フルスクリーン終了時にソース行をハイライト\n- 構文エラーはトースト通知で表示\n\n### メディアサイドバー\n- 左サイドバーに画像・動画のサムネイルギャラリーを表示\n- サムネイルクリックで対応するメディアにスクロール＆ハイライト\n- ↑↓キーで前後のメディアへジャンプ、Escapeで選択解除\n- 番号バッジ付きで素早く識別\n\n### メディア埋め込み規律チェック（AIフレンドリー）\n- メディアファイルが `![alt](path)` 埋め込みではなく `[text](path)` リンクで書かれている場合、`yunomi file.md` はエラー（exit 1）で起動を拒否\n- 行番号とそのまま適用できる修正案を全件表示するので、AIエージェントが自動修正してリトライできる\n\n### メディアフルスクリーン\n- Markdownプレビューの画像をクリックでフルスクリーンビューアを開く\n- 動画をクリックでYouTube風キーボードショートカット付きフルスクリーン再生（Space/K、J/L、矢印キー、0-9）\n- 画像/動画自体を含む任意の場所をクリックでフルスクリーンオーバーレイを閉じる\n- メディアをクリックするとMarkdownパネルの対応するソース行が自動ハイライト\n- 動画タイムライン設定（シーン検出感度の調整）\n\n### UI機能\n- **テーマ切り替え**: ライト/ダークモードの切り替え\n- **プレビューオンリーモード**: ソースパネルを非表示にしてプレビューをワイド表示\n- **見出し折りたたみ**: 見出しの▼をクリックでセクションを折りたたみ/展開\n- **複数ファイルサポート**: 複数ファイルを別々のポートで同時に開く\n- **ドラッグ選択**: 矩形領域または複数行を選択してバッチコメント\n- **リアルタイム更新**: SSE経由でファイル変更時にホットリロード\n- **コメント永続化**: localStorageにコメントを自動保存、リカバリーモーダル付き\n- **画像添付**: コメントダイアログとSubmitモーダルで画像添付（Cmd/Ctrl+Vで貼り付け）\n- **選択行コピー**: コメントダイアログの📋ボタンで選択行テキストをコピー\n- **キーボードショートカット**: Cmd/Ctrl+Enterで送信モーダルを開く\n- **マルチタブ同期**: 1つのタブでSubmitすると同じファイルの他のタブも連動して閉じる\n- **サーバー検出**: 既存サーバーを再利用（ロックファイルで管理）\n- **タブアクティベーション（macOS）**: AppleScript経由で既存ブラウザタブを自動アクティブ化\n- **レビュー履歴**: ファイルベースの永続的なレビュー履歴\n- **details/summary対応**: HTML details/summaryタグを折りたたみセクションとして表示\n\n### 出力\n- file、mode、row、col、value、コメントテキストを含むYAML形式\n- レビューノート用のサマリーフィールド\n- 画像添付はbase64データとして含む\n\n## インストール\n\n基本的に不要です——[はじめかた](#はじめかた手順はこれだけ)を見てください。グローバルコマンドが欲しい場合は:\n\n```bash\nnpm install -g yunomi\n```\n\nまたはnpxで直接実行:\n\n```bash\nnpx yunomi \u003cfile\u003e\n```\n\n## 使い方\n\n```bash\n# 引数なし: AIエージェント向けスキル文書を出力\nyunomi\n\n# 単一ファイル\nyunomi \u003cfile\u003e [--port 4989] [--encoding utf8|shift_jis|...]\n\n# 複数ファイル（各ファイルは連続するポートで開く）\nyunomi file1.csv file2.md file3.tsv --port 4989\n\n# 標準入力からのdiff\ngit diff HEAD | yunomi\n\n# diffファイル\nyunomi changes.diff\n```\n\n### オプション\n- `--port \u003cnumber\u003e`: 開始ポートを指定（デフォルト: 4989）\n- `--encoding \u003cencoding\u003e`: エンコーディングを強制指定（デフォルトは自動検出）\n- `--no-open`: ブラウザの自動起動を無効化\n- `--skill`: AIエージェント向けスキル文書を出力\n- `--help, -h`: ヘルプメッセージを表示\n- `--version, -v`: バージョン番号を表示\n\n### ワークフロー\n1. ブラウザが自動的に開く（macOS: `open` / Linux: `xdg-open` / Windows: `start`）\n2. セル/行をクリックしてコメント追加、またはドラッグで複数選択\n3. Cmd/Ctrl+Enterまたは「Submit \u0026 Exit」クリックでコメントを出力\n4. コメントはYAML形式で標準出力に出力\n\n## スクリーンショット\n\n### Markdownビュー（メディアサイドバー付き）\n![Markdown View with Media Sidebar](https://raw.githubusercontent.com/kazuph/yunomi/main/assets/screenshot-media-sidebar.png)\n\n### プレビューオンリーモード\n![Preview-only Mode](https://raw.githubusercontent.com/kazuph/yunomi/main/assets/screenshot-preview-only.png)\n\n### 見出し折りたたみ\n![Heading Toggle](https://raw.githubusercontent.com/kazuph/yunomi/main/assets/screenshot-heading-toggle.png)\n\n### コメントダイアログ（画像添付対応）\n![Comment Dialog](https://raw.githubusercontent.com/kazuph/yunomi/main/assets/screenshot-comment-dialog.png)\n\n### 動画フルスクリーン（タイムラインサムネイル付き）\n![Video Fullscreen](https://raw.githubusercontent.com/kazuph/yunomi/main/assets/screenshot-video-thumbnails.png)\n\n### Mermaidフルスクリーン（ミニマップ付き）\n![Mermaid Fullscreen](https://raw.githubusercontent.com/kazuph/yunomi/main/assets/screenshot-mermaid-fullscreen.png)\n\n### レビュー送信ダイアログ（画像添付対応）\n![Submit Review Dialog](https://raw.githubusercontent.com/kazuph/yunomi/main/assets/screenshot-submit-modal.png)\n\n### CSVビュー\n![CSV View](https://raw.githubusercontent.com/kazuph/yunomi/main/assets/screenshot-csv.png)\n\n### Diffビュー\n![Diff View](https://raw.githubusercontent.com/kazuph/yunomi/main/assets/screenshot-diff.png)\n\n## 出力例\n\n```yaml\nfile: data.csv\nmode: csv\nreason: button\nat: '2025-11-26T12:00:00.000Z'\ncomments:\n  - row: 2\n    col: 3\n    text: This value needs review\n    value: '150'\nsummary: Overall the data looks good, minor issues noted above.\n```\n\n## Claude Codeプラグイン\n\nこのリポジトリはClaude Codeプラグインマーケットプレイスとしても機能します。プラグインはタスク管理とレビュー自動化でyunomiをClaude Codeワークフローに統合します。\n\n\u003e 注: プラグインは v2.0.0 で `reviw-plugin` から `yunomi-plugin` に改名されました。旧プラグインを入れている場合は削除のうえ `yunomi-plugin@yunomi-plugins` を入れ直してください。\n\n### インストール\n\n```bash\n# Claude Codeで\n/plugin marketplace add kazuph/yunomi\n/plugin install yunomi-plugin@yunomi-plugins\n```\n\n### `npx skills` でスキルを入れる\n\nCodex、OpenCode、Cursor など、`npx skills` 対応エージェントで yunomi のタスクスキルを使いたい場合はこちらを使います。Claude Code は上のプラグイン導線を使ってください。\n\n```bash\n# まず検出されるスキルを確認\nnpx skills add https://github.com/kazuph/yunomi --list\n\n# Codex 向けに全スキルをグローバルインストール\nnpx skills add https://github.com/kazuph/yunomi -g -a codex -s '*' --copy -y\n\n# Codex と OpenCode へまとめてグローバルインストール\nnpx skills add https://github.com/kazuph/yunomi -g -a codex -a opencode -s '*' --copy -y\n```\n\n`npx skills` が配るのは `plugin/skills/` 配下のスキル群です。`-a codex -g --copy` を付けると、Codex のグローバルスキル置き場である `~/.agents/skills/` にコピーされます。`~/.agents/skills` が symlink の場合は、そのリンク先に実体が置かれます。\n\nClaude Code のプラグイン command や hooks はこの経路では入らず、上の Claude Code プラグイン導線でインストールします。\n\n### プラグインディレクトリ構成\n\n```\nplugin/\n├── .claude-plugin/\n│   └── plugin.json          # プラグインメタデータ（名前、バージョン、説明）\n├── agents/\n│   ├── report-builder.md     # レポート生成エージェント\n│   ├── e2e-health-reviewer.md    # E2Eテスト健全性チェック\n│   ├── review-code-quality.md    # コード品質レビュー\n│   ├── review-security.md        # セキュリティ監査\n│   ├── review-a11y-ux.md         # アクセシビリティ \u0026 UX\n│   ├── review-figma-fidelity.md  # デザイン忠実度\n│   ├── review-copy-consistency.md # テキスト整合性\n│   └── review-e2e-integrity.md   # E2Eテスト整合性\n├── skills/\n│   ├── ask/\n│   │   └── SKILL.md          # 要件ヒアリングスキル\n│   ├── bucho/\n│   │   └── SKILL.md          # 部長オーケストレーションスキル\n│   ├── do/\n│   │   └── SKILL.md          # タスク開始スキル\n│   ├── done/\n│   │   └── SKILL.md          # タスク完了スキル\n│   ├── exit-notifier/\n│   │   ├── SKILL.md          # background task 終了通知スキル\n│   │   └── scripts/\n│   │       └── watch-exit-notify.sh\n│   ├── tiny-do/\n│   │   └── SKILL.md          # 軽量タスク開始スキル\n│   ├── tiny-done/\n│   │   └── SKILL.md          # 軽量タスク完了スキル\n│   ├── validate-report/\n│   │   └── SKILL.md          # REPORT.md検証の内部 helper\n│   ├── artifact-proof/\n│   │   └── SKILL.md          # エビデンス収集スキル\n│   └── webapp-testing/\n│       ├── SKILL.md          # Webテストスキル\n│       ├── scripts/          # ヘルパースクリプト\n│       └── examples/         # 使用例\n├── hooks/\n│   └── hooks.json            # フック定義\n├── hooks-handlers/\n│   └── completion-checklist.sh  # UserPromptSubmitハンドラ\n└── README.md\n```\n\n### コンポーネント概要\n\n| 種類 | 名前 | 説明 |\n|------|------|------|\n| **タスクスキル** | `/yunomi:do` | タスク開始 - git wtでworktree作成、計画、todo登録 |\n| **タスクスキル** | `/yunomi:done` | 完了チェックリスト - 7レビューエージェント実行、エビデンス収集、レビュー開始 |\n| **タスクスキル** | `/yunomi:tiny-do` | 小タスク向けの軽量開始フロー |\n| **タスクスキル** | `/yunomi:tiny-done` | 小タスク向けの軽量完了フロー |\n| **タスクスキル** | `/yunomi:bucho` | Claude Code と Codex を束ねる部長モード |\n| **エージェント** | `report-builder` | ユーザーレビュー用レポート準備 |\n| **エージェント** | `review-code-quality` | コード品質: 可読性、DRY、型安全性、エラーハンドリング |\n| **エージェント** | `review-security` | セキュリティ: XSS、インジェクション、OWASP Top 10、秘密情報検出 |\n| **エージェント** | `review-a11y-ux` | アクセシビリティ: WCAG 2.2 AA、キーボード操作、UXフロー |\n| **エージェント** | `review-figma-fidelity` | デザイン: トークン準拠、視覚的一貫性 |\n| **エージェント** | `review-copy-consistency` | コピー: テキスト整合性、トーン\u0026マナー、i18n |\n| **エージェント** | `review-e2e-integrity` | E2E: ユーザーフロー再現、モック汚染検出 |\n| **エージェント** | `e2e-health-reviewer` | E2E: goto制限、レコードアサーション、ハードコード検出 |\n| **スキル** | `artifact-proof` | エビデンス収集（スクリーンショット、動画、ログ） |\n| **スキル** | `exit-notifier` | background task の終了と stdout/stderr を現在の tmux / Herdr pane に通知 |\n| **スキル** | `webapp-testing` | Playwrightによるブラウザ自動化と検証 |\n| **フック** | PreToolUse | git commit/push前にレビューを促すリマインダー |\n| **フック** | UserPromptSubmit | AI コンテキストに完了チェックリストを注入 |\n\n---\n\n### タスクスキル\n\n#### 同梱タスクスキル一覧\n\n| スキル | 用途 |\n|------|------|\n| `ask` | 実装前に要求・スコープ・制約・成功条件を明確化する |\n| `bucho` | Claude Code と Codex を tmux 経由で束ねてチーム開発フローを回す |\n| `check-yourself` | 推測を禁止し、実際の検証を強制する |\n| `commit-and-push` | コミットメッセージ生成、commit、push、最終状態確認まで実行する |\n| `do` | worktree 作成、計画策定、レビュー準備を含むフルの開始フローを実行する |\n| `done` | エビデンス収集と yunomi レビューを含むフルの完了フローを実行する |\n| `exit-notifier` | background task の終了結果と stdout/stderr を現在の tmux / Herdr pane に返す |\n| `open` | ファイル、成果物、URL を macOS の `open` で開く |\n| `tiny-do` | 小さなタスク向けの軽量開始フローで実装へ入る |\n| `tiny-done` | 小さなタスク向けの軽量完了フローで検証と確認を行う |\n| `validate-report` | `done` から呼ばれる内部 helper として `REPORT.md` を検証する |\n\n#### `/yunomi:do \u003cタスク説明\u003e`\n\n適切な環境セットアップで新しいタスクを開始します。\n\n**処理内容:**\n1. git wtを使用して分離開発用のgit worktreeを作成（`feature/\u003cname\u003e`、`fix/\u003cname\u003e`など）\n2. エビデンス用の`.artifacts/\u003cfeature\u003e/`ディレクトリをセットアップ\n3. 計画とTODOチェックリスト付きの`REPORT.md`を作成\n4. 進捗追跡用にTodoWriteにtodoを登録\n\n**作成されるディレクトリ構成:**\n```\n\u003cworktree\u003e/                   # 例: .worktree/feature-auth/\n└── .artifacts/\n    └── \u003cfeature\u003e/            # 例: auth（feature/authから）\n        ├── REPORT.md         # 計画、進捗、エビデンスリンク\n        ├── images/           # スクリーンショット\n        └── videos/           # 動画録画\n```\n\n**タスク再開:** セッション開始時またはコンテキスト圧縮後、スキルは既存のworktreeを確認（`git wt`）し、`REPORT.md`から再開します。\n\n#### `/yunomi:done`\n\nタスク完了を許可する前に完了基準を検証します。\n\n**適用されるチェックリスト:**\n- [ ] ビルド成功（型/lintエラーなし）\n- [ ] 開発サーバー起動・動作\n- [ ] `webapp-testing`スキルで検証\n- [ ] `.artifacts/\u003cfeature\u003e/`にエビデンス収集\n- [ ] `artifact-proof`スキルでレポート作成\n- [ ] yunomiでレビュー（フォアグラウンドモード）\n- [ ] ユーザー承認取得\n\n**禁止事項:**\n- 検証なしに「実装完了」と言う\n- yunomiレビュー前にコミット/プッシュ\n- エビデンスなしのレポート\n\n---\n\n### エージェント\n\n#### `report-builder`\n\nレビュー資料準備専門エージェント。\n\n**役割:**\n- 実装を構造化レポートに整理\n- エビデンス（スクリーンショット、動画）を収集・配置\n- yunomiレビュー用に`REPORT.md`を準備\n- yunomiフィードバックを解析してtodoに登録\n\n**呼び出し:**\n```\nTask tool with subagent_type: \"report-builder\"\n```\n\n**自動読み込みスキル:** `artifact-proof`\n\n---\n\n### スキル\n\n#### `artifact-proof`\n\nビジュアルリグレッションとPRドキュメント用のエビデンス収集を管理。\n\n**機能:**\n- `.artifacts/\u003cfeature\u003e/`配下にスクリーンショットと動画\n- 自動キャプチャ用Playwright統合\n- 動画ファイル用Git LFSセットアップ\n- コミットハッシュ付きPR画像URL（ブランチ削除後も永続）\n\n**yunomi統合:**\n```bash\n# yunomiでレポートを開く（フォアグラウンド必須）\nnpx yunomi .artifacts/\u003cfeature\u003e/REPORT.md\n\n# 動画プレビュー付き\nopen .artifacts/\u003cfeature\u003e/videos/demo.webm\nnpx yunomi .artifacts/\u003cfeature\u003e/REPORT.md\n```\n\n#### `webapp-testing`\n\nPlaywrightを使用したブラウザ自動化ツールキット。\n\n**機能:**\n- TypeScript Playwright Test (`@playwright/test`)\n- webServerサポート付きPlaywright設定\n- スクリーンショットと動画キャプチャ\n- コンソールログとネットワークリクエスト監視\n- 高度なデバッグ用CDP統合\n\n**クイック検証:**\n```bash\nnode -e \"const { chromium } = require('playwright');\n(async () =\u003e {\n  const browser = await chromium.launch();\n  const page = await browser.newPage();\n  await page.goto('http://localhost:3000', { waitUntil: 'networkidle' });\n  await page.screenshot({ path: '/tmp/webapp.png', fullPage: true });\n  await browser.close();\n})();\"\n```\n\n---\n\n### フック\n\n#### PreToolUse（Bashマッチャー）\n\n`git commit`または`git push`検出時にトリガー。\n\n**メッセージ:** コミット前に`/yunomi:done`を実行してyunomiでレビューするよう促す。\n\n#### UserPromptSubmit\n\nすべてのAI応答コンテキストに完了チェックリストを注入。\n\n**目的:** 適切な検証なしの「実装完了」主張を防止。チェックリストは常にAIに見え、完了基準の一貫した適用を保証。\n\n---\n\n### ワークフロー\n\n```\n/yunomi:do \u003cタスク説明\u003e\n    ↓\nWorktree作成 + 計画 + TodoWrite\n    ↓\n実装（サブエージェント経由）\n    ↓\nビルド \u0026 検証（webapp-testing）\n    ↓\n/yunomi:done\n    ↓\nエビデンス収集（artifact-proof）\n    ↓\nnpx yunomiでレポートを開く（フォアグラウンド）\n    ↓\nユーザーコメント → Submit \u0026 Exit\n    ↓\nフィードバックをTodoに登録\n    ↓\n修正 → 承認まで再レビュー\n    ↓\nコミット \u0026 PR（承認後のみ）\n```\n\n### 完了基準\n\n| ステージ | 内容 | ステータス |\n|----------|------|----------|\n| 1/3 | 実装完了 | まだ報告しない |\n| 2/3 | ビルド、起動、検証完了 | まだ報告しない |\n| 3/3 | yunomiでレビュー → ユーザー承認 | 完了 |\n\n### 設計思想\n\nプラグインは**Human-in-the-loop**開発を強制します:\n\n1. **ショートカットなし:** モック、バイパス、検証スキップは禁止\n2. **エビデンス必須:** すべての完了主張にはスクリーンショット/動画が必要\n3. **ユーザー承認:** ユーザーのみがタスクを完了としてマークできる\n4. **コンテキスト保持:** 重い操作はサブエージェントで実行してコンテキスト枯渇を防止\n\n### `.artifacts`ディレクトリポリシー\n\n`.artifacts/`ディレクトリは開発中に生成されたスクリーンショット、動画、レポートを保存します。**デフォルトでは、このディレクトリは`.gitignore`に追加すべきです**。大きなメディアファイルによるリポジトリ肥大化を防ぎます。\n\n```bash\n# .gitignoreに追加（推奨）\necho \".artifacts\" \u003e\u003e .gitignore\n```\n\n**デフォルトで除外する理由:**\n- スクリーンショットと動画は大きくなる可能性がある（特に画面録画）\n- エビデンスは主にレビュープロセス用で、永続的なドキュメントではない\n- リポジトリサイズを管理可能に保つ\n\n**特定のエビデンスをコミットしたい場合:**\n\n`git add --force`で明示的にファイルを追加:\n\n```bash\n# 特定のエビデンスファイルを強制追加\ngit add --force .artifacts/feature/images/final-screenshot.png\ngit add --force .artifacts/feature/REPORT.md\n\n# または機能全体のエビデンスを強制追加\ngit add --force .artifacts/feature/\n```\n\n**動画ファイル**の場合、リポジトリ肥大化を避けるためGit LFSを使用:\n\n```bash\ngit lfs track \"*.mp4\" \"*.webm\" \"*.mov\"\ngit add .gitattributes\ngit add --force .artifacts/feature/videos/demo.mp4\n```\n\nこのアプローチで完全なコントロールが可能: デフォルトで除外、必要なものだけをコミット。\n\n## 開発\n\nyunomiは[MoonBit](https://www.moonbitlang.com/)で書かれており、JavaScriptにコンパイルされます。\n\n```bash\n# ビルド\ncd v2 \u0026\u0026 moon build --target js --release\n\n# テスト実行\ncd v2 \u0026\u0026 moon test --target js\n\n# npmパッケージング（MoonBitビルド + dist/にコピー）\nnpm run prepack\n```\n\n- ソース: `v2/src/`（MoonBit）\n- ビルド出力: `dist/server/server.js`、`dist/ui/ui.js`\n- プラグイン: `plugin/`ディレクトリ\n\n## ライセンス\n\nMIT\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fkazuph%2Fyunomi","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fkazuph%2Fyunomi","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fkazuph%2Fyunomi/lists"}