# 目的と制約
[English](goals_and_condition.en.md)
## 目的
`asrch` は、コーディングエージェント向けの安全な検索 CLI と、それを使うための Skills を提供するプロジェクトである。
エージェントが未知のコードベースを探索するとき、広い `grep` / `ripgrep` の結果を大量にコンテキストへ投入すると、重要でない出力が token と rate-limit 予算を消費する。`asrch` は、この問題を避けるために、検索結果を段階的かつ制限付きで提示する。
## 中核となる考え方
CLI は `ripgrep` または同等のバックエンドを使ってよい。ただし、生の検索結果を無制限に表示してはならない。
探索は次のような bounded workflow として行う。
1. `survey` で候補語と候補パスを比較する。
2. `scout` で単一クエリの分布を確認する。
3. ファイルを絞った後に `sample` で近接一致クラスタの範囲だけを見る。
4. 必要な場合だけ `show` で小さな snippet を読む。
## 制約
- 最初のバージョンは小さく、堅牢で、検証しやすく保つ。
- 初期実装では、完全な検索エンジン、LSP server、embedding index、MCP server を作らない。
- 行数・バイト数の hard cap ではなく、構造的に bounded な薄い Rust CLI around `ripgrep` を優先する。
- `.git`、`target`、ログ、JSONL/XML、生成物、scratch 領域などのノイズを既定で除外する。
- 全コマンドはコーディングエージェントにとって安全でなければならない。出力は bounded、挙動は決定的、破壊的操作はなく、検索が広すぎる場合は明確に絞り込みを促す。
- Skills / `SKILL.md` を含め、エージェントが広い raw `rg` ではなく `survey` → `scout` → `sample` → `show` の workflow を使えるようにする。
- 意図した workflow を検証できる基本的なテストと例を含める。
## 非目標
- 人間向けの汎用検索 UI を作ること。
- `ripgrep` の全機能を再実装すること。
- 既定除外や出力上限を簡単に無効化できるようにすること。
- 任意の正規表現 OR を完全に解析し、検索計画へ自動変換すること。