with one click
projects
Understanding the various projects/packages available
Install with Codex or Claude Copy this prompt, paste it into Codex, Claude, or another assistant, and let it review the skill page and install it for you.
Menu
Understanding the various projects/packages available
Install with Codex or Claude Copy this prompt, paste it into Codex, Claude, or another assistant, and let it review the skill page and install it for you.
Based on SOC occupation classification
Coding patterns and conventions (package design, types, DI, docs)
Creating a new package in the monorepo
Running CI locally with Dagger
Debugging (source maps, cache, test failures)
DevContainer runtimes, CLI tools, and version parity with Dagger
Installing a package dependency
| name | projects |
| description | Understanding the various projects/packages available |
A project (aka package) is any directory in this repo that has a project.json file (which plugs it into Nx runners).
In practice all projects are JS based, and therefore also have package.json.
Every project should have a README.md.
Most smaller "lib-based" projects go in the /tools directory. These should be fairly simple libraries, with a straightforward README.
More complicated projects (i.e. includes a WHY-<PROJECT>.md) or those that used outside of traditional import (e.g. CLIs) should go in the /apps directory.
The two other exceptions are in the /leyman directory, which manages meta configuration for this repo, and will never be deployed.
When you add or remove a package, update the table in this file. Add the new row in alphabetical order within the correct section (Apps, Tools, or Leyman). The description should match the one-line subtitle in the package's README.md.
See each package's README.md for full usage documentation.
| Package | Description |
|---|---|
barrelify | Auto-generate TypeScript barrel (index.ts) files |
juniper | JSON Schema builder with static TypeScript inference |
juniper-validator | StandardSchema-compliant validator wrapping Juniper schemas |
nx-lifecycle | Nx plugin for managing ordered task dependency lifecycles |
pnpm-dedicated-lockfile | Generate per-package lockfiles from the monorepo lockfile |
populate-files | Write dynamic content to static files with CI sync checking |
load-populate-files | Load a config file and run populate-files from CLI |
| Package | Description |
|---|---|
common-proxy | Synchronously expose ESM-backed functions from CommonJS |
default-import | Correctly extract default exports from CJS modules in ESM |
entry-script | Safe CLI entry point pattern โ runs only as the Node entrypoint |
enum-to-array | Convert TypeScript enums to typed arrays of keys/values |
find-import | Find and load the first matching JS/JSON file in parent directories |
format-file | Format file content via Biome or Prettier |
haywire | Type-safe dependency injection โ invalid containers are compile errors |
haywire-launcher | Connect Haywire DI containers to entry-script CLI entry points |
iso-crypto | Isomorphic cryptography for Node.js and Browser |
mocha-chain | Type-safe Mocha hook chaining with typed context propagation |
named-patch | Testable monkey-patching via named function wrappers |
normalized-react-query | Type-safe React Query wrappers that enforce consistent key/query pairing |
nx-plugin-handler | Error-handling wrapper for Nx executor implementations |
parse-cwd | Resolve and validate a working directory from string, URL, or undefined |
punycode-esm | ESM port of the Punycode encoding library |
sinon-typed-stub | Type-safe Sinon spy, stub, and mock wrappers |
static-emitter | Typed EventEmitter/EventTarget for Node.js and Browser |
| Package | Description |
|---|---|
eslint-config | Very opinionated eslint config used internally for package linting |
main | Workaround for installing "global" packages, and executing repo-wide tasks |