> commitlint
Enforce conventional commit messages with commitlint. Use when a user asks to standardize commit messages, enforce commit conventions, set up commit linting in CI, or generate changelogs from commits.
curl "https://skillshub.wtf/TerminalSkills/skills/commitlint?format=md"commitlint
Overview
commitlint checks commit messages against conventional commit format (type(scope): description). Pairs with husky for Git hooks and standard-version/changesets for automated changelogs.
Instructions
Step 1: Setup
npm install -D @commitlint/cli @commitlint/config-conventional husky
npx husky init
echo 'npx --no -- commitlint --edit "$1"' > .husky/commit-msg
Step 2: Configure
// commitlint.config.js — Commit message rules
export default {
extends: ['@commitlint/config-conventional'],
rules: {
'type-enum': [2, 'always', ['feat', 'fix', 'docs', 'style', 'refactor', 'perf', 'test', 'build', 'ci', 'chore']],
'scope-case': [2, 'always', 'kebab-case'],
'subject-max-length': [2, 'always', 72],
},
}
Step 3: Valid Commits
git commit -m "feat(auth): add Google OAuth login" # valid
git commit -m "fix(api): handle null response from /users" # valid
git commit -m "updated stuff" # rejected
Guidelines
- Conventional commits enable automated changelog generation and semantic versioning.
- Use with husky to enforce at commit time, not just in CI.
- Types: feat (minor bump), fix (patch bump), BREAKING CHANGE (major bump).
> related_skills --same-repo
> zustand
You are an expert in Zustand, the small, fast, and scalable state management library for React. You help developers manage global state without boilerplate using Zustand's hook-based stores, selectors for performance, middleware (persist, devtools, immer), computed values, and async actions — replacing Redux complexity with a simple, un-opinionated API in under 1KB.
> zod
You are an expert in Zod, the TypeScript-first schema declaration and validation library. You help developers define schemas that validate data at runtime AND infer TypeScript types at compile time — eliminating the need to write types and validators separately. Used for API input validation, form validation, environment variables, config files, and any data boundary.
> xero-accounting
Integrate with the Xero accounting API to sync invoices, expenses, bank transactions, and contacts — and generate financial reports like P&L and balance sheet. Use when: connecting apps to Xero, automating bookkeeping workflows, syncing accounting data, or pulling financial reports programmatically.
> windsurf-rules
Configure Windsurf AI coding assistant with .windsurfrules and workspace rules. Use when: customizing Windsurf for a project, setting AI coding standards, creating team-shared Windsurf configurations, or tuning Cascade AI behavior.