From core-claude-plugin
Commitlint configuration and GitHub Copilot commit message instruction templates with validation logic for conventional commit enforcement. Includes 6 required standards (conventional format, relaxed subject rules for Copilot compatibility, optional scope, Husky integration, required dependencies, Copilot instruction consistency). Use when creating or auditing commitlint.config.js and .copilot-commit-message-instructions.md files.
npx claudepluginhub metasaver/claude-marketplace --plugin core-claude-pluginThis skill uses the workspace's default tool permissions.
This skill provides commitlint.config.js and .copilot-commit-message-instructions.md templates and validation logic for conventional commit message enforcement.
Validates commit messages against Conventional Commits using commitlint configs. Detects and explains rules from .commitlintrc or commitlint.config.js for setup, CI/CD enforcement, LLM prompts, and debugging.
Configures pre-commit or prek git hooks for code quality automation, formatting, linting, and commit message processing across multi-language projects.
Creates Conventional Commits with pre-commit checklists for scope, quality, tests, linting, formatting, and documentation. Ensures one logical change per commit before git commit.
Share bugs, ideas, or general feedback.
This skill provides commitlint.config.js and .copilot-commit-message-instructions.md templates and validation logic for conventional commit message enforcement.
Manage commitlint configuration to:
This skill is invoked by the commitlint-agent when:
Standard templates are located at:
templates/commitlint.config.template.js # Commitlint validation rules (relaxed for Copilot)
templates/.copilot-commit-message-instructions.template.md # GitHub Copilot guidance
MUST enforce conventional commit message structure:
type(scope?): subject
body?
footer?
Valid types: feat, fix, docs, style, refactor, perf, test, chore, ci, build, revert
Validation:
type-enum rule has all 11 standard typesIMPORTANT: GitHub Copilot currently does NOT honor commitlint configuration files. MetaSaver uses RELAXED RULES for Copilot compatibility.
Requirements:
Validation:
// Verify relaxed rules configuration
config.rules["subject-case"] === [0]; // DISABLED (allows any case)
config.rules["subject-empty"] === [2, "never"]; // STRICT
config.rules["subject-full-stop"] === [1, "never", "."]; // WARNING
config.rules["header-max-length"] === [1, "always", 120]; // WARNING
config.rules["body-max-line-length"] === [0]; // DISABLED
Scope is optional but useful for monorepos:
✅ CORRECT:
feat(auth): add JWT middleware
fix(database): resolve connection pooling
docs(readme): update installation steps
Validation:
Commitlint MUST be integrated with Husky for pre-commit enforcement:
File structure:
repo-root/
├── commitlint.config.js ← Commitlint rules
├── .husky/
│ └── commit-msg ← Hook that runs commitlint
└── package.json ← Dependencies
Validation:
.husky/commit-msg hook existscommitlint --edit{
"devDependencies": {
"@commitlint/cli": "^19.0.0",
"@commitlint/config-conventional": "^19.0.0",
"husky": "^9.0.0"
}
}
Validation:
GitHub Copilot commit message instructions MUST be consistent with commitlint rules:
File: .copilot-commit-message-instructions.md
Requirements:
Validation:
function validateConsistency(commitlintConfig, copilotInstructions) {
const errors = [];
// Check types match
const commitlintTypes = commitlintConfig.rules["type-enum"][2];
const copilotTypes = extractTypesFromMarkdown(copilotInstructions);
if (!arraysEqual(commitlintTypes, copilotTypes)) {
errors.push("Types mismatch between commitlint and copilot instructions");
}
// Check relaxed rules documented
if (
!copilotInstructions.includes("sentence-case") &&
!copilotInstructions.includes("any case")
) {
errors.push("Copilot instructions missing relaxed case requirement");
}
// Check length limits documented
if (!copilotInstructions.includes("120 characters")) {
errors.push("Copilot instructions missing header length limit");
}
return errors;
}
To validate commitlint configuration:
# Rule 1: Check type-enum rule
node -e "const config = require('./commitlint.config.js'); console.log(config.default.rules['type-enum'])"
# Rule 2: Check relaxed rules
grep -q "subject-case.*\[0\]" commitlint.config.js || echo "VIOLATION: subject-case not disabled"
grep -q "subject-empty.*\[2" commitlint.config.js || echo "VIOLATION: subject-empty not strict"
# Rule 4: Check Husky integration
[ -f ".husky/commit-msg" ] || echo "VIOLATION: Missing commit-msg hook"
grep -q "commitlint" .husky/commit-msg || echo "VIOLATION: Hook doesn't call commitlint"
# Rule 5: Check dependencies
jq '.devDependencies | has("@commitlint/cli")' package.json
jq '.devDependencies | has("@commitlint/config-conventional")' package.json
# Rule 6: Check copilot instructions consistency
[ -f ".copilot-commit-message-instructions.md" ] || echo "VIOLATION: Missing copilot instructions"
This skill integrates with:
scope parameter. If not provided, use /skill scope-check/skill audit-workflow - Bi-directional comparison workflow/skill remediation-options - Conform/Update/Ignore choiceshusky-agent - For commit-msg hook integration