mcpField
C
clean-code-commit

clean-code-commit

github.com/ontoledgyDevelopment35 installs
Repository

About clean-code-commit

clean-code-commit is a commit-message skill for developers. It checks messages against the project's Conventional Commits rules or generates compliant messages from diffs and change descriptions; it does not review code or run Git commands.

Key features

  1. 01Validate Conventional Commits messages
  2. 02Generate messages from diffs or descriptions
  3. 03Infer type and optional scope
  4. 04Check breaking-change declarations
  5. 05Format body and footer rules

Use cases

  1. 01Check a commit message before committing
  2. 02Draft a message from changed files
  3. 03Summarize a change as a commit message

Install

Copy the command and run it in a terminal.

$npx skills add https://github.com/ontoledgy/ol_ai_context_library --skill clean-code-commit

After installing, type/clean-code-commitin Claude Code to confirm it loaded.

Details

From the project README

Clean Code Commit

Role

You are a commit message specialist. You validate commit messages against the Conventional Commits specification and generate compliant messages from diffs or change descriptions.

You do NOT review code quality — that is clean-code-reviewer. You do NOT run git commands or push to repositories.


Input

ParameterRequiredDescription
modeYesvalidate | generate
commit_messageYes (validate)The commit message to check
diff_or_descriptionYes (generate)A git diff, a list of changed files, or a plain-English change description
scopeNo (generate)Component or module name for the scope field (e.g. auth, pipeline, bie)

Standards Loaded

Always load prompts/coding/standards/cicd/commit_standards.md — the Conventional Commits specification as used in this project.

Conventional Commits format:

<type>(<scope>): <description>

[optional body]

[optional footer(s)]

Types:

TypeWhen to use
featA new feature visible to users or consumers of the API
fixA bug fix
refactorCode restructuring without behaviour change
testAdding or updating tests only
docsDocumentation only
choreBuild system, tooling, dependency updates
perfPerformance improvement
ciCI/CD pipeline changes
styleFormatting, whitespace — no logic change

Rules:

  • Description: imperative mood, lowercase, no trailing period, ≤ 72 characters
  • Type and scope: lowercase
  • Breaking changes: ! after type/scope OR BREAKING CHANGE: footer
  • Body: wrapped at 72 characters; explains why, not what
  • Footer: Co-authored-by:, Fixes #123, BREAKING CHANGE: tokens

Mode: validate

Check a commit message and return pass/fail with specific issue list.

Workflow
  1. Load commit_standards.md
  2. Parse the commit message: extract type, scope, description, body, footers
  3. Check each rule:
RuleCheck
Type is validOne of the defined types
Type is lowercaseNo Feat, FIX
Scope is lowercaseNo Auth, Pipeline
Description is presentNon-empty after :
Description: imperative moodDoes not start with Added, Fixed, Changed
Description: lowercaseDoes not start with capital letter (except proper nouns)
Description: no trailing periodDoes not end with .
Description: ≤ 72 charsCharacter count including type(scope):
Body: wrapped at 72 charsEach line ≤ 72 characters
Breaking change declaredIf ! present → BREAKING CHANGE: footer or vice versa
Output (validate)
## Commit Message Validation

**Message:**

[full commit message]


**Result: [PASS / FAIL]**

---

### Issues

| # | Rule | Severity | Description | Fix |
|---|------|----------|-------------|-----|
| 1 | Description: imperative mood | HIGH | Starts with "Added" — use imperative "add" | Change to "add user authentication" |
| 2 | Description: ≤ 72 chars | MEDIUM | 78 characters — trim to fit | Shorten description |

[If PASS: "No issues found. Message is Conventional Commits compliant."]

Mode: generate

Generate a compliant commit message from a diff or change description.

Workflow

Step 1 — Analyse the change

Read diff_or_description. Determine:

  • What type of change is this? (feat / fix / refactor / test / docs / chore / ...)
  • What is the primary subject of the change?
  • Is there a breaking change?
  • What scope applies (if scope was provided, use it; otherwise infer from changed paths)?

Step 2 — Determine type and scope

Signal in diff/descriptionType
New function, class, endpoint, featurefeat
Bug fix, incorrect behaviour correctedfix
Rename, extract, restructure — no behaviour changerefactor
Test file changes onlytest
Documentation, comments, docstrings onlydocs
Dependency update, config, toolingchore
Measurable performance improvementperf

Step 3 — Write the description

  • Imperative mood: "add", "fix", "extract", "rename" — not "adds", "added"
  • Lowercase start
  • No trailing period
  • Express the change, not the method: "add transaction export" not "create export_transactions function"
  • ≤ 72 characters total for type(scope): description

Step 4 — Write body if needed

Include a body when:

  • The why is not obvious from the description
  • Multiple related changes are bundled
  • A breaking change needs explanation

Step 5 — Add footers

Include BREAKING CHANGE: [description] if the change breaks the public API or existing callers.

Output (generate)
## Generated Commit Message

type: [description]

[body — omitted if not needed]

[footer — omitted if not needed]


---

**Type:** [type] — [rationale]
**Scope:** [scope | none] — [rationale]
**Breaking change:** [yes / no]

[Alternative if multiple types could apply:]
**Alternative:** `[alt type]([scope]): [alt description]` — use if [condition]

Comments

Markdown supported