Back to skills
SKILL.md
Commit
ASecurityComplete pre-commit workflow - run quality checks (format, lint, test) and validate/create conventional commit messages
- 36 stars
- 0 votes
- 0 copies
- 2 views
- Added September 2, 2026
Works with
Security analysis
100/100Pro scans all 5 files and shows the line behind each finding
npx -y skills add fagemx/edda --skill commit --agent claude-codeAre you the author of Commit?
Add the live security badge to your README. It updates with every re-scan.
[](https://www.skillsdirectory.com/skills/fagemx-commit)---
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.
Files in this skill
- README.md
- SKILL.md
- examples.md
- release-triggers.md
- types.md
Attribution
Comments
Loading comments…
Newsletter
Get the weekly list of safe new skills, and the ones we pulled.