ai/skills/aidd-javascript/SKILL.md
JavaScript and TypeScript best practices and guidance. Use when writing, reviewing, or refactoring JavaScript or TypeScript code.
npx skillsauth add paralleldrive/aidd aidd-javascriptInstall this skill globally with one command. Works with Claude Code, Cursor, and Windsurf.
3 of 9 scanners reported clean
Some scanners were skipped, did not run, or reported a non-clean status. Review each row below.
Act as a top-tier software engineer with serious JavaScript/TypeScript discipline to carefully implement high quality software.
Constraints {
Be concise.
Favor functional programming; keep functions short, pure, and composable.
Favor map, filter, reduce over manual loops.
Prefer immutability; use const, spread, and rest operators instead of mutation.
One job per function; separate mapping from IO.
Obey the projects lint and formatting rules.
Omit needless code and variables; prefer composition with partial application and point-free style.
Chain operations rather than introducing intermediate variables, e.g. [x].filter(p).map(f)
Avoid loose procedural sequences; compose clear pipelines instead.
Avoid class and extends as much as possible. Prefer composition of functions and data structures over inheritance.
Keep related code together; group by feature, not by technical type.
Put statements and expressions in positive form.
Use parallel code for parallel concepts.
Avoid null/undefined arguments; use options objects instead.
Use concise syntax: arrow functions, object destructuring, array destructuring, template literals.
Avoid verbose property assignments. bad: const a = obj.a; good: const { a } = obj;
Assign reasonable defaults directly in function signatures.
const createExpectedUser = ({ id = createId(), name = '', description = '' } = {}) => ({ id, name, description });
Principle: SDA. This means:
Parameter values should be explicitly named and expressed in function signatures:
Bad: const createUser = (payload = {}) => ({
Good: const createUser = ({ id = createId(), name = '', description = ''} = {}) =>
Notice how default values also provide hints for type inference.
Avoid IIFEs. Use block scopes, modules, or normal arrow functions instead. Principle: KISS
Avoid using || for defaults. Use parameter defaults instead. See above.
Prefer async/await or asyncPipe over raw promise chains.
Use strict equality (===).
Modularize by feature; one concern per file or function; prefer named exports.
}
NamingConstraints {
Use active voice.
Use clear, consistent naming.
Functions should be verbs. e.g. increment(), filter().
Predicates and booleans should read like yes/no questions. e.g. isActive, hasPermission.
Prefer standalone verbs over noun.method. e.g. createUser() not User.create().
Avoid noun-heavy and redundant names. e.g. filter(fn, array) not matchingItemsFromArray(fn, array).
Avoid "doSomething" style. e.g. notify() not Notifier.doNotification().
Lifecycle methods: prefer beforeX / afterX over willX / didX. e.g. beforeUpdate().
Use strong negatives over weak ones: isEmpty(thing) not !isDefined(thing).
Mixins and function decorators use with${Thing}. e.g. withUser, withFeatures, withAuth.
Avoid ALL_CAPS for constants. Since we use functional programming, there's no need for a hard distinction between constants and variables.
}
Comments { Favor docblocks for public APIs - but keep them minimal. Ensure that any comments are necessary and add value. Never reiterate the style guides. Avoid obvious redundancy with the code, but short one-line comments that aid scannability are okay. Comments should stand-alone months or years later. Assume that the reader is not familiar with the task plan or epic. }
documentation
Top tier author skill for delivering essential truths with the persuasive power to inspire positive change. Use when writing, reviewing, editing, or scoring any content.
development
Guide for crafting high-quality AIDD skills. Use when creating, reviewing, or refactoring skills in ai/skills/ or aidd-custom/skills/.
testing
Reflective Thought Composition. Structured thinking pipeline for complex decisions, design evaluation, and deep analysis. Use when quality of reasoning matters more than speed of response.
tools
Teaches agents how to write correct riteway ai prompt evals (.sudo files) for multi-step flows that involve tool calls. Use when writing prompt evals, creating .sudo test files, or testing agent skills that use tools such as gh, GraphQL, or external APIs.