Rules, skills, and agents for building Rails apps the 37signals way — omakase defaults, REST-shaped boundaries, Hotwire-first front ends, and a full plan → implement → review loop baked in.
A few Pitchd-specific preferences layered on top.
Skills 29 in the Claude listing
Bootstrapping primitives One-time adoption of the primitives tree in a Rails app: scaffold docs/primitives/ (SCHEMA.md, index.md, capabilities/) and draft the human-owned compilation.md via a read-only codebase survey followe Brainstorming rails omakase Use when shaping Rails features or behavior changes before planning or code — unclear scope, multiple valid directions, HTML vs JSON, client-owned vs server-owned truth, REST vs RPC-shaped endpoints, Executing pitchd rails plan Orchestrates execution of a written Rails implementation plan in a DHH / 37signals omakase style without writing application code: delegates each task to pitchd-rails-implementor, reviews via pitchd-r Implementing pitchd rails Implement a plan task in a Rails app using Pitchd plugin conventions: first rails-omakase-compass (DHH / 37signals-shaped omakase), then applicable writing-* skills and rules/*.mdc for tactics. Maintaining primitives Maintain the durable primitives tree under docs/primitives/ — capability docs holding intent clauses, shape constraints, evaluation maps, and append-only provenance, plus the human-owned compilation.m Rails omakase compass High-level decision lens for Rails work in the Pitchd plugin tradition — omakase defaults, server-owned truth, REST gravity, majestic monolith, and when to simplify vs extract. Refactoring rails specs Refactor an existing RSpec suite — typically a batch of bloated system specs and their related request, model, policy, job, mailer, concern, and factory specs — into a Rails best-practice test suite p Refactoring stimulus controllers Audit and refactor an existing fleet of Stimulus controllers in a Rails app — discover every controller, score each against single-responsibility, DOM-derived state, lifecycle cleanup, and cross-contr Referencing rails guides Load specific topics from the official Rails guides (rails/rails on GitHub) via two fetches: first the GitHub API directory index to discover available filenames, then the raw markdown for the matched Referencing unofficial 37signals guide Load specific topics from marckohlbrugge/37signals-skills (formerly unofficial-37signals-coding-style-guide) via HTTP fetch of raw GitHub markdown only — use the README table of contents to choose pat Resolving plugin root Resolves the correct path prefix for reading this plugin's own files — rules/*.mdc, sibling skills/*/SKILL.md, agents/*.md — before a Read call on one of them. Reviewing pitchd rails Review Rails plans and/or implementation against the Pitchd plugin: first rails-omakase-compass (solution shape), then applicable writing-* skills and rules (tactics). Running rubocop Run RuboCop until zero offences: bin/rubocop green, fix code only (no inline or config disables). Writing controllers Write Rails controllers following DHH/37signals conventions — thin CRUD controllers, REST-mapped resources, redirect-first Hotwire responses, concerns for shared behaviour, and strong parameters with Writing css tailwind Style Rails apps with Tailwind the Rails way — tailwindcss-rails, CSS entrypoints, v3 vs v4 config shapes, @apply policy, theme extension, responsive/dark conventions, accessibility, Stimulus class to Writing hotwire Build Hotwire-first UIs — Turbo Drive, Frames, Streams, morphing, broadcasts, and Stimulus — with server-rendered HTML as the source of truth. Writing i18n Organize Rails I18n — YAML structure, lazy lookup in views, absolute keys in helpers and controllers, interpolation and pluralization, datetime/number formats, and Active Record error messages. Writing javascript Write JavaScript in a Rails app the omakase way — importmap-first delivery, optional bundling (esbuild, Vite) when justified, focused Stimulus controllers under app/javascript/controllers, modern ES m Writing jobs Write Rails background jobs following DHH/37signals conventions — thin jobs that delegate to model methods, idempotent execution, after_commit timing, and retry discipline. Writing mailers Write ActionMailer classes, mailer templates, and previews following DHH/37signals conventions — thin mailers, parameterized Mailer.with, deliver_later, multipart HTML/text, I18n for subjects, and pre Writing migrations Write Rails database migrations following DHH/37signals conventions — reversible changes, database constraints as the source of integrity, safe operations on live tables, and never editing past migrat Writing models Write Rails models following DHH/37signals conventions — rich domain models, concerns for horizontal behaviour, state-as-records, scopes, database constraints, and vanilla Rails patterns. Writing naming conventions Name files, classes, methods, columns, routes, and variables following Rails conventions and DHH/37signals domain language. Writing pitchd rails plans Write implementation plans for multi-step Rails work before application code. Writing policies Write Pundit authorization policies following Rails conventions — one policy per model, plain Ruby objects, deny-by-default, scoped collections, and controller integration via authorize/policy_scope. Writing routes Declare Rails routes in DHH/37signals style — REST-first resources, shallow nesting, clear path helpers, constraints for wiring not auth, boring routes.rb. Writing services Where application logic lives in Rails without an app/services layer — DHH/37signals style: rich models, concerns, model-namespaced POROs, ActiveModel form objects, and jobs. Writing tests Write Rails tests following DHH/37signals testing philosophy, adapted for RSpec and FactoryBot — system specs as the backbone, real objects over mocks, behaviour-driven testing over implementation tes Writing views Write Rails views, partials, and helpers following DHH/37signals conventions — ERB templates as HTML-first documents, strict-local partials, collection rendering, helpers for presentation logic, Tailw