- You MUST NOT try and generate a Rails app from scratch on your own by generating each file. For a NEW app you MUST use
rails newfirst to generate all of the boilerplate files necessary. - Create an app in the current directory with
rails new . - Use Tailwind CSS for styling. Use
--css tailwindas an option on therails newcall to do this automatically. - Use Ruby 3.2+ and Rails 8.0+ practices.
- Use the default Minitest approach for testing, do not use RSpec.
- Default to using SQLite in development.
rails newwill do this automatically but take care if you write any custom SQL that it is SQLite compatible. - An app can be built with a devcontainer such as
rails new myapp --devcontainerbut only do this if requested directly. - Rails apps have a lot of directories to consider, such as app, config, db, etc.
- Adhere to MVC conventions: singular model names (e.g., Product) map to plural tables (products); controllers are plural.
- Guard against incapable browsers accessing controllers with `allo
| # Author: Henry Koleoso | |
| # Put these two files in .github/workflows/ | |
| # Prerequisites: | |
| # SSH Key pair - Private key in GitHub Secrets, Public key in /root/.ssh/authorized_keys on your server | |
| # Discord Bot token - In GitHub Secrets or Environment Variables. | |
| # This file is the workflow that handles the initial setup of your Discord bot. | |
| # This job should be run only ONCE. Changes in 'create-systemctl-service' are appended to the systemd.service file, not overwritten so the file will be invalid! | |
| # If you make a mistake, and need to run this job more than once, navigate to /etc/systemd/system |
| # Basic key operators to query the JSON objects : | |
| # #> : Get the JSON object at that path (if you need to do something fancy) | |
| # -> : Get the JSON object at that path (if you don't) | |
| # ->> : Get the JSON object at that path as text | |
| # {obj, n} : Get the nth item in that object | |
| # https://www.postgresql.org/docs/9.4/functions-json.html#FUNCTIONS-JSONB-OP-TABLE | |
| # Date | |
| # date before today |
| You'll need to update the following variables: | |
| - ENV['APP_NAME'] | |
| - ENV['COMPANY_ADDRESS'] | |
| - ENV['HOST'] | |
| Make sure you have app/assets/images/logo.svg for this line: | |
| helpers.image_url('logo.svg') | |
| And also update the CSS variables to match your color scheme: | |
| :root { |
| # frozen_string_literal: true | |
| module Router | |
| class << self | |
| include Rails.application.routes.url_helpers | |
| def default_url_options | |
| Rails.application.config.action_controller.default_url_options || {} | |
| end |
| <div data-controller="search"> | |
| <div data-search-target="button"> | |
| <div role="button" data-action="click->search#open keydown.meta+k@document->search#open keydown.ctrl+k@document->search#open" class="outline secondary search"> | |
| <%= heroicon "magnifying-glass" %> | |
| <span>Search</span> | |
| <kbd>Cmd/Ctrl+K</kbd> | |
| </div> | |
| <dialog data-search-target="dialog"> | |
| <article> |
π Update: See more extensive repo here: https://github.com/marckohlbrugge/unofficial-37signals-coding-style-guide
This style guide was generated by Claude Code through deep analysis of the Fizzy codebase - 37signals' open-source project management tool.
Why Fizzy matters: While 37signals has long advocated for "vanilla Rails" and opinionated software design, their production codebases (Basecamp, HEY, etc.) have historically been closed source. Fizzy changes that. For the first time, developers can study a real 37signals/DHH-style Rails application - not just blog posts and conference talks, but actual production code with all its patterns, trade-offs, and deliberate omissions.
Reconstructed from Danny Postma's talk How I Built My Own AgentOS on Claude's Agent SDK (So You Can Too) (2026). This document is both a product spec for a human and an implementation prompt for an AI coding agent. Build exactly this system. Do not invent features that are not specified here.
Role contracts and prompts in this file are reconstructed from the talk, not his verbatim files. Mark every reconstructed prompt in code comments and docs as such.