Skip to content

refactor(commit,pr): TS直接実行をViteバンドル経由に置換#265

Merged
ncaq merged 8 commits into
masterfrom
bundle
May 15, 2026
Merged

refactor(commit,pr): TS直接実行をViteバンドル経由に置換#265
ncaq merged 8 commits into
masterfrom
bundle

Conversation

@ncaq
Copy link
Copy Markdown
Owner

@ncaq ncaq commented May 15, 2026

bin/*.tsをNode.jsが直接実行していた構成から、
viteによるバンドル方式に移行します。
外部ライブラリを追加した時の依存解決をビルド時へ寄せて挙動を明示化します。

主な変更内容は以下です。

  • TSソースをbin/からsrc/bin/に移動し、viteでdist/bin/*.jsへバンドル
  • bin/には薄いbashラッパーを配置し、readlink -fで自身の位置を解決してdist/bin/*.jsexec node
  • kyosei同様にssr.noExternal: trueで全依存をバンドルに含める
  • hooks/hooks.jsonhooks/buildSessionStartPreToolUseの両方で自動ビルド
  • tsconfig.jsonbundler/preserveに切り替え、importの.ts拡張子を全削除
  • editor.tsはLinuxの/usr/bin/editorとの衝突を避けてkonoka-editorにrename
  • package.jsonbinフィールドは廃止(Claude Codeがbin/を自動PATH追加するため不要)
  • engines.nodeをnixpkgs stableに合わせて>=22.0.0に統一

kyoseiはBash(node:*)を広く許可してnode起動コマンドをSKILL.md本文に書きますが、
今回はbashラッパーを噛ませることで個別のBash(<name>:*)許可を維持し、
権限粒度を絞ったまま移行しています。

`bin/*.ts`をNode.jsが直接実行していた構成から、
viteによるバンドル方式に移行します。
外部ライブラリを追加した時の依存解決をビルド時へ寄せて挙動を明示化します。

主な変更内容は以下です。

- TSソースを`bin/`から`src/bin/`に移動し、viteで`dist/bin/*.js`へバンドル
- `bin/`には薄いbashラッパーを配置し、`readlink -f`で自身の位置を解決して`dist/bin/*.js`を`exec node`
- kyosei同様に`ssr.noExternal: true`で全依存をバンドルに含める
- `hooks/hooks.json`と`hooks/build`で`SessionStart`と`PreToolUse`の両方で自動ビルド
- `tsconfig.json`を`bundler`/`preserve`に切り替え、importの`.ts`拡張子を全削除
- `editor.ts`はLinuxの`/usr/bin/editor`との衝突を避けて`konoka-editor`にrename
- `package.json`の`bin`フィールドは廃止(Claude Codeが`bin/`を自動PATH追加するため不要)
- `engines.node`をnixpkgs stableに合わせて`>=22.0.0`に統一

kyoseiは`Bash(node:*)`を広く許可して`node`起動コマンドを`SKILL.md`本文に書きますが、
今回はbashラッパーを噛ませることで個別の`Bash(<name>:*)`許可を維持し、
権限粒度を絞ったまま移行しています。
@ncaq ncaq self-assigned this May 15, 2026
@ncaq ncaq added the Type: Refactoring Includes cleanup label May 15, 2026
Copy link
Copy Markdown
Contributor

@claude claude Bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

本PRはcommit/prプラグインのTS直接実行をViteバンドル経由に統一する大きめのリファクタです。kyoseiプラグインの構成と揃える方向性は妥当で、bashラッパー+exec nodeの作りも安全に書かれています。security-reviewerは新たな脆弱性を検出していません。

主な指摘は以下です。

ドキュメント整合性 (IMPORTANT)

本PRはdiffに含まれないためインライン化できませんが、READMEのNode.jsバージョン要件が新しい構成と不整合です。両方とも更新をお願いします。

  • plugins/commit/README.md: Node.js >= 23.6.0(TypeScriptファイルのフラグなし実行に必要)→ engines.node>=22.0.0になっており、Vite経由実行に変わったので括弧書きの理由も書き換えてください。
  • plugins/pr/README.md: 同様にNode.js >= 24の記述を>=22.0.0に揃え、理由をViteバンドル成果物の実行に即した内容に更新してください。

コード品質 (WARNING)

  • konoka-editor.tsEDITOR環境変数のパースが空白splitのみで、スペース入りパスやクォート付き引数を扱えません(詳細は当該ファイルのインラインコメント参照)。
  • assertEditorSuccessthrowはトップレベルでcatchされず、他のCLIエントリと挙動が揃いません。
  • plugins/commit/src/bin/konoka-editor.tsplugins/pr/src/bin/konoka-editor.tsは完全に同一内容のため、共有モジュール化の検討余地があります。

依存方針の不揃い (NOTE)

@types/node22.19.19engines.node>=22.0.0に揃えた一方、plugins/kyosei@types/node 20系/node>=20.20.0のままで、konoka内のNodeサポートポリシーが不揃いです。意図的でなければ揃えることを検討してください。

軽微なスタイル (NOTE)

plugins/pr/src/bin/sync-and-push.tsのcatch節でprocess.exitCode = 1設定後のreturnは、戻り値型がPromise<void>のため省略可能です。他のCLIエントリ(prepare-editmsg.ts等)とtry/catchパターンも揃っていないため、共通のrunCli(main)ヘルパに集約すると意図が伝わりやすくなります。

Review metadata
  • Reviewed commit: 1bf63c2
  • PR: #265
  • kyosei: 3.4.3
  • kyosei-action: 2.1.1
  • Claude Code: 2.1.139
  • Model: claude-opus-4-7
  • Execution: GitHub Actions (run)

Comment thread plugins/commit/src/bin/konoka-editor.ts
Comment thread plugins/commit/package.json
Comment thread plugins/commit/bin/commit-prepare
Comment thread plugins/commit/hooks/build
Comment thread plugins/commit/hooks/build
Comment thread plugins/commit/vite.config.ts
Comment thread plugins/commit/hooks/hooks.json
Copy link
Copy Markdown
Contributor

@claude claude Bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

前回COMMENTレビュー以降の増分は2コミット(Node.js要件を>=22.19に統一, 不要なreturn削除)で、前回の主要指摘であったREADMEとengines.nodeのNodeバージョン不整合は解消されています。sync-and-push.tsのreturn削除も意図通りで問題ありません。

増分とPR全体を見直して新たに気付いた点を2つ挙げます。いずれも軽微で、本PR内での対応かフォローアップかは任せます。

  • package-lock.jsonengines.nodeがまだ>=22.0.0のままで、package.json>=22.19と乖離しています。npm install(またはnpm i --package-lock-only)で再生成して揃えてください。commit/prの両方に同じ問題があります。
  • 新しいhooks/buildnpm ci/npm run buildを要求するためnpmが事実上の実行要件になっていますが、commit/prのREADMEにはNode.jsしか書かれていません。kyoseiのREADMEと同様にnpmを要件に加え、自動ビルドの挙動を一文添えるとユーザの混乱が減ります。

コード品質・セキュリティ・性能・テスト観点では追加の指摘はありません。

Review metadata
  • Reviewed commit: eeab580
  • PR: #265
  • kyosei: 3.4.3
  • kyosei-action: 2.1.1
  • Claude Code: 2.1.139
  • Model: claude-opus-4-7
  • Execution: GitHub Actions (run)

Comment thread plugins/commit/package.json Outdated
Comment thread plugins/commit/package.json
Comment thread plugins/commit/README.md Outdated
Comment thread plugins/pr/README.md Outdated
ncaq added 5 commits May 15, 2026 20:53
- Node.jsのバージョン指定を ">=22.19" から ">=22.19.0" へ統一
- plugins/commit, plugins/pr, plugins/kyosei のREADMEとpackageファイルを修正
- バージョン表記の明確化により要件の誤解を防止
Copy link
Copy Markdown
Contributor

@claude claude Bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

前回COMMENTレビュー以降の増分は4コミットで、いずれも前回指摘へのフォローアップです。

  • plugins/commit/README.md/plugins/pr/README.mdnpmの要件を追記
  • package.jsonengines.node>=22.19から>=22.19.0に明示化し、package-lock.jsonも再生成して整合
  • flake.nixpkgs.nodejs_24inherit (pkgs) nodejsへ変更し、nixpkgs stable (現在v22系) に揃え、@types/node 22.19.19との整合性も改善

コード品質・依存・パフォーマンス・テスト・セキュリティ・ドキュメント各観点で追加の指摘はありません。前回スレッド (全て解決済み) で言及されていたkyoseiとのNodeバージョン方針差や共通化の提案はncaq/konokaの方針として明示的にcloseされており、本PR内での対応は不要です。

Review metadata
  • Reviewed commit: a887ab7
  • PR: #265
  • kyosei: 3.4.3
  • kyosei-action: 2.1.1
  • Claude Code: 2.1.139
  • Model: claude-opus-4-7
  • Execution: GitHub Actions (run)

Copy link
Copy Markdown
Contributor

@claude claude Bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

前回APPROVE済みのcommit a887ab7 以降の増分はplugins/commit/README.mdの重複空行1行削除のみで、コンテンツやコードに影響はありません。前回判定を維持してAPPROVEします。

Review metadata
  • Reviewed commit: 7a3d071
  • PR: #265
  • kyosei: 3.4.3
  • kyosei-action: 2.1.1
  • Claude Code: 2.1.139
  • Model: claude-opus-4-7
  • Execution: GitHub Actions (run)

@ncaq ncaq merged commit e0fa3cb into master May 15, 2026
6 checks passed
@ncaq ncaq deleted the bundle branch May 15, 2026 12:07
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

Type: Refactoring Includes cleanup

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant