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

loor-cli

v0.1.11

Published

CLI scaffolding tool for loor monorepo projects

Downloads

849

Readme

loor CLI

CLI scaffolding tool for loor monorepo projects.

Installation

npm install -g loor-cli
# or
pnpm add -g loor-cli

Commands

loor init [name]

Create a new loor monorepo project.

loor init my-project

Arguments

| Argument | Required | Description | |----------|----------|-------------| | name | No | Project name. If omitted, prompted interactively. |

Options

| Option | Description | Example | |--------|-------------|---------| | --apps <apps> | App types with optional names (comma-separated). Format: type or type:name. | --apps api:backend,web-client:dashboard | | --packages <packages> | Optional packages to include (comma-separated). | --packages mediaKit,notification | | --no-packages | Skip optional packages. Only required packages are installed. | |

Usage Examples

Fully interactive (prompts for everything):

loor init

Non-interactive (no prompts):

loor init my-saas \
  --apps api:backend,web-client:dashboard \
  --packages mediaKit,notification

Partial — only skip app selection:

loor init my-saas --apps api,web-client
# App names default to "api" and "admin"
# Packages will be prompted interactively

Partial — only skip package selection:

loor init my-saas --no-packages
# App types and names will be prompted interactively
# No optional packages installed (only required ones)

Custom app names:

loor init my-saas --apps api:my-api,web-client:admin,web-client:portal

App Types

| Type | Description | Default Name | |------|-------------|--------------| | api | Express.js + MongoDB REST API server | api | | web-client | React + Vite admin panel / frontend | admin |

Multiple apps of the same type are allowed (e.g., two web-client apps with different names).

Required Packages

These packages are always installed based on selected app types — they cannot be deselected:

API apps: auth, base, expressRouteKit, logger, eslintConfig, typescriptConfig

Web Client apps: auth, base, storage, ui, i18n, routerProvider, commandMenu, apiClient, eslintConfig, typescriptConfig

What It Does

  1. Creates project directory with root config files (turbo.json, pnpm-workspace.yaml, tsconfig.json, etc.)
  2. Generates package.json programmatically
  3. Copies selected app templates from the reference apps
  4. Copies all packages, then removes artifacts of unselected packages (subtractive approach)
  5. Resolves transitive package dependencies automatically
  6. Replaces @loor/ scope with @<projectName>/ across the project

loor add app <type> [name]

Add a new app to an existing project.

loor add app api backend
loor add app web-client dashboard

Arguments

| Argument | Required | Description | |----------|----------|-------------| | type | Yes | App type: api or web-client | | name | No | App name. Defaults to api for API, admin for web-client. |

What It Does

  1. Copies reference app template to apps/<name>/
  2. Installs required packages for the app type (if missing)
  3. Removes artifacts of non-installed packages from the new app

loor add package <name>

Add a package to an existing project.

loor add package mediaKit
loor add package notification

Arguments

| Argument | Required | Description | |----------|----------|-------------| | name | Yes | Package name from the registry |

What It Does

  1. Resolves transitive dependencies automatically
  2. Copies package source to packages/<name>/
  3. Generates infra adapters in API apps (src/infra/)
  4. Generates client setup files in client apps
  5. Adds env vars to .env.example
  6. Merges npm dependencies into app package.json files
  7. Injects config annotation blocks

loor list

List all available packages with their descriptions, categories, and compatibility.

loor list

Packages are organized by category: core, server, client, config.


loor update

Force-refresh the package registry from the remote source.

loor update

The registry is cached locally (~/.loor/registry/) with a 24-hour TTL. This command forces a re-download.


loor config

Configure the CLI registry source (local development or remote production).

# Show current config
loor config

# Use local repo as source (for CLI development)
loor config --local
loor config --local /path/to/loor

# Switch back to remote
loor config --remote

Options

| Option | Description | |--------|-------------| | --local [path] | Use a local repo as scaffold source. Defaults to current directory. | | --remote | Use the remote GitHub registry (production). |

The LOOR_LOCAL environment variable overrides any persisted config.


loor ai init

Generate AI context files for the project.

loor ai init

What It Does

  1. Generates CLAUDE.md with project-specific context (apps, packages, conventions, routes, infra)
  2. Generates .mcp.json to register the loor MCP server

Global Options

| Option | Description | |--------|-------------| | --debug | Enable debug mode with detailed error output | | --version | Show CLI version | | --help | Show help for any command |

loor --debug init my-project
loor init --help
loor add app --help

MCP Server

The CLI includes a built-in MCP (Model Context Protocol) server for AI integrations.

loor --mcp

This starts a stdio-based MCP server that exposes the following tools:

| Tool | Description | |------|-------------| | list_packages | List available packages with optional category/compatibility filters | | get_package_guide | Get detailed guide for a specific package (patterns, infra, env vars) | | get_conventions | Get project conventions (architecture, routes, features) | | how_to | Step-by-step guides for common tasks | | cli_usage | Complete CLI command reference and usage examples |

The MCP server is auto-registered via loor ai init.


Environment Variables

| Variable | Description | Default | |----------|-------------|---------| | LOOR_LOCAL | Path to local loor repo (overrides config) | — | | LOOR_REPO | GitHub repository | ismailyagci/turbo-base | | LOOR_BRANCH | Git branch to use | master |


Workflow Examples

Create a full-stack project (interactive)

loor init my-app
# Select: api + web-client
# Name api: api
# Name web-client: admin
# Select packages: mediaKit, notification
cd my-app && pnpm install && pnpm dev

Create a full-stack project (non-interactive / CI)

loor init my-app \
  --apps api,web-client:admin \
  --packages mediaKit,notification
cd my-app && pnpm install && pnpm dev

Add a second frontend to an existing project

cd my-app
loor add app web-client portal
pnpm install

Add a package to an existing project

cd my-app
loor add package mediaKit
pnpm install

Set up AI tooling

cd my-app
loor ai init
# CLAUDE.md and .mcp.json are generated