summaryrefslogtreecommitdiffhomepage
path: root/.opencode
diff options
context:
space:
mode:
authorDax Raad <[email protected]>2026-02-18 19:41:14 -0500
committerDax Raad <[email protected]>2026-02-18 19:41:14 -0500
commit568eccb4c654e83382253eb0c1478d24585288aa (patch)
tree111af95e7574da88ac72eb121eb8fb63115ddfb1 /.opencode
parent3a07dd8d96e3e4cbc6787ae14add19b2d58023be (diff)
downloadopencode-568eccb4c654e83382253eb0c1478d24585288aa.tar.gz
opencode-568eccb4c654e83382253eb0c1478d24585288aa.zip
Revert: all refactor commits migrating from Bun.file() to Filesystem module
Diffstat (limited to '.opencode')
-rw-r--r--.opencode/skill/bun-file-io/SKILL.md42
1 files changed, 42 insertions, 0 deletions
diff --git a/.opencode/skill/bun-file-io/SKILL.md b/.opencode/skill/bun-file-io/SKILL.md
new file mode 100644
index 000000000..f78de3309
--- /dev/null
+++ b/.opencode/skill/bun-file-io/SKILL.md
@@ -0,0 +1,42 @@
+---
+name: bun-file-io
+description: Use this when you are working on file operations like reading, writing, scanning, or deleting files. It summarizes the preferred file APIs and patterns used in this repo. It also notes when to use filesystem helpers for directories.
+---
+
+## Use this when
+
+- Editing file I/O or scans in `packages/opencode`
+- Handling directory operations or external tools
+
+## Bun file APIs (from Bun docs)
+
+- `Bun.file(path)` is lazy; call `text`, `json`, `stream`, `arrayBuffer`, `bytes`, `exists` to read.
+- Metadata: `file.size`, `file.type`, `file.name`.
+- `Bun.write(dest, input)` writes strings, buffers, Blobs, Responses, or files.
+- `Bun.file(...).delete()` deletes a file.
+- `file.writer()` returns a FileSink for incremental writes.
+- `Bun.Glob` + `Array.fromAsync(glob.scan({ cwd, absolute, onlyFiles, dot }))` for scans.
+- Use `Bun.which` to find a binary, then `Bun.spawn` to run it.
+- `Bun.readableStreamToText/Bytes/JSON` for stream output.
+
+## When to use node:fs
+
+- Use `node:fs/promises` for directories (`mkdir`, `readdir`, recursive operations).
+
+## Repo patterns
+
+- Prefer Bun APIs over Node `fs` for file access.
+- Check `Bun.file(...).exists()` before reading.
+- For binary/large files use `arrayBuffer()` and MIME checks via `file.type`.
+- Use `Bun.Glob` + `Array.fromAsync` for scans.
+- Decode tool stderr with `Bun.readableStreamToText`.
+- For large writes, use `Bun.write(Bun.file(path), text)`.
+
+NOTE: Bun.file(...).exists() will return `false` if the value is a directory.
+Use Filesystem.exists(...) instead if path can be file or directory
+
+## Quick checklist
+
+- Use Bun APIs first.
+- Use `path.join`/`path.resolve` for paths.
+- Prefer promise `.catch(...)` over `try/catch` when possible.