saltbo/zpan/use-zpan
Claude Code and agent skill by saltbo/zpan
- community
Checking that the SKILL.md file is still in the repository.
Use ZPan through Realmroot to browse private workspaces; list, inspect, upload, download, rename, move, copy, delete, restore, or purge files and folders; create or revoke shares; inspect quota and storage usage; and handle workspace-scoped access or upload-capacity workflows. Use whenever an Agent needs to read or operate a user's private ZPan storage with controller-approved least-privilege access.
Install
npx vskill@latest install saltbo/zpan/use-zpanSKILL.md
Use ZPan
Treat ZPan as private workspace-scoped file storage. Operate it through the stable Agent identity and authority supplied by $realmroot. Do not borrow the user's browser session, cookies, OAuth tokens, API keys, or WebDAV credentials.
Discover The Live Contract
Require $realmroot to be installed. Reuse a known healthy ZPan Resource Server, Context, operation, and authority. Discover or refresh only when the target, Context, operation, or required scope is unknown, or after a connection, authorization, or contract failure:
Select only the Resource Server named zpan unless the user explicitly asks for another discovered deployment such as staging. Require its protected resource URL to match the intended deployment. Treat Toolbox output and the operation's live help as authoritative for operation names, arguments, scopes, and response shapes; examples in this Skill are not a substitute for discovery.
Select The Workspace Context
Inspect Contexts when no default is selected, multiple workspaces could match, or the user names a workspace:
Use --context "<workspace>" for one workflow. Change the default with context use only when the user asks to change it. A ZPan target credential is bound to exactly one workspace; never add a custom workspace header or assume that an object ID selects the correct workspace.
If the Context exists but is not connected or authorized, use $realmroot to request the connection or authority and wait for controller approval. Do not switch to the user's identity. When two workspaces are involved, finish and verify operations in one Context before switching to the other.
Request Least-Privilege Authority
Inspect every operation needed for the current workflow, then request their scope union in one controller approval. Omit unrelated scopes. Typical mappings are:
- list, inspect, and download objects or inspect trash:
objects:read; - create folders and upload or save objects:
objects:create; - rename, move, copy, restore, or transfer objects:
objects:update; - move objects to trash:
objects:delete; - permanently remove trashed objects:
objects:purge; - list, create, or revoke shares:
shares:read,shares:create, or
shares:delete;
- inspect quota or storage usage:
quota:readorstorage-usage:read.
Request all required scopes together and bind the request to the selected Context:
Repeat --scope for each required scope. Existing broader durable authority may satisfy a narrower request, but each issued target credential must contain only the scopes needed now.
Resolve Objects Before Acting
List or search within the selected Context and use IDs returned by ZPan:
Follow nextPageToken until the desired object is found or results are exhausted. Do not guess IDs, treat a same-named object in another Context as the target, or use a stale ID from another deployment. If multiple objects match and the user's intent does not distinguish them, present the material choices.
Upload Files Directly
Inspect create-object help, determine the local file's exact byte size and media type, and create a draft with objects:create. Preserve the exact create body when retrying after an uncertain result or capacity purchase.
Use the returned upload descriptor as the authoritative workflow:
- For every
upload.parts[]entry, read exactlyoffsetthrough
offset + length from the local file.
- Send that byte range directly to the part's presigned
urlwith its exact
method and headers. Do not route file bytes through Realmroot or ZPan.
- Require a successful storage response and retain the response
ETagwith
its partNumber.
- Call the descriptor's
workflow.complete.operationIdwith every
{partNumber, etag} pair.
- Read the completed object back and confirm its name, size, status, and
selected workspace.
Use the advertised re-presign operation only for missing or expired part URLs. Abort the advertised upload session when the workflow cannot be completed and the user does not want the draft retained. Never log, display, or persist presigned URLs; they are short-lived bearer capabilities.
For folders, create an object with the live folder representation advertised by create-object; no storage upload follows. For a directory tree, create parent folders before children and preserve relative paths.
Download And Verify Files
Call get-object in the selected Context and use its current downloadUrl immediately. Download directly from that presigned URL without sending it through Realmroot. Do not persist or reveal the URL.
When the user asks to copy or verify a file, compare byte length and a local cryptographic digest when practical. A successful HTTP status alone does not prove that the intended bytes were received.
Mutate, Share, And Remove Objects
Discover the relevant live operation first. After rename, move, copy, restore, transfer, or share changes, read the object or share back when possible and verify the requested state.
Treat delete-object as a soft delete into trash. Use permanent purge only when the user explicitly requests irreversible removal, resolve the current trash object first, and verify its absence afterward. Revoke shares before cleanup when the workflow created them. Share tokens, passwords, direct URLs, and recipient details are sensitive; return them only as needed for the user's request.
Handle Capacity And Failures
- On
402 CAPACITY_REQUIRED, preserve the original create body and request
hash. Follow only the purchase operation and offer advertised by the live response. Use $realmroot for any discovered payer and controller-approved budget, then retry the unchanged create request after confirmed delivery.
- On
401, stop and use$realmrootto refresh the connection or target
credential. Never retry with copied credentials.
- On
403, re-read operation help and request only the missing task scope; also
respect the workspace role reported by ZPan.
- On
404, verify the deployment, Context, and current object ID. Do not assume
that cross-workspace invisibility means deletion.
- On
409, honor the user's conflict intent and use only a conflict strategy
advertised by the live schema.
- On expired upload or download URLs, request fresh descriptors instead of
reconstructing URLs.
- On an uncertain mutation result, read current state before retrying to avoid
duplicate folders, drafts, copies, or shares.
Do not stop after discovery or approval. Complete the requested ZPan operation, verify the resulting state, and report the selected workspace plus the relevant object or share result without exposing credentials or presigned URLs.
Security
- Security scanPassed, 100 of 100Pattern checks on the skill's files.
- Model reviewNot runA model review is scheduled for the next rescan.
Quality evaluation
- Task evaluationNot runNo evaluation yet. Run one in Skill Studio.
Source
- SKILL.md in the repositoryCheckingskills/use-zpan/SKILL.md
Popularity
- 7-day trend score
- 0
Not refreshed yet.
Works with
Any agent vskill installs to: 56 targets in all. These 39 have a page on this site.
- Claude Code
- Cursor
- GitHub Copilot
- Windsurf
- Codex
- Gemini CLI
- Cline
- Amp
- Roo Code
- Goose
- Continue
- Kilo Code
- Junie
- Trae
- OpenHands
- Qwen Code
- AI Agent
- Tabnine Chat
- Sourcegraph Cody
- Amazon Q
- Firebase Genkit
- Sweep
- Devin
- Phind
- Mentat
- Claude Desktop
- Aider
- GPT Pilot
- Plandex
- bolt.new
- v0
- Replit Agent
- Anse
- TypingMind
- BetterChatGPT
- LibreChat
- Warp AI
- Pieces
- Fig AI
Embed badge
[](https://verified-skill.com/skills/saltbo/zpan/use-zpan)