Files
Understand-Anything/understand-anything-plugin/skills/understand/languages/javascript.md
T
Sreeram b5eb2e6041 feat: language-agnostic analysis with config-driven registry and framework detection
Replace the TypeScript/JavaScript-biased analysis pipeline with a truly
language-agnostic system. The core architecture was already language-neutral
(graph schema, dashboard, search) — the bias lived in agent prompts,
tree-sitter plugin, and language-lesson system.

Core changes:
- LanguageConfig + FrameworkConfig types with Zod validation
- LanguageRegistry (12 languages) and FrameworkRegistry (10 frameworks)
- Config-driven TreeSitterPlugin replacing hardcoded TS/JS grammars
- PluginRegistry now delegates to LanguageRegistry for extension mapping
- Language-lesson system uses config for display names and concepts

Prompt system:
- SKILL.md generalized: dynamic injection of language snippets and
  framework addendums instead of hardcoded if/else conditionals
- 12 language prompt snippets (languages/*.md) with concepts, patterns,
  frameworks per language
- 10 framework addendums (frameworks/*.md) with canonical file roles,
  edge patterns, architectural layers — Django/FastAPI/Flask preserved
  and split, plus React/Next.js/Express/Vue/Spring/Rails/Gin added
- Extended entry points, directory patterns, and test patterns across
  all 12 language ecosystems in base prompts
2026-03-23 12:35:09 +05:30

2.3 KiB

JavaScript Language Prompt Snippet

Key Concepts

  • Closures: Functions that capture variables from their enclosing lexical scope
  • Prototypes: Prototype chain-based inheritance underlying all JavaScript objects
  • Promises: Asynchronous value containers enabling .then() chaining and async/await
  • Event Loop: Single-threaded concurrency model with microtask and macrotask queues
  • Destructuring: Extract values from objects and arrays into distinct variables
  • Spread/Rest Operators: ... for expanding iterables or collecting remaining arguments
  • Proxies: Meta-programming construct to intercept and customize object operations
  • Generators: Functions using function* and yield for lazy iteration
  • Symbol: Unique, immutable primitive used for non-string property keys
  • WeakMap/WeakSet: Collections with weakly-held keys allowing garbage collection
  • Modules (ESM vs CJS): ES Modules use import/export; CommonJS uses require/module.exports

Import Patterns

  • import { X } from 'module' — ESM named import
  • const X = require('module') — CommonJS require
  • import('module') — dynamic import returning a Promise (code splitting)
  • export default X / export { X } — ESM export forms

File Patterns

  • index.js — barrel file or directory entry point
  • .mjs — explicitly ES Module files
  • .cjs — explicitly CommonJS files
  • package.json "type" field — sets default module system ("module" or "commonjs")

Common Frameworks

  • React — Declarative UI with virtual DOM and component model
  • Vue — Progressive framework with reactivity system and single-file components
  • Express — Minimal and flexible Node.js web application framework
  • Next.js — React framework for production with hybrid rendering
  • Svelte — Compile-time framework that shifts work from runtime to build step

Example Language Notes

Closure captures outer config variable, providing encapsulated state without class overhead. The returned object's methods share access to the same config reference, forming a module pattern that was standard before ES Modules.

When encountering .mjs vs .cjs extensions, the module system is determined by extension regardless of the package.json type field — useful in mixed codebases.