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

@vyuhlabs/create-devstack

v0.6.0

Published

Scaffold production-ready dev environments — devcontainers, Makefiles, quality presets, CI workflows

Readme

@vyuhlabs/create-devstack

CI npm version License: MIT

Scaffold production-ready development environments for any project. Generates devcontainers, then delegates to @vyuhlabs/dxkit for Makefiles, quality presets, CI workflows, and AI DX.

Quick Start

# New project (greenfield)
npm create @vyuhlabs/devstack my-project

# Existing project (brownfield)
cd existing-project
npx @vyuhlabs/create-devstack init

What It Does

An interactive wizard asks you to choose:

  • Languages — Python, Go, Node.js, Next.js, Rust, C#
  • Infrastructure — PostgreSQL, Redis
  • Quality preset — Strict (95%), Standard (80%), Relaxed (60%)
  • Tools — Devcontainer, GitHub Actions, Pre-commit, Claude Code, gcloud, Pulumi, Infisical

Then generates:

| What | Owner | Description | | ------------------------- | --------------- | ------------------------------------------------------------- | | .project.yaml | create-devstack | Your choices as config-as-code | | .devcontainer/ | create-devstack | Dockerfile, docker-compose, devcontainer.json, post-create.sh | | Makefile | dxkit | ~45 targets (test, quality, build, deploy, etc.) | | .project/ | dxkit | Runtime scripts (quality, test, setup, session) | | Language configs | dxkit | pyproject.toml, go.mod, tsconfig.json, etc. | | .github/workflows/ | dxkit | CI and quality workflows | | .pre-commit-config.yaml | dxkit | Language-conditional hooks | | .claude/ | dxkit | AI agents, commands, skills, rules |

How It Works

create-devstack
    │
    ├─ Interactive wizard → .project.yaml
    ├─ Devcontainer generator → .devcontainer/
    │
    └─ Calls: dxkit init --full
                 │
                 ├─ Reads .project.yaml
                 └─ Generates everything else

create-devstack handles the dev environment (containers). dxkit handles everything else (build system, quality, CI, AI DX). The handoff is via .project.yaml — create-devstack writes it, dxkit reads it.

.project.yaml

The generated config file looks like:

project:
  name: my-project
  description: A web API for managing inventory
languages:
  python:
    enabled: true
    version: '3.12'
    quality:
      coverage: 80
      lint: true
      typecheck: true
  go:
    enabled: true
    version: '1.24.0'
    quality:
      coverage: 80
      lint: true
infrastructure:
  postgres:
    enabled: true
    version: '16'
tools:
  claude_code: true
  docker: true
  precommit: true
  gcloud: false

Brownfield (Existing Projects)

cd existing-project
npx @vyuhlabs/create-devstack init

The brownfield flow:

  1. Scans your project — detects languages, versions, frameworks, test runners, infrastructure, and tools
  2. Shows what it found and lets you confirm or adjust
  3. Respects existing files — won't overwrite your .devcontainer/, .claude/, or configs
  4. Generates only what's missing (.project.yaml, devcontainer, then delegates to dxkit)

If .project.yaml already exists, you can keep it or reconfigure. If it's malformed, create-devstack falls back to detection.

Devcontainer

The generated .devcontainer/ is fully conditional:

  • Dockerfile.dev — Only installs languages you selected (Python, Go, Node, Rust)
  • docker-compose.yml — Only includes services you need (PostgreSQL, Redis)
  • devcontainer.json — VS Code extensions matched to your stack
  • post-create.sh — Setup scripts for selected languages and tools

Works in GitHub Codespaces, local Docker, VS Code Remote Containers, JetBrains Gateway, or the devcontainer CLI.

CLI Options

| Flag | Description | | --------------------- | ------------------------------------------------------------------------------- | | --yes, -y | Accept defaults, no prompts | | --lang <languages> | Languages: python, go, node, nextjs, rust, csharp (comma-separated) | | --infra <services> | Infrastructure: postgres, redis (comma-separated) | | --preset <name> | Quality preset: strict, standard (default), relaxed | | --stealth | Gitignore generated files (local-only, not committed) | | -d, --description | Project description | | --version, -v | Show version | | --help, -h | Show help |

For greenfield, --yes requires --lang to specify at least one language. For brownfield (init), --yes auto-detects from the filesystem.

Stealth Mode

Use --stealth to keep generated files local — they're added to .gitignore so they won't be committed. Only files actually created in this run are gitignored (existing files are never touched). Consistent with dxkit's /stealth-mode.

npx @vyuhlabs/create-devstack init --yes --stealth

Examples

# Interactive
npm create @vyuhlabs/devstack my-app

# Python project, standard quality
npm create @vyuhlabs/devstack my-app --yes --lang python

# Multi-language with postgres
npm create @vyuhlabs/devstack my-app --yes --lang python,go --infra postgres

# Node project with strict quality
npm create @vyuhlabs/devstack my-app --yes --lang node --preset strict

# Brownfield — auto-detect, accept all
npx @vyuhlabs/create-devstack init --yes

# Brownfield — local-only (stealth)
npx @vyuhlabs/create-devstack init --yes --stealth

Requirements

  • Node.js >= 18
  • npm >= 9

Development

git clone https://github.com/vyuh-labs/create-devstack.git
cd create-devstack
npm install
npm run build
npm test

Scripts

| Script | Description | | ------------------- | --------------------------- | | npm run build | Compile TypeScript | | npm run typecheck | Type-check without emitting | | npm run lint | ESLint | | npm run format | Prettier | | npm test | Vitest (watch mode) | | npm run test:run | Vitest (single run) |

Git Hooks

  • Pre-commit: lint + format staged files + typecheck
  • Pre-push: run tests affected by changes (vitest --changed)

Related

License

MIT