Help us improve
Share bugs, ideas, or general feedback.
From agentic-dev-team
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.
npx claudepluginhub bdfinst/agentic-dev-team --plugin agentic-dev-teamHow this skill is triggered — by the user, by Claude, or both
Slash command
/agentic-dev-team:js-project-initThe summary Claude sees in its skill listing — used to decide when to auto-load this skill
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.
Scaffolds projects with directory structures, configs, dependencies, linting, testing, CI/CD basics, and docs for frontend, backend, mobile, CLI, libraries, and monorepos.
Bootstraps new projects or improves existing ones with best practices for structure, git, documentation, testing, code quality, dependencies, dev workflow, and CI/CD.
Sets up Vitest testing by detecting project type (React, Node, Hono, Cloudflare Workers), generating config/tests/utilities, adding scripts, and migrating from Jest.
Share bugs, ideas, or general feedback.
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)