pauls-project-setup

Configures new JavaScript projects with pnpm, node --test, esbuild, and oxlint conventions.

4.4k|1.3k|Updated Jan 23, 2012
One-click install
npx skills add https://github.com/paulirish/dotfiles --skill pauls-project-setup
Or copy as Structured Prompt for Agent
Please help me install this Agent Skill.
Skill: pauls-project-setup
Source: https://github.com/paulirish/dotfiles/tree/main/agents/skills/pauls-project-setup
Command: npx skills add https://github.com/paulirish/dotfiles --skill pauls-project-setup

SYSTEM DOCUMENTATION & REQUIREMENTS

What problem does it solve?

Starting a new JavaScript or TypeScript project often means re-deciding the same toolchain questions: which package manager, test runner, bundler, and linter to use. This Skill applies a fixed, opinionated modern stack so new repositories start with consistent, fast tooling and no slow build steps.

Core Features & Use Cases

  • Standardized Stack: Enforces pnpm for package management, Node.js native test runner (node --test) instead of Jest, esbuild for bundling, and oxlint for linting.
  • Buildless Type Safety: Applies the buildless-types approach using JSDoc or erasable TypeScript syntax with tsc --noEmit, so files run directly via node script.ts without tsx or ts-node.
  • Ready-Made Configurations: Provides baseline package.json scripts (test, typecheck, lint, preflight), tsconfig constraints, and a complete .oxlintrc.json template.
  • Use Case: When scaffolding a new Node.js library or web project, apply this Skill to generate the package.json, lint config, and testing setup in one pass, with an isomorphic core testable directly in Node.

Quick Start

Set up a new project using Paul's modern stack conventions with pnpm, native node test, and oxlint.

Frequently Asked Questions about pauls-project-setup

High-intent search queries and answers about installing and using this skill.

FAQPage Schema
How do I set up a new Node.js project with pnpm and native tests?

Initialize the project as an ES module with pnpm, set "type": "module" in package.json, and define scripts using node --test for testing and tsc --noEmit for typechecking. This avoids Jest and any transpilation pipeline entirely.

What is the buildless-types approach for TypeScript?

Buildless-types uses JSDoc annotations or erasable TypeScript syntax checked with tsc --noEmit, so no compilation step is needed. Files run directly with node script.ts, and tsconfig uses erasableSyntaxOnly and allowImportingTsExtensions.

node --test vs Jest for JavaScript testing?

The native node --test runner requires zero configuration and runs extremely fast, while Jest is slow and needs complex transpilation pipelines. This stack avoids Jest completely and falls back to vitest only if a browser-like environment is required.

Can I run TypeScript files directly without tsx or ts-node?

Yes, modern Node.js (>=24.11.0) runs .ts files directly when they use only erasable syntax. Execute them with node script.ts; tools like tsx or ts-node are explicitly not used in this setup.

Why use oxlint instead of ESLint?

oxlint provides ultra-fast linting without ESLint's overhead. It is configured with a .oxlintrc.json file defining rules like no-unused-vars and no-explicit-any, and runs via a simple lint script in package.json.