MCPcopy Index your code
hub / github.com/cocogitto/cocogitto

github.com/cocogitto/cocogitto @7.0.0

Chat with this repo
repository ↗ · DeepWiki ↗ · release 7.0.0 ↗ · + Follow
786 symbols 2,522 edges 95 files 56 documented · 7% updated 2mo ago7.0.0 · 2026-03-04★ 1,14057 open issues
What it actually does AI analysis from the code graph — generated when you open this
loading…
README

Cocogitto – The conventional commits tool box

GitHub Actions workflow status Code coverage status

Conventional commits Repository license Discord logo

Website · Installation · Configuration

The Conventional Commits toolbox

  • Verified commits: create conventional compliant commits with ease.
  • Automatic Version bump and changelog: automatically bump versions and generate changelogs with your own custom steps and workflows.
  • Release profiles: your branching model requires different steps for releases, pre-release, hotfixes ? We got you covered !
  • Depends only on libgit2: cocogitto has one standalone binary, the only system dependency is libgit2.
  • Conventional git log: search your commit history matching Conventional Commits items such as scope and commit type.
  • GitHub integration: enforce the conventional commits specification with our GitHub action and bot.
  • Monorepo support: Automatic versioning for mono-repositories is supported out of the box.

Explore Cocogitto's docs  ▶

Foreword

What is it ?

Cocogitto is a CLI and GitOps toolbox for the Conventional Commits and Semver specifications.

Why ?

There are plenty of tools listed on the conventional commits website to help you generate changelog, git hooks, commit template etc. Some of them are specifically designed for the Conventional Commits specification, and some of them are general purpose.

Cocogitto was designed to help you respect the conventional and semver standard and is not intended to be used in any other context.

It strives to be a set of simple, modern and fast command line interfaces.

Goals

  • Make using the conventional commits spec easy and fun.
  • Enable people to focus on their work instead of correcting small mistakes and typos.
  • Enforce correctness regarding Semver and Conventional Commits.
  • Automate things when possible (ex: bumping versions).

Non goals

  • Cocogitto is not a git replacement. It uses some of libgit2 but only to provide features related to the Conventional Commits specification. Anything else shall be done with git.
  • Supporting other commit conventions or git workflows.

Quick start

This readme is a quick tour of what you can do with Cocogitto, for an in-depth guide please refer to the documentation.

Installation

Packaging status

Archlinux

pacman -S cocogitto

Cargo

cargo install --locked cocogitto

Mise

mise use -g cocogitto@latest

NixOS

nix-env -iA cocogitto

Void Linux

xbps-install cocogitto

MacOS

brew install cocogitto

Conventional commits

To create conventional commits you can use the cog commit command. It has subcommands for the default fix and feat Conventional Commits types plus the angular commit conventional commit types.

Example:

# With cog
cog commit feat "add awesome feature"

# With git
git commit -m "feat: add awesome feature"

See User guide -> Conventional commits.

Configuration

Use cog.toml file to configure your usage of Cocogitto.

For the full list of options, see User guide -> Configuration reference.

Auto-bumps

Creating a version with cog bump will perform the following actions :

  1. Determine a version number according to your commit history.
  2. Perform configuration defined pre-bump commands.
  3. Append the version's changelog to your repository changelog file.
  4. Create a version commit and tag it.
  5. Perform post-bump commands

Example:

# File: cog.toml
pre_bump_hooks = [
    "echo {{version}}",
]


post_bump_hooks = [
    "git push",
    "git push origin {{version}}",
]

[changelog]
path = "CHANGELOG.md"
template = "remote"
remote = "github.com"
repository = "cocogitto_bot_playground"
owner = "cocogitto"
authors = [
  { username = "oknozor", signature = "Paul Delafosse"}
]

cog bump example

Changelogs

cog changelog uses tera templates to generate markdown changelogs. It has several built-in templates, and you can define your own.

Example:

cog changelog

Output :

## 1.2.0 - 2021-11-26

#### Bug Fixes

- (**parser**)handle lowercase identifier - (7521015) - *oknozor*
- handle unknown flag - (e2388dc) - oknozor

#### Features

- (**parser**)simple parser implementation - (0b25eb6) - *oknozor*
- add a new cli flag - (ff84173) - oknozor

#### Miscellaneous Chores

- **(version)** 1.2.0 - (15d1333) - *oknozor*

#### Refactoring

- (**parser**)use a parser interface instead of concrete impl - (ea24c36) - *oknozor*

#### Tests

- add integration test - (bae629c) - *oknozor*

See User guide -> Changelogs.

Docker

There is a docker image for cog available ghcr.io/cocogitto/latest.

Usage:

docker pull ghcr.io/cocogitto/cog:latest
docker run -t -v "$(pwd)":/app/ check

Note that you need to mount a volume pointing to your target directory for cog to be able to operate on your git log.

See Docker -> Using cocogitto with docker.

GitHub integration

GitHub action:

You can run cog check and perform automatic releases via GitHub action using cocogitto-action.

Example:

  - name: Semver release
    uses: cocogitto/cocogitto-action@main
    with:
      release: true
      git-user: 'Cog Bot'
      git-user-email: 'mycoolproject@org.org'

See Github integration -> GitHub action

GitHub bot:

cocogitto-bot is a standalone, zero-config bot checking your pull requests against the Conventional Commits specification.

cog bot example

See Github integration -> GitHub-bot

Similar projects

Contributing

Found a bug, have a suggestion for a new feature? Please read the contribution guideline and submit an issue.

Licence

All the code in this repository is released under the MIT License, for more information take a look at the LICENSE file.

Extension points exported contracts — how you extend this code

ToContext (Interface)
(no doc) [5 implementers]
crates/cocogitto/src/conventional/changelog/context.rs
DependencyResolver (Interface)
(no doc) [3 implementers]
crates/cocogitto-dependency-resolver/src/resolvers/mod.rs
ToMarkDown (Interface)
(no doc) [4 implementers]
crates/cocogitto/src/bin/cog-doc/markdown.rs
Hooks (Interface)
(no doc) [2 implementers]
crates/cocogitto/src/hook/mod.rs
Bump (Interface)
(no doc) [1 implementers]
crates/cocogitto/src/conventional/bump.rs

Core symbols most depended-on inside this repo

to_string
called by 240
crates/cocogitto/src/git/status.rs
git_init_no_gpg
called by 80
crates/cocogitto/src/lib.rs
commit
called by 51
crates/cocogitto/src/lib.rs
is_empty
called by 37
crates/cocogitto/src/git/rev/mod.rs
stdout
called by 35
crates/cocogitto/src/log/output.rs
into_iter
called by 29
crates/cocogitto/src/git/rev/mod.rs
commit
called by 27
crates/cocogitto/src/git/commit.rs
revwalk
called by 26
crates/cocogitto/src/git/rev/revwalk.rs

Shape

Function 435
Method 258
Class 58
Enum 30
Interface 5

Languages

Rust99%
Java1%

Modules by API surface

crates/cocogitto/tests/cog_tests/bump.rs56 symbols
crates/cocogitto/src/hook/mod.rs40 symbols
crates/cocogitto/src/conventional/bump.rs40 symbols
crates/cocogitto/src/git/tag.rs39 symbols
crates/cocogitto/src/conventional/commit.rs38 symbols
crates/cocogitto/src/settings/mod.rs30 symbols
crates/cocogitto/src/git/repository.rs30 symbols
crates/cocogitto/tests/lib_tests/bump.rs25 symbols
crates/cocogitto/src/git/rev/revwalk.rs22 symbols
crates/cocogitto/tests/cog_tests/changelog.rs21 symbols
crates/cocogitto/src/command/bump/mod.rs21 symbols
crates/cocogitto/tests/cog_tests/commit.rs18 symbols

For agents

$ claude mcp add cocogitto \
  -- python -m otcore.mcp_server <graph>

⬇ download graph artifact