Docs · Getting Started

Verifying Your Setup

What bin/check runs and what each tool in it catches.

bin/check is the definition of done for any change to a One Shot app. It's what Claude Code runs to confirm its own work, and what CI runs on every push. If bin/check is green, the change is shippable.

bin/check

Run it now, right after install, so you know your machine is set up correctly before you write any code.

What it runs, in order

  1. RSpec (bin/rspec): the full test suite, including model specs, request specs, policy specs, and the copy-style checks. This is where a broken tenant-isolation test or a missing spec fixture shows up.
  2. RuboCop (bin/rubocop): style and lint, using the rails-omakase config. This is the arbiter for how Ruby code in the app should look; don't fight it, run it.
  3. Brakeman (bin/brakeman): static analysis for common Rails security issues, including SQL injection, mass assignment, and unsafe redirects. Runs against the whole app, not just changed files.
  4. Bundler-audit (bin/bundler-audit): checks every gem in the Gemfile.lock against a database of known vulnerabilities, and updates that database first.
  5. Importmap audit (bin/importmap audit): the same idea as bundler-audit, for the JavaScript packages pinned in config/importmap.rb.
  6. Secret scan (bin/secret-scan, backed by gitleaks): scans the git history for anything that looks like a committed credential, API key, or private key.

Each step prints ✓ ok or ✗ FAILED, and the whole script exits non-zero if anything failed, so it's safe to use in CI or in a pre-push hook.

If something fails on a fresh install

A fresh clone should pass all six steps with nothing configured. If RSpec fails immediately after bin/setup, the most common cause is a database that didn't prepare cleanly; rerunning bin/setup resolves that. If Brakeman or bundler-audit fail, read what they report; both point at a specific file and line, and neither one is something you should silence rather than fix.

Running the individual pieces

While you're iterating on one change, you don't need the whole pipeline every time:

bin/rspec              # tests only
bin/rubocop             # lint only
bin/rspec spec/models/  # just one directory

Run the full bin/check before you consider anything finished. It's cheap, and it's the same bar Claude Code holds itself to when it says a change is done.

Next

With a clean bill of health, you're ready to make the kit yours: Making It Yours.