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

skill-search

v0.0.2

Published

Quickly retrieve skill documentation from GitHub

Readme

Skill Search

A lightweight Node.js CLI tool for quick retrieval of skill documentation from GitHub repositories 🚀

Skill Search is a command-line interface tool designed to help developers and users quickly access skill documentation (Markdown format) stored on GitHub, enhancing learning and reference efficiency.

✨ Features

  • 🖥️ Interactive TUI: Modern text-based user interface with keyboard navigation
  • 🔍 Fast Access: Retrieve skill documentation with a single command, no browser required
  • 💾 Smart Caching: Local caching to reduce network requests and support offline access
  • 🎯 Intelligent Matching: Supports exact matching, keyword matching, and fuzzy search
  • 🎨 Beautiful Output: Terminal-friendly Markdown formatting and display
  • 📋 Convenient Operations: Support for copying to clipboard or saving to files
  • 🔧 Flexible Configuration: Support for multiple skill directory sources and API configurations

📦 Installation & Development

Multi-Device Development Environment Setup (Recommended)

If you sync code across multiple devices using OneDrive/Dropbox, use the following installation method to avoid node_modules conflicts between devices:

  1. Run Setup Script (Windows): Double-click to run scripts/setup-env.bat

    Or execute in terminal:

    .\scripts\setup-env.bat

    This will create independent dependency directories based on device names in .local/DEVICE_NAME/node_modules and link them to the root directory.

  2. Link Command:

    npm link

Standard Installation

# Global installation
npm install -g skill-search

# Local development
npm install
npm link

🛠️ Usage Guide

0. TUI Interactive Mode (Recommended)

Launch the interactive TUI interface by running skill without arguments:

skill          # Launch TUI (default when no arguments provided)
skill --tui    # Explicitly specify TUI mode

Keyboard Shortcuts:

  • ↑↓ Navigate up/down | Tab Switch panes | Enter Select
  • / Search | l List | y Sync | c Config | q Quit

1. Get Skill Documentation

Retrieve documentation by skill ID or keyword:

skill <keyword> [options]

Examples:

# Get React-related documentation
skill react

# Copy Git workflow documentation to clipboard
skill git-workflow --copy

# Save Docker documentation to local file
skill docker -o ./docker-guide.md

# Force refresh from remote (ignore cache)
skill typescript --no-cache

Options:

  • -c, --copy: Copy content to clipboard
  • -r, --raw: Output raw Markdown content (no terminal formatting)
  • -o, --output <file>: Save content to specified file
  • --no-cache: Ignore local cache, force remote fetch

2. Search Skills

Search for skills locally:

skill search <query>
# Alias
skill s <query>

Examples:

skill search frontend
skill s hooks

3. List All Skills

Display all locally available skills:

skill list
# Alias
skill ls

4. Cache Management

Manage local cache (stored by default in ~/.skill-search/):

# List cached documentation
skill cache list

# Clear all cache
skill cache clear

5. Directory Management

Add Custom Skill Paths

Add custom skill directory paths beyond the default locations:

skill add <path>

Example:

skill add /path/to/my/custom/skills

Remove Custom Skill Paths

Remove a custom skill directory path:

skill remove <path>
# Alias
skill rm <path>

Set Primary Directory

Configure the primary skill directory:

skill primary [directory]

Available directories:

  • .skill-search - Default Skill Search directory
  • .claude - Claude AI directory
  • .codex - OpenAI Codex directory
  • .gemini - Google Gemini directory
  • .copilot - GitHub Copilot directory

Example:

skill primary claude

6. Theme Management

Switch between dark and light themes in TUI mode:

skill theme [mode]

Examples:

skill theme dark
skill theme light
skill theme  # Toggle between themes

⚙️ Configuration

Default API configuration is located in src/config.js. You can modify this file to point to your own GitHub repository:

module.exports = {
    api: {
        baseUrl: 'https://skillsmp.com/api/v1',
        // API Key should be configured by user
    },
    github: {
        owner: 'your-username',     // Your GitHub username
        repo: 'your-skills-repo',   // Your repository name
        branch: 'main',             // Branch name
        // ...
    }
};

API Configuration

Set up API access for remote skill search:

skill config --api-key <your-api-key>

📂 Project Structure

skill-search/
├── bin/
│   ├── skill.js            # CLI entry point
│   └── tui.js              # TUI entry point
├── scripts/
│   └── setup-env.bat       # Multi-device environment setup
├── src/
│   ├── config.js           # Configuration management
│   ├── api.js              # SkillsMP API client
│   ├── store.js            # Local data storage
│   ├── syncer.js           # Sync operations
│   ├── cache.js            # Cache management
│   ├── matcher.js          # Skill matching and search (Fuse.js)
│   ├── localCrawler.js     # Local skill directory scanning
│   ├── interactive.js      # Interactive skill selection
│   ├── actions.js          # Action handlers (sync, move, delete)
│   ├── utils.js            # Utility functions (Markdown rendering, clipboard)
│   ├── theme.js            # Theme management
│   └── tui/                # TUI components
│       ├── App.js          # Main TUI application
│       ├── SearchView.js   # Search interface
│       ├── SyncView.js     # Sync management
│       ├── ConfigView.js   # Configuration interface
│       ├── ThemeView.js    # Theme selection
│       ├── PrimaryView.js  # Primary directory selection
│       ├── AddDelView.js   # Custom path management
│       ├── ActionModal.js  # Action confirmation modal
│       └── ...             # Other UI components
├── package.json
└── README.md

🔄 Sync Operations

Local Sync

Sync locally discovered skills to the primary directory:

skill sync --docs

Remote Sync

Download all remote skills to the primary directory:

skill sync --full

Sync Specific Skill

Sync only a specific skill:

skill sync --id <skill-id>

Full Sync

Sync both local and remote skills:

skill sync --force

Sync Status

Check sync status and history:

skill sync --status

🎨 TUI Interface

The Text User Interface provides a modern, keyboard-driven experience:

  • Dual-Pane Layout: Local and remote skill results side by side
  • Keyboard Navigation: Arrow keys, Tab, and shortcuts for efficient browsing
  • Real-time Search: Instant local search as you type
  • Action Modals: Context menus for sync, move, delete, and open operations
  • Theme Support: Dark and light themes with customizable colors

TUI Navigation

  • Search: Type to search locally, press Enter for remote search
  • Navigation: Tab between local/remote panes, arrows to select items
  • Actions: Enter to open action modal, Shift+O to open directly
  • Pagination: [ and ] for previous/next page
  • Commands: / to access command palette

📋 Dependencies

Runtime Dependencies:

  • axios: HTTP client for API requests
  • chalk: Terminal text styling
  • clipboardy: Clipboard operations
  • commander: CLI argument parsing
  • fuse.js: Fuzzy search implementation
  • ink: React-based terminal UI framework
  • inquirer: Interactive CLI prompts
  • marked: Markdown parser
  • marked-terminal: Terminal Markdown rendering
  • ora: Terminal spinners
  • react: UI framework for TUI

Development Dependencies:

  • eslint: Code linting
  • jest: Testing framework
  • pkg: Binary packaging
  • prettier: Code formatting

🔧 Development

Building

Create executable binaries for multiple platforms:

npm run build

This generates binaries in the dist/ directory for Linux, macOS, and Windows.

Testing

npm test

Code Quality

# Lint code
npx eslint src/

# Format code
npx prettier --write src/

🤝 Contributing

  1. Fork the repository
  2. Create a feature branch (git checkout -b feature/amazing-feature)
  3. Commit your changes (git commit -m 'Add amazing feature')
  4. Push to the branch (git push origin feature/amazing-feature)
  5. Open a Pull Request

📝 License

ISC

🙏 Acknowledgments

  • Built with Ink for terminal UI
  • Powered by Fuse.js for fuzzy search
  • Markdown rendering with Marked

Happy Skill Hunting! 🎯