mcpField
C
conductor-setup

conductor-setup

github.com/shpigfordエージェントワークフロー71 回インストール
リポジトリ

conductor-setup について

Conductor向けにRailsプロジェクトを設定するスキルです。並列コーディングエージェントを使う開発者を対象に、設定・サーバースクリプトを作成し、必要なRedisやInertia SSRの設定を調整します。既存ファイルは上書きしません。

主な機能

  1. 01conductor.jsonの作成
  2. 02セットアップとサーバースクリプトの生成
  3. 03必要に応じたRedis環境設定の調整
  4. 04Inertia SSRポートの設定
  5. 05ファイルとスクリプト実行の確認

活用シーン

  1. 01RailsリポジトリのConductor対応
  2. 02ワークツリー間での環境認証情報の共有
  3. 03並列開発環境でのサーバー起動確認

インストール

コマンドをコピーしてターミナルで実行します。

$npx skills add https://github.com/shpigford/skills --skill conductor-setup

インストール後、Claude Code で/conductor-setupを入力して読み込まれたか確認します。

詳細

Conductor(並列コーディングエージェント向けの Mac アプリ)用に、この Rails プロジェクトをセットアップします。

作成するもの

1. conductor.json(プロジェクトルート)

まだ存在しない場合は、プロジェクトルートに conductor.json を作成します。

{
  "scripts": {
    "setup": "bin/conductor-setup",
    "run": "script/server"
  }
}

2. bin/conductor-setup(実行可能ファイル)

まだ存在しない場合は、bin/conductor-setup を作成します。

#!/bin/bash
set -e

# Symlink .env from repo root (where secrets live, outside worktrees)
[ -f "$CONDUCTOR_ROOT_PATH/.env" ] && ln -sf "$CONDUCTOR_ROOT_PATH/.env" .env

# Symlink Rails master key
[ -f "$CONDUCTOR_ROOT_PATH/config/master.key" ] && ln -sf "$CONDUCTOR_ROOT_PATH/config/master.key" config/master.key

# Install dependencies
bundle install
npm install

chmod +x bin/conductor-setup を実行して、実行可能にします。

3. script/server(実行可能ファイル)

必要に応じて script ディレクトリを作成し、まだ存在しない場合は script/server を作成します。

#!/bin/bash

# === Port Configuration ===
export PORT=${CONDUCTOR_PORT:-3000}
export WEB_PORT=$PORT
export VITE_RUBY_PORT=$((PORT + 1000))

# === SSR Port (for Inertia SSR server) ===
export INERTIA_SSR_PORT=$((PORT + 100))
export INERTIA_SSR_URL="http://localhost:${INERTIA_SSR_PORT}"

# === Redis Isolation ===
if [ -n "$CONDUCTOR_WORKSPACE_NAME" ]; then
  HASH=$(printf '%s' "$CONDUCTOR_WORKSPACE_NAME" | cksum | cut -d' ' -f1)
  REDIS_DB=$((HASH % 16))
  export REDIS_URL="redis://localhost:6379/${REDIS_DB}"
fi

exec bin/dev

chmod +x script/server を実行して、実行可能にします。

4. Rails 設定ファイルを更新する

以下の各ファイルが存在し、Redis の設定を含む場合は、フォールバックを指定して ENV.fetch('REDIS_URL', ...) または ENV['REDIS_URL'] を使用するように更新します。

config/initializers/sidekiq.rb

このファイルが存在し、Redis を設定している場合は、次のように更新します。

redis_url = ENV.fetch('REDIS_URL', 'redis://localhost:6379/0')
config/cable.yml

このファイルが存在する場合は、開発環境のアダプターを次のように更新します。

development:
  adapter: redis
  url: <%= ENV.fetch('REDIS_URL', 'redis://localhost:6379/1') %>
config/environments/development.rb

このファイルでキャッシュ用の Redis を設定している場合は、次のように更新します。

config.cache_store = :redis_cache_store, { url: ENV.fetch('REDIS_URL', 'redis://localhost:6379/0') }
config/initializers/rack_attack.rb

このファイルが存在し、Redis キャッシュストアを設定している場合は、次のように更新します。

Rack::Attack.cache.store = ActiveSupport::Cache::RedisCacheStore.new(url: ENV.fetch('REDIS_URL', 'redis://localhost:6379/0'))
config/initializers/inertia_rails.rb(SSR)

このファイルが存在し、SSR を設定している場合は、SSR URL が環境変数から読み込まれるようにします。

config.ssr_url = ENV.fetch('INERTIA_SSR_URL', 'http://localhost:13714')
SSR エントリーポイント(例:app/frontend/ssr/ssr.tsx)

プロジェクトで Inertia SSR と createServer を使用している場合は、環境変数からポートを渡します。

const port = Number(process.env.INERTIA_SSR_PORT) || 13714

createServer((page) =>
  createInertiaApp({ ... }),
  port,
)

実装上の注意

  • 既存ファイルを上書きしないでください:conductor.json、bin/conductor-setup、script/server が存在するか確認してから作成します。存在する場合は作成をスキップし、その旨をユーザーに知らせます。
  • Rails 設定の更新:Redis 関連の設定のみを変更します。ファイルが存在しない場合や Redis を使用していない場合は、問題なくスキップします。
  • 必要に応じてディレクトリを作成する:script/ ディレクトリが存在しない場合は作成します。

検証

ファイルの作成後、次のことを行います。

  1. Conductor のファイルがすべて存在し、スクリプトが実行可能であることを確認します
  2. script/server を実行して、エラーなく起動することを確認します
  3. Rails 設定で ENV['REDIS_URL'] または ENV.fetch('REDIS_URL', ...) が正しく参照されていることを確認します

コメント