AI-powered git commit message, changelog & documentation generator using opencode.ai
┌ oc
│
◆ Staged changes:
│ + src/index.ts
│ + src/utils/git.ts
│
● Diff: 42 lines
│
◇ Commit message generated
│
◇ Proposed commit message:
│ "feat: add git status parsing utilities"
│
◆ What would you like to do?
│ ● Commit with this message
│ ○ Edit message
│ ○ Regenerate message
│ ○ Cancel
└
.oc/config.md to customize commit message rulesoc, ocmt, or opencommit# npm
npm install -g opencode
# or brew
brew install sst/tap/opencode
Then authenticate:
opencode auth
# bun (recommended)
bun install -g ocmt
# npm
npm install -g ocmt
# pnpm
pnpm install -g ocmt
# yarn
yarn global add ocmt
# Interactive commit flow
oc
# Stage all changes first
oc -a
# Skip confirmation prompts
oc -y
# Stage all and skip prompts
oc -ay
# Use provided message directly (skips AI)
oc "feat: add new feature"
# Interactive changelog generation
oc changelog
# Shorthand aliases
oc cl
oc --changelog
oc -cl
# Specify range
oc changelog --from v1.0.0 --to HEAD
oc changelog -f v1.0.0 -t v2.0.0
On first run, ocmt creates a .oc/ directory in your repository root with configuration files:
.oc/config.md - Commit Message RulesControls how AI generates commit messages. Default uses Conventional Commits:
# Commit Message Guidelines
## Types
- `feat`: A new feature
- `fix`: A bug fix
- `docs`: Documentation only changes
- `refactor`: Code change that neither fixes a bug nor adds a feature
...
## Rules
1. Use lowercase for the type
2. No scope (e.g., use `feat:` not `feat(api):`)
3. Use imperative mood ("add" not "added")
...
.oc/changelog.md - Changelog RulesControls changelog generation format. Default uses Keep a Changelog format.
Edit these files to customize AI behavior for your project.
| Command | Aliases | Description |
|---|---|---|
oc |
ocmt, opencommit |
Generate commit message from staged changes |
oc changelog |
oc cl |
Generate changelog from commits |
| Option | Description |
|---|---|
-a, --all |
Stage all changes before committing |
-y, --yes |
Skip confirmation prompts |
-V, --version |
Show version number |
-h, --help |
Show help |
| Option | Description |
|---|---|
-f, --from <ref> |
Starting commit/tag reference |
-t, --to <ref> |
Ending commit/tag reference (default: HEAD) |
| Feature | Provider | Model |
|---|---|---|
| Commit messages | opencode | gpt-5-nano |
| Changelogs | opencode | claude-sonnet-4-5 |
$ oc
┌ oc
│
◆ Staged changes:
│ + src/utils/parser.ts
│ + src/index.ts
│
● Diff: 127 lines
│
◇ Commit message generated
│
◇ Proposed commit message:
│ "feat: add expression parser with AST support"
│
◆ What would you like to do?
│ ● Commit with this message
└
$ oc changelog
┌ changelog
│
◇ Found releases and commits
│
◆ Select starting point for changelog:
│ ○ v1.0.0 (release)
│ ○ v0.9.0 (release)
│ ● abc1234 feat: add user authentication
│ ○ def5678 fix: resolve memory leak
└
Install OpenCode first:
npm install -g opencode
# or
brew install sst/tap/opencode
Run authentication:
opencode auth
Make sure you're in a git repository:
git init
Stage your changes first:
git add .
# or
oc -a # stages all changes automatically
Contributions are welcome! Please feel free to submit a Pull Request.
git checkout -b feat/amazing-feature)oc 😉)git push origin feat/amazing-feature)# Clone the repo
git clone https://github.com/yourusername/ocmt.git
cd ocmt
# Install dependencies
bun install
# Run in development mode
bun run dev
# Build for production
bun run build
# Type check
bun run typecheck
MIT