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

hands-please

v0.0.8

Published

Run CLI code agents based on comments in your codebase.

Readme

hands-please

hands-please 🫱

hands-please

  1. Watch codebase for // @ai fix this code
  2. Run an agent like Claude Code in the background with the prompt from the comment until lint/build passes

Example

$ npx hands-please@latest --agent 'claude --print --output-format stream-json --verbose --allowedTools "Edit,Write,WebFetch"' --check 'npm run check' --file-check 'npm run lint'

Add a comment:

// @ai add a test case to divide by 0
describe("division", () => {
  it("should divide 10 by 2", () => {
    expect(10 / 2).toBe(5);
  });
});
$ npx hands-please@latest --agent 'claude --print --output-format stream-json --verbose --allowedTools "Edit,Write,WebFetch"' --check 'npm run check' --file-check 'npm run lint'
⠏ Watching for comments with "@ai"....
ℹ 🫱 Processing comment src/math.test.ts:194
ℹ  🤖 I'll implement the test case for division by zero as requested in the comment.
ℹ  🤖 Added test case that verifies division by zero returns Infinity in JavaScript.
ℹ  💸 $0.04 in 12.38s
ℹ  ✓ $ npm run lint
ℹ  ✓ $ npm run check
ℹ  ✓ All checks passed
⠙ Watching files for "@ai"....

Configuration

hands-please is configured using command line arguments:

# Basic usage
npx hands-please --agent <agent-command> --check <check-command> --file-check <file-check-command> [options]

# Options:
#   --agent        The command to run the AI agent in non-interactive mode(required)
#   --check        The command to check the codebase (required)
#   --file-check   The command to check specific files (required)
#   --trigger      The tag that triggers comment processing (default: "@ai")
#   --skip-watch   Exit after processing all comments (default: false)

Example for Claude Code:

pnpm dlx hands-please@latest \
  --agent 'claude --print --output-format stream-json --verbose --allowedTools "Edit,Write,WebFetch"' \
  --check 'pnpm check' \
  --file-check 'pnpm lint'

Motivation

I wanted the productivity of vibe coding without the mess: Running local coding agents with surgical precision based on comments.

There is no chat interface, the only way to interact with the code agents is through code comments.

Workflow:

  1. Pick up a comment containing @ai
  2. Run agent with prompt from comment or linting issues
  3. Run file-check command on changed files, on error go to 2.
  4. Run full codebase check command, on error go to 2.
  5. => Done! Process next comment.

For hands-please to work well it's important to provide a file-specific check using the --file-check option like eslint that works with eslint <file1> <file2>. This allows hands-please to run checks only on changed files and provide feedback to the code agent that is relevant to the changes it made. => Super fast feedback loop!

Inspiration

  • aider: For the comment-based code agent
  • Claude Code: For the DX and the nice auto-mode experience