Skills: ファイル操作スキル
最終更新:2026-08-31
ファイルはコードの担い手——ファイルを操作できない Skill は、手のないデザイナーのようなものです。
1. ファイル操作ツールボックス
(1) 読み込み操作
| 操作 | ツール | 使用例 |
|---|---|---|
| 単一ファイル読み込み | Read | 特定ファイルのレビュー |
| ファイル名検索 | Glob | ファイル範囲の特定 |
| ファイル内容検索 | Grep | コードパターンの位置特定 |
(2) 書き込み操作
| 操作 | ツール | リスク | 使用例 |
|---|---|---|---|
| 精密編集 | Edit | 🟡 | バグ修正、小規模調整 |
| 作成/上書き | Write | 🔴 | 新規ファイル、完全書き直し |
| バッチ修正 | Edit + ループ | 🟡 | リネーム、一括置換 |
(3) 実行操作
| 操作 | ツール | 使用例 |
|---|---|---|
| コードフォーマット | Bash(prettier) | コードスタイルの統一 |
| スクリプト実行 | Bash(python) | データ処理、バッチ操作 |
| Git 操作 | Bash(git) | バージョン管理 |
2. ファイル操作モード
(1) 読み取り専用分析モード
ファイルを一切変更せず、分析結果のみを出力:
YAML
---
name: code-metrics
description: "コードメトリクス分析"
tools:
- Read
- Grep
- Glob
---
MARKDOWN
## 実行フロー
1. Glob でプロジェクトファイル範囲を特定
2. Grep でコードパターンを集計(クラス、関数、TODO)
3. Read でキーファイルを深く分析
4. メトリクスレポートを出力、ファイルの変更は行わない
(2) 安全な変更モード
変更前にバックアップし、変更後に検証:
MARKDOWN
## 安全な変更ルール
1. 現在のファイル内容を読み込む
2. 何を変更すべきか分析する
3. Edit で精密に変更、対象行のみ修正
4. Bash でテストを実行して検証
5. テストが失敗した場合、問題を説明しロールバックを提案
(3) バッチ操作モード
MARKDOWN
## バッチリネームのフロー
1. Glob で対象ファイルリストを取得
2. すべての変更計画をリストアップ
3. Edit で1つずつ変更を実行
4. Bash でフルテストスイートを実行して検証
3. 検索戦略
(1) 検索先行の原則
TEXT
📖 参照専用
間違った方法:全ファイルを読み込む → 1つずつチェックする
正しい方法:検索で位置を特定 → 的を絞って読み込む
(2) 一般的な検索パターン
| 検索対象 | Grep パターン | 例 |
|---|---|---|
| 関数定義 | `def \w+ | function \w+` |
| TODO コメント | TODO|FIXME|HACK |
技術的負債を見つける |
| セキュリティリスク | eval(|exec(|subprocess |
危険な呼び出しを見つける |
| 型定義 | class \w+|interface \w+ |
型構造を見つける |
| テストファイル | test_|_test|\.spec\. |
テストファイルを見つける |
(3) 検索と読み込みの連携
graph TD
A[Glob: ファイルリストを特定] --> B[Grep: キーパターンを検索]
B --> C{対象を発見?}
C -->|はい| D[Read: 深く読み込む]
C -->|いいえ| E[検索範囲を拡大]
D --> F{修正が必要?}
F -->|はい| G[Edit: 精密に修正]
F -->|いいえ| H[分析結果を出力]
4. ファイル操作の実践
▶ 例:プロジェクトマイグレーション Skill
Alice はプロジェクトを JavaScript から TypeScript に移行する必要があります:
YAML
---
name: js-to-ts-migration
description: "JS ファイルを TS に移行"
tools:
- Read
- Write
- Glob
- Grep
- Bash
---
MARKDOWN
## マイグレーションフロー
1. Glob ですべての .js ファイルを見つける
2. 各ファイルについて:
a. 内容を読み込む
b. 依存関係とエクスポートを分析
c. Write で対応する .ts ファイルを作成
d. 型アノテーションを追加
3. Bash で tsc --noEmit を実行して検証
4. マイグレーションレポートを出力
Bob は言います:「ファイル操作で最も怖いのは誤削除や誤変更——検索で位置を特定し、精密に編集し、事後に検証する。この3ステップが不可欠だ。」
❓ よくある質問
Q Edit と Write のどちらを選ぶべきですか?
A 既存ファイルの修正には Edit(行レベルで精密)を優先してください。新規ファイルの作成には Write を使用します。大きなファイルの一部を書き換えるために Write を使わないでください。
Q バッチ操作でファイルを見落とすのを防ぐには?
A まず Glob ですべての対象ファイルをリストアップし、範囲を確認してから1つずつ操作してください。各ステップで進捗を記録し、中断後も再開できるようにします。
Q 大きなファイルはどう扱えばいいですか?
A Grep で対象の行番号を特定し、Read に行番号範囲を指定して該当部分だけを読み込みます。ファイル全体を読み込んでコンテキストを浪費するのは避けてください。
📖 まとめ
- 3つの操作タイプ:読み取り専用分析、安全な変更、バッチ操作
- 検索先行:Glob/Grep で位置を特定→Read で深掘り→Edit/Write で修正
- 安全原則:修正前に読み込み、精密に編集し、修正後に検証
- 大きなファイル戦略:行番号範囲で読み込み、ファイル全体は読み込まない
📝 練習問題
- 基礎問題(難易度⭐):読み取り専用分析 Skill を作成し、プロジェクト内の TODO/FIXME の出現回数と分布を集計してください。
- 応用問題(難易度⭐⭐):安全な変更 Skill を作成し、Python 関数に型アノテーションを自動追加し、変更後にテストを実行してください。
- チャレンジ問題(難易度⭐⭐⭐):バッチマイグレーション Skill を作成し、CommonJS の require を ES Module の import に変換し、循環依存などのエッジケースも処理してください。