ai/skills/git-commit/SKILL.md
Stage and commit git changes with conventional commit messages. Use when user wants to commit changes, or asks to save their work, even when committing your own work after completing a task. Also activates when user says "commit changes", simply "commit", or similar git workflow requests. Never commit without loading this skill.
npx skillsauth add kurko/dotfiles git-commitInstall this skill globally with one command. Works with Claude Code, Cursor, and Windsurf.
3 of 9 scanners reported clean
Some scanners were skipped, did not run, or reported a non-clean status. Review each row below.
Stage all relevant changes, and create a conventional commit following patterns below.
Automatically activate when the user:
Here's a model Git commit message:
Capitalized, short (50 chars or less) summary
More detailed explanatory text, if necessary. Wrap it to about 80
characters or so. In some contexts, the first line is treated as the
subject of an email and the rest of the text as the body. The blank
line separating the summary from the body is critical (unless you omit
the body entirely); tools like rebase can get confused if you run the
two together.
Write your commit message in the imperative: "Fix bug" and not "Fixed bug"
or "Fixes bug." This convention matches up with commit messages generated
by commands like git merge and git revert.
Further paragraphs come after blank lines.
- Bullet points are okay, too
- Typically a hyphen or asterisk is used for the bullet, followed by a
single space, with blank lines in between, but conventions vary here
- Use a hanging indent
The rules:
Move EmailValidator to Notifications namespace
The EmailValidator class validates email format, delivery status, and bounce
handling, all specific to our notification system. Its generic name and
top-level location made it look like a general-purpose utility when it's
tightly coupled to notification internals. Sure, someone could read the code
to understand this, but the name should communicate intent upfront.
This commit moves the class under the Notifications namespace to clarify its
scope. It also updates the three call sites in the mailer classes accordingly.
Fix race condition in payment processing
When two requests hit the payment endpoint simultaneously, both could pass
the idempotency check before either wrote to the database. This caused
duplicate charges in production roughly once per 10k transactions.
This change wraps the check-and-write in a database transaction with row-level
locking. It also adds an index on the idempotency key to keep the lock fast.
A distributed lock (Redis/etc) would handle cross-server races better, but
our current single-database setup makes this sufficient for now.
Add retry button to failed export jobs
Users had no way to retry a failed export without re-entering all parameters.
Support tickets about this increased after we added the larger export types
last month.
This commit adds a retry action to the exports controller that clones the
original job's parameters into a new job. It also adds the button to the
job status page, visible only for failed jobs.
When committing in a repo that is NOT the current working directory, use
git -C <path> instead of cd <path> && git .... This avoids repeated
permission prompts from safety hooks that flag cd to external directories.
# Good: stays in current directory
git -C ~/.dotfiles status
git -C ~/.dotfiles add ai/skills/tool-sentry/
git -C ~/.dotfiles commit -m "Add sentry skill"
# Bad: triggers permission prompt for each command
cd ~/.dotfiles && git status
cd ~/.dotfiles && git add ai/skills/tool-sentry/
cd ~/.dotfiles && git commit -m "Add sentry skill"
ALWAYS use the terminal: example of passing paragraphs via -m flags:
git commit \
-m "paragraph 1" \
-m "paragraph 2" \
-m "paragraph 3"
If you pass all in one line in bash/zsh, you have to use $'...' syntax with
\n\n for new paragraphs:
git commit -m $'paragraph 1\n\nparagraph 2\n- bullet point\n- bullet point'
Once you commit, let me know what the commit title was.
data-ai
Merge the current worktree branch into main and sync main back. Use when the user says "merge to main", "ship it", "merge and continue", or after completing a task in a worktree and wanting to continue with the next one.
tools
Synchronize AI agent skills, commands, configs, permissions, hooks, and instructions across Claude Code, Codex CLI, and other Agent Skills-compatible tools. Use when the user asks to pull skills from Claude into Codex, sync Codex work back to Claude, migrate agent commands, reconcile frontmatter, update permissions, or keep agent setup files in parity.
testing
Write or update UI-independent use cases for QA. Use when the user says "write use cases", "add use cases", "QA use cases", "update use cases", "compose use cases", or when starting implementation of a new feature (after plan approval). Also activates for "what should we test", "regression cases", or "use cases for QA".
documentation
Skill on how to write a task. Use when user asks you to write a task (for Asana, Linear, Jira, Notion and equivalent). Also activates when user says "create task", "write task", or similar task creation workflow requests.