Data Access Skill
Work with raw local data through the data tool. Check the tool in your
tool list for the full schema; this skill covers strategy, not parameters.
The two path namespaces
reports/q3.csv— workspace-relative (the workflow's own scratch space, always readable and writable)mnt/<mount_name>/file.csv— an external folder the operator approved; read-only unless its writable flag is on
You MUST start with list on an empty path: it returns the workspace root
AND the mounts enabled on this node (with their writable flags). Never guess
mount names.
Reading — pick the honest tier, page deliberately
read auto-detects text / csv / json / pdf / html / xlsx / image / binary
from the extension; as_type forces a tier when the extension lies.
- Everything is paged with
offset/limit. Checktruncatedandrows_total/lines_total/pages_totalbefore summarizing — a truncated read is a sample, not the file. - Skim first, then zoom: read with the default limit to see the shape, then
page into the region that matters. Do not crank
limitto the max on the first read of an unknown file. - CSV/XLSX return
columns+rows; JSON deep structures are pruned at depth 8 (pruned_pathstells you where — read a subpath as text if you need what was pruned). - Images return metadata plus a file reference — if the host model supports
vision the image itself becomes visible; otherwise use the
visiontool. - Binary files return a reference and checksum, never content. Pass the reference's path to a tool that can handle the format.
Writing — bounded and non-destructive
writereplaces,appendextends; both are UTF-8 text, workspace or writable mounts only.- There is NO delete. Do not try to empty files as a substitute; tell the user deletion is a manual action in the gallery panel.
copy_to_workspaceimports a mount file into the workspace (never overwrites — it suffixes). Use it before operations that need a workspace reference: previews, drags, vision on mount images.
Anti-patterns
- Guessing paths instead of
list/searchfirst. - Re-reading a whole file when you already have the page you need — results persist in your context; reread only new offsets.
- Reading a huge JSON as
jsonwhen you need one field — read as text and page, or search first. - Asking for a mount that is not in your
listresult: mounts are operator-controlled; you cannot add them.