From box-cloud-filesystem
Cloud filesystem operations via Box CLI. Use when the user mentions Box, cloud files, cloud storage, uploading to the cloud, sharing files, document management, or syncing project files offsite. Trigger with "upload to box", "save to cloud", "pull from box", "search my box files", "share this file", "box sync", "cloud backup", or "box filesystem".
npx claudepluginhub jeremylongshore/claude-code-plugins-plus-skills --plugin box-cloud-filesystemThis skill is limited to using the following tools:
Two modes, one goal: treat Box like a local filesystem.
Automates Box cloud storage: upload/download files, content search, folder management, sharing, collaborations, metadata queries via Rube MCP (Composio).
Automates Box operations like file upload/download, content search, folder management, collaboration, metadata queries, and sign requests using Composio's toolkit via Rube MCP tools.
Provides rclone setup, configuration, and commands to upload, sync, list, and manage files in AWS S3, Cloudflare R2, Backblaze B2, Google Drive, Dropbox.
Share bugs, ideas, or general feedback.
Two modes, one goal: treat Box like a local filesystem.
Transparent mode — initialize a workspace, then every Write or Edit inside it auto-syncs to Box via PostToolUse hooks. No box commands needed.
Explicit mode — search, download, share, or organize files using Box CLI commands directly. See references/operations-guide.md for the full command reference.
Box CLI (@box/cli) wraps the full Box API as shell commands. This skill adds three layers:
Key principle: inspect before acting, report after acting. Folder ID 0 is always root.
npm install --global @box/cli
box login
box users:get --me # verify auth + enterprise context
Auth methods: OAuth (interactive), JWT (automation), CCG (server-to-server), Developer Token (testing, 60 min).
jq is required for the hook scripts.
Follow this workflow for every Box operation:
box users:get --me, identify target folder ID, check the trust zonereferences/operations-guide.md for commands)| Zone | Operations | Behavior |
|---|---|---|
| Read | search, list, download, metadata | Execute freely |
| Create | upload new, create folders | Verify parent folder ID first |
| Update | version upload, move, copy | Use file ID, prefer files:versions:upload |
| Expose | share links, access levels | Default collaborators, never open unless explicit |
| Destructive | delete, bulk reorganize | Only on explicit request; summarize first |
box files:versions:upload FILE_ID for updates. Avoids 409 conflicts, preserves history.--access open shared links unless user says "public" or "open."box folders:items FOLDER_ID --json # list folder
box search "query" --type file --json # search
box files:download FILE_ID --destination ./ # download
box files:upload ./file.txt --parent-id FOLDER_ID # upload new
box files:versions:upload FILE_ID ./file.txt # update existing
box files:share FILE_ID --access collaborators # share (narrow)
box folders:download FOLDER_ID --destination ./ # bulk download
Full command reference with examples: references/operations-guide.md
Initialize a workspace, work locally, push changes back. The manifest tracks file IDs.
${CLAUDE_PLUGIN_ROOT}/scripts/box-init-workspace.sh FOLDER_ID /tmp/box-workspace
With hooks active, every Write/Edit auto-syncs. For manual sync, compare local state against the manifest:
box files:versions:upload FILE_ID (version update)box files:upload --parent-id FOLDER_ID (new upload)Full sync workflow with conflict detection: references/sync-pattern.md
Every write operation returns:
Read operations return JSON with id, name, size, modified date.
| Error | Recovery |
|---|---|
Not Found (404) | Verify ID with box search or re-list parent folder |
Conflict (409) | Use files:versions:upload to update, or --name for distinct file |
Forbidden (403) | Re-run box login or check JWT scopes |
Rate Limited (429) | CLI retries automatically; batch via --bulk-file-path |
Auth expired | Run box login; use JWT/CCG for production |
box: command not found | npm install --global @box/cli |
| Name collision | Use file ID, never filename, to identify targets |
| Local/remote divergence | Re-download, diff, ask user which to keep |
Always report what failed and what succeeded. Never silently skip. Full error table: references/operations-guide.md
Back up docs to Box:
box folders:create 0 "my-project-docs" --json
box files:upload docs/README.md --parent-id FOLDER_ID
box folders:share FOLDER_ID --access collaborators
Pull, analyze, push back:
box search "Q1 sales" --type file --json
box files:download FILE_ID --destination /tmp/box-workspace/
# analyze locally, then push result
box files:upload /tmp/box-workspace/summary.md --parent-id PARENT_ID
Workspace sync (with hooks):
${CLAUDE_PLUGIN_ROOT}/scripts/box-init-workspace.sh FOLDER_ID /tmp/box-workspace
# edit files normally — hooks auto-sync to Box
More detailed examples: references/sync-pattern.md