mcpField
G
grepai-ignore-patterns

grepai-ignore-patterns

github.com/yoanbernabeu開発20685 回インストール38 週間前に更新
リポジトリ

grepai-ignore-patterns について

grepai-ignore-patterns は、GrepAI がインデックス化するファイルやディレクトリを設定する方法を解説します。テストや生成ファイル、依存関係を除外し、コード検索の対象を調整したい開発者向けです。

主な機能

  1. 01設定ファイルで除外ルールを指定
  2. 02ディレクトリ、ファイル、glob パターンに対応
  3. 03.gitignore を自動的に適用
  4. 04除外の代わりに検索ペナルティを設定
  5. 05ルール変更後に再インデックス化

活用シーン

  1. 01テストを除外して本番コードに集中
  2. 02生成ファイルやサードパーティ依存関係を除外
  3. 03ビルド成果物を省いてインデックスを縮小

インストール

コマンドをコピーしてターミナルで実行します。

$npx skills add https://github.com/yoanbernabeu/grepai-skills --skill grepai-ignore-patterns

インストール後、Claude Code で/grepai-ignore-patternsを入力して読み込まれたか確認します。

詳細

GrepAI の除外パターン

このスキルでは、GrepAI のインデックス作成からファイルやディレクトリを除外するための、除外パターンの設定方法を説明します。

このスキルを使用する場面

  • テストファイルを検索結果から除外する
  • 生成コードやベンダーコードを無視する
  • 不要なファイルを除外してインデックスのサイズを削減する
  • GrepAI がインデックスを作成するファイルをカスタマイズする

除外パターンの仕組み

GrepAI では、次の 2 つのソースから除外パターンを取得します。

  1. .grepai/config.yaml - 定義したカスタムパターン
  2. .gitignore - 自動的に適用されます

設定場所

# .grepai/config.yaml
ignore:
  - pattern1
  - pattern2

パターン構文

ディレクトリパターン
ignore:
  # Exact directory name (matches anywhere)
  - node_modules
  - vendor
  - __pycache__

  # With trailing slash (explicit directory)
  - dist/
  - build/
  - coverage/
ファイルパターン
ignore:
  # Exact filename
  - package-lock.json
  - yarn.lock

  # Wildcard patterns
  - "*.min.js"
  - "*.min.css"
  - "*.map"
  - "*.lock"
パスパターン
ignore:
  # Paths containing substring
  - /tests/
  - /spec/
  - /__tests__/

  # Specific paths
  - src/generated/
  - api/swagger/
Glob パターン
ignore:
  # Double star (recursive)
  - "**/test/**"
  - "**/mock/**"

  # Single star (single level)
  - "*.test.js"
  - "*.spec.ts"
  - "*_test.go"

デフォルトの除外パターン

GrepAI のデフォルト設定には、次のパターンが含まれています。

ignore:
  # Version control
  - .git
  - .svn
  - .hg

  # GrepAI itself
  - .grepai

  # Package managers
  - node_modules
  - vendor
  - .npm
  - .yarn

  # Build outputs
  - target
  - dist
  - build
  - out

  # Cache directories
  - __pycache__
  - .pytest_cache
  - .mypy_cache
  - .cache

  # Framework outputs
  - .next
  - .nuxt
  - .output

よく使われる除外設定

JavaScript/TypeScript プロジェクト
ignore:
  - node_modules
  - dist
  - build
  - coverage
  - .nyc_output
  - "*.min.js"
  - "*.bundle.js"
  - "*.map"
  - package-lock.json
  - yarn.lock
  - pnpm-lock.yaml
Go プロジェクト
ignore:
  - vendor
  - bin
  - "*.pb.go"       # Protobuf generated
  - "*_mock.go"     # Mocks
  - "mocks/"
  - go.sum
Python プロジェクト
ignore:
  - __pycache__
  - .pytest_cache
  - .mypy_cache
  - .venv
  - venv
  - env
  - "*.pyc"
  - "*.pyo"
  - .eggs
  - "*.egg-info"
  - dist
  - build
Rust プロジェクト
ignore:
  - target
  - Cargo.lock
  - "*.rlib"
Java/Kotlin プロジェクト
ignore:
  - target
  - build
  - .gradle
  - "*.class"
  - "*.jar"
  - "*.war"
モノレポ
ignore:
  # Common
  - node_modules
  - dist
  - build
  - coverage

  # Specific packages to exclude
  - packages/legacy/
  - packages/deprecated/

  # Generated
  - "**/generated/**"
  - "**/__generated__/**"

テストファイルの除外

本番コードに検索対象を絞るには、次のようにします。

ignore:
  # Test directories
  - tests/
  - test/
  - __tests__/
  - spec/

  # Test files by pattern
  - "*.test.js"
  - "*.test.ts"
  - "*.spec.js"
  - "*.spec.ts"
  - "*_test.go"
  - "test_*.py"
  - "*_test.py"

別の方法: テストを除外せず、検索ブーストを使ってペナルティを与えることもできます。

search:
  boost:
    penalties:
      - pattern: /tests/
        factor: 0.5
      - pattern: _test.
        factor: 0.5

生成コードの除外

ignore:
  # Generated markers
  - "**/generated/**"
  - "*.generated.*"
  - "*.gen.*"

  # Specific generators
  - "*.pb.go"           # Protobuf
  - "*.graphql.ts"      # GraphQL codegen
  - "*.d.ts"            # TypeScript declarations
  - "swagger_*.go"      # Swagger
  - "openapi_*.ts"      # OpenAPI

ドキュメントの除外

ignore:
  - docs/
  - documentation/
  - "*.md"
  - "*.mdx"
  - "*.rst"

除外パターンの確認

インデックス作成の対象を確認します。

# Check index status
grepai status

# Output shows file count
# If too high, add more ignore patterns

よくある問題

❌ 問題: インデックスが大きすぎる
✅ 解決策: 依存関係や生成ファイルに対する除外パターンを追加します

❌ 問題: 検索結果にベンダーコードやテストコードが含まれる
✅ 解決策: それらを除外するか、ブーストのペナルティを使用します

❌ 問題: パターンが機能しない
✅ 解決策: 構文を確認します。特殊文字を含むパターンには引用符を使用します。

ignore:
  - "*.min.js"  # Correct
  - *.min.js    # May cause YAML parsing issues

❌ 問題: 以前に除外したファイルを含める必要がある
✅ 解決策: 除外リストから削除し、grepai watch を再実行します

ベストプラクティス

  1. デフォルト設定から始める: 必要に応じてパターンを追加します
  2. 依存関係を除外する: node_modules、vendor などは必ず無視します
  3. ビルド出力を除外する: dist、build、target
  4. ロックファイルを除外する: サイズが大きく、検索に役立ちません
  5. ブーストと除外を検討する: テストファイルは除外せず、ペナルティを与えます
  6. 特殊文字を引用符で囲む: *.min.js ではなく "*.min.js"

変更後の再インデックス作成

除外パターンを変更した後は、次のようにします。

# Stop existing daemon
grepai watch --stop

# Clear index and restart
rm .grepai/index.gob
grepai watch

出力形式

除外パターンを設定した後は、次のようになります。

✅ Ignore Patterns Configured

   Patterns: 15 configured

   Categories:
   - Directories: node_modules, vendor, dist, build
   - File types: *.min.js, *.map, *.lock
   - Paths: /tests/, /docs/

   Also respecting: .gitignore

   Run 'grepai watch' to re-index with new patterns.

コメント