用途
该技能用于在当前目录生成一个名为 $1 的新 Rails 项目,并按照其预设的技术栈与约定完成引导。它可参考 @CLAUDE.md 获取通用指导,但需遵循适用的仓库/宿主优先级,且不能覆盖更高优先级的项目规则。
适用时机
当你需要按照该技能定义的预设栈引导一个新的 Rails 项目时使用。项目应从一开始就规划好 Rails、PostgreSQL、Inertia.js、React、Vite、Tailwind、Sidekiq 与 Redis 的组合。你希望获得覆盖项目创建、约定、测试与验证的新 Rails 应用搭建指导。
技术栈
- Rails ~8 与 PostgreSQL:服务端框架与数据库
- Inertia.js ~2.3:在无需 API 的情况下桥接 Rails 与 React,提供类 SPA 体验
- React ~19.2:前端 UI 框架
- Vite ~5:带 HMR 的 JavaScript 打包器
- Tailwind CSS ~4:实用优先的 CSS 框架
- Sidekiq 8:后台任务处理,并通过 sidekiq-scheduler 支持计划任务
- Redis:会话、缓存与任务队列
Rails 指导
- 不使用 Kamal 或 Docker
- 不使用 Rails 的 "solid_*" 组件/系统
- 开发环境应尽可能与生产环境设置保持一致
- 使用 Redis 进行缓存
数据库
- 所有表使用 UUID 主键(pgcrypto 扩展)
- 时间戳使用 timestamptz 以支持时区感知
- 使用 JSONB 列存储灵活的元数据
- 采用全面的索引策略以提升性能
- 对敏感数据(OAuth 令牌、API 密钥)使用加密字段
后台任务
- 使用 Sidekiq 8 与 Redis
测试
- 始终使用 minitest
- 对外部服务使用 mocha gem 与 VCR(仅在 providers 层)
- 模拟实例优先使用 OpenStruct
- 只模拟必要的内容
代码维护
- 在重大代码变更后运行 bundle exec rubocop -a
- 使用 .rubocop.yml 进行风格配置
- 使用 bundle exec brakeman 进行安全扫描
前端
- 所有 React 组件与视图应使用 TSX
通用指导
- 复用已提供的需求,仅询问缺失的关键选择。选择可用的宿主工具,而不是假设存在 AskUserQuestionTool。
验证
- 通过运行 bin/rails server 并使用 playwright MCP 访问 http://localhost:3000 来验证样板应用是否正常工作。
示例
用户请求:
按照此处定义的预设栈引导一个新的 Rails 项目,并验证生成的应用可以运行。
限制
- 仅当任务明确匹配上述范围时使用此技能。
- 不要将输出视为环境特定验证、测试或专家审查的替代品。
- 如果缺少必需的输入、权限、安全边界或成功标准,应停止并请求澄清。
- 在脚手架生成前验证项目名称与目标位置,拒绝已存在或符号链接的目标,并确认支持的 Ruby/Rails/Node/包的对等版本范围。所命名的版本是历史技术栈选择,并非已验证兼容的锁定文件。使用一次性的本地数据库/Redis 实例与唯一端口;不要改动生产环境或覆盖宿主服务。UUID 默认值与时间戳类型需要实际的迁移/模式验证。在声称搭建完成前,运行生成的测试、相关安全检查以及真实请求的应用流程。