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

@stnd/cli

v0.3.1

Published

Standard Garden CLI — scaffold a new garden or a vertical slice

Readme


title: "@stnd/cli" aliases: [] created: 2026-07-04 20:58 modified: 2026-08-10T12:12:45.499Z last_audited: 2026-07-14 audit_interval_days: 90 next_audit: 2026-10-12 audit_priority: 3 maturity: sprout mode: read publish: true status: active tags:

  • package
  • stnd theme: kernel type: package visibility: public garden-url: https://francisfontaine.com/readme garden-short: https://stnd.gd/sVwiaF

@stnd/cli

The stnd scaffolding CLI — bootstrap a new Standard garden, or scaffold a vertical slice inside an existing one.

Commands

stnd new <name>       # Bootstrap a new garden (a full Standard project)
stnd module <name>    # Scaffold a vertical slice in the current garden
stnd help             # Show usage
# aliases: create → new,  slice → module

Names are normalized to a safe kebab-case directory/id ("My Garden"my-garden), while the raw name is kept for the project title.

What it produces

stnd new copies templates/garden/ (skipping node_modules, .astro, .turbo, dist, .git), hydrates {{PROJECT_NAME}}, and writes a .gitignore. The result is a working garden:

my-garden/
  astro.config.mjs        # output: "server" + Cloudflare adapter + standard()
  package.json            # real published version ranges (no workspace:*)
  tsconfig.json
  modules/pages/          # a starter vertical slice
    index.module.js       #   routes generated from Markdown
    routes/[...slug].astro
    content/index.md      #   permalink: "/"
    content/about.md      #   → /about (slug from path)

stnd module reads moduleFolder from the garden’s Astro config (default modules) and scaffolds templates/plugin/ as modules/<name>/, hydrating {{id}} / {{name}}. The manifest ships with every hook and route commented out, so a fresh module loads cleanly with zero extra files.

Why output: "server" + Cloudflare? The framework’s Astro 7 workarounds (in @stnd/core) target the server/prerender/client build paths that the real apps use. A pure-static garden trips the Astro 7 + Rollup index.html resolution bug. pnpm dev and pnpm build work locally with no Cloudflare account; deploy is a separate, opt-in step.

Verified

stnd newstnd moduleastro build produces a garden that prerenders its Markdown pages (/, /about) with Standard typography, a sitemap, and Cloudflare headers. Verified by linking a built app’s node_modules (the @stnd/* packages are not published to npm yet).

What’s next — open

Part of the Road to Public Release. Rolls up into the project board.

  • [ ] Desert test in CI (Phase 3/4) — once the @stnd/* packages are [priority:: 3] [token_scale:: 3] [created:: 2026-07-14] [area:: framework] published, npx @stnd/cli new my-garden && pnpm install && pnpm build must pass on a machine outside this monorepo. Freeze it as test/desert.test.js. Until publish, the version ranges in templates/garden/package.json can’t resolve from npm.
  • [ ] Keep template versions in synctemplates/garden/package.json pins [priority:: 3] [token_scale:: 3] [created:: 2026-07-14] [area:: framework] exact versions for astro, @astrojs/cloudflare, svelte, and wrangler (manually re-synced 2026-09-05 against the monorepo's own pins). Nothing enforces this — the release pipeline (Phase 4) should bump them automatically so the CLI never silently drifts back to scaffolding stale versions.
  • [ ] prepublishOnly runs a real scaffold test, not just stnd help. [priority:: 3] [token_scale:: 3] [created:: 2026-07-14] [area:: framework]

Layout

bin/stnd.js               # entrypoint — command dispatch + help
src/commands/
  create-garden.js        # stnd new
  create-module.js        # stnd module
templates/garden/         # the scaffolded project
templates/plugin/         # the scaffolded vertical slice

Publishing

npm version patch   # or minor/major
npm publish         # publishConfig.access is public; `files` includes templates/