Community生產力與協作github.com

LinShare 檔案分享工具

透過 LinShare 安全地分享文件:以電子郵件傳送檔案給他人(組織內外皆可),列出或撤銷已分享的內容,列出或下載收到的檔案,要求他人傳送檔案,並管理團隊工作群組與工作空間(瀏覽、上傳、下載、管理成員)。

LinShare 檔案分享工具 是什麼?

這個技能讓 AI 代理能夠操作 LinShare 伺服器(6.5 版以上)進行安全的文件分享與協作。它提供了完整的 CLI 介面,可用於分享檔案、建立上傳請求、管理文件接收、以及操作團隊工作群組與工作空間。關鍵設計強調安全性:所有可能影響檔案的操作(如分享、撤銷、刪除)都必須先使用 `--dry-run` 模擬,並在獲得使用者明確同意後才執行,登入程序也必須由使用者親自操作。支援 LinShare 6.5 以上的所有主要功能,包括上傳請求、團隊工作空間管理、以及大型檔案的分塊上傳。此技能適用於 Claude Code 與 Cursor 等支援命令執行的 AI 代理平台。

相容平台~Claude Code~Codex CLI~Cursor
npx skills add https://github.com/wboudiche/linshare-skill/tree/HEAD/skills/linshare

Installed? Explore more 生產力與協作 skills: steipete/gemini, steipete/gh-issues, steipete/skill-creator · View all 6 →

在你喜歡的 AI 中提問

開啟一個已預先載入此 Agent Skill 的新對話。

說明文件

LinShare

linshare 是一個命令列工具,用於 LinShare 伺服器(6.5 版或更新版本)。用它來安全地分享使用者的文件。

首先,檢查設定

在對話中首次執行 Lishare 指令前,請先執行 linshare --json whoami:

  • 命令找不到(結束代碼 127):linshare 指令未安裝。請以一般文字告知使用者,本技能需要此工具,並且他們可以自行安裝: pip install "git+https://github.com/wboudiche/linshare-cli#subdirectory=agent-harness"(需要 Python 3.10 以上)。 請不要自己安裝它。
  • 結束代碼 2("code": "auth"):尚未登入。請要求使用者在此對話中輸入 ! linshare login --server <他們的 LinShare 網址>(若不清楚網址則詢問使用者)——他們在那裡輸入密碼,絕對不要在對話中輸入密碼。 使用 SSO:! linshare login --token --server <網址>,貼上從網頁 UI 取得的 token。
  • 結束代碼 0:顯示伺服器與帳號資訊;繼續處理請求。

規則——每次都要遵守

  1. 一律在 linshare 之後加上 --json(例如:linshare --json shares list)並讀取 JSON 輸出。
  2. 登入由使用者親自執行,絕對不是由你來做。 如果某個指令失敗並產生結束代碼 2("code": "auth"),請要求使用者自行輸入 ! linshare login(如果他們使用 SSO 登入並持有網頁 UI 的 token,則輸入 ! linshare login --token)。絕對不要詢問或輸入他們的密碼。
  3. 在檔案離開帳戶或被刪除之前,必須獲得使用者的明確同意。 這涵蓋了 share、request-files、shares revoke、documents delete、requests close,以及共用空間的 spaces upload、spaces add-member、spaces set-role、spaces remove-member、spaces delete-files、spaces delete。
    • 對於 share 和 request-files:先使用相同的命令加上 --dry-run 來執行,然後以一般文字向使用者顯示: 檔案(名稱和大小)、每位收件者——標記 "external": true 的收件者為組織外部的人——到期日、主旨、訊息、 是否使用密碼保護的連結,以及 downloadAlert / copyToMe(伺服器實際執行的狀況:管理員的設定可能覆蓋使用者的選擇; 當 detail 這麼說時,請告知使用者)。
    • 對於 revoke、delete、close:先列出,然後精確顯示哪些項目會受影響。
    • 對於 spaces upload 和 spaces add-member:先使用 --dry-run 執行。上傳時,顯示檔案、工作群組(和資料夾)以及 visibleTo——該群組的所有人都會看到這些檔案(如果 visibleTo 為 null,則表示無法列出成員)。對於新成員,以一般文字顯示該人員(姓名和電子郵件)、空間和角色(READER:唯讀,CONTRIBUTOR:可新增,WRITER:可新增與修改,ADMIN:也可管理成員)。
    • spaces delete 會刪除空間及其所有檔案,影響每位成員;spaces delete-files 也會從所有人那裡刪除檔案。請說清楚,並指出空間和項目名稱。
    • 僅使用使用者提供的詞彙作為 --subject 和 --message。不要自行撰寫;省略它們,或建議一個並只在使用者同意時才加入。 request-files 的 --label 可以是一個簡短名稱,取自使用者自己的用詞(如「十月發票」);如果沒有提供,工具會自動選用「<你的電子郵件>的檔案」。
    • request-files 需要 --message(LinShare 拒絕沒有訊息的請求)。如果使用者沒有提供,請在乾執行之前先詢問使用者;你可以建議一個措辭,但僅在使用者接受後才使用。
    • 沒有給定到期日("expirationDate": null)表示使用伺服器的預設到期日,而不是「永不」。
    • 等待明確的「是」。如果使用者更改了任何內容(收件者、到期日、檔案),請重新執行 --dry-run 並再次詢問。不要重複使用先前的同意。
    • 在實際執行時,將乾執行中的 expirationDate 傳遞為 --expires YYYY-MM-DD(使用者核准的確切日期),不要再使用相對值如 7d; 對於 --alert-if-not-downloaded 也是如此(使用乾執行中的 alertIfNotDownloaded 值)。
  4. 檢查伺服器,而非你的記憶。 在告知使用者某個項目是否已分享、傳送、撤銷或關閉之前,請先執行對應的列表命令(shares list、requests list、documents list、spaces files、spaces members)。之前對話的記錄可能已過時。
  5. 唯讀命令不需要確認: whoami、shares list、received list、received download、documents list、requests list、requests download、spaces list、spaces files、spaces members、spaces download。建立空白的工作群組或資料夾(spaces create、spaces mkdir)也不需要確認:在加入檔案或成員之前,其他人不會看到它。
  6. 分享完成後,告知使用者哪些檔案已傳送給誰以及何時到期。 下載: 每當收件者首次下載分享項目時,LinShare 會寄送電子郵件給寄件者,而 shares list 會顯示 downloaded 計數——可用此資訊回答「X 是否已下載?」。若要收到檔案未被下載的警告,請使用 --alert-if-not-downloaded(一個日期、像 3d 這樣的延遲時間,或 off;如果沒有提供,則使用伺服器的預設值)。
  7. 共用空間。 工作群組存放團隊共享的檔案;工作空間則用來分組工作群組。 命令使用 ID:執行 spaces list 來尋找空間,spaces files SPACE [--folder ID] 來尋找資料夾或檔案。多個空間可以有相同名稱:如果使用者的用詞匹配多個空間,請詢問是哪一個。以電子郵件分享檔案(share)和將其放置在工作群組(spaces upload)是不同的:如果不清楚,請問清楚。 在 LinShare 7.0 上,某些功能因伺服器錯誤而失敗:spaces members 無法列出成員(請使用 add-member 列印的成員 ID 來進行 set-role / remove-member),而且無法將人員加入工作空間(只能加入其工作群組)。請照實傳達錯誤訊息;不要嘗試其他方式重試。
  8. 發生錯誤時,以一般文字傳達 error.message 的內容。未經詢問,不要用不同的設定重新嘗試被拒絕的分享。結束代碼 1 表示指令本身有誤(修正它,不要要求使用者登入)。當分享失敗時,工具會將已上傳的檔案移除並告知使用者;如果 error.code 是 "timeout",則結果不明——請依照訊息指示(在重試前檢查 shares list / documents list)。
  9. 大檔案也沒問題:超過 2 MiB 時,工具會像網頁 UI 一樣分塊傳送。在快速網路上,上傳大約需要每 GB 15 秒,在慢速網路上則需要更久。對於數百 MB 以上的檔案,請給 share 命令一個較長的超時時間(或在背景執行),以免被中斷,並告知使用者可能需要一些時間。

典型流程

linshare --json share ./contract.pdf --to [email protected] --expires 7d --message "請簽署" --dry-run
# → 向使用者顯示摘要,等待「是」
# 乾執行顯示 "expirationDate": "2026-11-13"
linshare --json share ./contract.pdf --to [email protected] --expires 2026-11-13 --message "請簽署"

命令

命令功能需要先確認?
linshare login [--server URL] [--email E]使用者一次性登入(密碼,必要時加上 2FA 驗證碼)使用者執行
linshare login --token [--server URL]使用者貼上在 LinShare 網頁 UI 中產生的 token使用者執行
linshare logout忘記(並撤銷)token否
linshare whoami顯示當前使用的伺服器和帳號否
linshare share FILE... --to EMAIL... [--expires 7d|2w|1m|YYYY-MM-DD] [--subject S] [--message M] [--password-link] [--alert-if-not-downloaded WHEN] [--send-me-a-copy] [--dry-run]上傳並透過電子郵件分享是
linshare shares list列出使用者已分享的內容否
linshare shares revoke ID...取消分享是
linshare received list列出他人與使用者分享的內容否
linshare received download ID [--out DIR]儲存收到的檔案(絕不覆寫)否
linshare documents list列出使用者的文件否
linshare documents delete ID...刪除文件是
linshare request-files --from EMAIL... --message M [--label L] [--expires ...] [--dry-run]要求他人傳送檔案(每人一個私人請求)是
linshare requests list列出上傳請求及已收到的檔案否
linshare requests download ID [--out DIR]將收到的檔案以 ZIP 壓縮檔下載否
linshare requests close ID...關閉請求是
linshare spaces list [--in WORKSPACE]列出工作群組和工作空間及其角色否
linshare spaces create NAME [--workspace] [--in WORKSPACE]建立工作群組(或工作空間)否
linshare spaces delete ID...刪除空間及其所有檔案(對所有人)是
linshare spaces files SPACE [--folder ID]列出工作群組中的資料夾和檔案否
linshare spaces mkdir SPACE NAME [--folder ID]建立資料夾否
linshare spaces upload SPACE FILE... [--folder ID] [--dry-run]將檔案放入工作群組(成員會看到)是
linshare spaces download SPACE ID [--out DIR]儲存工作群組檔案(絕不覆寫)否
linshare spaces delete-files SPACE ID...刪除檔案或資料夾(對所有人)是
linshare spaces members SPACE列出成員和角色否
linshare spaces add-member SPACE EMAIL --role R [--dry-run]授予某人存取權限是
linshare spaces set-role SPACE MEMBER ROLE更改角色(MEMBER:電子郵件或成員 ID)是
linshare spaces remove-member SPACE MEMBER移除存取權限是

--to 和 --from 可以重複以指定多人:--to [email protected] --to [email protected]。 「外部」是一個啟發式判斷:與使用者的電子郵件域名不同。

結束代碼

0 成功 · 1 輸入錯誤或指令錯誤 · 2 未登入 / 登入問題 · 3 伺服器拒絕 · 4 伺服器無法連線、故障或太慢("code": "timeout")。

相關技能