重要前提
安装AI Skills的关键前提是:必须科学上网,且开启TUN模式,这一点至关重要,直接决定安装能否顺利完成,在此郑重提醒三遍:科学上网,科学上网,科学上网。查看完整安装教程 →
37signals-rails by pproenca/dot-skills
npx skills add https://github.com/pproenca/dot-skills --skill 37signals-rails适用于 Ruby on Rails 应用程序的全面编码原则和规范,遵循 37signals(Basecamp、HEY、Fizzy)的实践。包含 8 个类别共 56 条规则,按架构影响优先级排序。源自 37signals 官方资料:Fizzy 代码库、STYLE.md、AGENTS.md、Rails 信条、DHH 的"论写好软件"系列以及非官方的 37signals 风格指南(265 个 Fizzy PR)。
在以下情况下参考这些指南:
| 优先级 | 类别 | 影响 | 前缀 |
|---|---|---|---|
| 1 | 架构基础 | 关键 | arch- |
| 2 | 控制器与 REST | 关键 | ctrl- |
广告位招租
在这里展示您的产品或服务
触达数万 AI 开发者,精准高效
| 3 |
| 领域建模 |
| 高 |
model- |
| 4 | 状态管理 | 高 | state- |
| 5 | 数据库与基础设施 | 高 | db- |
| 6 | 视图与前端 | 中 | view- |
| 7 | 代码风格 | 中 | style- |
| 8 | 测试 | 中 | test- |
arch-rich-models - 富领域模型优于服务对象arch-vanilla-rails - 原生 Rails 已足够arch-avoid-patterns - 刻意避免的模式和 Gemsarch-earn-abstractions - 通过"三次原则"赢得抽象arch-build-before-gems - 在引入 Gems 前先自行构建arch-ship-to-learn - 从简单开始 — 仅在验证后增加复杂度arch-domain-facades - 领域模型作为内部复杂性的门面arch-single-business-layer - 业务逻辑单一层arch-custom-auth - 自定义无密码认证优于 Devisectrl-crud-only - CRUD 控制器优于自定义动作ctrl-model-as-resources - 将非 CRUD 操作建模为独立资源ctrl-thin-controllers - 瘦控制器配合富领域模型ctrl-params-expect - 使用 params.expect() 进行参数验证ctrl-controller-concerns - 使用控制器 Concerns 处理横切关注点行为ctrl-nested-resources - 使用 scope module 处理嵌套资源model-concerns - 使用 Concerns 进行横向代码共享model-normalizes - 使用 normalizes 宏进行数据清洗model-store-accessor - 使用 store_accessor 访问 JSON 列model-delegated-type - 使用 delegated_type 处理多态model-counter-caches - 使用计数器缓存防止 N+1 计数查询model-touch-chains - 使用 Touch 链进行缓存失效model-callbacks-auxiliary - 使用回调处理辅助性复杂逻辑model-event-tracking - 使用多态事件模型进行活动追踪model-poro-namespacing - 将 PORO 命名空间置于父模型下state-records-over-booleans - 使用记录作为状态优于布尔列state-timestamps - 使用时间戳记录状态转换state-enums - 使用枚举处理分类状态state-db-constraints - 数据库约束优于 ActiveRecord 验证state-write-time - 在写入时而非读取时计算db-backed-everything - 一切皆由数据库支持db-solid-queue - 使用 Solid Queue 处理后台作业db-solid-cable - 使用 Solid Cable 处理实时发布/订阅db-solid-cache - 使用 Solid Cache 处理应用缓存db-multi-tenancy - 使用 Current.account 实现基于路径的多租户db-uuid-primary-keys - 使用 UUID 作为主键db-no-foreign-keys - 不使用外键约束view-turbo-frames - 使用 Turbo Frames 处理作用域页面片段view-turbo-streams - 使用 Turbo Streams 处理实时更新view-stimulus-targets - Stimulus Targets 优于 CSS 选择器view-stimulus-design - Stimulus 控制器设计原则view-helpers-not-partials - 将逻辑提取到 Helpers 而非 Partialsview-progressive-enhancement - 渐进增强作为主要模式view-fragment-caching - 使用片段缓存提升视图性能view-http-caching - 使用 fresh_when 和 ETags 实现 HTTP 缓存style-conditionals - 展开的条件语句优于卫语句style-method-ordering - 按调用顺序排列方法style-positive-names - 为方法和作用域使用肯定性名称style-naming-return-values - 方法名称应反映返回值style-visibility-modifiers - 可见性修饰符的格式化style-bang-methods - 仅当存在非 Bang 版本时才使用 Bang 方法style-async-naming - 使用 _later 和 _now 后缀命名异步操作test-minitest - Minitest 优于 RSpectest-fixtures - 数据库 Fixtures 优于 FactoryBottest-no-damage - 无测试引起的设计损害test-no-system-tests - 集成测试优于系统测试test-behavior - 测试行为而非实现阅读各个参考文件以获取详细解释和代码示例:
| 文件 | 描述 |
|---|---|
| references/_sections.md | 类别定义和排序 |
| assets/templates/_template.md | 新规则模板 |
| metadata.json | 版本和参考信息 |
每周安装次数
60
代码仓库
GitHub 星标数
89
首次出现
2026年2月14日
安全审计
安装于
codex57
gemini-cli56
github-copilot56
kimi-cli55
opencode55
amp54
Comprehensive coding principles and conventions for Ruby on Rails applications, as practiced at 37signals (Basecamp, HEY, Fizzy). Contains 56 rules across 8 categories, prioritized by architectural impact. Derived from official 37signals sources: the Fizzy codebase, STYLE.md, AGENTS.md, the Rails Doctrine, DHH's "On Writing Software Well" series, and the unofficial 37signals style guide (265 Fizzy PRs).
Reference these guidelines when:
| Priority | Category | Impact | Prefix |
|---|---|---|---|
| 1 | Architecture Fundamentals | CRITICAL | arch- |
| 2 | Controllers & REST | CRITICAL | ctrl- |
| 3 | Domain Modeling | HIGH | model- |
| 4 | State Management | HIGH | state- |
| 5 | Database & Infrastructure | HIGH | db- |
| 6 | Views & Frontend | MEDIUM | view- |
| 7 | Code Style | MEDIUM | style- |
| 8 | Testing | MEDIUM | test- |
arch-rich-models - Rich Domain Models Over Service Objectsarch-vanilla-rails - Vanilla Rails is Plentyarch-avoid-patterns - Deliberately Avoided Patterns and Gemsarch-earn-abstractions - Earn Abstractions Through Rule of Threearch-build-before-gems - Build It Yourself Before Reaching for Gemsctrl-crud-only - CRUD Controllers Over Custom Actionsctrl-model-as-resources - Model Non-CRUD Operations as Separate Resourcesctrl-thin-controllers - Thin Controllers with Rich Domain Modelsctrl-params-expect - Use params.expect() for Parameter Validationctrl-controller-concerns - Controller Concerns for Cross-Cutting Behaviormodel-concerns - Concerns for Horizontal Code Sharingmodel-normalizes - Use normalizes Macro for Data Cleaningmodel-store-accessor - Use store_accessor for JSON Column Accessmodel-delegated-type - Use delegated_type for Polymorphismmodel-counter-caches - Counter Caches to Prevent N+1 Count Queriesstate-records-over-booleans - Records as State Over Boolean Columnsstate-timestamps - Timestamps for State Transitionsstate-enums - Enums for Categorical Statesstate-db-constraints - Database Constraints Over ActiveRecord Validationsstate-write-time - Compute at Write Time Not Read Timedb-backed-everything - Database-Backed Everythingdb-solid-queue - Solid Queue for Background Jobsdb-solid-cable - Solid Cable for Real-Time Pub/Subdb-solid-cache - Solid Cache for Application Cachingdb-multi-tenancy - Path-Based Multi-Tenancy with Current.accountdb-uuid-primary-keys - UUIDs as Primary Keysview-turbo-frames - Turbo Frames for Scoped Page Fragmentsview-turbo-streams - Turbo Streams for Real-Time Updatesview-stimulus-targets - Stimulus Targets Over CSS Selectorsview-stimulus-design - Stimulus Controller Design Principlesview-helpers-not-partials - Extract Logic to Helpers Not Partialsstyle-conditionals - Expanded Conditionals Over Guard Clausesstyle-method-ordering - Methods Ordered by Call Sequencestyle-positive-names - Use Positive Names for Methods and Scopesstyle-naming-return-values - Method Names Reflect Return Valuesstyle-visibility-modifiers - Visibility Modifier Formattingtest-minitest - Minitest Over RSpectest-fixtures - Database Fixtures Over FactoryBottest-no-damage - No Test-Induced Design Damagetest-no-system-tests - Integration Tests Over System Teststest-behavior - Test Behavior Not ImplementationRead individual reference files for detailed explanations and code examples:
| File | Description |
|---|---|
| references/_sections.md | Category definitions and ordering |
| assets/templates/_template.md | Template for new rules |
| metadata.json | Version and reference information |
Weekly Installs
60
Repository
GitHub Stars
89
First Seen
Feb 14, 2026
Security Audits
Gen Agent Trust HubPassSocketPassSnykPass
Installed on
codex57
gemini-cli56
github-copilot56
kimi-cli55
opencode55
amp54
Kotlin 开发模式与最佳实践 | 构建健壮高效应用程序的惯用指南
1,300 周安装
AI智能体文件规划技能 - 使用Markdown文件进行任务规划与进度跟踪的Claude Code解决方案
539 周安装
AI每日摘要:从90个热门技术博客中智能筛选最新文章,生成每日AI精选摘要
534 周安装
Next.js 运行时调试指南:解决打包、模块解析与用户捆绑回归问题
552 周安装
Rust依赖可视化工具 - 生成ASCII树状图,分析Cargo项目依赖关系与功能特性
537 周安装
前端设计专家:高级UI设计系统与视觉规范,打造价值5万美元的机构级界面
548 周安装
OpenHanako 个人 AI 智能体 | 桌面 AI 助手,具备持久记忆与自主操作能力
545 周安装
arch-ship-to-learnarch-domain-facades - Domain Models as Facades Over Internal Complexityarch-single-business-layer - Single Layer for Business Logicarch-custom-auth - Custom Passwordless Auth Over Devisectrl-nested-resourcesmodel-touch-chainsmodel-callbacks-auxiliary - Callbacks for Auxiliary Complexitymodel-event-tracking - Polymorphic Event Model for Activity Trackingmodel-poro-namespacing - Namespace POROs Under Parent Modelsdb-no-foreign-keys - No Foreign Key Constraintsview-progressive-enhancementview-fragment-caching - Fragment Caching for View Performanceview-http-caching - HTTP Caching with fresh_when and ETagsstyle-bang-methodsstyle-async-naming - Use _later and _now Suffixes for Async Operations