bun-file-io について
`packages/opencode` で Bun を使うファイル入出力とスキャンの規約をまとめた開発スキルです。ファイル、ディレクトリ、スキャン、外部プロセスに適した API 選びを支援します。
主な機能
- 01Bun によるファイル読み書きのパターン
- 02Bun.Glob によるファイルスキャン
- 03node:fs/promises によるディレクトリ操作
- 04Bun.which と Bun.spawn による外部ツール実行
- 05ストリーム出力のデコード指針
活用シーン
- 01`packages/opencode` のファイル I/O の編集
- 02ファイルやディレクトリのスキャン
- 03バイナリまたは大きなファイルの読み込み
- 04外部ツールの実行と出力処理
インストール
コマンドをコピーしてターミナルで実行します。
$
npx skills add https:/ / github.com/ anomalyco/ opencode --skill bun-file-ioインストール後、Claude Code で/bun-file-ioを入力して読み込まれたか確認します。
詳細
以下の場合に使用してください
packages/opencodeのファイル I/O またはスキャンを編集するとき- ディレクトリ操作または外部ツールを扱うとき
Bun のファイル API(Bun のドキュメントより)
Bun.file(path)は遅延実行されます。読み込むにはtext、json、stream、arrayBuffer、bytes、existsを呼び出します。- メタデータ:
file.size、file.type、file.name。 Bun.write(dest, input)は文字列、バッファー、Blob、Response、ファイルを書き込みます。Bun.file(...).delete()はファイルを削除します。file.writer()は、段階的な書き込みに使う FileSink を返します。- スキャンには
Bun.GlobとArray.fromAsync(glob.scan({ cwd, absolute, onlyFiles, dot }))を使用します。 - バイナリを見つけるには
Bun.whichを使用し、その後Bun.spawnで実行します。 - ストリーム出力には
Bun.readableStreamToText/Bytes/JSONを使用します。
node:fs を使用する場合
- ディレクトリ操作(
mkdir、readdir、再帰操作)にはnode:fs/promisesを使用します。
リポジトリのパターン
- ファイルアクセスには Node
fsより Bun API を優先してください。 - 読み込む前に
Bun.file(...).exists()を確認してください。 - バイナリファイルや大容量ファイルには
arrayBuffer()と、file.typeによる MIME チェックを使用してください。 - スキャンには
Bun.GlobとArray.fromAsyncを使用してください。 - ツールの stderr は
Bun.readableStreamToTextでデコードしてください。 - 大容量の書き込みには
Bun.write(Bun.file(path), text)を使用してください。
NOTE: Bun.file(...).exists() は、値がディレクトリの場合に false を返します。
パスがファイルまたはディレクトリのどちらである可能性もある場合は、代わりに Filesystem.exists(...) を使用してください。
簡易チェックリスト
- まず Bun API を使用してください。
- パスには
path.join/path.resolveを使用してください。 - 可能な場合は
try/catchより Promise の.catch(...)を優先してください。
コメント
Markdown 対応