mcpField
O
olares-files

olares-files

github.com/beclabProductivity5.3k199 installsUpdated today
Repository

About olares-files

olares-files is a command-line skill for managing Olares user files by known path. It also handles asynchronous archive tasks, sharing, SMB/NFS mounts, and Seafile repositories.

Key features

  1. 01List, read, upload, and download files
  2. 02Move, copy, rename, and delete files
  3. 03Compress, extract, and manage async tasks
  4. 04Share files and manage SMB/NFS mounts
  5. 05Inspect and manage Seafile repositories

Use cases

  1. 01Upload a local file to the user's Drive
  2. 02Read or download a file at a known path
  3. 03Compress a directory and track its task
  4. 04Mount a network share or access a Seafile repository

Install

Copy the command and run it in a terminal.

$npx skills add https://github.com/beclab/olares --skill olares-files

After installing, type/olares-filesin Claude Code to confirm it loaded.

Bundled files

References and scripts installed along with SKILL.md.

references/
olares-files-archive.md
olares-files-chown.md
olares-files-compress.md
olares-files-cp-mv.md
olares-files-download.md
olares-files-edit.md
olares-files-extract.md
olares-files-ls.md
olares-files-mkdir.md
olares-files-nfs.md
olares-files-paths.md
olares-files-rename.md
olares-files-rm.md
olares-files-share.md
olares-files-smb.md
olares-files-task.md
olares-files-upload-cloud.md
olares-files-upload.md

Details

From the project README

files (per-user files-backend)

Shared front door: load ../olares-shared/SKILL.md for suite routing, active-profile selection, platform entry points, and the auth proceed/stop gate. Load its auth reference only when login, profile switching, token storage, or auth recovery is actually needed.

Load the shared platform model when the task depends on userspace backends, durability, uid 1000, or system-managed Home directories. Use olares-cli files <verb> --help for syntax.

When to use

  • Address, read, write, move, delete, share, or transfer known Olares file paths.
  • Compress/extract or manage their asynchronous task queue.
  • Mount SMB/NFS servers or manage Seafile repositories.

Finding files by name/content (and what the index covers — filenames everywhere vs. full-text only in /Documents/) lives in olares-search; configure which directories get full-text indexing via settings search dirs in olares-settings.

Fast paths

TaskReadFirst command
Put a local file in the user's Drivecollision decisions and cloud transferolares-cli files upload ./report.pdf drive/Home/Documents/
See what is in a directorythis fileolares-cli files ls drive/Home/ -o json
Read one file's bytesthis fileolares-cli files cat drive/Home/Documents/report.pdf
Address anything outside drive/Homepath grammar and namespace rulesolares-cli files ls sync/<repo_id>/

Paths and namespace support

Every resource is fileType/extend[/subPath], where fileType is one of drive, cache, sync, external, awss3, dropbox, google, tencent, share, internal, and extend is the volume, repo or account inside it — drive/Home, drive/Data, drive/Common, a node name, a Seafile repo id, a cloud account key. That much covers an ordinary Drive path.

Load path grammar and namespace rules when the target is outside drive/, or when you need to know whether the verb you are about to run supports that namespace at all — support is per verb, and several verbs refuse namespaces their neighbours accept.

Backend quirks that change decisions

  • Directory creation may auto-rename on collision instead of returning conflict. Upload does not pre-create destination directories. If exact naming matters, inspect the parent and create it deliberately.
  • Direct raw GET of a file resource may return HTTP 500. Use files cat or files download; do not retry the raw resource URL.
  • external/<node>/ is a virtual volume picker, not a write destination. Writes need external/<node>/<volume>/....
  • Eleven reserved names are system-managed at the first level under drive/Home/. rename, rm, and mv as a source are refused before any request goes out; cp and everything nested stay editable. The refusal enumerates all eleven and is a platform invariant, not a permission error to retry — act on a child instead. The names are matched exactly, so a name that merely looks similar is not protected.
  • cache/<node>/ is valid storage but not a concrete dataset for share creation; share cache/<node>/<sub>/.

Async task queue (compress / extract)

  • compress and extract enqueue server-side work and return a task id unless waiting.
  • Ctrl-C stops only the local poll. Cancel the server task explicitly if that is the user's intent.
  • Tasks are per-node; retain the node printed when the task was queued.
  • task cancel --all affects every task on the node, including work started elsewhere.

Version gate (Olares >= 1.12.6)

Archives, NFS, and drive/Common require Olares 1.12.6+. Treat daily builds by their major.minor.patch base. Follow the shared auth/version gate when the backend version cannot be established.

Verb index

VerbRead when triggered
lslisting and cloud shapes
catRaw bytes to stdout, and the supported way to read one: a direct GET of the file resource answers 500
downloadresume, overwrite, directory downloads
uploadcollision decisions, resume, concurrency; the second stage a cloud destination adds
edittext/size guards and writeback
mkdirparents, auto-rename, external depth
rmexistence, directory intent, protected paths
renamein-place rename and protected paths
cp, mvdestination and overwrite semantics
chownUID and namespace decisions
compressformats, conflicts, passwords, async task
extractdestination, conflicts, passwords, async task
archiveread-only archive inspection
taskper-node cancel/pause/resume
shareinternal/public/SMB sharing
smbdiscovery, mount, history
nfsexport discovery and mount
reposSync (Seafile) libraries by id; the repo id is what a sync/ path is built from

Safety and escalation

  • Treat the user's requested file operation and named paths as task-scope authorisation. Ask again only when a target is ambiguous, bytes may be overwritten without explicit intent, deletion expands beyond the named target, or the action leaves that scope.
  • For upload, first decide whether collision should overwrite, fail, or create a distinct name; backend auto-renaming is not an acceptable implicit decision.
  • Do not retry a missing-path preflight by weakening safety flags.
  • Confirm task cancel --all separately because it affects unrelated work on that node.
  • Never expose tokens or passwords. Use stdin-based secret input where available.
  • Stop on ambiguous frontend paths, node/volume identity, overwrite intent, or concurrent deletion; re-list the parent and ask the user.

Comments

Markdown supported