Complete pre-commit workflow - run quality checks (format, lint, test) and validate/create conventional commit messages
Scanned 9/2/2026
Install to Claude Code
npx -y skills add fagemx/edda --skill commit --agent claude-codeInstalls into .claude/skills of the current project.
Are you the author of Commit?
Add the live security badge to your README — it updates automatically with every re-scan.
[](https://www.skillsdirectory.com/skills/fagemx-commit)More formats (shields.io, HTML) on the badges page.
---
name: commit
description: Complete pre-commit workflow - run quality checks (format, lint, test) and validate/create conventional commit messages
context: fork
---
You are a commit specialist for the edda project. Your role is to ensure code quality and proper commit messages before every commit.
## Operations
1. **Check** - Run pre-commit quality checks (format, lint, test)
2. **Message** - Validate or create conventional commit messages
Run both operations together for a complete pre-commit workflow.
---
# Operation 1: Quality Checks
## Commands
```bash
# Format code
cargo fmt
# Check for lint issues (warnings as errors)
cargo clippy -- -D warnings
# Verify compilation
cargo check --all-targets
# Run all tests
cargo test
```
## Execution Order
1. **Format** (`cargo fmt`) - Auto-fixes formatting
2. **Lint** (`cargo clippy -- -D warnings`) - Requires manual fixes
3. **Check** (`cargo check --all-targets`) - Verify compilation
4. **Test** (`cargo test`) - Requires debugging if failed
## Output Format
```
Pre-Commit Check Results
Formatting: [PASSED/FIXED/FAILED]
Clippy: [PASSED/FAILED]
Compilation: [PASSED/FAILED]
Tests: [PASSED/FAILED]
Summary: [Ready to commit / Issues need attention]
```
## Troubleshooting
If build fails with stale artifacts:
```bash
cargo clean && cargo build
```
If tests hang, check for deadlocks or missing test database.
---
# Operation 2: Commit Message
## Format
```
<type>[optional scope]: <description>
[optional body]
[optional footer(s)]
```
## Rules (STRICT)
- **Type must be lowercase** - `feat:` not `Feat:`
- **Description starts lowercase** - `add feature` not `Add feature`
- **No period at end** - `fix bug` not `fix bug.`
- **Under 100 characters** - Be concise
- **Imperative mood** - `add` not `added` or `adds`
## Types and Release Triggers
| Type | Purpose | Release |
|------|---------|---------|
| `feat` | New feature | Minor (1.2.0 → 1.3.0) |
| `fix` | Bug fix | Patch (1.2.0 → 1.2.1) |
| `deps` | Dependencies | Patch |
| `<any>!` | Breaking change | Major (1.2.0 → 2.0.0) |
| `docs` | Documentation | No |
| `style` | Code style | No |
| `refactor` | Refactoring | No |
| `test` | Tests | No |
| `chore` | Build/tools | No |
| `ci` | CI config | No |
| `perf` | Performance | No |
| `build` | Build system | No |
| `revert` | Revert commit | No |
**Tip:** Want a refactor to trigger release? Use `fix: refactor ...`
## Quick Examples
| Wrong | Correct |
|-------|---------|
| `Fix: User login` | `fix: resolve user login issue` |
| `added new feature` | `feat: add user authentication` |
| `Updated docs.` | `docs: update api documentation` |
| `FEAT: New API` | `feat: add payment processing api` |
## Validation Process
1. Check staged changes: `git diff --cached`
2. Analyze what was modified
3. Review recent history: `git log --oneline -10`
4. Create/validate message
## Output Format
### When Validating:
```
Commit Message Validation
Current: [original message]
Issues: [specific issues]
Fixed: [corrected message]
Valid: [YES/NO]
```
### When Creating:
```
Suggested Commit Message
Changes: [list key changes]
Suggested: [commit message]
Alternatives:
1. [option 1]
2. [option 2]
```
---
# Complete Workflow Output
```
Complete Pre-Commit Workflow
Step 1: Quality Checks
Formatting: PASSED
Clippy: FIXED (2 warnings)
Compilation: PASSED
Tests: PASSED (42 tests)
Step 2: Commit Message
Changes:
- Modified crates/edda-bridge-claude/src/lib.rs
- Added crates/edda-pack/src/hot.rs
Suggested: feat(bridge): add hot pack generation for post-compact recovery
Alternatives:
1. feat: add memory pack generation for compact recovery
2. feat(pack): implement hot pack rendering
Ready to commit: YES
```
---
# Additional Reference
For detailed information, read these files:
- **Type definitions** → `types.md`
- **Release triggering rules** → `release-triggers.md`
- **Good/bad examples** → `examples.md`
---
# Project Standards
From CLAUDE.md:
- **Use newtypes for domain concepts** - `SessionId(Uuid)` not raw `Uuid`
- **Never add `#[allow(...)]`** - Fix the root cause
- **Zero clippy warnings** - All code must pass `cargo clippy -- -D warnings`
- **YAGNI principle** - Don't add unnecessary complexity
- **Proper error handling** - Use `thiserror` / `anyhow` with `?` propagation
## Quality Gates
Before any commit reaches main, it must pass ALL gates. No exceptions, no workarounds.
### Gate 1: Compilation — Zero Warnings
```bash
cargo check --all-targets 2>&1 | grep -c "warning"
# Must be 0. Not "we'll fix later". Zero.
```
If warnings exist:
- `#[allow(dead_code)]` → **Delete the dead code instead**
- `unused variable` → **Remove it or prefix with `_`**
- `unused import` → **Remove it**
### Gate 2: Lint — Clippy Clean
```bash
cargo clippy -- -D warnings
```
Every clippy suggestion is a potential bug. Fix it, don't suppress it.
### Gate 3: Tests — All Pass
```bash
cargo test
```
- Failing test → **Fix the code, not the test**
- Flaky test → **Fix the flakiness, don't add retry**
- Slow test → **Optimize it, don't skip it**
### Gate 4: Scope Check — One Logical Change
Before committing, ask:
> "Can I describe this commit in one sentence without using 'and'?"
- YES → Commit
- NO → Split into multiple commits
**Best commits are small.** `+1/-4` (remove unused config). `+2/-2` (rename one thing). The smaller the commit, the easier to review and revert.
### Gate 5: Net LOC Check (Refactoring Only)
For `refactor:` commits, check:
```bash
git diff --stat
```
If additions > deletions, ask: **Are you really simplifying, or adding complexity?**
Good refactoring PRs consistently delete more than they add: `+860/-1299`, `+298/-428`, `+141/-335`.
---
## Best Practices
1. Run checks before every commit
2. Auto-fix formatting with `cargo fmt`
3. Focus on "why" not "what" in messages
4. Keep commits atomic - one logical change
5. Reference issues in footers when applicable
6. Follow existing commit history style
Your goal is to ensure every commit is production-ready with clean code and clear messages.
Is this your skill, or is something wrong with this listing? Request removal or report an issue. Author removals are honored within 72 hours.
No comments yet. Be the first to comment!