mcpField
C
conductor-setup

conductor-setup

github.com/shpigfordAgent 工作流71 次安装
代码仓库

关于 conductor-setup

为 Rails 项目配置 Conductor 的技能,面向使用 Conductor 并行运行编码 Agent 的开发者。它创建启动与设置脚本,并按需调整 Redis 和 Inertia SSR 配置,同时避免覆盖已有文件。

主要功能

  1. 01创建 conductor.json 配置
  2. 02生成项目设置与服务器脚本
  3. 03按需调整 Redis 环境配置
  4. 04配置 Inertia SSR 端口
  5. 05验证文件与脚本运行状态

适用场景

  1. 01为 Rails 仓库接入 Conductor
  2. 02为工作区设置共享环境凭据
  3. 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/ 目录不存在,请创建它。

验证

创建文件后:

  1. 确认所有 Conductor 文件都已存在,且脚本具有可执行权限
  2. 运行 script/server,确认其可以正常启动
  3. 检查 Rails 配置是否正确引用 ENV['REDIS_URL'] 或 ENV.fetch('REDIS_URL', ...)

评论

支持 Markdown