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

@take-out/cli

v0.1.21

Published

CLI tools for Takeout starter kit - interactive onboarding and project setup

Downloads

8,886

Readme

@take-out/cli

CLI tools for Takeout starter kit - interactive onboarding, project setup, scripts and script running.

Features

  • 🚀 Interactive onboarding wizard
  • ✅ Prerequisite checking (Bun, Docker, Node, Git)
  • 🔧 Environment file setup with secret generation
  • 📦 Project identity customization
  • 🐳 Docker service orchestration
  • 🗄️ Database migration automation
  • 📚 Documentation management with Claude Code Skills support
  • 🎨 Beautiful CLI interface with @clack/prompts

Installation

npm install @take-out/cli
# or
bun add @take-out/cli
# or
pnpm add @take-out/cli

Usage

CLI Commands

takeout onboard

Interactive onboarding for new Takeout projects:

takeout onboard

This will guide you through:

  1. Prerequisites verification (Bun, Docker, Node, Git)
  2. Environment file setup (.env from .env.development)
  3. Secret generation (BETTER_AUTH_SECRET)
  4. Project identity customization (name, bundle ID, domain)
  5. Docker service startup (PostgreSQL, Zero, MinIO)
  6. Database migrations

Options:

  • --skip - Skip interactive prompts

takeout check

Quick prerequisite check (used in postinstall):

takeout check

Options:

  • --silent - Run silently with no output

takeout docs

Manage and retrieve documentation files:

# list available docs
takeout docs list

# get doc content (for hooks)
takeout docs get zero tamagui

# get path to docs directory
takeout docs path

# eject docs to local ./docs folder
takeout docs eject

# generate Claude Code skills from docs
takeout skills generate
takeout skills generate --clean  # clean and regenerate
Claude Code Skills

The skills generate command generates Claude Code skills from your documentation:

  1. scans docs from both ./docs/ (local) and package docs
  2. for docs with YAML frontmatter, creates symlinks to .claude/skills/
  3. for docs without frontmatter, generates skill files with auto-extracted metadata

adding frontmatter to docs (recommended):

---
name: my-skill
description: What this skill does. Keywords for when Claude should use it.
---

# my skill

content here...

docs with frontmatter get symlinked directly - edit the source and the skill updates automatically. docs without frontmatter get generated copies.

regenerating skills:

# regenerate after doc changes
bun tko skills generate

# clean and regenerate all
bun tko skills generate --clean

skills are gitignored by default (.claude/skills).

API

Prerequisites

checkAllPrerequisites(): PrerequisiteCheck[]
checkBun(): PrerequisiteCheck
checkNode(): PrerequisiteCheck
checkDocker(): PrerequisiteCheck
checkGit(): PrerequisiteCheck
hasRequiredPrerequisites(checks: PrerequisiteCheck[]): boolean

Ports

checkAllPorts(): PortCheck[]
checkPort(port: number, name: string): PortCheck
hasPortConflicts(checks: PortCheck[]): boolean
getConflictingPorts(checks: PortCheck[]): PortCheck[]

TAKEOUT_PORTS = {
  postgres: 5432,
  zero: 4848,
  web: 8081,
  minio: 9090,
  minioConsole: 9091,
}

Environment

generateSecret(length?: number): string
envFileExists(cwd: string, filename?: string): boolean
copyEnvFile(cwd: string, source: string, target: string): Result
updateEnvVariable(cwd: string, key: string, value: string, filename?: string): Result
createEnvLocal(cwd: string): Result
readEnvVariable(cwd: string, key: string, filename?: string): string | null

Files

updatePackageJson(cwd: string, updates: { name?: string; description?: string }): Result
updateAppConfig(cwd: string, updates: { name?: string; slug?: string; bundleId?: string }): Result
checkOnboarded(cwd: string): boolean
markOnboarded(cwd: string): Result

Prompts

displayWelcome(projectName?: string): void
displayOutro(message: string): void
displayPrerequisites(checks: PrerequisiteCheck[]): void
displayPortConflicts(conflicts: PortCheck[]): void
confirmContinue(message: string, defaultValue?: boolean): Promise<boolean>
promptText(message: string, defaultValue?: string, placeholder?: string): Promise<string>
promptPassword(message: string, placeholder?: string): Promise<string>
promptSelect<T>(message: string, options: Array<{value: T; label: string; hint?: string}>): Promise<T>
showSpinner(message: string): Spinner
showError(message: string): void
showWarning(message: string): void
showSuccess(message: string): void
showInfo(message: string): void
showStep(message: string): void

Integration with Takeout

Add to your package.json:

{
  "scripts": {
    "onboard": "takeout onboard",
    "postinstall": "takeout check"
  },
  "dependencies": {
    "@take-out/cli": "^0.0.1"
  }
}

Then users can run:

bun install
bun onboard

Development

# Install dependencies
bun install

# Build
bun run build

# Watch mode
bun run watch

# Lint
bun run lint

# Lint and fix
bun run lint:fix

# Test locally (from this directory)
bun src/cli.ts onboard
bun src/cli.ts check

# Test built version
bun dist/esm/cli.mjs onboard

License

MIT