mcpField
C
conductor-setup

conductor-setup

github.com/sickn33エージェントワークフロー48.7k325 回インストール今日更新
リポジトリ

conductor-setup について

指定した Rails プロジェクトを Conductor ワークスペースで実行できるよう設定するスキルです。セットアップ・サーバースクリプトのひな型と、並行するコーディングエージェント向けの Redis 設定更新方法を示します。

主な機能

  1. 01Conductor プロジェクト設定の作成
  2. 02セットアップ・サーバースクリプトの用意
  3. 03環境変数による Redis 設定
  4. 04既存ファイルと無関係な設定の保持
  5. 05スクリプトとワークスペース設定の検証

活用シーン

  1. 01Conductor 用 Rails プロジェクトの準備
  2. 02ワークスペースの Redis 設定
  3. 03セットアップ・サーバーの起動口追加
  4. 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/ が存在しない場合は作成してください。

検証

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

  1. Conductor 関連のすべてのファイルが存在し、スクリプトが実行可能であることを確認します。
  2. スクリプトの構文を先に検証してから、所有する開発サーバーを、観察時間と停止方法を定めて起動します。ワークスペース間でポートと Redis が実際に分離されていることを確認します。
  3. Rails 設定が ENV['REDIS_URL'] または ENV.fetch('REDIS_URL', ...) を適切に参照していることを確認します。

制限事項

  • シークレットのシンボリックリンクはワークスペース間で同じ機密情報を共有します。承認済みの開発用認証情報のみを使用し、所有者だけが読み取れる元ファイルの権限を維持し、シークレットを Git の対象から除外してください。また、ワークツリーがシークレットを隔離する環境であるかのように扱わないでください。
  • Sidekiq、Cable、キャッシュで 1 つの Redis URL を共有する場合は、サービス名前空間が別途必要になることがあります。専用インスタンスを使用するか、名前空間を明示的に割り当てるほうが安全です。モジュロハッシュは使用しないでください。共有 Redis をクリーンアップ目的でフラッシュしてはいけません。
  • npm/Gem のインストールや bin/dev の実行は、プロジェクトの依存関係やスクリプトを実行します。事前に内容を確認してください。明示的に必須とされたライフサイクル手順は、承認後に個別に実行し、黙って再び有効にしないでください。
  • 出力を、環境固有の検証、テスト、専門家によるレビューの代わりとして扱わないでください。
  • 必要な入力、権限、安全上の境界、成功基準が不足している場合は、作業を中断して確認を求めてください。

コメント