mcpField
C
conductor-setup

conductor-setup

github.com/sickn33Agent 工作流48.7k325 次安装今天更新
代码仓库

关于 conductor-setup

用于配置指定 Rails 项目,使其能在 Conductor 工作区中运行的技能。它提供设置与服务器脚本的脚手架指南,并指导按需更新 Redis 配置,以支持并行编码 Agent。

主要功能

  1. 01创建 Conductor 项目配置
  2. 02搭建设置与服务器脚本
  3. 03通过环境变量配置 Redis
  4. 04保留现有文件及无关设置
  5. 05验证脚本与工作区配置

适用场景

  1. 01为 Conductor 准备 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 开发项目。Frontmatter 中的工具/上下文提示因宿主环境而异,不代表授权你委派任务、修改密钥或扩大权限。运行安装操作前,先检查现有脚本和锁文件;保留无关设置。

适用场景

  • 你需要配置 Rails 项目,使其能在 Conductor 工作区中正确运行。
  • 项目需要支持并行编码 Agent,并为其隔离端口、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 之外,并且不要暗示 worktree 是密钥沙箱。
  • Sidekiq、Cable 和缓存共用一个 Redis URL 时,可能仍需要服务命名空间;与使用模哈希相比,专用实例或明确分配的命名空间更安全。清理时绝不要清空共享 Redis。
  • npm/Gem 安装和 bin/dev 会执行项目依赖项/脚本。请先检查;明确要求的生命周期步骤应在获准后逐项运行,不要在未告知的情况下重新启用。
  • 不要将此输出视为针对特定环境进行验证、测试或专家审查的替代品。
  • 如果缺少必需的输入、权限、安全边界或成功标准,请暂停并请求澄清。

评论

支持 Markdown