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

skelly-cli

v1.0.1

Published

Create project structures using CLI commands and templates.

Readme

Skelly

A project scaffolding CLI based on JSON templates and CLI commands.

Skelly is a scaffolding CLI that creates templates based on file structures created within JSON (see example below).

{
  "fileTree": [
    {
      "type": "file",
      "name": "index.html",
      "templatePath": "templates/basic/index.html",
      "path": "./"
    },
    {
      "type": "folder",
      "name": "css",
      "path": "./",
      "children": [
        {
          "type": "file",
          "name": "main.css",
          "path": "./css/"
        }
      ]
    }
  ]
}

These JSON templates can link out to predefined file templates. If you want to create a basic, static website, you can create the file structure as well as have a predfined HTML file to load into the newly created index.html. After a template is created, you can create a custom command via the CLI to execute that template in your current working directory.

Installation

Skelly installation is simple.

npm i skelly-cli -g

Global is optional, but is necessary if you want to have access throughout your system.

Usage

By default skelly only has a few static commands. The rest are created by you!

Similar to other file creation CLIs, you will want to be in the folder where you want the folders and files to be created.

Commands

skelly -h --help will get you started.

skelly -b --basic creates a basic static file structure.

skelly -t --test will output a dummy file structure and is mainly used for debugging or testing purposes.

skelly -cc --command <action> create delete Will provide instructions on creating a command to execute your custom template.

The delete argument is not implemented at this time, if you want to delete a command you can remove it out of the /configs/commands.json file

skelly -td --tempdir You can change your configs and template directory to somewhere outside of the node environment. This will update all the relative links to be absolute to where you ran this command.

Creating a template

Creating a template is simple and can be shared across multiple systems that use skelly as long as it's installed in the working skelly config folder of that particular uers's system.

The structure is a JSON object followed by an array of individual objects. Those individual objects can be files or folders (some with children). You nest as deeply as you want.

The following are the available key/value pairs:

type file or folder name name of the file *including the extension (.html, .js, .mjs, .css, etc.) templatePath linked to the template folder. It will always start templates. Example: templates/basic/index.html path the relative directory you want this file to be in.

Here is a snippet:

The array must be named fileTree

{
  "fileTree": [
    {
      "type": "file",
      "name": "index.html",
      "templatePath": "templates/basic/index.html",
      "path": "./"
    },
    {
      "type": "folder",
      "name": "css",
      "path": "./",
      "children": [
        {
          "type": "file",
          "name": "main.css",
          "path": "./css/"
        }
      ]
    }
  ]
}

View the full template