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

@harnessconfig/cli

v1.0.0-alpha.10

Published

Alpha scoped implementation package for the harnessc CLI.

Readme

@harnessconfig/cli

Website Specification npm harnessc npm @harnessconfig/cli Security License

Alpha scoped implementation package for the Harness config CLI. The public CLI package is harnessc.

Most users should run:

npx harnessc
npx harnessc validate
npx harnessc explain .agents/skills/review/SKILL.md

This package exists so the public harnessc package can depend on a scoped implementation package while keeping npx harnessc clean.

Commands

harnessc validate
harnessc explain .agents/skills/review/SKILL.md
harnessc init
harnessc activate
harnessc activate --yes
harnessc extension activate --all --yes
harnessc init --resource prompts --target ./runtime/agent
harnessc init --yes --resource prompts --target ./runtime/agent

Website: https://www.harnessconfig.dev/

Specification: https://www.harnessconfig.dev/specifications/v1/

The CLI is local-first, read-only by default for validation and planning, and does not create standard files or mutate projection targets unless the relevant command is explicitly applied with --yes.

Privacy And Telemetry

Harness config does not collect telemetry.

The harnessc CLI does not send analytics, usage events, file paths, repository names, command history, machine identifiers, or error reports.

Activation, validation, and planning run locally against files in your repository. The CLI does not make network requests during normal operation.

Command Behavior

Running harnessc with no command validates the nearest repository config and prints the detected manifest path with suggested next steps. Use harnessc validate --json when a script or editor integration needs the full inspection object.

harnessc init is a dry run by default. With --yes, it writes ./.harness/harness.toml by default, resource folders under ./.harness/resources by default, and a commented repo-root ./.harnessIgnore. Use --config <path> to write a different repo-local manifest and --resources-path <path> to set an explicit [[resources]] entry and create resource folders below that source root. With no --resource flags, init uses the conventional resource folders skills, rules, and plugins. With one or more --resource <kind> flags, init creates only those folders. Targets are explicit; declare them with --target <path> for repo-local outputs, or edit the selected manifest to add a target parent for output under an external folder such as a sibling worktree. [[resources]].path, [[dir]].path, and [[targets]].parent may use gitignore-style wildcard patterns; [[targets]].path remains a static target-local folder that activation may create.

harnessc init without --yes is the read-only initialization/adoption plan. It does not infer targets from existing folder names. Declare targets with --target <path> during init or edit the selected manifest. Use harnessc activate without --yes for the projection preview.

harnessc explain <path> is read-only introspection for a source or output path. It reports matching target outputs, configured source roots, source-use paths, dir actions, ignore decisions, and diagnostics. Use --json for automation; JSON output includes source and target-output ignore traces.

Examples:

harnessc explain .agents/skills/review/SKILL.md
harnessc explain AGENTS.md
harnessc explain .harness/local/resources/skills/review/SKILL.md

harnessc activate is the reference projection command. Without --yes, it prints a dry run for every declared target, including creates, updates, mutable skipped files, requested removals, projected keeps, orphaned managed outputs, and unmanaged entries preserved outside the projection. With --yes, it applies the computed copy projection. Target symlinks that occupy projected paths are conflicts by default; set [activation].targetSymlinks = "replace" or pass --replace-target-symlinks when replacing the link itself is intended.

harnessc extension activate runs registered extensions. Extensions default to explicit activation; use --extension <id> for one extension or --all for all declared supported extensions. This release ships no built-in extension implementations. Dir composition and copy are now part of core activation; declare [[dir]] entries in the selected manifest and let harnessc activate handle them.

Unmanaged target entries are kept by default. Use --remove-unmanaged when a target should be cleaned to match configured sources; use --keep-unmanaged to make the default explicit. Repeating the same activation with unchanged inputs and the same unmanaged cleanup choice should converge to the same plan.

Orphaned managed outputs are kept by default. Use --remove-orphans when stale outputs from a non-active profile or target selection should be removed, and use --keep-orphans to make the default explicit. --remove-orphans removes only orphaned outputs whose current bytes still match the non-active source projection; edited orphaned outputs and genuinely unmanaged entries stay in place.

Managed files are compared directly with the current projection and reported as update when target bytes differ. Applying an update overwrites the target with the current source bytes. Mutable files declared in .harnessMutable are created once from source and then left untouched as runtime-owned target state unless --force-mutable is supplied.

.harnessIgnore files can be repo-root, source-local, profile-local, target-derived override-local, or target-output-local. Precedence follows logical directory depth with last matching rule wins. Target-output files, such as .agents/skills/review/.harnessIgnore, match final output paths for that subtree, remain the final boundary, and are preserved even when activation is run with --remove-unmanaged.

.harnessProfile files select optional profile overlays. A matching .harnessProfileRoot under .harness, a configured resources source, or a configured dir source merges into resources and dir outputs by logical source path, so local or team-specific kits can add files or replace composable parts without turning target folders into source roots. Optional .harnessProfileIsolation files inside profile roots can make the selected profile exclusive for chosen resource or dir paths while leaving unrelated source paths active.

Human terminal output uses ANSI color when the output stream supports it and keeps --json output unstyled for automation. Set NO_COLOR to disable color or FORCE_COLOR=1 to force it.