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

@osovv/grace-cli

v4.0.5

Published

GRACE 4 CLI for .grace linting, status snapshots, module health, verification queries, semantic markup, and artifact navigation with a Bun-powered grace binary.

Downloads

1,053

Readme

GRACE Marketplace and CLI

GRACE means Graph-RAG Anchored Code Engineering: a contract-first AI engineering methodology built around semantic markup, .grace XML artifacts, knowledge-graph navigation, assertions, scopes, and log-driven verification.

This repository ships the GRACE skills plus the optional grace CLI. It is a packaging and distribution repository, not an end-user application.

Current packaged version: 4.0.5

What This Repository Ships

  • Canonical GRACE skills in skills/grace/*
  • Packaged Claude marketplace mirror in plugins/grace/skills/grace/*
  • Marketplace metadata in .claude-plugin/marketplace.json
  • Packaged plugin manifest in plugins/grace/.claude-plugin/plugin.json
  • OpenPackage metadata in openpackage.yml
  • Optional Bun-powered CLI package @osovv/grace-cli

GRACE 4 Model

GRACE 4 uses .grace as the durable project model:

| Area | Purpose | | --- | --- | | .grace/context/*.xml | Requirements, technology, principles, deployment, and UX constraints | | .grace/graph/index.xml + routed graph docs | Current graph projection source for GD-*, M-*, and DF-* anchors | | .grace/verification/index.xml + routed verification docs | Current verification projection source for deterministic V-M-* entries | | .grace/changes/active/C-* | Active GraceChangeSpec, optional design context, and GraceChangePlan bundles | | .grace/changes/archive/C-* | Applied, rejected, cancelled, or superseded change bundles | | Source/test files with GRACE markup | File-local contracts, links, and semantic block anchors |

GRACE 4 does not dual-validate legacy GRACE 3 project docs as current state. Existing GRACE 3 projects use $grace-migrate; the CLI validates the generated .grace result but does not convert legacy docs itself.

Verification commands run from the project root by default. A V-M-* entry may declare one contained project-relative <Cwd>packages/example</Cwd> while keeping <TestFiles><File>...</File></TestFiles> paths project-root-relative. Absolute paths, .. escapes, and symlink escapes fail closed.

TypeScript/JavaScript semantic analysis is bundled and compiler-backed. Governed Python and Dart files require their respective runtimes on PATH; Python export analysis is exact when a static __all__ is present (including Unicode identifiers) and otherwise emits heuristic confidence. A missing runtime fails closed with actionable analysis.runtime-missing; an installed adapter that fails emits analysis.adapter-failed. Neither failure state is presented as exact MODULE_MAP parity.

Install

Install skills first. The CLI is optional but recommended once skills are installed.

OpenPackage

opkg install gh@osovv/grace-marketplace
opkg install gh@osovv/grace-marketplace -g
opkg install gh@osovv/grace-marketplace --platforms claude-code

Claude Code Marketplace

/plugin marketplace add osovv/grace-marketplace
/plugin install grace@grace-marketplace

Agent Skills-Compatible Install

git clone https://github.com/osovv/grace-marketplace
cp -r grace-marketplace/skills/grace/grace-* /path/to/your/agent/skills/

CLI

Requires bun on PATH. GRACE skills invoke the installed stable grace binary directly; they do not default to bunx, npx, or a prerelease dist-tag.

# Install the current stable release from npm `latest`
bun add -g @osovv/grace-cli
grace --version
grace lint --path /path/to/grace4-project

GRACE 4 Quick Start

For a new GRACE 4 project:

  1. Run $grace-init to create .grace.
  2. Fill .grace/context artifacts with your agent.
  3. Run $grace-spec for a change.
  4. Run $grace-plan after spec approval.
  5. Before observed writes begin, run the active-baseline preflight: grace lint --path /path/to/project --assertions current.
  6. Run grace lint --path /path/to/project --change C-ID --assertions baseline before execution; add --run-commands when the baseline declares MustPassCommand.
  7. Run grace status --path /path/to/project --json.
  8. Run $grace-execute and choose sequential or parallel-safe mode. Parallel-safe mode additionally requires grace lint --path /path/to/project --parallel-preflight.
  9. Before apply/archive, run grace lint --path /path/to/project --change C-ID --assertions final; add --run-commands when the target declares MustPassCommand.

Existing GRACE 3 projects should run $grace-migrate and review the migration report before writing .grace artifacts.

Migration cleanup is separately gated: successful current lint, fresh status proving GRACE 4 with no integrity errors, git/worktree inspection, exact cleanup paths, and explicit cleanup confirmation are mandatory. Dirty or non-git cleanup requires an additional acknowledgement naming that risk; any cleanup failure stops without automatic destructive retry.

Skills Overview

| Skill | Purpose | | --- | --- | | grace-init | Bootstrap the .grace skeleton, templates, and agent guidance | | grace-spec | Create an approved GRACE 4 change spec and optional design context | | grace-plan | Design assertions, scopes, tasks, and verification gates from an approved spec | | grace-execute | Execute the approved plan in sequential or parallel-safe mode | | grace-refactor | Rename, move, split, merge, and extract modules without artifact drift | | grace-setup-subagents | Scaffold GRACE worker and reviewer presets | | grace-fix | Debug issues from graph, contracts, tests, traces, and semantic blocks | | grace-refresh | Detect drift and propose reconciliation changes | | grace-status | Report .grace health and suggest the next safe action | | grace-ask | Answer architecture and implementation questions from .grace artifacts | | grace-cli | Use the optional grace binary as a fast lint and artifact-query layer | | grace-explainer | Explain the GRACE methodology itself | | grace-verification | Build and maintain .grace/verification entries and evidence | | grace-reviewer | Review semantic integrity, projections, scopes, and verification quality | | grace-migrate | Agent-applied GRACE 3 to GRACE 4 migration with CLI validation |

CLI Overview

| Command | What It Does | | --- | --- | | grace lint --path <root> --assertions current | Run the pre-implementation full-project check, including baselines of active approved changes; do not use it as post-edit target/final evidence | | grace lint --path <root> --change C-ID --assertions baseline [--run-commands] | Validate the immutable selected baseline before implementation; command assertions run only when explicitly enabled | | grace lint --path <root> --change C-ID --assertions target --run-commands | Validate selected target assertions and explicitly opt into MustPassCommand execution | | grace lint --path <root> --change C-ID --assertions final [--run-commands] | Run the final full-project gate, evaluate the selected target, and keep unrelated approved baselines active without re-evaluating the selected baseline | | grace lint --path <root> --parallel-preflight | Run the explicit approved-plan scope coexistence gate required for parallel-safe execution | | grace status --path <root> | Report durable health, stale plans, scope conflicts, and explained/unexplained observed git drift | | grace module find <query> --path <root> | Search graph projection modules by id, path, text, dependency, or verification id | | grace module show <id-or-path> --path <root> | Show graph projection context and linked file-local markup | | grace module show <id> --with verification --path <root> | Include matching deterministic V-M-* verification entries | | grace verification find <query> --path <root> | Search verification projection entries | | grace verification show <id-or-module> --path <root> | Show one verification entry and module context | | grace file show <path> --path <root> | Show file-local MODULE_CONTRACT, MODULE_MAP, and CHANGE_SUMMARY |

MustPassCommand entries are leaf project evidence such as tests, typecheck, build, format, or package checks. Do not nest grace lint, grace status, or another GRACE lifecycle command inside plan assertions; selected target/final lint is the external orchestration gate.

Output modes:

  • grace lint: text, json
  • grace status: text, json
  • grace module find: table, json
  • grace module show: text, json
  • grace verification find: table, json
  • grace verification show: text, json
  • grace file show: text, json

Lint, status, and projection-backed navigation fail closed: invalid options, invalid grammar, malformed active assertions/scopes, duplicate ownership, missing routed files, or ambiguous targets produce structured results or a nonzero error envelope. JSON command failures emit one stable { "schemaVersion": "1.0.0", "ok": false, "error": { ... } } envelope on stdout; text failures emit one concise actionable line without a stack trace.

Lint Configuration

An optional .grace-lint.json file at the project root (next to .grace) controls how grace lint and the query commands collect code files:

{
  "ignoredDirs": ["generated", "fixtures-output"]
}
  • ignoredDirs lists directory names to prune from file collection, on top of the built-in set below. Names match at any depth; globs and paths are not supported.
  • The file must be a JSON object with supported keys only. Broken JSON, a non-object shape, an unknown key, or a non-array ignoredDirs is a config.* lint error, and query commands refuse to run until the file is fixed.
  • A directory that cannot be listed (restrictive permissions, sandbox leftovers) is skipped with a walk.unreadable-directory warning instead of aborting the run; add its name to ignoredDirs to prune it silently. Explain any of these codes with grace lint --explain <code>.

Built-in ignored directories:

  • VCS metadata: .git, .svn, .hg
  • JavaScript/TypeScript output and caches: node_modules, dist, build, coverage, .next, .nuxt, .output, out, .turbo, .vite, .parcel-cache, .svelte-kit, .astro, storybook-static, .cache, .yarn, .nyc_output, bower_components, jspm_packages, .stryker-tmp, .serverless, .docusaurus
  • Python bytecode, virtualenvs, and tool caches: __pycache__, venv, .venv, .tox, .nox, .pytest_cache, .mypy_cache, .ruff_cache, .pyre, .pytype, htmlcov, .eggs, .hypothesis, .ipynb_checkpoints, __pypackages__, .pixi, cover
  • Test reports and artifacts: test-results, test-reports, playwright-report, blob-report, allure-results, allure-report, test-output, newman, cucumber-report, cucumber-reports
  • JVM and Rust build output: target, .gradle, .idea
  • Vendored dependencies (Go modules, Ruby bundler, PHP Composer): vendor
  • Swift/Apple toolchain output and dependencies: .build, Pods, Carthage, DerivedData
  • Dart/Flutter tooling cache: .dart_tool
  • Ruby/general scratch space: tmp, .bundle
  • Editor metadata: .vscode

Analysis Cache

Successful per-file language analyses are cached across runs, so unchanged governed files are not re-analyzed. Entries are keyed by file content and extension plus a schema version: any file edit or analyzer logic change invalidates the entry automatically, and failed analyses are never cached, so fixing a missing runtime takes effect immediately.

  • Location: $XDG_CACHE_HOME/grace-cli/analysis, falling back to ~/.cache/grace-cli/analysis. Override the base directory with GRACE_CACHE_DIR.
  • Disable caching with GRACE_NO_CACHE=1.
  • The cache lives outside the project: it never touches .grace and produces no drift noise.

Grep-First Navigation

Prefer this order when narrowing scope:

  1. Search .grace/graph/index.xml for graph document routing.
  2. Open routed graph documents for M-* and DF-* anchors.
  3. Search .grace/verification/index.xml for verification routing.
  4. Open routed verification documents for V-M-* entries.
  5. Search .grace/changes/active/C-* for in-flight specs and plans.
  6. Search source/test files for LINKS:, START_MODULE_CONTRACT, START_CONTRACT:, and START_BLOCK_.

Common anchors:

  • GD-* graph document wrappers
  • M-* module IDs
  • DF-* data-flow IDs
  • VD-* verification document wrappers
  • V-M-* verification IDs
  • C-* change bundles
  • T-* implementation plan tasks

Repository Layout

| Path | Purpose | | --- | --- | | skills/grace/* | Canonical skill sources | | plugins/grace/skills/grace/* | Packaged mirror used for marketplace distribution | | .claude-plugin/marketplace.json | Marketplace entry and published skill set | | plugins/grace/.claude-plugin/plugin.json | Packaged plugin manifest | | src/grace.ts | CLI entrypoint | | src/grace4/* | GRACE 4 project detection, XML parsing, grammar, projections, assertions, and scopes | | src/lint/* | grace lint implementation | | src/query/* | Projection-backed query layer for CLI navigation | | scripts/validate-marketplace.ts | Packaging, version, path, and mirror validation | | RELEASING.md | Manual release checklist and validation commands |

Development

bun test
bun run ./scripts/validate-marketplace.ts
bun run validate:packed
bun run validate:release

For CLI changes, keep tests in src/grace-lint.test.ts, src/grace-status.test.ts, and src/grace-query.test.ts aligned with the GRACE 4 .grace fixture model.

Stable releases use a protected-main two-stage flow. release:bump runs on a clean release branch that contains current origin/main, updates and validates the version surfaces, commits them, pushes the branch, and finds or creates the release PR without creating a tag. After its required checks pass and the PR is merged, release:finalize X.Y.Z runs from clean synchronized main, revalidates the exact stable state, creates the annotated tag, and pushes only that tag. CI independently requires the stable tag commit to equal fetched origin/main and gates npm latest publication through the reviewer-protected stable-release environment, whose explicit deployment policies allow only branch main and tags v*. Protected main requires Linux, Windows, and real-Dart checks without requiring a separate PR approval, while an active ruleset keeps v* tags immutable. bun run release:checklist verifies those controls and, after publication from the exact release tag commit, verifies HEAD == tag, npm/GitHub channel metadata, and that the local npm pack shasum matches the immutable published tarball.