Updated: Migrating from rbenv / nvm to mise

  • Removed the default gem:geordi mise tool entry from the sample config.toml
  • Deleted the note explaining that gem:geordi would auto-install the latest geordi gem and warning about Ruby compatibility

mise's gem: backend does not install into your Ruby. It installs into a directory of its own and puts a wrapper script on the PATH. That is incompatible with how geordi works. For more details see this geordi issue

Currently you can use a ~/.default-gems file, to automatically instal...

trim-code: A skill to shrink AI generated code

A /trim-code skill reduces AI-generated code bloat by removing unnecessary complexity, introducing invariants, and reporting safe simplifications plus optional improvements.

How to: A thorough i18n completeness check in CI (Rails + i18n-tasks)

Rails i18n completeness can drift across tiers and locales; CI with i18n-tasks catches missing, unused, inconsistent, and normalized translation files.

Improved diff-tour skill available

diff-tour now has more accurate narration, tighter prose, and more actionable warnings for reading diffs in a guided order.

HTML file inputs support picking directories

Directory uploads are possible with <input type="file" webkitdirectory multiple>, letting users select a folder and its nested files instead of choosing individual files.

ActiveRecord: Creating many records works faster in a transaction

Bulk inserts into one table can be much faster inside a transaction; Rails 6+ also offers insert_all for a single multi-row INSERT without validations.

Do not use transparent PNGs for iOS favicons

Transparent apple-touch-icon images on iOS turn black in Safari, so solid backgrounds prevent ugly home-screen and bookmark icons.

Changing the way Claude Code communicates

Output style in Claude Code controls how verbose responses are; Concise reduces chatter, while Explanatory and Learning suit new users.

Rails: Talking to the database without instantiating ActiveRecord objects

Direct SQL access can avoid the overhead of instantiating ActiveRecord objects, but skips validations, callbacks, and custom accessors.

Create and send any HTTP request using the Postman request builder

Postman provides a graphical way to build and send HTTP requests, with collections, environments, history, and a cookie manager for API testing.

Using Capybara finder methods with arbitrary matching conditions

Capybara matchers and finders can take a Ruby block for extra DOM conditions when built-in options are not enough. Script calls inside filter blocks need a temporary wait time to avoid Selenium timeouts.

Henning's skills for a basic software development lifecycle

Agent skills for taking software requirements from exploration to deployment with minimal context switching and clear handoffs between planning, implementation, and review.

Consider adding Reek to your CI pipeline

Reek detects Ruby code smells and antipatterns, helping assess merge request quality without blocking every warning. It fits CI as a non-blocking lint check.

Worktree manager for git and agentic workflows

CLI tool for managing multiple git worktrees with separate AI agents and copied ignored files, reducing manual directory juggling and repeated dependency installs.

Updated: Claude Code Sandbox

  • Added a permissions deny rule to prevent editing ~/.claude/settings.json when enabling the sandbox

Guide to localizing a Rails application

Rails app localization affects text, URLs, formats, images, caching, and time zones; estimating effort means checking each layer for language-sensitive behavior.

FactoryBot: Passing attributes to associated records using transient attributes

FactoryBot transient attributes can pass custom values into associated records, letting parent factories build children with dynamic names and flags.

Debugging SPF records

SPF records can be hard to validate, especially when syntax errors or DNS lookup limits break mail delivery. Online checkers help test coverage and new policies before deployment.

Git diff: Deemphasizing code that was only moved around

Long diffs can hide real edits inside large code moves; git diff --color-moved=dimmed-zebra dims unchanged moved lines and highlights changes.

How Ruby method lookup works

Ruby method dispatch follows a fixed lookup chain across singleton classes, prepended modules, class methods, included modules, and superclasses.

Make your CI config simpler with ActiveSupport::ContinuousIntegration

Rails 8.1 CI setup can be split into focused commands for tests, linting, and security checks, reducing local overhead while keeping full coverage in continuous integration.

Updated: Balance your texts with text-wrap: balance

text-wrap: balance is available in all major browsers now.

Rails: Passing array values to tag helpers like link_to

Array values in Rails HTML options become space-separated strings, making class helpers accept multiple CSS classes without manual joining.

Storing trees in databases

Tree data in relational databases can be stored with parent links, paths, nested boundaries, or closure tables; the choice trades write cost against read speed.