conductor-setup について
指定した Rails プロジェクトを Conductor ワークスペースで実行できるよう設定するスキルです。セットアップ・サーバースクリプトのひな型と、並行するコーディングエージェント向けの Redis 設定更新方法を示します。
主な機能
- 01Conductor プロジェクト設定の作成
- 02セットアップ・サーバースクリプトの用意
- 03環境変数による Redis 設定
- 04既存ファイルと無関係な設定の保持
- 05スクリプトとワークスペース設定の検証
活用シーン
- 01Conductor 用 Rails プロジェクトの準備
- 02ワークスペースの Redis 設定
- 03セットアップ・サーバーの起動口追加
- 04起動前のプロジェクトひな型確認
インストール
コマンドをコピーしてターミナルで実行します。
npx skills add https:/ / github.com/ sickn33/ agentic-awesome-skills --skill conductor-setupインストール後、Claude Code で/conductor-setupを入力して読み込まれたか確認します。
詳細
Conductor アプリ向けに、明示的に選択された Rails 開発プロジェクトをセットアップします。フロントマターに記載されたツールやコンテキストに関するヒントはホスト固有のものであり、委任、シークレットの変更、権限の拡大を許可するものではありません。インストールを実行する前に既存のスクリプトとロックファイルを確認し、無関係な設定は維持してください。
使用する状況
- Conductor ワークスペース内で正しく動作するよう、Rails プロジェクトを設定する必要がある場合。
- 分離されたポート、Redis 設定、共有シークレットを使って、複数のコーディングエージェントで並行作業できるようにする場合。
- Rails リポジトリに標準の
conductor.json、bin/conductor-setup、script/serverを用意する場合。
作成するもの
1. conductor.json(プロジェクトルート)
まだ存在しない場合は、プロジェクトルートに conductor.json を作成します。
{
"scripts": {
"setup": "bin/conductor-setup",
"run": "script/server"
}
}
2. bin/conductor-setup(実行可能)
まだ存在しない場合は、bin/conductor-setup を作成します。
#!/usr/bin/env bash
set -euo pipefail
: "${CONDUCTOR_ROOT_PATH:?Set the reviewed repository root first}"
# Link only an explicitly approved local development secret source.
# Preserve any existing destination, including dangling symlinks; never use ln -sf.
link_if_absent() {
local source_path="$1" destination="$2"
if [[ -f "$source_path" && ! -e "$destination" && ! -L "$destination" ]]; then
ln -s -- "$source_path" "$destination"
fi
}
link_if_absent "$CONDUCTOR_ROOT_PATH/.env" .env
mkdir -p config
link_if_absent "$CONDUCTOR_ROOT_PATH/config/master.key" config/master.key
# Dependency installation may execute trusted project code and access the network.
# Review Gemfile.lock/package-lock.json and lifecycle behavior before this step.
bundle install
if [[ -f package-lock.json ]]; then
npm ci --ignore-scripts
elif [[ -f package.json ]]; then
printf '%s\n' 'A reviewed npm lockfile is required; no silent npm install.' >&2
exit 1
fi
chmod +x bin/conductor-setup で実行可能にします。
3. script/server(実行可能)
必要に応じて script ディレクトリを作成し、まだ存在しない場合は script/server を作成します。
#!/usr/bin/env bash
set -euo pipefail
# Reserve distinct ports through the workspace manager, not by assuming uniqueness.
PORT="${CONDUCTOR_PORT:-3000}"
[[ "$PORT" =~ ^[0-9]{1,5}$ ]] || { printf '%s\n' 'Invalid port' >&2; exit 1; }
PORT=$((10#$PORT))
(( PORT >= 1024 && PORT <= 64535 )) || { printf '%s\n' 'Port outside safe range' >&2; exit 1; }
export PORT
export VITE_RUBY_PORT=$((PORT + 1000))
# Supply a dedicated disposable Redis instance/namespace explicitly.
# Hashing a workspace name modulo 16 causes collisions and is not isolation.
: "${REDIS_URL:?Set an approved workspace-specific development Redis URL}"
export REDIS_URL
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 アダプターが次を使用するように更新します。
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'))
実装上の注意
- 既存ファイルを上書きしないでください:作成する前に
conductor.json、bin/conductor-setup、script/serverが存在するか確認してください。存在する場合は作成をスキップし、ユーザーに知らせてください。 - Rails 設定の更新:Redis 関連の設定のみ変更してください。ファイルが存在しない場合、または Redis を使用していない場合は、適切にスキップしてください。
- 必要に応じてディレクトリを作成する:
script/が存在しない場合は作成してください。
検証
ファイルの作成後、次のことを行います。
- Conductor 関連のすべてのファイルが存在し、スクリプトが実行可能であることを確認します。
- スクリプトの構文を先に検証してから、所有する開発サーバーを、観察時間と停止方法を定めて起動します。ワークスペース間でポートと Redis が実際に分離されていることを確認します。
- Rails 設定が
ENV['REDIS_URL']またはENV.fetch('REDIS_URL', ...)を適切に参照していることを確認します。
制限事項
- シークレットのシンボリックリンクはワークスペース間で同じ機密情報を共有します。承認済みの開発用認証情報のみを使用し、所有者だけが読み取れる元ファイルの権限を維持し、シークレットを Git の対象から除外してください。また、ワークツリーがシークレットを隔離する環境であるかのように扱わないでください。
- Sidekiq、Cable、キャッシュで 1 つの Redis URL を共有する場合は、サービス名前空間が別途必要になることがあります。専用インスタンスを使用するか、名前空間を明示的に割り当てるほうが安全です。モジュロハッシュは使用しないでください。共有 Redis をクリーンアップ目的でフラッシュしてはいけません。
- npm/Gem のインストールや
bin/devの実行は、プロジェクトの依存関係やスクリプトを実行します。事前に内容を確認してください。明示的に必須とされたライフサイクル手順は、承認後に個別に実行し、黙って再び有効にしないでください。 - 出力を、環境固有の検証、テスト、専門家によるレビューの代わりとして扱わないでください。
- 必要な入力、権限、安全上の境界、成功基準が不足している場合は、作業を中断して確認を求めてください。