javascript-pro — Claude Code skill: ES2023+, async/await, Node.js
Skill for writing, debugging, and refactoring JavaScript code with ES2023+, async/await, ESM modules, and Node.js APIs. Use it to build vanilla JavaScript applications or optimize performance in browsers and Node.js.
npx skills add Jeffallan/claude-skills --skill javascript-pro -a claude-codeWhat javascript-pro does
javascript-pro helps you write modern JavaScript by analyzing the project first (package.json, Node version, target browsers) and ending with tests at 85%+ coverage. The skill enforces ESM modules for new projects, mandates async/await over callbacks, runs eslint to fix issues, and catches memory leaks before finalization.
It includes a reference guide covering modern syntax (optional chaining, nullish coalescing), async patterns (Promises, error handling, event loop), module systems (ESM vs CommonJS), browser APIs (Fetch, Web Workers, Storage), and Node.js essentials (fs/promises, streams, worker threads). The skill blocks var, synchronous I/O, mixing CommonJS and ESM, and skipping error handling in async functions.
Installation uses npx skills add for your platform; the skill then appears in a local folder (.claude, .agents, .cursor, .github, or .devin depending on your IDE). After install, it loads SKILL.md and is ready to use.
What it helps with
- write async code with async/await and proper error handling
- refactor legacy code from var and callbacks to ES2023+ with Promises
- find memory leaks and browser performance issues
- set up ESM modules or migrate from CommonJS
- cover code with Jest tests reaching 85%+ coverage
Example prompts for the agent
- Write a fetch function for an API with error handling and null guards
- Refactor this callback to async/await and check for memory leaks
- How do I correctly use Web Workers and ESM in this project?
How to install javascript-pro
1Skills CLI (Vercel)
npx skills add Jeffallan/claude-skills --skill javascript-pro -a claude-code2Manually: put the files in place
~/.claude/skills/javascript-pro/SKILL.mdCopy the whole skill folder; for one project use .claude/skills/javascript-pro/
1Skills CLI (Vercel)
npx skills add Jeffallan/claude-skills --skill javascript-pro -a codex2Manually: put the files in place
.agents/skills/javascript-pro/SKILL.mdFor all projects use ~/.agents/skills/
1Skills CLI (Vercel)
npx skills add Jeffallan/claude-skills --skill javascript-pro -a cursor2Manually: put the files in place
.cursor/skills/javascript-pro/SKILL.mdCursor also reads .agents/skills/ and .claude/skills/
1GitHub CLI
gh skill install Jeffallan/claude-skills javascript-pro2Manually: put the files in place
.github/skills/javascript-pro/SKILL.md1Skills CLI (Vercel)
npx skills add Jeffallan/claude-skills --skill javascript-pro -a gemini-cli2Platform CLI
gemini skills install https://github.com/Jeffallan/claude-skills --path skills/javascript-proManually: put the files in place
.devin/skills/javascript-pro/SKILL.mdThe legacy .windsurf/skills/ path still works
Skills CLI (Vercel)
npx skills add Jeffallan/claude-skills --skill javascript-pro -a opencodeClaude.ai
Zip the folder and upload it in Settings → Capabilities → Skills
From the same set61
The whole set →Similar
Questions about javascript-pro
How do I install javascript-pro in Claude Code?
Run npx skills add Jeffallan/claude-skills --skill javascript-pro -a claude-code, then the skill will be available at ~/.claude/skills/javascript-pro/SKILL.md.
What does javascript-pro do?
Writes, debugs, and refactors JavaScript code with ES2023+, async/await, ESM modules, proper error handling, and 85%+ test coverage. It catches memory leaks and blocks antipatterns like var or synchronous I/O.
Does javascript-pro work with CommonJS or only ESM?
The skill requires ESM for new projects and forbids mixing CommonJS and ESM in the same module. For existing projects, it can help with ESM migration, but the focus is on modern standards.
Source text
SKILL.md · MIT
---
name: javascript-pro
description: Writes, debugs, and refactors JavaScript code using modern ES2023+ features, async/await patterns, ESM module systems, and Node.js APIs. Use when building vanilla JavaScript applications, implementing Promise-based async flows, optimising browser or Node.js performance, working with Web Workers or Fetch API, or reviewing .js/.mjs/.cjs files for correctness and best practices.
license: MIT
metadata:
author: https://github.com/Jeffallan
company: https://synergetic.solutions
version: "1.1.0"
domain: language
triggers: JavaScript, ES2023, async await, Node.js, vanilla JavaScript, Web Workers, Fetch API, browser API, module system
role: specialist
scope: implementation
output-format: code
related-skills: fullstack-guardian
---
# JavaScript Pro
## When to Use This Skill
- Building vanilla JavaScript applications
- Implementing async/await patterns and Promise handling
- Working with modern module systems (ESM/CJS)
- Optimizing browser performance and memory usage
- Developing Node.js backend services
- Implementing Web Workers, Service Workers, or browser APIs
## Core Workflow
1. **Analyze requirements** — Review `package.json`, module system, Node version, browser targets; confirm `.js`/`.mjs`/`.cjs` conventions
2. **Design architecture** — Plan modules, async flows, and error handling strategies
3. **Implement** — Write ES2023+ code with proper patterns and optimisations
4. **Validate** — Run linter (`eslint --fix`); if linter fails, fix all reported issues and re-run before proceeding. Check for memory leaks with DevTools or `--inspect`, verify bundle size; if leaks are found, resolve them before continuing
5. **Test** — Write comprehensive tests with Jest achieving 85%+ coverage; if coverage falls short, add missing cases and re-run. Confirm no unhandled Promise rejections
## Reference Guide
Load detailed guidance based on context:
| Topic | Reference | Load When |
|-------|-----------|-----------|
| Modern Syntax | `references/modern-syntax.md` | ES2023+ features, optional chaining, private fields |
| Async Patterns | `references/async-patterns.md` | Promises, async/await, error handling, event loop |
| Modules | `references/modules.md` | ESM vs CJS, dynamic imports, package.json exports |
| Browser APIs | `references/browser-apis.md` | Fetch, Web Workers, Storage, IntersectionObserver |
| Node Essentials | `references/node-essentials.md` | fs/promises, streams, EventEmitter, worker threads |
## Constraints
### MUST DO
- Use ES2023+ features exclusively
- Use `X | null` or `X | undefined` patterns
- Use optional chaining (`?.`) and nullish coalescing (`??`)
- Use async/await for all asynchronous operations
- Use ESM (`import`/`export`) for new projects
- Implement proper error handling with try/catch
- Add JSDoc comments for complex functions
- Follow functional programming principles
### MUST NOT DO
- Use `var` (always use `const` or `let`)
- Use callback-based patterns (prefer Promises)
- Mix CommonJS and ESM in the same module
- Ignore memory leaks or performance issues
- Skip error handling in async functions
- Use synchronous I/O in Node.js
- Mutate function parameters
- Create blocking operations in the browser
## Key Patterns with Examples
### Async/Await Error Handling
```js
// ✅ Correct — always handle async errors explicitly
async function fetchUser(id) {
try {
const response = await fetch(`/api/users/${id}`);
if (!response.ok) throw new Error(`HTTP ${response.status}`);
return await response.json();
} catch (err) {
console.error("fetchUser failed:", err);
return null;
}
}
// ❌ Incorrect — unhandled rejection, no null guard
async function fetchUser(id) {
const response = await fetch(`/api/users/${id}`);
return response.json();
}
```
### Optional Chaining & Nullish Coalescing
```js
// ✅ Correct
const city = user?.address?.city ?? "Unknown";
// ❌ Incorrect — throws if address is undefined
const city = user.address.city || "Unknown";
```
### ESM Module Structure
```js
// ✅ Correct — named exports, no default-only exports for libraries
// utils/math.mjs
export const add = (a, b) => a + b;
export const multiply = (a, b) => a * b;
// consumer.mjs
import { add } from "./utils/math.mjs";
// ❌ Incorrect — mixing require() with ESM
const { add } = require("./utils/math.mjs");
```
### Avoid var / Prefer const
```js
// ✅ Correct
const MAX_RETRIES = 3;
let attempts = 0;
// ❌ Incorrect
var MAX_RETRIES = 3;
var attempts = 0;
```
## Output Templates
When implementing JavaScript features, provide:
1. Module file with clean exports
2. Test file with comprehensive coverage
3. JSDoc documentation for public APIs
4. Brief explanation of patterns used
Maintained by [@jeffallan](https://github.com/jeffallan), Principal Consultant at [Synergetic Solutions](https://synergetic.solutions)
[Documentation](https://jeffallan.github.io/claude-skills/skills/language/javascript-pro/)
© https://github.com/Jeffallan · MIT · Jeffallan/claude-skills