Files
claude-context-mcp/docs/dive-deep/file-inclusion-rules.md
ChengZi 643796a0d3 Add and optimize docs
Signed-off-by: ChengZi <chen.zhang@zilliz.com>
2025-08-21 21:05:24 +08:00

3.7 KiB

File Inclusion & Exclusion Rules

This document explains how Claude Context determines which files to include in the indexing process and which files to exclude.

Overview

Claude Context uses a comprehensive rule system that combines multiple sources of file extensions and ignore patterns to determine what gets indexed.

The Core Rule

Final Files = (All Supported Extensions) - (All Ignore Patterns)

Where:

  • All Supported Extensions = Default + MCP Custom + Environment Variable Extensions
  • All Ignore Patterns = Default + MCP Custom + Environment Variable + .gitignore + .xxxignore + Global .contextignore

File Inclusion Flow

File Inclusion Flow

The diagram above shows how different sources contribute to the final file selection process.

Extension Sources (Additive)

All extension sources are combined together:

1. Default Extensions

Built-in supported file extensions including:

  • Programming languages: .ts, .tsx, .js, .jsx, .py, .java, .cpp, .c, .h, .hpp, .cs, .go, .rs, .php, .rb, .swift, .kt, .scala, .m, .mm
  • Documentation: .md, .markdown, .ipynb

For more details, see DEFAULT_SUPPORTED_EXTENSIONS in the context.ts file.

2. MCP Custom Extensions

Additional extensions passed dynamically via MCP customExtensions parameter:

{
  "customExtensions": [".vue", ".svelte", ".astro"]
}

Just dynamically tell the agent what extensions you want to index to invoke this parameter. For example:

"Index this codebase, and include .vue, .svelte, .astro files"

3. Environment Variable Extensions

Extensions from CUSTOM_EXTENSIONS environment variable:

export CUSTOM_EXTENSIONS=".vue,.svelte,.astro"

See Environment Variables for more details about how to set environment variables.

Ignore Pattern Sources (Additive)

All ignore pattern sources are combined together:

1. Default Ignore Patterns

Built-in patterns for common files/directories to exclude:

  • Build outputs: node_modules/**, dist/**, build/**, out/**, target/**, coverage/**, .nyc_output/**
  • IDE files: .vscode/**, .idea/**, *.swp, *.swo
  • Version control: .git/**, .svn/**, .hg/**
  • Cache directories: .cache/**, __pycache__/**, .pytest_cache/**
  • Logs and temporary: logs/**, tmp/**, temp/**, *.log
  • Environment files: .env, .env.*, *.local
  • Minified files: *.min.js, *.min.css, *.min.map, *.bundle.js, *.bundle.css, *.chunk.js, *.vendor.js, *.polyfills.js, *.runtime.js, *.map

For more details, see DEFAULT_IGNORE_PATTERNS in the context.ts file.

2. MCP Custom Ignore Patterns

Additional patterns passed dynamically via MCP ignorePatterns parameter:

{
  "ignorePatterns": ["temp/**", "*.backup", "private/**"]
}

Just dynamically tell the agent what patterns you want to exclude to invoke this parameter. For example:

"Index this codebase, and exclude temp/**, *.backup, private/** files"

3. Environment Variable Ignore Patterns

Patterns from CUSTOM_IGNORE_PATTERNS environment variable:

export CUSTOM_IGNORE_PATTERNS="temp/**,*.backup,private/**"

See Environment Variables for more details about how to set environment variables.

4. .gitignore Files

Standard Git ignore patterns in codebase root.

5. .xxxignore Files

Any file in codebase root matching pattern .xxxignore:

  • .cursorignore
  • .codeiumignore
  • .contextignore
  • etc.

6. Global .contextignore

User-wide patterns in ~/.context/.contextignore.