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

@lannguyensi/harness

v1.0.1

Published

Declarative control plane for agent harnesses: one YAML manifest for MCP servers, skills, memory and hooks, plus a branch-protection gate.

Readme

harness

Declarative control plane for agent harnesses.

Overview

A coding agent like Claude Code is configured across half a dozen files: settings.json, CLAUDE.md, memory notes, MCP registrations, hook scripts, per-project overrides. No single file answers "what can this agent do right now, and why is it set up that way?" harness puts all of it in one zod-validated YAML manifest you read, validate, and diff; generates the config the agent runtime loads from it; and at runtime blocks tool calls through one enforcing gate, branch-protection. The branch-protection gate asks git and records nothing. Most config tools describe what an agent is configured to use; harness decides what it is allowed to do, under the exact context.

Key concepts

| Term | What it is | |------|-----------| | manifest | The one YAML file (harness.yaml) where you declare everything: grounding, tools, memory, hooks, policy packs. | | apply | harness apply renders the manifest into the config files the agent runtime actually reads. | | gate switch | harness gate disable / harness gate enable: the operator kill switch. Disable removes the hook groups whose matcher substring-matches --matcher <substring> from ~/.claude/settings.json (with --runtime codex, neutralises the matching units of the managed block in ~/.codex/config.toml) and keeps a snapshot; enable restores them. | | hook | A script the agent runtime runs at a lifecycle event (session start, before every tool call, ...). How gates get wired in. | | policy pack | A bundle of hooks and instructions shipped under one name and enabled with a single manifest key (policy_packs[], via harness pack add <name>). |

Quick start

npm i -g @lannguyensi/harness                            # Node 20 or newer
harness init                                             # minimal manifest, no policies
harness pack add branch-protection                       # the one recommended pack
harness validate
harness apply --target ~/.claude/settings.json --merge   # Claude Code; then restart it
harness apply --runtime codex --install                  # Codex, if you use it; then restart it

From then on, while an agent works in a repository on master, main or develop, its edits there through the file-editing tools (Write and Edit under Claude Code, apply_patch under Codex) are refused until it cuts a feature branch (git checkout -b <feature>). Codex runs the new hooks only once you trust them in its startup hook review. The step-by-step version, with what each command writes: docs/quickstart.md. Full operator walkthrough: docs/for-humans.md (it starts from the wizard and the solo template).

Upgrading? A manifest that still names a pack or key removed in 1.0.0 loads with a warning and the entry is ignored; see docs/CLI.md#removed-keys-packs-and-commands.

Usage

See the gate decide without starting an agent: from inside a repository, pipe a sample Write event into the hook Claude Code runs before every Write or Edit.

echo '{"session_id":"demo","tool_name":"Write","tool_input":{"file_path":"README.md"}}' \
  | harness pack hook branch-protection

On a protected branch it prints a deny decision naming the branch and the protected list; on a feature branch it allows the edit and says why on stderr. The protected-branch list, the agent-facing message and the operator controls are documented in docs/policy-packs/branch-protection.md.

Documentation

Related projects

  • agent-grounding: evidence-ledger and claim surfaces outside harness; grounding-mcp is the MCP server harness can register and point at the ledger path (EVIDENCE_LEDGER_DB), and harness itself queries nothing there.
  • agent-memory: the memory surfaces the control plane inventories.
  • agent-tasks: MCP-registered task platform whose registration and health appear in harness describe.
  • agent-preflight: a standalone local preflight validator an operator can call directly or from a custom hook.
  • codebase-oracle: opt-in MCP for multi-repo RAG search; declare it with harness add mcp codebase-oracle --command codebase-oracle,mcp, then register it with Claude Code using the claude mcp add-json command harness doctor prints.
  • agent-dx: ships git-batch-cli, a day-to-day tool whose inventory appears in harness describe.

Development and contributing

npm install
npm run build
npm test

See CONTRIBUTING.md for the full PR checklist (import-boundary and duplication gates, changelog coverage, release steps).

Status

The current release is v1.0.1. What shipped in each version is in CHANGELOG.md.

License

MIT, see LICENSE.