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

oc-plugin-gitgud

v0.1.8

Published

Lightweight Git and Graphite controls for the OpenCode TUI sidebar: review your working tree, stage and unstage files, generate commit messages with an LLM, commit, and submit/push without leaving OpenCode.

Downloads

443

Readme

GitGud plugin for OpenCode

Lightweight Git and Graphite controls for the OpenCode TUI sidebar: review your working tree, stage and unstage files, generate commit messages with an LLM, commit, and submit/push without leaving OpenCode.

Inspired by lazygit.

Demo

Basic git actions (stage, commit, push)

https://github.com/user-attachments/assets/d670e879-0694-4443-8ee5-cdb2e4d58247

Staging, modifying, and submitting graphite stack

https://github.com/user-attachments/assets/100f4e87-6687-405e-b80d-a2f8f3527c7c

Moving up and down the graphite stack

https://github.com/user-attachments/assets/86148c41-eb92-4958-9fa1-a8b5cf5381f8

Installation

Install from the CLI:

opencode plugin oc-plugin-gitgud

Or from OpenCode commands:

  1. Press Ctrl+P
  2. Select Install Plugin
  3. Enter oc-plugin-gitgud

Options

Plugin options can be configured via the tui.json config file.

TUI

  • enabled (boolean, default true)
  • workflow ("auto" | "git" | "graphite", default "auto") chooses the primary GitGud workflow. auto adds Graphite controls when the gt CLI can read the current stack; otherwise it keeps the standard Git controls. When Graphite controls are active, plain Git commit and push actions remain available as explicit escape hatches.
  • replace_sidebar_files (boolean, default false) disables OpenCode's default Modified Files sidebar card
  • confirm_push (boolean, default true)
  • confirm_stage_all_on_commit (boolean, default true) asks before committing all changed files when Commit or Graphite Modify is selected with changed files but no staged files
  • commit_agent (string, optional) overrides the agent used for generated commit messages. When unset, OpenCode uses its normal default for the generated session.
  • commit_model (string, optional) overrides the model for generated commit messages using provider/model format, for example opencode-go/kimi-k2.6
  • commit_system_instructions (string, optional) appends extra style guidance to GitGud's default commit-message system prompt
  • keybinds (object) overrides GitGud's OpenCode command keybinds. Set a keybind to false, null, an empty string, or "none" to disable it.

For example:

{
  "commit_model": "opencode-go/kimi-k2.6",
  "commit_system_instructions": "Prefer short conventional commits. Mention issue IDs when present."
}

Default keybinds use OpenCode leader sequences to avoid common terminal, macOS, and window-manager shortcuts. Mutating actions use uppercase shifted leader chords to reduce accidental collisions with OpenCode's lowercase leader defaults:

{
  "keybinds": {
    "open_status": "<leader>v",
    "stage_all": "<leader>A",
    "unstage_all": "<leader>U",
    "commit": "<leader>C",
    "push": "<leader>P",
    "graphite_create": "none",
    "graphite_modify": "none",
    "graphite_submit_stack": "none",
    "graphite_sync": "none",
    "graphite_up": "none",
    "graphite_down": "none",
    "refresh": "f5"
  }
}

Graphite workflow

Plain Git commit generates an editable commit message for staged changes, then commits after confirmation. If no files are staged and confirm_stage_all_on_commit is enabled, GitGud asks before generating a message for all changed files; it stages and commits those changes only after you accept the final commit prompt.

When workflow is "graphite", or "auto" detects a usable Graphite CLI stack, GitGud keeps the same simple working-tree controls, shows Graphite actions first, and keeps plain Git commit/push actions available in the same Actions palette. Graphite actions use Graphite's canonical commands:

  • Create Graphite branch: prompts for a branch name, then runs gt create <branch> --no-interactive without staging or committing changes. If files are staged, GitGud asks you to unstage them first to avoid Graphite committing staged changes.
  • Modify current diff: generates an editable commit message for staged changes, then runs gt modify --commit --message "message" (gt m -cm "message"). If no files are staged and confirm_stage_all_on_commit is enabled, GitGud asks before generating a message for all changed files and runs gt modify --commit --all --message "message" (gt m -cam "message") after final confirmation.
  • Submit stack: gt submit --stack (gt ss)
  • Sync stack: gt sync
  • Move up/down stack: gt up / gt down

Commands

  • GitGud: Stage all
  • GitGud: Unstage all
  • GitGud: Open Git Status
  • GitGud: Commit changes with git (generates an editable commit message before committing)
  • GitGud: Push current branch with git
  • GitGud: Create Graphite branch
  • GitGud: Modify current diff with Graphite
  • GitGud: Submit Graphite stack
  • GitGud: Sync Graphite stack
  • GitGud: Move up Graphite stack
  • GitGud: Move down Graphite stack
  • GitGud: Refresh