
xdrop
Use this skill when the user wants to send or fetch files through an Xdrop server from the terminal, asks to automate encrypted Xdrop share-link workflows, provides an Xdrop `/t/:transferId#k=...` link to download and decrypt locally, or needs Xdrop CLI flags such as `--quiet`, `--json`, `--expires-in`, `--output`, or `--api-url`, even if they do not explicitly mention the skill name.
Use this skill when the user wants to send or fetch files through an Xdrop server from the terminal, asks to automate encrypted Xdrop share-link workflows, provides an Xdrop `/t/:transferId#k=...` link to download and decrypt locally, or needs Xdrop CLI flags such as `--quiet`, `--json`, `--expires-in`, `--output`, or `--api-url`, even if they do not explicitly mention the skill name.
Use the bundled scripts inside this skill directory.
Available scripts
scripts/upload.mjs— Upload local files or directories to an Xdrop server and print the share linkscripts/download.mjs— Download an Xdrop share link, decrypt it locally, and save the files
Environment requirements:
- Bun
- Local filesystem access
- Network access to the target Xdrop server
Upload
bun scripts/upload.mjs --server <xdrop-site-url> <file-or-directory> [...]
Prefer these flags when relevant:
--quiet: suppress progress output and keep stdout clean--json: returntransferId,shareUrl, andexpiresAt--expires-in <seconds>: choose a supported expiry--api-url <url>: override the default<server>/api/v1--name <value>: set the transfer display name--concurrency <n>: limit parallel uploads per file
Useful examples:
bun scripts/upload.mjs --server http://localhost:8080 ./dist/report.pdf
bun scripts/upload.mjs --server http://localhost:8080 --quiet ./archive.zip
bun scripts/upload.mjs --server http://localhost:8080 --expires-in 600 --json ./notes.txt
If the user wants verification, upload a small temporary file and then confirm the public transfer API or browser can open the returned link.
Download
Require the full share link, including #k=.... Without the fragment key, the transfer cannot be decrypted.
bun scripts/download.mjs "<share-url>"
Prefer these flags when relevant:
--output <dir>: choose the destination directory--quiet: suppress progress output and keep stdout clean--json: returntransferId,outputRoot, and saved file paths--api-url <url>: override the default<share-origin>/api/v1
Useful examples:
bun scripts/download.mjs "http://localhost:8080/t/abc123#k=..."
bun scripts/download.mjs --output ./downloads "http://localhost:8080/t/abc123#k=..."
bun scripts/download.mjs --quiet --json --output ./downloads "http://localhost:8080/t/abc123#k=..."
By default the downloader writes to ./xdrop-<transferId> and preserves the manifest's relative paths.
Gotchas
- A download link without the
#k=...fragment is not decryptable. Ask for the full original share URL. - Use
--quietwhenever another command or caller needs to capture stdout. Progress logs otherwise go to stderr, but the final result still matters.
Guardrails
- Prefer
--quietwhen another command or script needs to capture stdout. - Keep the full share link fragment intact for downloads.
- Do not bypass the scripts' built-in path sanitization or transfer cleanup behavior with manual ad hoc commands unless the user explicitly asks.
You Might Also Like
Related Skills

azure-storage
Azure Storage Services including Blob Storage, File Shares, Queue Storage, Table Storage, and Data Lake. Answers questions about storage access tiers (hot, cool, cold, archive), when to use each tier, and tier comparison. Provides object storage, SMB file shares, async messaging, NoSQL key-value, and big data analytics. Includes lifecycle management. USE FOR: blob storage, file shares, queue storage, table storage, data lake, upload files, download blobs, storage accounts, access tiers, storage tiers, hot cool cold archive, storage tier comparison, when to use storage tiers, lifecycle management, Azure Storage concepts. DO NOT USE FOR: SQL databases, Cosmos DB (use azure-prepare), messaging with Event Hubs or Service Bus (use azure-messaging).
microsoft
firebase-crashlytics
Comprehensive guide for Firebase Crashlytics, including provisioning and SDK usage. Use this skill when the user needs help setting up Crashlytics, adding crash reporting, or using the Crashlytics SDK in their application.
firebase
subagent-driven-development
Use when executing implementation plans with independent tasks in the current session
obra
verification-before-completion
Use when about to claim work is complete, fixed, or passing, before committing or creating PRs - requires running verification commands and confirming output before making any success claims; evidence before assertions always
obra
receiving-code-review
Use when receiving code review feedback, before implementing suggestions, especially if feedback seems unclear or technically questionable - requires technical rigor and verification, not performative agreement or blind implementation
obra
writing-skills
Use when creating new skills, editing existing skills, or verifying skills work before deployment
obra