
Javascript Mastery
Pull structured explanations of JavaScript fundamentals when debugging odd behavior or reviewing agent-written JS during a build.
Overview
JavaScript Mastery is an agent skill most often used in Build (also Ship review and Build backend work) that walks through 33+ essential JavaScript concepts for explaining, debugging, and reviewing code.
Install
npx skills add https://github.com/sickn33/antigravity-awesome-skills --skill javascript-masteryWhat is this skill?
- 33+ essential JavaScript concepts aligned with the 33-js-concepts curriculum
- Primitives, type coercion, and equality quirks with runnable examples
- Guidance for explaining concepts, debugging tricky behavior, and teaching fundamentals
- Checklist-oriented lens for reviewing code against JavaScript best practices
- Covers language edge cases that confuse solo builders and coding agents alike
- 7 primitive types documented in fundamentals section
Adoption & trust: 726 installs on skills.sh; 40.1k GitHub stars; 3/3 security scanners passed (skills.sh audits).
What problem does it solve?
You are staring at surprising coercion, scope, or equality behavior in JavaScript and need reliable concept-by-concept guidance instead of improvised chat guesses.
Who is it for?
Solo builders shipping React, Vue, or Node apps who want an on-demand JS tutor and review aide inside their coding agent.
Skip if: Teams that only need TypeScript-only stacks with no runtime JS debugging, or projects where SEO, infra, or non-JS languages are the only focus.
When should I use this skill?
Explaining JavaScript concepts, debugging tricky JS behavior, teaching fundamentals, reviewing code for JS best practices, or understanding language quirks.
What do I get? / Deliverables
The agent applies a structured JavaScript concept map to explain behavior, isolate bugs, and align implementations with documented language best practices.
- Concept-by-concept explanations tied to your code context
- Debugging hypotheses grounded in JavaScript language rules
- Best-practice review notes for agent-generated JavaScript
Recommended Skills
Journey fit
Spans multiple journey phases - primary shelf plus alternate fits below.
JavaScript is central to most solo-builder frontends and Node tooling, so the canonical shelf is Build even though the same reference helps during review. The skill is organized around language concepts (primitives, coercion, closures) that surface most often while implementing UI and client-side logic.
Where it fits
Walk through coercion and equality rules before fixing a form validation bug in production JS.
Review an agent’s PR for classic JS foot-guns using the skill’s best-practice framing.
Clarify async and scope concepts while debugging a small Node API route.
How it compares
Use as a curated concept reference inside the agent, not as a replacement for MDN deep dives or automated ESLint rules.
Common Questions / FAQ
Who is javascript-mastery for?
It is for solo and indie developers—and agents helping them—who write JavaScript for web frontends, extensions, or Node backends and want consistent explanations of core language behavior.
When should I use javascript-mastery?
Use it during Build while implementing features, during Ship review when checking agent-generated JS, and when teaching or documenting tricky language behavior before you refactor.
Is javascript-mastery safe to install?
It is educational reference content without prescribed shell or network access in the skill itself; review the Security Audits panel on this Prism page before adding any community skill to your agent.
SKILL.md
READMESKILL.md - Javascript Mastery
# 🧠 JavaScript Mastery > 33+ essential JavaScript concepts every developer should know, inspired by [33-js-concepts](https://github.com/leonardomso/33-js-concepts). ## When to Use This Skill Use this skill when: - Explaining JavaScript concepts - Debugging tricky JS behavior - Teaching JavaScript fundamentals - Reviewing code for JS best practices - Understanding language quirks --- ## 1. Fundamentals ### 1.1 Primitive Types JavaScript has 7 primitive types: ```javascript // String const str = "hello"; // Number (integers and floats) const num = 42; const float = 3.14; // BigInt (for large integers) const big = 9007199254740991n; // Boolean const bool = true; // Undefined let undef; // undefined // Null const empty = null; // Symbol (unique identifiers) const sym = Symbol("description"); ``` **Key points**: - Primitives are immutable - Passed by value - `typeof null === "object"` is a historical bug ### 1.2 Type Coercion JavaScript implicitly converts types: ```javascript // String coercion "5" + 3; // "53" (number → string) "5" - 3; // 2 (string → number) // Boolean coercion Boolean(""); // false Boolean("hello"); // true Boolean(0); // false Boolean([]); // true (!) // Equality coercion "5" == 5; // true (coerces) "5" === 5; // false (strict) ``` **Falsy values** (8 total): `false`, `0`, `-0`, `0n`, `""`, `null`, `undefined`, `NaN` ### 1.3 Equality Operators ```javascript // == (loose equality) - coerces types null == undefined; // true "1" == 1; // true // === (strict equality) - no coercion null === undefined; // false "1" === 1; // false // Object.is() - handles edge cases Object.is(NaN, NaN); // true (NaN === NaN is false!) Object.is(-0, 0); // false (0 === -0 is true!) ``` **Rule**: Always use `===` unless you have a specific reason not to. --- ## 2. Scope & Closures ### 2.1 Scope Types ```javascript // Global scope var globalVar = "global"; function outer() { // Function scope var functionVar = "function"; if (true) { // Block scope (let/const only) let blockVar = "block"; const alsoBlock = "block"; var notBlock = "function"; // var ignores blocks! } } ``` ### 2.2 Closures A closure is a function that remembers its lexical scope: ```javascript function createCounter() { let count = 0; // "closed over" variable return { increment() { return ++count; }, decrement() { return --count; }, getCount() { return count; }, }; } const counter = createCounter(); counter.increment(); // 1 counter.increment(); // 2 counter.getCount(); // 2 ``` **Common use cases**: - Data privacy (module pattern) - Function factories - Partial application - Memoization ### 2.3 var vs let vs const ```javascript // var - function scoped, hoisted, can redeclare var x = 1; var x = 2; // OK // let - block scoped, hoisted (TDZ), no redeclare let y = 1; // let y = 2; // Error! // const - like let, but can't reassign const z = 1; // z = 2; // Error! // BUT: const objects are mutable const obj = { a: 1 }; obj.a = 2; // OK obj.b = 3; // OK ``` --- ## 3. Functions & Execution ### 3.1 Call Stack ```javascript function first() { console.log("first start"); second(); console.log("first end"); } function second() { console.log("second"); } first(); // Output: // "first start" // "second" // "first end" ``` Stack overflow example: ```javascript function infinite() { infinite(); // No base case! } infinite(); // RangeError: Maximum call stack size exceeded ``` ### 3.2 Hoisting ```javascript // Variable hoisting console.log(a); // undefined (hoisted, not initialized) var a = 5; console.log(b); // ReferenceError (TDZ) let b = 5; // Function hoisting sayHi(); // Works! function sayHi()