Skip to content

Commit convention tooling for standard-version releases

License

Notifications You must be signed in to change notification settings

programinglive/commiter

Commiter πŸš€

npm version npm downloads publish status license: MIT

A standardized commit convention and release management tool for your repository using standard-version.

Features

  • βœ… Enforced Commit Conventions - Uses Conventional Commits format
  • 🎯 Automated Versioning - Semantic versioning (major, minor, patch)
  • πŸ“ Changelog Generation - Automatic CHANGELOG.md with icons
  • πŸ”’ Git Hooks - Pre-commit and commit-msg validation via Husky
  • 🎨 Icon Support - Each commit type has a dedicated icon in releases
  • 🎯 Enhanced Release Process - Clear console guidance and optional auto-commit for release notes
  • πŸ€– AI-Optimized Workflow - Built-in guidance for AI assistants with clear next steps and automated git operations

Installation

Install the package globally or as a dev dependency in your project:

# Install globally
npm install -g @programinglive/commiter

# Or install as dev dependency
npm install --save-dev @programinglive/commiter

# Or use npx (no installation required)
npx @programinglive/commiter

After installation in your project, the Husky hooks will be automatically set up for commit message validation.

Recommended MCP workflow companion

For a guided end-to-end engineering workflow, install the Development Workflow MCP Server alongside Commiter:

npm install --save-dev @programinglive/dev-workflow-mcp-server

Follow the configuration steps in that repository's README to connect your IDE assistant and automate the standard development workflow (start task β†’ implement β†’ test β†’ document β†’ commit β†’ release).

Commit Message Format

All commits must follow the Conventional Commits specification:

<type>(<scope>): <subject>

<body>

<footer>

Commit Types with Icons

Type Icon Description Changelog Section
feat ✨ New feature ✨ Features
fix πŸ› Bug fix πŸ› Bug Fixes
perf ⚑ Performance improvement ⚑ Performance
refactor ♻️ Code refactoring ♻️ Refactors
docs πŸ“ Documentation changes πŸ“ Documentation
style πŸ’„ Code style changes πŸ’„ Styles
test βœ… Test additions/changes βœ… Tests
build πŸ—οΈ Build system changes πŸ—οΈ Build System
ci πŸ‘· CI/CD changes πŸ‘· Continuous Integration
chore 🧹 Maintenance tasks 🧹 Chores
revert βͺ Revert previous commit βͺ Reverts

Examples

# Feature
git commit -m "feat(auth): add JWT authentication"

# Bug fix
git commit -m "fix(api): resolve null pointer exception"

# Breaking change
git commit -m "feat(api)!: redesign user endpoint

BREAKING CHANGE: The user endpoint now returns different data structure"

# With scope and body
git commit -m "perf(database): optimize query performance

Reduced query time by 50% using indexed columns"

Release Commands

Patch Release (1.0.0 β†’ 1.0.1)

For bug fixes and minor changes:

npm run release:patch

Minor Release (1.0.0 β†’ 1.1.0)

For new features (backwards compatible):

npm run release:minor

Major Release (1.0.0 β†’ 2.0.0)

For breaking changes:

npm run release:major

Complete Release (Auto-commit & Push)

For fully automated release with git operations:

npm run release:complete

This command:

  • Runs the standard release process
  • Automatically commits release notes with versioned message
  • Pushes changes to remote
  • Provides success confirmation

Automatic Release

Let standard-version determine the version bump based on commits:

npm run release

Note: This command shows clear guidance for git operations needed after release notes generation.

What Happens During Release?

  1. πŸ§ͺ Runs tests - Detects your package manager and runs the test script automatically (tests only run during release, not on commit)
  2. πŸ“Š Analyzes commits - Examines commits since last release
  3. πŸ“˜ Verifies documentation – Warns if docs/PRD.md is missing so every project keeps an up-to-date PRD
  4. πŸ”’ Bumps version - Updates version in package.json
  5. πŸ“ Updates changelog - Generates CHANGELOG.md with icons
  6. πŸ“‹ Generates release notes - Creates and stages release notes entry
  7. 🏷️ Creates tag - Creates a git tag for the release
  8. πŸ’Ύ Commits release - Commits changes with format: chore(release): v1.2.3 πŸš€
  9. 🎯 Shows next steps - Provides clear guidance for git operations needed

Release Notes Management

Standard Release (Manual Git Operations)

When using npm run release, the tool provides clear console guidance:

🎯 Release notes generated and staged successfully!

πŸ“‹ NEXT STEPS REQUIRED:
   βœ… Release notes have been staged for commit
   πŸ”„ You need to commit and push the release notes:
      git commit -m "docs: update release notes for version"
      git push

πŸ’‘ AI ASSISTANCE:
   πŸ€– Use the dev-workflow MCP server to handle the commit and push automatically
   πŸ“ The release notes are now staged and ready for commit

Complete Release (Automated Git Operations)

Use npm run release:complete for full automation:

  • βœ… Release completed
  • βœ… Release notes generated
  • βœ… Changes committed
  • βœ… Changes pushed

Push Your Release

After running a standard release command, push to remote:

git push --follow-tags origin main

For complete releases, pushing is handled automatically.

Pre-commit Hooks

The following hooks are automatically enforced:

  • commit-msg: Validates commit message format using commitlint
  • pre-commit: Empty hook (tests are run only during release, not on commit)

Configuration Files

  • package.json - Contains standard-version configuration
  • commitlint.config.js - Commitlint rules
  • .husky/commit-msg - Commit message validation hook
  • .husky/pre-commit - Pre-commit test hook

Troubleshooting

Commit message validation fails

Ensure your commit message follows the format:

type(scope): subject

Valid types: feat, fix, docs, style, refactor, perf, test, build, ci, chore, revert

Release commits generated by standard-version such as chore(release): 1.0.0 πŸš€ are automatically ignored by commitlint.

First Release

For new projects without any version tags, use the first release command to start from version 0.0.1:

npm run release:first

Running the first release command:

  • Sets the initial version to 0.0.1
  • Creates the first git tag
  • Generates the initial CHANGELOG.md
  • Commits the release with proper formatting

This ensures your project starts with a clean, semantic version foundation. Replace the default test script with your real test command once available.

Dry run

To see what would happen without making changes:

npm run release -- --dry-run

Website

The project includes a professional landing page in the web/ directory.

Local Development

To run the website locally:

npm run web

This will serve the website at http://localhost:3000.

Contributing

Contributions are welcome! Please read CONTRIBUTING.md for details on our code of conduct and the process for submitting pull requests.

License

MIT License - see the LICENSE file for details.

This project is open source and free to use, modify, and distribute at your own risk.

About

Commit convention tooling for standard-version releases

Topics

Resources

License

Code of conduct

Contributing

Security policy

Stars

Watchers

Forks

Packages

 
 
 

Contributors