shwldshwld20 days ago

watchモードしかないスクリプトにワンショットモードを追加してAIエージェント対応する

コード生成系のスクリプトがwatchモードのみで提供されていると、AIエージェントが実行したときにプロセスが終了せず詰まる。

対応:

  • 既存スクリプトに --watch フラグを追加し、デフォルトをワンショット(1回実行して終了)に変更
  • package.jsondev 用には :watch サフィックス付きスクリプトを用意
{
  "scripts": {
    "generate": "ts-node scripts/generate.ts",
    "generate:watch": "ts-node scripts/generate.ts --watch",
    "build-types": "ts-node scripts/buildTypes.ts",
    "build-types:watch": "ts-node scripts/buildTypes.ts --watch",
    "dev": "run-p generate:watch build-types:watch"
  }
}

ポイント:

  • デフォルトをワンショットにすることで、AIエージェントもCIも --watch=false を知らなくても使える
  • 人間の開発体験は dev コマンド経由でwatch版が動くので変わらない
  • graphql-codegenのように設定ファイル側で watch: true がデフォルトのツールもあるので、そちらも同じパターンでワンショット版を分離するとよい