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

@voxgig/create-sdkgen

v0.30.8

Published

Create a Voxgig SDK Generator project

Readme

create-sdkgen

Scaffold a new Voxgig SDK Generator project — turn an OpenAPI spec into idiomatic, tested, multi-language client SDKs (TypeScript, Python, Go, PHP, Ruby, Lua, plus a CLI and MCP server).

Quickstart

From a spec to a tested SDK, in four steps:

# 1. Scaffold a project from your OpenAPI 3 spec
create-sdkgen my-api -d ./openapi.yaml -o ./my-api-sdk

# 2. Add the languages you want + offline test mode
cd my-api-sdk/.sdk
npx voxgig-sdkgen target add ts py go
npx voxgig-sdkgen feature add test

# 3. Generate the SDKs (builds the .sdk sources, then runs the generator)
npm run generate

# 4. Verify
cd ../ts && npm install && npm run build && npm test

You shape the SDK by editing the model in .sdk/model/ (entities, ops, fields); everything under the language directories (ts/, py/, …) is generated output and is overwritten on each regenerate.

Options

| Flag | Meaning | | --- | --- | | <name> | SDK name (kebab-case), the package base name | | -d, --def <spec> | OpenAPI 3 spec file (.yaml/.json). Its servers entry names the base URL of the API. A spec without one still builds: the SDK then takes the URL as its base server variable, or .sdk/build/apidef.js fixes one with the server option | | -o, --folder <dir> | output directory (default <name>-sdk) | | -t, --target <langs> | targets to add during scaffold (e.g. ts,py,go) | | -f, --feature <feats> | features to add (e.g. test) | | -p, --project <name> | project template, by name or folder (default standard) | | --no-install | skip npm install | | --dryrun | report what the scaffold would write, and write nothing | | --debug <level> | log level: trace, debug, info, warn, error or fatal (default info) | | -h, -v | help, version |

Through npm create, the options follow --. Without it, npm reads -d, -o, -t, -f, --dryrun and --no-install as its own settings and passes on only their values, which create-sdkgen then refuses:

npm create @voxgig/sdkgen@latest my-api -- -d ./openapi.yaml -t ts,py

npx @voxgig/create-sdkgen and an installed create-sdkgen take the options as written.

After the scaffold

The loop from here is:

edit .sdk/model/entity/*.aontu  →  (cd .sdk && npm run generate)  →  re-run the target tests

Commit before regenerating, since generation overwrites the target directories. Every generated target carries a readme_examples test that extracts each code block from that language's README.md and REFERENCE.md, compiles it, and runs the runnable ones in offline test mode, so a documented example that does not work fails that target's build. When the tests are green, publish each language package the way its ecosystem expects (npm, PyPI, Packagist, RubyGems, LuaRocks, or a Go module tag).

The step-by-step tutorial, the model reference, and the generator's CLI flags are in the sdkgen documentation.

Re-scaffold an existing project

Run the same command over the project's output directory to pick up a newer scaffold:

create-sdkgen my-api -d ./openapi.yaml -o ./my-api-sdk

A re-scaffold rewrites the scaffold's own files and keeps the project's: the guide in .sdk/model/guide/, the project overlay .sdk/model/project.aontu, the README wording in .sdk/model/text.aontu, and the target, feature, and edition indexes with the files they name.

The same command brings a project from before the .aontu rename up to date, which it needs, because aontu now refuses to include a .aon file. The re-scaffold renames each .aon file under .sdk/model/ and .sdk/test/ to .aontu, or removes it where the scaffold writes its replacement, and updates every include that names a renamed file. An include of a local file that has no ./ prefix, such as @"entity/entity-index.aontu", gains one, since aontu reads a path without it as a package path first. Nothing else in a file changes. An include the scaffold can't update, such as one pointing outside .sdk/, gets a warning that names the file. Commit first, so the migration is a diff you can read. test/create-sdkgen.test.ts builds such a project and re-scaffolds it.

The toolchain

  • create-sdkgen (this package) — scaffolds the project.
  • @voxgig/apidef — parses your OpenAPI spec into the model.
  • @voxgig/sdkgen — generates the SDKs from the model.

The scaffold's .sdk/package.json pins each Voxgig toolchain package to the patch line this release of create-sdkgen was released with: ~4.34.3 for @voxgig/sdkgen, and likewise for @voxgig/apidef, @voxgig/model and @voxgig/docgen. A release that carries these pins, pinned or not, scaffolds a project that installs a toolchain able to drive what the scaffold wrote. A release from before them declares open floors instead, so re-scaffold with one that has them. Fixes arrive with npm install. A newer minor arrives with a re-scaffold from the current create-sdkgen, which rewrites the pins, or by editing the ranges by hand.

Contributing

How to validate a change, and why a pull request from a fork gets no CI, are in CONTRIBUTING.md. The documentation follows the style guide.

Documentation editions

New projects include @voxgig/docgen. Installing the .sdk dependencies adds the summary and github-pages editions. npm run generate then produces SUMMARY.md and a text QA workflow. The github-pages edition is off by default. To generate the static HTML site in docs/ and its GitHub Pages deployment, turn it on in .sdk/model/project.aontu:

main: kit: doc: edition: 'github-pages': active: true

With --no-install, setup happens when dependencies are installed.

Add the optional Slidev presentation from .sdk:

npx voxgig-sdkgen edition add presentation
npm run generate

Configure shared branding and each edition under main.kit.doc in the model. Customise templates in .sdk/tm/edition/ and add authored Markdown in .sdk/doc/content/. SDK README generation remains a separate SDK phase. The docgen guide describes the model, local assets, presentation builds, and Vale text QA.

Repository administration

New projects include .sdk/admin/status.sh. Run it to review local repository, SDK, and documentation status; add --github to read CI and Pages status through gh. Docgen generates .sdk/admin/setup-github-pages.sh for Pages setup. See the administration reference for script options and ownership.