关于 conductor-setup
用于配置指定 Rails 项目,使其能在 Conductor 工作区中运行的技能。它提供设置与服务器脚本的脚手架指南,并指导按需更新 Redis 配置,以支持并行编码 Agent。
主要功能
- 01创建 Conductor 项目配置
- 02搭建设置与服务器脚本
- 03通过环境变量配置 Redis
- 04保留现有文件及无关设置
- 05验证脚本与工作区配置
适用场景
- 01为 Conductor 准备 Rails 项目
- 02配置工作区的 Redis 设置
- 03添加设置与服务器入口
- 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/目录不存在,请创建该目录。
验证
创建文件后:
- 确认所有 Conductor 文件均已存在,且脚本具有可执行权限。
- 先验证脚本语法,再启动自己负责的开发服务器;使用有界的观察时段和明确的关闭方法,并验证不同工作区之间的端口和 Redis 是否确实隔离。
- 检查 Rails 配置是否正确引用
ENV['REDIS_URL']或ENV.fetch('REDIS_URL', ...)。
限制
- 密钥符号链接会在工作区之间共享相同的敏感值;仅使用获准的开发凭据,保留源文件仅限所有者访问的权限,将密钥排除在 Git 之外,并且不要暗示 worktree 是密钥沙箱。
- Sidekiq、Cable 和缓存共用一个 Redis URL 时,可能仍需要服务命名空间;与使用模哈希相比,专用实例或明确分配的命名空间更安全。清理时绝不要清空共享 Redis。
- npm/Gem 安装和 bin/dev 会执行项目依赖项/脚本。请先检查;明确要求的生命周期步骤应在获准后逐项运行,不要在未告知的情况下重新启用。
- 不要将此输出视为针对特定环境进行验证、测试或专家审查的替代品。
- 如果缺少必需的输入、权限、安全边界或成功标准,请暂停并请求澄清。
评论
支持 Markdown