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

gitshot

v0.0.2

Published

Zero-config, agent-first CLI to upload images to issues, PRs, and comments. Screenshots on GitHub, now without a browser.

Readme

Upload images from the terminal and get markdown-ready URLs for GitHub issues, PRs, and comments. Auto-detects the best backend. Built for AI agents and humans.

Why do I need this?

GitHub has no API for uploading images to issues, PRs, or comments. This has been requested since 2020 — 5+ years, no resolution. The gh CLI's --body only accepts text. AI agents can take screenshots but can't attach them. It's a gap you are bound to hit.

gitshot fixes this in one command.

Installation

Install for Humans

# Use directly with npx (zero install)
npx gitshot rick.gif

# Install globally
npm install -g gitshot

Install for Agents

Install the gitshot skill for Command Code, Claude Code, Cursor, Copilot, Codex, and 40+ other agents:

npx skills add vipulgupta2048/gitshot

Once installed, your agent automatically knows when and how to use gitshot — just ask it to "attach a screenshot to the PR" or "upload an image to the issue."

Install as GitHub CLI Extension

gh extension install vipulgupta2048/gitshot
gh shot rick.gif --pr 42

Usage

# Upload + comment on a PR (one command)
gitshot rick.gif --pr 42

# Upload + comment with a caption
gitshot rick.gif --pr 42 -m "Here's the fix"

# Auto-detect PR from current branch
gitshot rick.gif --pr

# Upload + comment on an issue
gitshot rick.gif --issue 10

# Upload + create a new issue
gitshot rick.gif --new-issue "Button is misaligned"

# Multiple images with caption
gitshot before.png after.png --pr 42 -m "Visual diff"

# Just upload, print markdown (no GitHub action)
gitshot rick.gif

# Raw URL only (for scripting)
gitshot --raw rick.gif

# JSON output (for agents/LLMs)
gitshot --json rick.gif
# → {"url":"https://...","markdown":"![...](...)","backend":"release"}

How It Works

If you have gh CLI authenticated, gitshot creates a dedicated public repo (<you>/gitshot-images) and uploads images as GitHub Release Assets. URLs are permanent, hosted on GitHub infrastructure, and render in any GitHub markdown context. The repo is auto-created on first use.

No gh? It falls back to catbox.moe — free, no signup, zero config.

Privacy notice: The gitshot-images repo is created as public by default, meaning uploaded images are accessible to anyone with the URL. Do not upload sensitive content (credentials, internal dashboards, private data) using the default release backend. Since May 2023, GitHub restricts access to images attached to private repos — but release assets on a public repo have no such protection. Use Cloudinary or imgbb with access controls for sensitive images. You are responsible for what you upload.

Backends

| Backend | Setup | Limits | Best for | |---------|-------|--------|----------| | github releases (default) | gh CLI authenticated | 2GB/file | Most reliable. Images on GitHub. | | catbox (fallback) | None | 200MB/file | No gh CLI, quick and dirty | | cloudinary | CLOUDINARY_URL env var | 25GB free | Production, CDN, transforms | | imgbb | IMGBB_API_KEY env var | 32MB/file | Simple free hosting |

Auto-detection order

  1. --backend flag → use that
  2. CLOUDINARY_URL env var → Cloudinary
  3. IMGBB_API_KEY env var → imgbb
  4. gh CLI authenticated → release (creates <you>/gitshot-images)
  5. None of the above → catbox

Using Cloudinary

export CLOUDINARY_URL=cloudinary://API_KEY:API_SECRET@CLOUD_NAME
gitshot rick.gif

Get your free URL at cloudinary.com/console.

Using imgbb

export IMGBB_API_KEY=your_api_key
gitshot rick.gif

Get your free key at api.imgbb.com.

Using a specific repo

gitshot --repo myorg/my-images rick.gif

Comparison

| Feature | gitshot | gh-attach | GHPic | Manual upload | |---------|---------|-----------|-------|---------------| | Zero dependencies | Yes | Playwright | Raycast | N/A | | No browser needed | Yes | No | No | No | | Works over SSH | Yes | No | No | No | | Works in CI | Yes | No | No | No | | Cross-platform | Yes | Partial | macOS only | Yes | | Agent-friendly | Yes | No | No | No | | Multiple backends | 4 | 1 | 1 | Manual | | Status | Active | Archived | Active | N/A |

Background

GitHub has no public API for uploading images to issues, PRs, or comments. This has been requested since 2020 with no resolution. The upload endpoint requires browser session cookies — not OAuth tokens, not PATs. There is no programmatic way to do it. gitshot works around this using GitHub Release Assets, which are fully API-accessible.

Contributing

See CONTRIBUTING.md for development setup and guidelines.

License

Code and assests licened under MIT. Built by Vipul Gupta using Command Code.