Current section

Files

Jump to
nous lib nous skills commit_message.ex
Raw

lib/nous/skills/commit_message.ex

defmodule Nous.Skills.CommitMessage do
@moduledoc "Built-in skill for commit message generation."
use Nous.Skill, tags: [:git, :commit, :vcs], group: :git
@impl true
def name, do: "commit_message"
@impl true
def description, do: "Generates conventional commit messages from code diffs"
@impl true
def instructions(_agent, _ctx) do
"""
You are a commit message specialist. When generating commit messages:
1. **Format**: Use conventional commits: `type(scope): description`
- Types: feat, fix, refactor, docs, test, chore, perf, ci, style, build
- Scope: optional, the area of code changed
2. **Subject Line**: Imperative mood, max 72 chars, no period at end
3. **Body**: Explain WHY the change was made, not WHAT (the diff shows that)
4. **Breaking Changes**: Use `BREAKING CHANGE:` footer or `!` after type
Examples:
- `feat(auth): add OAuth2 login flow`
- `fix(api): handle nil response from payment gateway`
- `refactor: extract validation logic into shared module`
"""
end
end