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

@nadimtuhin/skillctl

v0.1.0

Published

Sync AI agent skills across multiple tools from one canonical repo

Readme

skillsync

CI License: MIT

Sync AI agent skills across multiple tools from one canonical repository.

Write your skills once, deploy them everywhere — Claude Code, Cursor, and more.

Install

# Clone and build
git clone https://github.com/nadimtuhin/skillsync
cd skillsync
bun install
bun run build

# Link globally
ln -s $(pwd)/dist/cli.js /usr/local/bin/skillsync

Or run directly:

bun run src/cli.ts <command>

Features

  • 🎯 Central repository — Single source of truth for all agent skills
  • 🔗 Flexible sync — Copy or symlink modes for different workflows
  • 🔒 Idempotent — Hash-based change detection, safe to run repeatedly
  • 🚀 Zero config — Auto-detects Claude Code, Cursor, and other tools
  • 📊 Machine-readable — All commands support --json output for scripting
  • 🔍 Validation — Built-in skill structure validation
  • 📋 Dry-run mode — Preview changes before syncing

Quick Start

# 1. Initialize skillsync
skillsync init

# 2. Import existing skills from detected tools
skillsync import

# 3. List skills in the central repository
skillsync list

# 4. Validate all skills
skillsync validate

# 5. Sync skills to all detected tools
skillsync sync --all

Commands

| Command | Description | |---|---| | init | Create central skillsync config and skills repository | | doctor | Check environment, detect installed tools, and report issues | | list | Show all skills in the central repository | | validate | Check all skills for structural issues | | sync | Sync skills to agent tool directories | | import | Import skills from a tool's directory into the central repo | | target list | Show all supported agent tools and their resolved paths |

Options Reference

skillsync sync

| Option | Description | |---|---| | --all | Sync to all detected targets | | --target <id> | Sync to a specific target (e.g. claude, cursor) | | --mode <mode> | copy or link (default: from config) | | --dry-run | Show plan without writing files | | --force | Overwrite conflicts without prompting | | --json | Machine-readable JSON output |

skillsync import

| Option | Description | |---|---| | --from <target> | Import from a specific tool (e.g. claude) | | --dry-run | Show what would be imported without copying | | --json | Machine-readable JSON output |

Global Options

All commands support --json for machine-readable output. Useful for scripting:

skillsync list --json | jq '.[].id'
skillsync doctor --json | jq '.tools[] | select(.detected == "yes")'

Supported Tools

| ID | Tool | Sync Path | Symlinks | |---|---|---|---| | claude | Claude Code | ~/.claude/skills | yes (non-Windows) | | cursor | Cursor | ~/.cursor/rules | yes (non-Windows) |

Sync Modes

  • copy (default): Files are copied to each tool's directory. Changes to the central repo require a re-sync.
  • link: Symlinks are created pointing to the central repo. Changes are reflected immediately. Not supported on Windows.

Set the default mode in ~/.skillsync/config.json:

{
  "defaultMode": "link"
}

Configuration

Config lives at ~/.skillsync/config.json:

{
  "repoPath": "~/.skillsync/skills",
  "defaultMode": "copy",
  "targets": [],
  "ignorePatterns": []
}

| Field | Description | |---|---| | repoPath | Path to the central skills repository | | defaultMode | copy or link | | targets | Override detected targets (leave empty to auto-detect) | | ignorePatterns | Glob patterns to exclude from sync |

Skill Structure

A skill is a directory under the skills repo. Each skill directory can contain any files your tool expects (markdown, JSON, TOML, etc.).

~/.skillsync/skills/
  my-coding-style/
    instructions.md
  testing-patterns/
    rules.md
  code-review/
    checklist.md

Development

bun install       # Install dependencies
bun run test      # Run tests
bun run test:watch  # Watch mode
bun run lint      # Lint with Biome
bun run format    # Format with Biome
bun run build     # Build to dist/cli.js

Contributing

We welcome contributions! Please see CONTRIBUTING.md for:

  • Development setup guide
  • How to run tests
  • Code style guidelines
  • Pull request process

Code of Conduct

This project adheres to the Contributor Covenant. By participating, you are expected to uphold this code.

License

This project is licensed under the MIT License.