KASU
AI駆動開発におけるコードベースの抽象化と管理の支援ツール
主な機能
- 複数ファイルの統合 - ディレクトリ内のテキストファイルを1ファイルに結合
- パス付きヘッダー - 各ファイルの内容をパス付きで区切り
- 出力形式 - プレーンテキストまたはMarkdown形式
- フィルタリング - Globパターン、除外パターン、.gitignore対応
- ディレクトリツリー表示 - プロジェクト構造の可視化
- ファイル一覧表示 - 対象ファイルのリストアップ
- 部分的な内容抽出 - 各ファイルの先頭/末尾N行のみ抽出
- 機密情報のサニタイズ - IP、メール、APIキー、クラウド認証、JWT、接続情報などの自動置換
- 設定ファイル対応 - コマンドラインオプションをYAMLで指定可能
- 表示ルート指定 - パス表示の基準ルートを指定可能
- 周辺抽出(grep) - 検索語にヒットした周辺行のみ抽出
- アウトライン抽出 - 関数/クラス/見出しなどのアウトラインを抽出
インストール
-
pypiからインストール
pip install kasu
-
ソースからインストール
git clone git@github.com:remokasu/kasu.git cd kasu pip install -e .
クイックスタート
基本的な使い方(カレントディレクトリを結合)
ks -i . -o output.txt
Markdown形式で出力
ks -i . -o output.md --format md
Pythonファイルだけを対象に
ks -i . -o output.md -g "*.py" --format md
使い方
指定したディレクトリ以下のテキストファイルを結合して1ファイルに出力
-
プレーンテキストで出力
ks -i [DIR] -o [FILE]
-
Markdown形式で出力
ks -i [DIR] -o [FILE.md] --format md
または
ks -i [DIR] -o [FILE.md] -f md
-
標準出力に出力
ks -i [DIR] --stdout
tree 情報を出力
-
標準出力に出力
ks -i [DIR] --tree
または
ks -i [DIR] -t
-
-oで指定したファイルの先頭に出力ks -i [DIR] -o [FILE] --tree
または
ks -i [DIR] -o [FILE] -t
- i で指定したディレクトリ以下のファイル内容が続きます。
-
-oで指定したファイルにtree情報のみを出力ks -i [DIR] -o [FILE] --tree --no-merge
--no-mergeを指定することで、-iで指定したディレクトリ以下のファイル内容は出力されません。 -
出力例
Auto-detected and using: ./.gitignore Scanning files... Found 5 files Ignored by patterns: 2 files/directories Directory tree: example-project/ ├── docs/ │ └── README.md ├── src/ │ ├── config.json │ ├── main.py │ └── utils.py └── tests/ └── test_main.py
表示ルートを指定
--root を指定すると、tree / list / ファイルヘッダーのパス表示が指定ルート基準になります。
ks -i ./src -o output.txt --root .
検索語の周辺だけ抽出(grep)
--grep で検索語にヒットした前後行だけを出力します。必要に応じて --context を広げます。
ks -i . -o output.txt --grep "JWT" --context 3
複数指定:
ks -i . -o output.txt --grep "JWT" --grep "OAuth"
正規表現で検索する場合:
ks -i . -o output.txt --grep "token_[0-9a-f]{32}" --regex
大文字小文字を無視する場合:
ks -i . -o output.txt --grep "jwt" --ignore-case
アウトライン抽出
関数/クラス/見出しなどを抽出して、コードの全体像を素早く把握できます。
ks -i . -o output.txt --outline
追加パターンを指定したい場合(YAML):
ks -i . -o output.txt --outline --outline-config outline.yml
outline.yml 例:
patterns:
python:
- '^class\s+\w+'
- '^def\s+\w+'
all:
- '^TODO'
デフォルトのパターン定義は outline.default.yml にあります(必要ならコピーして編集して --outline-config で指定)。
ファイル一覧を標準出力に出力
-
標準出力に出力
ks -i [DIR] --list
または
ks -i [DIR] -l
-
-oで指定したファイルの先頭に出力ks -i [DIR] -o [FILE] --list
または
ks -i [DIR] -o [FILE] -l
-iで指定したディレクトリ以下のファイル内容が続きます。 -
-oで指定したファイルにファイル一覧のみを出力ks -i [DIR] -o [FILE] --list --no-merge
--no-mergeを指定することで、-iで指定したディレクトリ以下のファイル内容は出力されません。 -
出力例
Auto-detected and using: ./.gitignore Scanning files... Found 5 files Ignored by patterns: 2 files/directories File list: tests/test_main.py src/utils.py src/config.json src/main.py docs/README.md
条件を指定して対象ファイルを絞り込み
-
-gで含めるファイルパターンを指定します。例:
-g "*.py"で拡張子が.pyのファイルのみ対象にします。ks -i [DIR] -o [FILE] -g "*.py"
複数指定
ks -i [DIR] -o [FILE] -g "*.py" "*.md"
対象から特定のファイルを除外
-
-iで指定したディレクトリ以下に.gitignoreがあれば自動的に.gitignoreの内容を除外します。 -
--ignoreで、除去対象を記載したファイルを指定できます。このファイルは.gitignoreと同じ書き方ができます。
--ignoreを指定した時は.gitignoreは無視されます。 -
--no-auto-ignoreで.gitignoreの自動検出を無効化できます。 -
-xで指定したパターンを除外します。もし対象に.gitignoreがあり、かつREADME.mdを除外したい場合、以下のようにします。
ks -i [DIR] -o [FILE] -x "README.md"
サニタイズ
-
コンフィデンシャルな情報を自動的に検出して置換します。
-
ただし、確実に検出できるわけではありません。
-
--sanitizeを指定します。ks -i [DIR] -o [FILE] --sanitize
または
ks -i [DIR] -o [FILE] -s
-
検出するパターン
-
APIキー: api_key=, apikey=, api-secret= などの後に続く20文字以上の英数字を検出
置換形式: [REDACTED_API_KEY_1], [REDACTED_API_KEY_2], ... -
パスワード: password=, passwd=, pwd= などの後に続く6文字以上の値を検出
置換形式: [REDACTED_PASSWORD_1], [REDACTED_PASSWORD_2], ... -
AWSキー - AKIA で始まる16文字の英数字を検出
置換形式: [REDACTED_AWS_KEY_1], [REDACTED_AWS_KEY_2], ... -
メールアドレス - 標準的なメール形式を検出
置換形式: [REDACTED_EMAIL_1], [REDACTED_EMAIL_2], ... -
IPアドレス - パブリックIPのみ検出(ローカルIP 127., 192.168., 10. は除外)
置換形式: [REDACTED_IP_1], [REDACTED_IP_2], ... -
秘密鍵 - PEM形式の秘密鍵全体を検出
置換形式: [REDACTED_PRIVATE_KEY]
-
置換パターンを指定
パターンファイルを指定して、カスタム置換を行うことができます。
-
パターンファイルフォーマット
-
pattern_file.txt(名前は任意)
tanaka.ichiro@group.go.jp hoge@hoge.com 田中一郎 ほげ山ほげ男 Company Inc. ほげほげ会社 -
左側が置換対象、右側が置換後の文字列です。上記の例では以下の置換が行われます。
- tanaka.ichiro@group.go.jp → hoge@hoge.com
- 田中一郎 → ほげ山ほげ男
- Company Inc. → ほげほげ会社
-
-
指定方法
ks -i [DIR] -o [FILE] --replace [PATTERN_FILE]
または
ks -i [DIR] -o [FILE] -r [PATTERN_FILE]
各ファイルの先頭/末尾N行のみ出力
- 先頭N行
ks -i [DIR] -o [FILE] --head N
- 末尾N行
ks -i [DIR] -o [FILE] --tail N
設定ファイルを指定
-
--config [FILE], または-c [FILE]で設定ファイルを指定できます。ks --config config.yaml
-
config.yaml
input: . output: output.md format: md glob: - "*.py" - "*.md" exclude: - "tests/" - "docs/" head: 50 sanitize: true
コマンドラインオプション一覧
| オプション | 短縮形 | 説明 |
|---|---|---|
--input DIR |
-i |
入力ディレクトリ(デフォルト: .) |
--output FILE |
-o |
出力ファイルパス |
--stdout |
- | 標準出力に出力 |
--format FORMAT |
-f |
出力形式(text/markdown/md) |
--glob PATTERN |
-g |
含めるファイルパターン |
--exclude PATTERN |
-x |
除外パターン |
--ignore FILE |
- | ignoreファイルを指定 |
--no-auto-ignore |
- | .gitignore自動検出を無効化 |
--head N |
- | 各ファイルの先頭N行のみ |
--tail N |
- | 各ファイルの末尾N行のみ |
--tree |
-t |
ディレクトリツリーを表示 |
--stats |
- | 統計情報を表示 |
--sanitize |
-s |
機密情報を自動サニタイズ |
--replace FILE |
-r |
カスタム置換パターンファイル |
--yes |
-y |
確認プロンプトをスキップ |
--debug |
-d |
デバッグ情報を表示 |
--config FILE |
-c |
設定ファイルを指定 |
Metadata
Release files for kasu 0.0.7
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| kasu-0.0.7.tar.gz | 33.6 kB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| kasu-0.0.7-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 72.2 kB
Release files / kasu-0.0.7.tar.gz
| Download URL | kasu-0.0.7.tar.gz |
|---|---|
| Size | 33.6 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
98f74e105f2e7b8b29ead4f9f76f3ee2a1b36de85612984c477915d1f6a91819
|
|
BLAKE2b-256 checksum How to use checksums |
501c765042278c572fb05ca822752d059344bce5042507d3e80c0b3efc3bb406
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/6.2.0 CPython/3.13.2
|
Release files / kasu-0.0.7-py3-none-any.whl
| Download URL | kasu-0.0.7-py3-none-any.whl |
|---|---|
| Size | 38.6 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
45af08685e51196461579e318523a644e434b0459f12a4dceac96cb777cecc47
|
|
BLAKE2b-256 checksum How to use checksums |
83c6cd4755439f422712fa958b3727031eee1e1895ca20c3210d6f233121bad8
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/6.2.0 CPython/3.13.2
|