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

ccqa

v0.4.0

Published

Browser test recorder powered by Claude Code and agent-browser

Readme

ccqa

Your Claude subscription already includes a QA engineer.

ccqa turns Claude Code into a browser test recorder. Write a spec in YAML, run ccqa trace, and Claude drives your app via agent-browser. Every action is recorded and compiled into a deterministic test script you can run in CI. No extra API key. Just claude.

日本語版 README

How it works

flowchart LR
    A["Write spec\n(spec.yaml)"] --> B["ccqa trace\n(Claude drives browser)"]
    B --> C["ccqa generate\n(LLM → test script)"]
    C --> D["ccqa run\n(deterministic replay)"]

trace invokes Claude Code with your spec. Claude drives the browser step by step, recording every action as structured data. generate compiles that data into a vitest-compatible script. run replays it deterministically — no LLM involved.

Install

pnpm add -D ccqa vitest agent-browser

Requires Node.js 20+. agent-browser is a peer dependency.

Quick start

1. Write a spec — by hand, or interactively with ccqa draft

# .ccqa/features/tasks/test-cases/create-and-complete/spec.yaml
title: Create a task and mark it complete

steps:
  - instruction: |
      Open ${APP_URL}/login. Fill in email and password, submit the form.
    expected: Redirected to /dashboard, user avatar visible in the header

  - instruction: |
      Click "New Task", fill in the title "Fix login bug", set priority to High, save.
    expected: Task appears in the task list with status "Open"

URLs live inside instruction strings — either verbatim or via ${ENV_VAR} references for environment-specific values.

2. Trace — Claude drives the browser and records every action

ccqa trace tasks/create-and-complete

3. Generate — convert recorded actions into a replayable test

ccqa generate tasks/create-and-complete

4. Run — replay deterministically, no LLM involved

ccqa run tasks/create-and-complete

In CI you can opt in to drift analysis on test failures by passing --drift — Claude will explain the failure by comparing the spec against the current codebase. Requires ANTHROPIC_API_KEY or a local Claude login.

ccqa run tasks/create-and-complete --drift --format github

Features

| Feature | Docs | |---|---| | Write specs interactively with Claude | Draft | | Reuse login and other shared step sequences | Blocks | | Assertion helper functions | Assertions | | Auto-fix failing tests | Auto-fix | | Detect spec/code drift in CI | Drift |

Commands

ccqa draft [feature/spec]          Co-author a test spec with Claude
ccqa trace <feature/spec>          Record browser actions for a spec (inlines any included blocks)
ccqa generate <feature/spec>       Generate test script from recorded actions
ccqa run [feature/spec]            Execute generated test scripts (add --drift to analyze failures)
ccqa drift [feature/spec]          Standalone spec ↔ codebase drift audit (for scheduled jobs)

All Claude-driven commands accept -m, --model <name> (alias sonnet | opus | haiku, or a full model ID). The flag overrides CCQA_MODEL; when both are unset, the Claude Code CLI default is used. Interactive commands authenticate via your local Claude Code login; commands that talk to Claude in CI (ccqa run --drift, ccqa drift) additionally honor ANTHROPIC_API_KEY.

<feature/spec> is a 2-segment alias for the on-disk path .ccqa/features/<feature>/test-cases/<spec>/.

File structure

.ccqa/
  blocks/
    login/
      spec.yaml                  # Reusable block (params + steps)
  features/
    tasks/
      test-cases/
        create-and-complete/
          spec.yaml              # Test definition
          actions.json           # Recorded actions from trace
          test.spec.ts           # Generated test script

License

MIT