# Programming Languages and Frameworks Understand Anything Supports: Complete Guide

> Discover the extensive programming languages and frameworks supported by Understand Anything. Explore our complete guide to find JavaScript Python Java React Next.js Django and more.

- Repository: [Egonex/Understand-Anything](https://github.com/Egonex-AI/Understand-Anything)
- Tags: getting-started
- Published: 2026-06-27

---

**Understand Anything supports 23 programming languages including JavaScript, TypeScript, Python, Java, Go, and Rust, alongside 10 frameworks such as React, Next.js, Django, and Express, using data-driven prompt files located in `understand-anything-plugin/skills/understand/`.**

The **Egonex-AI/Understand-Anything** repository provides an AI-powered codebase analysis engine designed to comprehend any software project. While the system can process arbitrary code, it ships with explicit **knowledge-base prompts** for specific programming languages and web frameworks that enhance the accuracy of its knowledge graph generation and architectural analysis.

## Supported Programming Languages

Understand Anything recognizes 23 distinct languages through dedicated prompt files stored in `understand-anything-plugin/skills/understand/languages/`. Each `*.md` file contains language-specific concepts, import patterns, and structural conventions that guide the LLM during analysis.

| Language | Prompt File |
|----------|-------------|
| **JavaScript** | [`javascript.md`](https://github.com/Egonex-AI/Understand-Anything/blob/main/javascript.md) |
| **TypeScript** | [`typescript.md`](https://github.com/Egonex-AI/Understand-Anything/blob/main/typescript.md) |
| **Python** | [`python.md`](https://github.com/Egonex-AI/Understand-Anything/blob/main/python.md) |
| **Java** | [`java.md`](https://github.com/Egonex-AI/Understand-Anything/blob/main/java.md) |
| **Go** | [`go.md`](https://github.com/Egonex-AI/Understand-Anything/blob/main/go.md) |
| **Rust** | [`rust.md`](https://github.com/Egonex-AI/Understand-Anything/blob/main/rust.md) |
| **C++** | [`cpp.md`](https://github.com/Egonex-AI/Understand-Anything/blob/main/cpp.md) |
| **C#** | [`csharp.md`](https://github.com/Egonex-AI/Understand-Anything/blob/main/csharp.md) |
| **Ruby** | [`ruby.md`](https://github.com/Egonex-AI/Understand-Anything/blob/main/ruby.md) |
| **PHP** | [`php.md`](https://github.com/Egonex-AI/Understand-Anything/blob/main/php.md) |
| **Kotlin** | [`kotlin.md`](https://github.com/Egonex-AI/Understand-Anything/blob/main/kotlin.md) |
| **Swift** | [`swift.md`](https://github.com/Egonex-AI/Understand-Anything/blob/main/swift.md) |
| **SQL** | [`sql.md`](https://github.com/Egonex-AI/Understand-Anything/blob/main/sql.md) |
| **GraphQL** | [`graphql.md`](https://github.com/Egonex-AI/Understand-Anything/blob/main/graphql.md) |
| **HTML** | [`html.md`](https://github.com/Egonex-AI/Understand-Anything/blob/main/html.md) |
| **CSS** | [`css.md`](https://github.com/Egonex-AI/Understand-Anything/blob/main/css.md) |
| **JSON** | [`json.md`](https://github.com/Egonex-AI/Understand-Anything/blob/main/json.md) |
| **YAML** | [`yaml.md`](https://github.com/Egonex-AI/Understand-Anything/blob/main/yaml.md) |
| **Dockerfile** | [`dockerfile.md`](https://github.com/Egonex-AI/Understand-Anything/blob/main/dockerfile.md) |
| **Markdown** | [`markdown.md`](https://github.com/Egonex-AI/Understand-Anything/blob/main/markdown.md) |
| **Protobuf** | [`protobuf.md`](https://github.com/Egonex-AI/Understand-Anything/blob/main/protobuf.md) |
| **Shell** (Bash) | [`shell.md`](https://github.com/Egonex-AI/Understand-Anything/blob/main/shell.md) |
| **Terraform** | [`terraform.md`](https://github.com/Egonex-AI/Understand-Anything/blob/main/terraform.md) |

The **project-scanner** agent automatically loads the appropriate prompt when it detects file extensions or configuration files (e.g., [`tsconfig.json`](https://github.com/Egonex-AI/Understand-Anything/blob/main/tsconfig.json) for TypeScript, [`pyproject.toml`](https://github.com/Egonex-AI/Understand-Anything/blob/main/pyproject.toml) for Python) above a frequency threshold.

## Supported Frameworks

Beyond core languages, Understand Anything includes **framework addenda** that enrich the knowledge graph with architectural patterns specific to popular web and backend frameworks. These reside in `understand-anything-plugin/skills/understand/frameworks/` and are appended to base prompts when framework-specific signatures are detected.

| Framework | Addendum File |
|-----------|---------------|
| **React** | [`react.md`](https://github.com/Egonex-AI/Understand-Anything/blob/main/react.md) |
| **Next.js** | [`nextjs.md`](https://github.com/Egonex-AI/Understand-Anything/blob/main/nextjs.md) |
| **Vue** | [`vue.md`](https://github.com/Egonex-AI/Understand-Anything/blob/main/vue.md) |
| **Angular** (via Spring patterns) | [`spring.md`](https://github.com/Egonex-AI/Understand-Anything/blob/main/spring.md) |
| **Express** | [`express.md`](https://github.com/Egonex-AI/Understand-Anything/blob/main/express.md) |
| **FastAPI** | [`fastapi.md`](https://github.com/Egonex-AI/Understand-Anything/blob/main/fastapi.md) |
| **Flask** | [`flask.md`](https://github.com/Egonex-AI/Understand-Anything/blob/main/flask.md) |
| **Django** | [`django.md`](https://github.com/Egonex-AI/Understand-Anything/blob/main/django.md) |
| **Gin** (Go) | [`gin.md`](https://github.com/Egonex-AI/Understand-Anything/blob/main/gin.md) |
| **Rails** | [`rails.md`](https://github.com/Egonex-AI/Understand-Anything/blob/main/rails.md) |

Each addendum provides **project-structure guides**, **canonical file roles**, and **layer assignment rules** that the `file-analyzer` and `architecture-analyzer` agents use to create framework-aware edges (e.g., React component composition → `contains` edges, Express route handlers → `serves` edges).

## How Language and Framework Detection Works

The detection pipeline operates through a four-step process orchestrated by the agent system:

1. **File System Scanning**: The **project-scanner** agent walks the repository (e.g., `src/**/*.js`, `app/**/*.py`) and builds a language frequency map based on extensions and configuration files.
2. **Language Prompt Loading**: When a language meets its detection threshold, the scanner loads the corresponding snippet (e.g., [`typescript.md`](https://github.com/Egonex-AI/Understand-Anything/blob/main/typescript.md)) from `understand-anything-plugin/skills/understand/languages/`.
3. **Framework Pattern Matching**: The scanner searches for dependency signatures, such as:
   - [`package.json`](https://github.com/Egonex-AI/Understand-Anything/blob/main/package.json) containing `"react"` or `"express"`
   - [`pom.xml`](https://github.com/Egonex-AI/Understand-Anything/blob/main/pom.xml) containing `<artifactId>spring-boot-starter</artifactId>`
   - `go.mod` importing `"github.com/gin-gonic/gin"`
4. **Prompt Augmentation**: If a framework is detected, its addendum is **appended** to the base prompts sent to the LLM for file analysis and architectural layering.

## Extending Support for New Technologies

Because the prompt system is **data-driven**, you can extend support without modifying core code. To add a new language, create a `*.md` file in `understand-anything-plugin/skills/understand/languages/`. To add a framework, create an addendum in `understand-anything-plugin/skills/understand/frameworks/`.

For example, to add **Svelte** support:

```markdown

# Svelte Framework Addendum

> Injected when a package.json contains "svelte"

## Svelte Project Structure

...

```

Place this file at [`understand-anything-plugin/skills/understand/frameworks/svelte.md`](https://github.com/Egonex-AI/Understand-Anything/blob/main/understand-anything-plugin/skills/understand/frameworks/svelte.md), and the **project-scanner** will automatically recognize Svelte projects during the next analysis run.

## Practical Usage Examples

### Analyze a Mixed-Language Repository

```bash

# Auto-detect all languages and frameworks

/understand

```

The scanner identifies all supported programming languages based on file extensions and configuration files, then applies the appropriate framework addenda automatically.

### Force Output Language

```bash
/understand --language zh

```

The `--language` flag forces the LLM to generate summaries in Chinese while still using the same underlying language and framework prompts for code analysis.

### Debug Detection Logic

```bash
/understand --debug

```

Debug output shows detection results:

```

Detected language: TypeScript (97%)
Detected framework: React

```

This confirms the system correctly identified the tech stack and will apply React-specific layer assignments (`layer:ui`, `layer:service`) as defined in [`frameworks/react.md`](https://github.com/Egonex-AI/Understand-Anything/blob/main/frameworks/react.md).

## Summary

- **23 programming languages** are supported out-of-the-box via prompt files in `understand-anything-plugin/skills/understand/languages/`, including JavaScript, Python, Go, Rust, and SQL.
- **10 frameworks** including React, Django, Express, and Gin are supported through addenda in `understand-anything-plugin/skills/understand/frameworks/`.
- **Automatic detection** occurs via the `project-scanner` agent, which matches file patterns and dependencies to load the correct prompts.
- **Extensible architecture** allows adding new languages or frameworks by simply creating markdown files in the appropriate directories.

## Frequently Asked Questions

### What programming languages does Understand Anything support by default?

Understand Anything ships with dedicated prompt files for 23 languages, including all major web languages (JavaScript, TypeScript, Python, Java, Go, Rust), data languages (SQL, GraphQL), configuration formats (JSON, YAML, Terraform), and markup languages (HTML, CSS, Markdown). The full list is maintained in `understand-anything-plugin/skills/understand/languages/`.

### How does Understand Anything detect frameworks like React or Django?

The **project-scanner** agent examines dependency files (e.g., [`package.json`](https://github.com/Egonex-AI/Understand-Anything/blob/main/package.json) for React, [`requirements.txt`](https://github.com/Egonex-AI/Understand-Anything/blob/main/requirements.txt) or [`pyproject.toml`](https://github.com/Egonex-AI/Understand-Anything/blob/main/pyproject.toml) for Django, [`pom.xml`](https://github.com/Egonex-AI/Understand-Anything/blob/main/pom.xml) for Spring) to identify framework signatures. Upon detection, it injects the corresponding framework addendum (e.g., [`react.md`](https://github.com/Egonex-AI/Understand-Anything/blob/main/react.md) or [`django.md`](https://github.com/Egonex-AI/Understand-Anything/blob/main/django.md)) into the LLM prompts, enabling framework-specific architectural analysis.

### Can I add support for a programming language not included in the default installation?

Yes. The system is data-driven: create a new `*.md` file in `understand-anything-plugin/skills/understand/languages/` following the conventions of existing files like [`python.md`](https://github.com/Egonex-AI/Understand-Anything/blob/main/python.md) or [`go.md`](https://github.com/Egonex-AI/Understand-Anything/blob/main/go.md). The **project-scanner** agent automatically picks up new language files on the next run without requiring code changes.

### Does Understand Anything handle monorepos with multiple languages?

Yes. The scanner builds a frequency map of all languages present in the repository. It loads the appropriate prompts for each detected language and can apply multiple framework addenda simultaneously (e.g., React for the frontend and Express for the backend), making it suitable for analyzing complex, polyglot codebases.