npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2026 – Pkg Stats / Ryan Hefner

@andre-barbosa/opencode-commit

v0.1.9

Published

OpenCode plugin that generates Conventional Commit messages and split commit plans via /commit using a configured model

Readme

@andre-barbosa/opencode-commit

OpenCode plugin that generates Conventional Commits messages or split commit plans from uncommitted git changes using a model you choose.

Run /commit in the OpenCode TUI to get a suggested message like feat(auth): add oauth login flow — copy it and commit manually.

Features

  • /commit slash command (suggest only, no auto-commit)
  • Copy the generated message or plan to the system clipboard from the result dialog
  • Request a fresh suggestion with the same input
  • Split commit planning with /commit split and /commit split <folder...>
  • Dedicated model for commit message generation
  • Conventional Commits format enforced (feat(scope): ..., fix(scope): ..., etc.)
  • Optional hint: /commit emphasize breaking API change
  • Uses staged diffs, unstaged diffs, non-ignored untracked filenames, branch name, and recent commit subjects for context

Requirements

  • OpenCode with plugin support
  • A git repository with uncommitted changes

Installation

Configure the plugin

Local development (this repo):

Build the plugin first:

npm run build

Create or edit .opencode/tui.json (or a top-level tui.json) in the project where you want to use /commit:

{
  "$schema": "https://opencode.ai/tui.json",
  "plugin": [
    [
      "file:///C:/absolute/path/to/opencode-commit",
      {
        "model": "opencode-go/deepseek-v4-flash",
        "maxDiffChars": 12000
      }
    ]
  ]
}

From npm:

{
  "$schema": "https://opencode.ai/tui.json",
  "plugin": [
    ["@andre-barbosa/opencode-commit", { "model": "opencode-go/deepseek-v4-flash" }]
  ]
}

See tui.example.json for a full example.

Run opencode models to list available models. Restart OpenCode after editing config. When testing local changes, run npm run build again before restarting OpenCode.

/commit is a TUI slash command. Invoke it from the command palette (Ctrl+Shift+P) or by typing / in the prompt and selecting commit. You can then enter an optional hint or split [folder...].

Usage

  1. Make changes in a git repository. Staging is optional.
  2. Open OpenCode in the project.
  3. Run the commit slash command (/commit).
  4. Choose an action from the result dialog:
    • Copy message to clipboard
    • Request new message to generate another suggestion
    • Close
  5. Paste the copied message into git commit -m "feat(scope): ...".

Optional extra instruction:

Run /commit, then enter:

focus on test coverage improvements

Split commit planning:

Run /commit, then enter:

split

This suggests one commit message per changed top-level folder. Files in the repo root are grouped under root.

split apps/web packages/api

This suggests one commit message for each requested folder with changes under that path.

Split mode only suggests a plan. It does not stage files and does not create commits. You can copy the plan to the clipboard or request a new plan from the result dialog.

Plugin options

When loading the plugin as a tuple [name, options]:

| Option | Default | Description | | --- | --- | --- | | model | required | Model to use in provider/model-id format | | maxDiffChars | 12000 | Max tracked diff characters sent across staged and unstaged diffs |

Change scope

/commit analyzes:

  • Staged tracked changes from git diff --staged
  • Unstaged tracked changes from git diff
  • Changed-file metadata from git diff --name-status
  • Non-ignored untracked filenames from git ls-files --others --exclude-standard

It does not read untracked file contents and does not ask Git for ignored files.

Commit message format

Generated messages follow Conventional Commits:

type(scope): short imperative description

- optional bullet body

Allowed types: feat, fix, docs, style, refactor, perf, test, build, ci, chore.

Project layout

opencode-commit/
├── src/                  # plugin source
│   ├── tui.ts            # TUI slash command and result actions
│   ├── clipboard.ts      # system clipboard helper
│   └── index.ts          # server no-op entrypoint
├── tui.example.json      # example TUI plugin config
└── README.md

License

MIT