Initializes JavaScript projects with ES modules, functional style, Prettier, ESLint flat config, EditorConfig, Vitest, and .gitignore. Use to bootstrap Node.js apps, packages, or add tooling to empty directories.
From agentic-dev-teamnpx claudepluginhub bdfinst/agentic-dev-teamThis skill uses the workspace's default tool permissions.
evals/evals.jsonreferences/configs.mdSearches, retrieves, and installs Agent Skills from prompts.chat registry using MCP tools like search_skills and get_skill. Activates for finding skills, browsing catalogs, or extending Claude.
Searches prompts.chat for AI prompt templates by keyword or category, retrieves by ID with variable handling, and improves prompts via AI. Use for discovering or enhancing prompts.
Guides agent creation for Claude Code plugins with file templates, frontmatter specs (name, description, model), triggering examples, system prompts, and best practices.
Scaffold a new JavaScript project with opinionated defaults for ES modules, functional development, and modern tooling. The goal is to get from zero to a working, linted, tested project in under a minute — with every config file explained and customizable.
require) is legacy; ESM (import/export) works everywhere now and enables tree-shaking, static analysis, and better tooling.eslint.config.js). Simpler, composable, no more .eslintrc cascade confusion.Before generating any files, present the defaults to the user and ask if they want to change anything. This is important — don't just start writing files.
Present this summary:
Here's what I'll set up for your project:
Package manager: npm
Module system: ES Modules ("type": "module")
Style: Functional (no classes, prefer const, no mutation)
Formatter: Prettier (2-space indent, single quotes, trailing commas)
Linter: ESLint flat config with functional rules
Editor config: EditorConfig (2-space indent, UTF-8, LF line endings)
Testing: Vitest
E2E testing: [Playwright — only if frontend project]
.gitignore: node_modules, dist, coverage, .env, OS files
Want to change anything, or should I go ahead?
If the user asks for a frontend project (mentions React, Svelte, Angular, Vue, Next.js, Nuxt, SvelteKit, Astro, a UI, a web app, a dashboard, etc.), include Playwright in the summary. Otherwise omit it but mention it's available.
Note: this skill scaffolds the base tooling layer (module system, linting, formatting, testing, editor config). It does not replace framework-specific CLIs (npx sv create, ng new, npm create vite@latest). If the user needs a full framework scaffold, suggest they run the framework CLI first, then use this skill to layer on the opinionated configs.
Wait for the user to confirm or request changes before proceeding.
Run these commands to create the foundation:
npm init -y
Then update package.json to set ES modules and add scripts. Read the generated package.json first, then edit it to add/modify:
"type": "module""scripts" section with test, lint, and format commands"main" if not a library)The scripts section should include:
{
"scripts": {
"test": "vitest run",
"test:watch": "vitest",
"test:coverage": "vitest run --coverage",
"lint": "eslint .",
"lint:fix": "eslint . --fix",
"format": "prettier --write .",
"format:check": "prettier --check ."
}
}
For frontend projects, add:
{
"scripts": {
"test:e2e": "playwright test"
}
}
Install all dev dependencies in one command:
npm install -D eslint prettier vitest @eslint/js eslint-config-prettier eslint-plugin-prettier
For frontend projects, also install Playwright:
npm install -D @playwright/test
npx playwright install
Create each config file using the templates in references/configs.md. Read that file for the exact contents. The key files are:
eslint.config.js — flat config with functional rules (no classes, prefer const, no var, no param reassign)prettier.config.js — 2-space indent, single quotes, trailing commas, 100 char print width.editorconfig — 2-space indent, UTF-8, LF, trim trailing whitespace, final newline.gitignore — node_modules, dist, build, coverage, .env, .env.*, OS files (DS_Store, Thumbs.db)vitest.config.js — minimal config pointing at test filesFor frontend projects, also create:
6. playwright.config.js — basic config with chromium, sensible defaults
Create a minimal starter structure so the project is immediately runnable:
src/
index.js — single exported function with a JSDoc comment
src/
index.test.js — one passing vitest test for the starter function
The starter function should be a simple pure function (e.g., greet or add) — just enough to prove the toolchain works. The test should import it and assert the expected output.
For frontend projects, also create:
e2e/
example.spec.js — one Playwright test placeholder
Run the following commands and confirm they succeed:
npm run lint
npm run format:check
npm test
If any command fails, fix the issue before reporting success. Show the user the test output as proof that the scaffold is working.
After everything passes, give the user a brief summary of what was created:
npm test:watch to start developing with live tests")If the user requests changes to the defaults in Step 1:
useTabs: true), editorconfig (indent_style = tab)singleQuote: false)semi: true/false)