关于 conductor-setup
为 Rails 项目配置 Conductor 的技能,面向使用 Conductor 并行运行编码 Agent 的开发者。它创建启动与设置脚本,并按需调整 Redis 和 Inertia SSR 配置,同时避免覆盖已有文件。
主要功能
- 01创建 conductor.json 配置
- 02生成项目设置与服务器脚本
- 03按需调整 Redis 环境配置
- 04配置 Inertia SSR 端口
- 05验证文件与脚本运行状态
适用场景
- 01为 Rails 仓库接入 Conductor
- 02为工作区设置共享环境凭据
- 03检查并行开发环境的服务器启动
安装
复制下面的命令,在终端中运行。
$
npx skills add https:/ / github.com/ shpigford/ skills --skill conductor-setup安装后在 Claude Code 中输入/conductor-setup确认已加载。
详细介绍
为 Conductor(用于并行编码 Agent 的 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 适配器以使用:
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', ...)
评论
支持 Markdown