conductor-setup について
Conductor向けにRailsプロジェクトを設定するスキルです。並列コーディングエージェントを使う開発者を対象に、設定・サーバースクリプトを作成し、必要なRedisやInertia SSRの設定を調整します。既存ファイルは上書きしません。
主な機能
- 01conductor.jsonの作成
- 02セットアップとサーバースクリプトの生成
- 03必要に応じたRedis環境設定の調整
- 04Inertia SSRポートの設定
- 05ファイルとスクリプト実行の確認
活用シーン
- 01RailsリポジトリのConductor対応
- 02ワークツリー間での環境認証情報の共有
- 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/ディレクトリが存在しない場合は作成します。
検証
ファイルの作成後、次のことを行います。
- Conductor のファイルがすべて存在し、スクリプトが実行可能であることを確認します
script/serverを実行して、エラーなく起動することを確認します- Rails 設定で
ENV['REDIS_URL']またはENV.fetch('REDIS_URL', ...)が正しく参照されていることを確認します