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 🙏

© 2025 – Pkg Stats / Ryan Hefner

@knot0/cli

v0.1.7

Published

Knot0 DSL CLI - validate manifests against schemas and custom rules

Readme

@knot0/cli (MVP)

Knot0 DSL CLI for validating manifests against the v2 schemas and emitting actionable diagnostics for humans, CI, and LLM agents.

Features

  • Validates YAML manifests (**/*.knot0.yml) using JSON Schema (draft 2020-12)
  • Loads schemas from the published package @knot0/schemas (with local fallbacks)
  • Multiple outputs: human, ndjson, sarif (MVP)
  • Stable diagnostic shape (code, path, message) for automation
  • Non-interactive, deterministic, fast

Install (local)

cd knot0-src/cli
yarn install
yarn build

Optionally link for global use:

yarn link
knot0 --help

Usage

Validate current directory (recursively discovers **/*.knot0.yml):

knot0 validate --format human | cat
knot0 validate --format ndjson > .reports/validate.ndjson
knot0 validate --format sarif > .reports/validate.sarif

Options:

  • --format human|ndjson|sarif (default: human)
  • --max-errors N (default: 200)

Exit codes:

  • 0 = success (no errors)
  • 1 = validation errors
  • 2 = CLI failure

Diagnostic format (ndjson)

Each line is one JSON object:

{"code":"KSCHEMA","severity":"error","file":"components/x/component.knot0.yml","json_pointer":"/contract/inputs","message":"must be object"}

Fields:

  • code: error code (KSCHEMA for schema failures; custom rules add Kxxx)
  • severity: info|warning|error
  • file: absolute or repo-relative path
  • json_pointer: JSON Pointer within the YAML document (if available)
  • message: human-readable detail
  • hint, docs_url: reserved for custom rules

Schema resolution

Order of precedence when loading schemas:

  1. Published package @knot0/schemas (preferred)
  2. Local JSON cache schemas-cache/*.json (if present)
  3. Local source schemas-v2/yaml/*.yaml (if present)

Per-file, the CLI resolves which schema to use by:

  1. $schema field, if present
  2. Fallback by kind (Component, Workflow, Application, DataAsset, DataType, Infrastructure, System, Policy, Event)

CI example (GitHub Actions)

- name: Validate manifests
  run: |
    npm i -g @knot0/cli @knot0/schemas
    knot0 validate . --format ndjson > .reports/validate.ndjson
- uses: actions/upload-artifact@v4
  with:
    name: validate
    path: .reports/validate.ndjson

For LLM agents

Typical loop:

  1. Generate/modify YAML
  2. knot0 validate --format ndjson
  3. Parse diagnostics → apply structured fixes
  4. Re-validate until clean

Roadmap

  • Custom semantic rules (K001..):
    • Capabilities under permissions only
    • Runner-specific permission checks
    • Metric naming/units; benchmark↔telemetry mapping
    • Expressions parser/type checks
    • Resource mapping type-safety
  • fmt command (style enforcement)
  • migrate command (autofixes for common issues)
  • doctor (env/schema checks)

License

MIT