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

@zakelfassi/skdd

v1.0.1

Published

Skills-Driven Development CLI — validate, init, forge, list, link, doctor, and import SkDD skill colonies. Manages the canonical skills/ + harness mirror pattern and consolidates duplicate skills across harness mirrors.

Readme

skdd — Skills-Driven Development CLI

Validate, init, forge, list, link, doctor, and import SkDD skill colonies.

Install

pnpm add -D @zakelfassi/skdd
# or globally
pnpm add -g @zakelfassi/skdd
# or one-shot
pnpm dlx @zakelfassi/skdd init --harness=claude

This repo uses pnpm exclusively — do not use npm or yarn.

Usage

skdd init [--harness=claude|codex|cursor|copilot|gemini|opencode|goose|amp|auto] [--no-canonical]
skdd validate [path...] [--strict]
skdd forge <name> [--from-description="..."] [--non-interactive] [--no-canonical] [--skip-link]
skdd list [--format=table|json]
skdd link [--mode=symlink|copy|auto] [--harness=<list>] [--force] [--quiet]
skdd doctor [--json]
skdd import [target] [--json] [--apply] [--canonical=<dir>] [--skip-link]

skdd init

Scaffold a SkDD colony in the current project. Creates a canonical skills/ directory with a skillforge stub, writes .skills-registry.md, appends a Skills block to your harness instruction file (CLAUDE.md / AGENTS.md / .cursor/rules/skills.mdc / .github/copilot-instructions.md), and runs skdd link to materialize the harness mirror. Detects the harness from existing files; pass --harness=<name> to override. --no-canonical uses the flat per-harness layout instead.

skdd validate

Validates SKILL.md files against the Agent Skills specification. Checks frontmatter required fields, the name regex, description length, directory structure, and SkDD's recommended size cap. Exits non-zero on errors — wire it into CI. --strict promotes warnings to errors.

skdd validate                                    # walks the current dir
skdd validate skills/                             # one directory
skdd validate .claude/skills/*/SKILL.md           # glob

skdd forge

Interactive wizard that writes a spec-compliant SKILL.md skeleton in canonical skills/<name>/, appends it to .skills-registry.md, and runs skdd link to refresh mirrors. Non-interactive mode is supported for agent-driven use.

skdd forge api-endpoint
skdd forge deploy-preview \
  --from-description="Deploy the current branch to staging. Use when I say 'push preview'." \
  --non-interactive

skdd list

Parses .skills-registry.md (and .skills-registry.json if present) and prints the registry. --format=json for machine-readable output.

skdd link

Idempotently syncs the canonical skills/ directory into every harness-expected mirror location (.claude/skills, .codex/skills, .cursor/skills, .github/skills, .gemini/skills, .opencode/skills, .goose/skills, .amp/skills). On Unix the mirror is a symlink → ../skills; on Windows it's a file copy tracked in .skdd-sync.json so re-running detects drift. --force repairs a mirror target that has user data.

skdd link                             # every detected harness
skdd link --harness=claude,codex       # just these two
skdd link --mode=copy                  # force copy mode on Unix
skdd link --force                      # replace a non-matching target

skdd doctor

Health check for a SkDD-enabled project. Inspects:

  • .colony.json (parses + surfaces canonical dir)
  • Canonical skills/ directory (existence + SKILL.md count)
  • Spec validation across every skill (delegates to skdd validate)
  • .skills-registry.md + .skills-registry.json (parses + detects disk ↔ registry drift)
  • .skdd-sync.json mirror state (symlink target drift, missing mirrors, mode mismatches)
  • Instruction files (CLAUDE.md / AGENTS.md / .cursor/rules/skills.mdc / .github/copilot-instructions.md) — presence of a ## Skills block

Exits 0 on a clean bill of health (warnings allowed), 1 on any error. --json emits a structured report for CI consumption.

skdd doctor
skdd doctor --json | jq '.counts'

skdd import

Scans an existing project for SKILL.md files across every known harness mirror path and canonical skills/, content-hashes each file, groups by hash, and reports:

  • Duplicate groups — same content across multiple harness mirrors (e.g., .claude/skills/foo/SKILL.md and .cursor/skills/foo/SKILL.md byte-identical)
  • Name collisions — same frontmatter.name but different content (must be resolved manually before --apply)
  • Scan coverage — how many skills were found in each origin (canonical, each harness)

Symlinked mirrors are deduplicated via realpathSync so a correctly-linked project reports zero duplicates.

--apply consolidates: for every skill without a name collision, it copies/moves the content into canonical skills/<name>/, removes the non-canonical copies from each harness dir, and runs skdd link --force to re-establish clean symlink mirrors. This is how a pre-SkDD project migrates to the canonical + mirror layout in one shot.

skdd import                                     # scan report only
skdd import --json                              # machine-readable
skdd import --apply                             # migrate + link
skdd import ../some-other-project --apply       # operate on a different root

Development

pnpm install
pnpm build
pnpm test
pnpm typecheck

All commands must pass before a PR lands. CI re-runs them on every push.

License

MIT