CtrlK
BlogDocsLog inGet started
Tessl Logo

ruby-commit-message

Use when committing code changes in Ruby or Ruby on Rails projects — guides commit message structure, type selection, and body content following Conventional Commits format

96

Quality

95%

Does it follow best practices?

Impact

Pending

No eval scenarios have been run

SecuritybySnyk

Passed

No known issues

SKILL.md
Quality
Evals
Security

Ruby Commit Message

Overview

Write structured commit messages following Conventional Commits. The body should help a junior Ruby on Rails developer understand the change during a debugging session.

Format

<type>(<scope>): <subject>

<body>

<footer>

Quick Reference — Commit Types

TypePurpose
featNew feature
fixBug fix
refactorRefactoring (no behavior change)
perfPerformance improvement
docsDocumentation only
testTest additions or corrections
buildBuild system or dependencies
ciCI configuration
choreMaintenance tasks
styleCode formatting (no logic change)
revertRevert previous commit
metaRepository metadata
licenseLicense changes

Subject Line Rules

  • Imperative mood: "Add", "Fix", "Update", "Remove"
  • Present tense: "Add feature" not "Added feature"
  • Capitalized first letter, no period at end
  • Maximum 70 characters
  • Scope (optional): noun describing the section of codebase, e.g. (api), (auth)

Body Guidelines

Couple of sentences, wrapped at 72 chars, blank line after subject. Write for a junior Ruby developer: simple language they can understand during debugging. Add any useful information that would help a junior Ruby developer understand the impact of the change, why the change was done.

  • WHY — motivation, problem, or user impact. Use context if it exists for this.
  • WHAT changed — make this brief; the diff already shows the HOW
  • HOW — only when there are details about the how that are not reflected by the code or the naming in the code

Call out tradeoffs when supported by context. Do not invent details.

Footer & AI Attribution

Fixes TICKET-123       # or: Fixes #123, Refs TICKET-123
BREAKING CHANGE: ...   # for breaking changes; use ! in type too: feat(api)!:
Co-Authored-By: <AI Name> <email>   # when AI generated the change

Do NOT add "Generated by AI" or "Written with Claude" in the subject or body. Use only Co-Authored-By.

Examples

Security/Authorization Fix

fix(api): Scope report access to current user

Report.find allowed any authenticated user to view any report by ID.
Querying through current_user.reports makes Rails raise RecordNotFound
(404) if the report doesn't belong to the requester.

New Feature

feat(alerts): Add Slack thread replies for alert updates

When an alert is updated or resolved, post a reply to the original
Slack thread. This keeps related notifications grouped together.

Refs GH-1234

Breaking Change

feat(api)!: Remove deprecated v1 endpoints

Remove all v1 API endpoints deprecated in version 23.1.
Clients should migrate to v2 endpoints.

BREAKING CHANGE: v1 endpoints no longer available

Common Mistakes

MistakeFix
Body explains HOW without contextOnly include HOW when it helps debugging
Subject describes implementation ("Changed X to Y")Use imperative: "Fix X", "Add Y"
Body repeats what the diff showsExplain WHY it was changed
Subject over 70 charactersTrim scope or rephrase
"Generated by AI" in bodyUse Co-Authored-By footer only
Repository
lucianghinda/superpowers-ruby
Last updated
Created

Is this your skill?

If you maintain this skill, you can claim it as your own. Once claimed, you can manage eval scenarios, bundle related skills, attach documentation or rules, and ensure cross-agent compatibility.