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

@houserules/plugin-testing

v0.2.1

Published

houserules plugin: a runner-agnostic testing rule, split into opt-in per-language guides.

Readme

@houserules/plugin-testing

npm

An agent asked to fix a bug will often write a test that passes before the fix and after it, which proves nothing. Left alone, it also drifts toward asserting toBeDefined(), chasing a coverage number, or filing a unit test as end-to-end because the distinction was never stated.

This plugin ships a testing discipline rule that does not assume a framework. It covers whether a test is worth writing, where it lives, what it should assert, and how it is named, for any runner with a describe/it shape, plus opt-in guides for the languages that need suffix and build-exclusion detail the base rule leaves out.

Install

pnpm add -D @houserules/plugin-testing
pnpm exec houserules init

Requires @houserules/cli. init is what writes the module into .claude/. This module is off by default, so select it when init asks.

Modules

  • testing installs .claude/rules/testing.md, a path-scoped rule matched to *.test.ts, *.test.tsx, *.test.mts, *.test.js, *.test.mjs, and the .spec.* equivalents. It covers whether a test earns its place (it has to fail when the behavior it covers breaks), where tests colocate (__tests__/, split by subject), what to test and at what level, Arrange/Act/Assert structure, and naming that states the observable behavior rather than the implementation.

    init also prompts for language guides to install alongside it. Four exist today: TypeScript (testing-typescript) and JavaScript (testing-javascript), each installed as its own path-scoped rule with the concrete suffix list, runnable examples, and build-exclusion advice the base rule leaves to them; Svelte (testing-svelte), runner setup for testing Svelte 5 components and .svelte.ts reactive modules; and 3D and WebGL (testing-3d), domain guidance for tests that cover Three.js scenes and other WebGL code. TypeScript is selected by default.

    Because the rule is path-scoped, Claude Code loads it only when a matching test file is in the working set, so it costs nothing on the always-loaded surface.

  • playwright-mcp installs the Playwright MCP server config under .claude/mcp/, as playwright.stdio.json and playwright.vscode.json. houserules never writes .mcp.json, so an advise action explains how to wire one of them into this repo's own config. Reach for it for cross-browser work and test assertions. For performance traces, Lighthouse, and heap snapshots, chrome-devtools-mcp in @houserules/plugin-design is the pick, and the advise text in both modules says so.

    The default surface is 24 tool definitions, paid on every turn whether you use them or not, and the shipped --caps=testing brings it to 29. Every other capability is opt-in through --caps. The args pin @playwright/[email protected], because the package is pre-1.0 and @latest could change the tool surface without warning, and they carry --headless and --isolated. Switching browsers is a one-word edit: --browser firefox, --browser webkit, or --browser msedge.

Upgrading from the CLI core

testing was a built-in CLI module. A repo that recorded it before the split gets a HouseError on its next init or update naming this package. Installing it and adding it to the plugins array in .claude/houserules.config.json restores the module and its files. Nothing is deleted in the meantime.

Part of houserules

houserules is a portable set of Claude Code infrastructure that keeps the agent's context lean. This is one of twelve first-party plugins. The package list has the rest.

License

MIT. See LICENSE.