Move skills to .agents/skills
This commit is contained in:
@@ -0,0 +1,130 @@
|
||||
---
|
||||
name: git-commit
|
||||
description: Use this skill when committing code, writing commit messages, staging changes, or preparing to push. Use PROACTIVELY when the user mentions "commit", "git commit", "commit message", "push", "stage", "what should I commit", or when code changes are complete and ready to be committed. Also use when the user asks about commit conventions or style.
|
||||
---
|
||||
|
||||
# Git Commit Conventions
|
||||
|
||||
Project-specific commit message rules and workflow. These conventions are enforced
|
||||
and commits that don't follow them will be rejected.
|
||||
|
||||
## Checklist Before Committing
|
||||
|
||||
1. **Is there a Backlog task?** If the work maps to a task, the task ID MUST prefix
|
||||
the commit subject.
|
||||
|
||||
2. **Is the subject under 60 characters?** Including the task ID prefix.
|
||||
|
||||
3. **Is this a single logical change?** One change per commit. If a change spans
|
||||
multiple tasks, split the commit.
|
||||
|
||||
4. **Did you run precommit checks?** `mise run dev:precommit` before committing.
|
||||
|
||||
## Commit Message Format
|
||||
|
||||
```
|
||||
<task-id-prefix>: <imperative present tense summary, ≤60 chars>
|
||||
|
||||
<optional body with details, wrapped at 72 chars>
|
||||
|
||||
<version table for dependency updates>
|
||||
```
|
||||
|
||||
### Subject Line Rules
|
||||
|
||||
- **Imperative present tense**: "Add scrobble rule validation" NOT "Added..." or "Adds..."
|
||||
- **Describe intent/behavior**, not implementation details: "Fix record ordering on search page" NOT "Change ORDER BY clause in list_records"
|
||||
- **Single-line, under 60 characters**
|
||||
- **Task ID prefix when applicable**: `ML-3: fix scrobble rule ordering`
|
||||
- The prefix counts toward the 60-char limit
|
||||
|
||||
### Examples
|
||||
|
||||
```
|
||||
# With Backlog task
|
||||
ML-3: fix scrobble rule ordering
|
||||
|
||||
# Without task (trivial fixes)
|
||||
Fix typo in artist biography template
|
||||
|
||||
# Dependency updates
|
||||
Update dependencies
|
||||
|
||||
mix:
|
||||
bandit 1.6.10 => 1.6.11
|
||||
phoenix_live_view 1.1.0 => 1.1.1
|
||||
|
||||
# NPM dependency updates
|
||||
Update npm dependencies
|
||||
|
||||
npm:
|
||||
tailwindcss 4.1.4 => 4.1.5
|
||||
sortablejs 1.15.3 => 1.15.6
|
||||
|
||||
# Revert
|
||||
Revert "ML-3: fix scrobble rule ordering"
|
||||
```
|
||||
|
||||
### Dependency Update Format
|
||||
|
||||
The subject is **always** "Update dependencies" (Mix) or "Update npm dependencies" (npm).
|
||||
Never use "bump" or "upgrade" in the subject.
|
||||
|
||||
The body MUST list each specific version change as `package_name from => to`:
|
||||
|
||||
```
|
||||
mix:
|
||||
bandit 1.6.10 => 1.6.11
|
||||
phoenix_live_view 1.1.0 => 1.1.1
|
||||
```
|
||||
|
||||
### What NOT to Include
|
||||
|
||||
- ❌ "Co-Authored-By" references in the message body
|
||||
- ❌ Multi-line subjects
|
||||
- ❌ Past tense ("Added", "Fixed")
|
||||
- ❌ Implementation details ("Changed the SQL query")
|
||||
- ❌ "bump" or "upgrade" for dependency updates
|
||||
- ❌ Multiple unrelated changes in one commit
|
||||
|
||||
## Workflow
|
||||
|
||||
### Before Committing
|
||||
|
||||
```bash
|
||||
# Run precommit checks
|
||||
mise run dev:precommit
|
||||
```
|
||||
|
||||
This runs: format check, gettext check, credo, sobelow, mix_audit, shellcheck,
|
||||
Docker image validation, and asset build.
|
||||
|
||||
### Staging
|
||||
|
||||
Stage specific files, not `git add .`:
|
||||
|
||||
```bash
|
||||
git add lib/music_library/records.ex test/music_library/records_test.exs
|
||||
```
|
||||
|
||||
### Commit Message Validation
|
||||
|
||||
After writing the commit message, verify:
|
||||
1. Subject is imperative present tense
|
||||
2. Subject is ≤60 characters (including task ID)
|
||||
3. Task ID references the correct Backlog task
|
||||
4. Body describes what changed (if non-trivial)
|
||||
|
||||
### Backlog Task Integration
|
||||
|
||||
- **One task ID per commit subject.** If work spans tasks, split the commit.
|
||||
- **Read the task's implementation plan** before committing to verify the plan
|
||||
was followed.
|
||||
- **When finalizing a task**, the commit should be the last logical change
|
||||
for that task.
|
||||
|
||||
## Prohibited
|
||||
|
||||
- **Never create, comment on, close, or reopen GitHub issues** — only the user does that. Use Backlog.md for task management.
|
||||
- **Never reference GitHub issue numbers** in commit messages. Use Backlog task IDs.
|
||||
- **Never use `{:discard, reason}`** — use `{:cancel, reason}` in Oban workers (related but common in commits).
|
||||
Reference in New Issue
Block a user