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

tossitin

v2.0.1

Published

Generate git commit messages using a LangGraph workflow that inspects repo state and commits changes

Downloads

60

Readme

TossItIn

CI npm version License: MIT Node.js >= 22 Coverage Status

AI-powered git workflow tool that analyzes your changes, generates meaningful commit messages, and pushes to your repository — all in one command.

Built with LangChain and Claude (Anthropic) or Ollama for local models.

⚠️ WARNING

TossItIn uses large language models (LLMs), which make mistakes.

LLMs can and will produce incorrect, incomplete, or outright wrong output — including bad commit messages, wrong branch names, and false negatives when scanning for dangerous files. Do not blindly trust anything this tool generates. Always review the output before accepting it.

This tool interacts directly with your git repository and can stage files, create commits, and push to remote branches. A mistake here can affect your repository history and your team. Use it at your own risk.


Features

  • Branch protection: Detects protected branches and helps create a properly named feature branch
  • Safe staging: AI scans new untracked files for dangerous content (secrets, credentials) before adding them
  • Smart commit messages: Uses an AI agent with git tools to generate subject lines and descriptions
  • Interactive confirmation: Review and approve the commit message before it's applied (skippable with --force)
  • Auto push: Pushes to remote and sets up tracking branches automatically
  • Jira integration: Fetches in-progress Jira issues to inform branch names
  • Local LLM support: Works with Ollama as an alternative to Claude

Installation

# Global (recommended)
npm install -g tossitin

# Without installing
npx tossitin

# Local
npm install tossitin

Requirements

  • Node.js v22 or higher
  • A git repository with at least one remote configured
  • An LLM backend (Anthropic API key or Ollama)

Setup

Claude (Anthropic)

export ANTHROPIC_API_KEY=your_api_key_here

To make it permanent, add to your shell profile (~/.bashrc, ~/.zshrc, etc.):

echo 'export ANTHROPIC_API_KEY=your_api_key_here' >> ~/.zshrc

Get an API key at console.anthropic.com.

Ollama (local)

export OLLAMA_MODEL=llama3.2

TossItIn uses Claude if ANTHROPIC_API_KEY is set, otherwise falls back to the model specified in OLLAMA_MODEL.

Usage

tossitin

Or skip all confirmation prompts:

tossitin --force

What it does

  1. Branch check — If the current branch is protected (main, master, develop, release/*, etc.), it prompts you to describe your work and creates a new branch with an AI-generated name.
  2. Stage files — Runs git add ., but first scans any new untracked files with AI. If a file looks dangerous (e.g., contains secrets or credentials), it stops and warns you before anything is staged.
  3. Generate commit message — An AI agent runs git status and git diff --cached to understand your changes, then writes a commit message with a subject line and description.
  4. Confirm and commit — Shows you the message and asks for confirmation (auto-approved with --force).
  5. Push — Pushes to the remote, automatically setting the upstream tracking branch if needed.

Example

┌  🪄 LET's ToSS IT iN! 💥
│
◇  ✅ Current branch "feat/my-feature" is not protected, let's continue...
◇  🎉 Checking for new files to add...
◇  🧠 Thinking...
◇  🎉 Adding files:
│      👉 src/utils/helper.mjs
◇  🧠 Creating commit message...
◇  👌 Commit message:
│
│  ✨ feat: add helper utility for string formatting
│
│  Introduced a new utility module with string formatting helpers
│  used across multiple components to reduce duplication.
│
◇  Should I commit with this message? › Yes
◇  🎉 Pushing to remote...
│
└  👌 Everything committed and pushed!

Configuration

TossItIn merges configuration from two optional files, in this order:

| File | Scope | | ------------------------ | ------------------------------- | | ~/.tossitin/config.mjs | Global (applies to all repos) | | .tossitin.config.mjs | Local (applies to current repo) |

Both files should export a default object:

// .tossitin.config.mjs
export default {
  force: false,
  protectedBranches: ["main", "master", "release/", "develop", "development"],
};

Jira integration

Add Jira config to automatically select an in-progress issue when creating a branch:

// ~/.tossitin/config.mjs
export default {
  jira: {
    url: "https://yourcompany.atlassian.net",
    pat: "your_personal_access_token",
    jql: "assignee = currentUser() AND status = 'In Progress'",
  },
};

Development

git clone https://github.com/uebelack/tossitin.git
cd tossitin
yarn install

# Run directly
node index.mjs

# Run tests
yarn test

# Lint
yarn lint:check

Troubleshooting

Nothing to commit — Make sure you have staged or unstaged changes before running tossitin.

Missing LLM config — Set either ANTHROPIC_API_KEY or OLLAMA_MODEL in your environment.

Permission denied — Make sure index.mjs is executable:

chmod +x index.mjs

Push fails — Ensure your remote is configured (git remote -v) and you have push access.

Architecture

| Package | Purpose | | -------------------------------------------------------------------------- | ------------------ | | @langchain/anthropic | Claude integration | | @langchain/ollama | Ollama integration | | @clack/prompts | Terminal UI | | execa | Command execution |

License

MIT

Author

David Übelacker

Contributing

Issues and pull requests are welcome at github.com/uebelack/tossitin