grepai-languages
Supported programming languages in GrepAI. Use this skill to understand which languages can be indexed and traced.
What this skill does
# GrepAI Supported Languages
This skill covers the programming languages supported by GrepAI for indexing and call graph analysis.
## When to Use This Skill
- Checking if your language is supported
- Configuring language-specific settings
- Understanding trace capabilities per language
- Troubleshooting language-related issues
## Supported Languages Overview
GrepAI supports indexing for **all text-based files**, but has enhanced support for specific programming languages.
### Full Support (Index + Trace)
| Language | Extensions | Index | Trace |
|----------|------------|-------|-------|
| Go | `.go` | ✅ | ✅ |
| JavaScript | `.js`, `.jsx` | ✅ | ✅ |
| TypeScript | `.ts`, `.tsx` | ✅ | ✅ |
| Python | `.py` | ✅ | ✅ |
| PHP | `.php` | ✅ | ✅ |
| C | `.c`, `.h` | ✅ | ✅ |
| C++ | `.cpp`, `.hpp`, `.cc`, `.cxx`, `.hh` | ✅ | ✅ |
| Rust | `.rs` | ✅ | ✅ |
| Zig | `.zig` | ✅ | ✅ |
| C# | `.cs` | ✅ | ✅ |
| Java | `.java` | ✅ | ✅ |
| Pascal/Delphi | `.pas`, `.dpr` | ✅ | ✅ |
### Index Only (No Trace)
| Language | Extensions | Index | Trace |
|----------|------------|-------|-------|
| Ruby | `.rb` | ✅ | ❌ |
| Swift | `.swift` | ✅ | ❌ |
| Kotlin | `.kt`, `.kts` | ✅ | ❌ |
| Scala | `.scala` | ✅ | ❌ |
| Lua | `.lua` | ✅ | ❌ |
| Shell | `.sh`, `.bash`, `.zsh` | ✅ | ❌ |
| SQL | `.sql` | ✅ | ❌ |
| HTML | `.html`, `.htm` | ✅ | ❌ |
| CSS | `.css`, `.scss`, `.less` | ✅ | ❌ |
| Markdown | `.md`, `.mdx` | ✅ | ❌ |
| YAML | `.yaml`, `.yml` | ✅ | ❌ |
| JSON | `.json` | ✅ | ❌ |
| TOML | `.toml` | ✅ | ❌ |
| XML | `.xml` | ✅ | ❌ |
## Language Configuration
### Enabling/Disabling Languages for Trace
```yaml
# .grepai/config.yaml
trace:
enabled_languages:
- .go
- .js
- .ts
- .jsx
- .tsx
- .py
- .php
- .rs
- .c
- .cpp
- .cs
- .java
```
### Excluding Certain Extensions
```yaml
trace:
enabled_languages:
- .go
# Exclude JavaScript intentionally
# - .js
exclude_patterns:
- "*_test.go"
- "*.spec.ts"
```
## Language-Specific Tips
### Go
```yaml
trace:
enabled_languages:
- .go
exclude_patterns:
- "*_test.go"
- "mock_*.go"
- "*_mock.go"
```
**Trace accuracy:** Excellent. Go's explicit syntax makes tracing very reliable.
### JavaScript/TypeScript
```yaml
trace:
enabled_languages:
- .js
- .jsx
- .ts
- .tsx
exclude_patterns:
- "*.test.js"
- "*.spec.ts"
- "*.d.ts" # Type declarations
```
**Trace accuracy:** Good. Some dynamic patterns may be missed.
### Python
```yaml
trace:
enabled_languages:
- .py
exclude_patterns:
- "test_*.py"
- "*_test.py"
- "conftest.py"
```
**Trace accuracy:** Good. Dynamic imports and decorators may be missed.
### C/C++
```yaml
trace:
enabled_languages:
- .c
- .h
- .cpp
- .hpp
- .cc
- .cxx
exclude_patterns:
- "*_test.cpp"
```
**Trace accuracy:** Good. Macros and templates may affect accuracy.
### Rust
```yaml
trace:
enabled_languages:
- .rs
exclude_patterns:
- "**/tests/**"
- "**/benches/**"
```
**Trace accuracy:** Excellent. Rust's explicit syntax aids accurate tracing.
### PHP
```yaml
trace:
enabled_languages:
- .php
exclude_patterns:
- "*Test.php"
- "**/tests/**"
```
**Trace accuracy:** Good. Magic methods may not be fully traced.
### Java
```yaml
trace:
enabled_languages:
- .java
exclude_patterns:
- "*Test.java"
- "**/test/**"
```
**Trace accuracy:** Good. Reflection-based calls may be missed.
### C#
```yaml
trace:
enabled_languages:
- .cs
exclude_patterns:
- "*Tests.cs"
- "**/Tests/**"
```
**Trace accuracy:** Good. Delegates and events may be partially traced.
## Multi-Language Projects
For projects with multiple languages:
```yaml
trace:
enabled_languages:
# Backend (Go)
- .go
# Frontend (TypeScript)
- .ts
- .tsx
# Shared (SQL, etc.)
- .sql # Index only
exclude_patterns:
- "*_test.go"
- "*.spec.ts"
```
## Index vs Trace Explained
### Index (Semantic Search)
- Works on **any text file**
- Code is chunked and embedded
- Enables semantic search
- No language-specific parsing required
### Trace (Call Graphs)
- Requires **language-specific parsing**
- Extracts function definitions and calls
- Builds caller/callee relationships
- Uses regex (fast) or tree-sitter (precise)
## Trace Modes by Language
| Language | Fast Mode | Precise Mode |
|----------|-----------|--------------|
| Go | ✅ | ✅ |
| JavaScript | ✅ | ✅ |
| TypeScript | ✅ | ✅ |
| Python | ✅ | ✅ |
| PHP | ✅ | ✅ |
| C/C++ | ✅ | ✅ |
| Rust | ✅ | ✅ |
| Zig | ✅ | ✅ |
| C# | ✅ | ✅ |
| Java | ✅ | ✅ |
| Pascal | ✅ | ⚠️ Limited |
## Adding Custom Extensions
If you have non-standard extensions, they'll be indexed but not traced:
```yaml
# Custom extension files will be indexed
ignore:
# Only add patterns for files you DON'T want indexed
- "*.generated.go"
```
## File Type Detection
GrepAI uses file extensions for detection. It does NOT use:
- Shebangs (`#!/usr/bin/env python`)
- File content analysis
- .editorconfig
## Unsupported Languages (Index Works, No Trace)
These languages can be indexed for semantic search but don't have trace support:
- Ruby
- Swift
- Kotlin
- Scala
- Elixir
- Clojure
- Haskell
- OCaml
- F#
- Erlang
- R
- Julia
- Perl
- Groovy
**Workaround:** Use semantic search to find code, then manually trace.
## Best Practices
1. **Enable only needed languages:** Faster trace building
2. **Exclude test files:** Cleaner trace results
3. **Use precise mode for accuracy:** When trace results seem incomplete
4. **Match your tech stack:** Configure based on your actual languages
## Checking Language Support
```bash
# Check what's being indexed
grepai status
# Will show file counts by type
```
## Common Issues
❌ **Problem:** Files not being indexed
✅ **Solution:** Check file isn't in ignore patterns
❌ **Problem:** Trace missing for language
✅ **Solution:** Ensure language is in `enabled_languages`
❌ **Problem:** Wrong language detected
✅ **Solution:** GrepAI uses extensions only; rename files if needed
## Output Format
Language support summary:
```
📚 GrepAI Language Support
Full Support (Index + Trace):
- Go (.go)
- JavaScript (.js, .jsx)
- TypeScript (.ts, .tsx)
- Python (.py)
- PHP (.php)
- C/C++ (.c, .cpp, .h, .hpp)
- Rust (.rs)
- Zig (.zig)
- C# (.cs)
- Java (.java)
- Pascal (.pas, .dpr)
Index Only (No Trace):
- Ruby, Swift, Kotlin, Scala
- Shell scripts, SQL, HTML, CSS
- Config files (YAML, JSON, TOML)
- Documentation (Markdown)
Your config enables trace for:
- .go, .js, .ts, .py
```
Related in General
modeling-omnistudio-epc-catalog
IncludedSalesforce Industries CME EPC product-modeling skill for Product2-based catalog creation. Use when creating EPC products, configuring product attributes, building offer bundles with Product Child Items, or reviewing EPC DataPack JSON metadata for product catalog changes. TRIGGER when: user creates or updates Product2 EPC records, AttributeAssignment payloads, AttributeMetadata/AttributeDefaultValues, Offer bundles, or ProductChildItem relationships. DO NOT TRIGGER when: designing OmniScripts/FlexCards/Integration Procedures (use building-omnistudio-omniscript, building-omnistudio-flexcard, or building-omnistudio-integration-procedure), implementing Apex business logic (use generating-apex), or troubleshooting deployment pipelines (use deploying-metadata).
relationship-science-coach
IncludedUse this skill for direct, practical adult relationship coaching: couples conflict, repair, trust, marriage, dating, flirting, attachment patterns, emotional connection, sex, desire differences, eroticism, kink negotiation, affection, love languages, breakups, and long-term passion. Draw on Gottman, EFT and Hold Me Tight, attachment science, modern sex research, Perel, Nagoski, Kerner, Schnarch, Love and Stosny, and flexible love-language tools. Be concrete and low-hedge. Redirect only for imminent danger, abuse, coercive control, minors, non-consent, self-harm, stalking, or medical/legal/psychiatric decisions.
building-sf-integrations
IncludedSalesforce integration architecture and runtime plumbing with 120-point scoring. Use this skill to set up Named Credentials, External Credentials, External Services, REST/SOAP callout patterns, Platform Events, and Change Data Capture. TRIGGER when: user sets up Named Credentials, External Services, REST/SOAP callouts, Platform Events, CDC, or touches .namedCredential-meta.xml files. DO NOT TRIGGER when: Connected App/OAuth config (use configuring-connected-apps), Apex-only logic (use generating-apex), or data import/export (use handling-sf-data).
venue-templates
IncludedAccess comprehensive LaTeX templates, formatting requirements, and submission guidelines for major scientific publication venues (Nature, Science, PLOS, IEEE, ACM), academic conferences (NeurIPS, ICML, CVPR, CHI), research posters, and grant proposals (NSF, NIH, DOE, DARPA). This skill should be used when preparing manuscripts for journal submission, conference papers, research posters, or grant proposals and need venue-specific formatting requirements and templates.
let-fate-decide
IncludedDraws the 12 Houses of the Zodiac Tarot spread to inject entropy into planning when prompts are vague, ambiguous, or casually delegated. Interprets the spread to guide next steps. Use when the user says 'let fate decide', 'YOLO', 'whatever', 'idk', or other nonchalant phrases, makes Yu-Gi-Oh references, or when you are about to arbitrarily pick between multiple reasonable approaches. Prefer over ask-questions-if-underspecified when the user's tone is casual or playful rather than precision-seeking.
net-ops
IncludedCross-platform network troubleshooting (Windows, macOS, Linux) via local or remote shell. Use for: DNS broken, can't resolve hostnames, nslookup/dig works but apps fail, NRPT, WFP, scutil, /etc/resolver, systemd-resolved, /etc/resolv.conf, NetworkManager, VPN DNS leak residue (ProtonVPN/Mullvad/WireGuard/AnyConnect), AV/firewall blocking DNS or DoH, Tailscale DNS interaction, intermittent connectivity, remote diagnostics over SSH.