linshare は何をしますか?
linshare は LinShare サーバー(バージョン6.5以降)向けのコマンドラインツールです。
ユーザーのドキュメントを安全に共有するために使用します。
最初にセットアップを確認
会話の中で最初の LinShare コマンドを実行する前に、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 <アドレス>と入力し、Web UI から取得したトークンを貼り付けます。 - 終了コード0:サーバーとアカウント情報が表示されます。リクエストを続行してください。
ルール — 毎回必ず従うこと
- 常に
--jsonをlinshareの直後に指定し(linshare --json shares list)、JSON を読み取ってください。 - ログインはユーザーが行い、あなたは絶対に行いません。 コマンドが終了コード2(
"code": "auth")で失敗した場合、ユーザーに自分で! linshare loginと入力するよう依頼してください(SSO でサインインし、Web UI からトークンを持っている場合は! linshare login --token)。パスワードを尋ねたり入力したりしないでください。 - アカウントからデータが出ていく前、または破壊される前に、明示的な「はい」を得てください。 これには
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はユーザーの言葉から取った短い名前(「10月の請求書」)にします。指定がない場合、ツールは「<あなたのメール> 宛のファイル」を選択します。request-filesには--messageが必要です(LinShare はメッセージなしのリクエストを拒否します)。ユーザーがメッセージを指定しなかった場合、ドライラン前にテキストを尋ねてください。文言を提案しても構いませんが、ユーザーが承諾した場合のみ使用します。- 有効期限が指定されていない場合(
"expirationDate": null)、サーバーのデフォルトの有効期限が適用され、「無期限」ではありません。 - 明示的な「はい」を待ちます。ユーザーが何か(受信者、有効期限、ファイル)を変更した場合は、新しい
--dry-runを実行して再度確認します。過去の承諾を再利用しないでください。 - 実際の実行では、ドライランの
expirationDateを--expires YYYY-MM-DD(ユーザーが承認した正確な日付)として渡し、7dのような相対値は使用しません。--alert-if-not-downloadedも同様にドライランのalertIfNotDownloadedの値を使用します。
- サーバーを確認し、自分の記憶に頼らないでください。 何かが共有されたか、送信されたか、取り消されたか、閉じられたかをユーザーに伝える前に、対応する一覧表示コマンド(
shares list、requests list、documents list、spaces files、spaces members)を実行します。以前の会話の情報は古くなっている可能性があります。 - 読み取り専用コマンドには確認は不要です:
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)も確認は不要です。ファイルやメンバーが追加されるまでは、他の誰もそれらを表示できないためです。 - 共有後は、どのファイルが誰に、いつまで送られたかをユーザーに伝えます。ダウンロード: LinShare は各受信者が初めて共有をダウンロードしたときに送信者にメールを送信し、
shares listにはdownloadedカウントが表示されます — これを使用して「X さんはダウンロードしましたか?」という質問に答えてください。ファイルが ダウンロードされなかった 場合に警告を受けるには、--alert-if-not-downloaded(日付、3dのような期間、またはoff。指定しない場合はサーバーのデフォルトが適用されます)を使用します。 - 共有スペース。 ワークグループ はチームで共有するファイルを保持します。ワークスペース はワークグループをグループ化します。コマンドは ID を受け取ります:
spaces listを実行してスペースを検索し、spaces files SPACE [--folder ID]でフォルダやファイルを検索します。複数のスペースが同じ名前を持つ場合があります。ユーザーの言葉が複数に一致する場合は、どれかを尋ねてください。ファイルをメールで共有する(share)ことと、ワークグループに入れる(spaces upload)ことは異なります。不明な場合は尋ねてください。 LinShare 7.0 ではサーバーのバグにより一部の機能が動作しません:spaces membersはメンバーを一覧表示できません(set-role/remove-memberにはadd-memberで出力されたメンバー ID を使用してください)。また、ワークスペース に人を追加することはできません(そのワークグループにのみ追加可能です)。メッセージをそのまま伝え、別の方法で再試行しないでください。 - エラー時は
error.messageを平易な言葉で伝えます。拒否された共有を、確認なしに異なる設定で再試行しないでください。終了コード1はコマンド自体が間違っていることを意味します(修正し、ユーザーにログインを依頼しないでください)。共有が失敗した場合、ツールはアップロードされたファイルを削除し、その旨を報告します。error.codeが"timeout"の場合、結果は不明です — 再試行する前にメッセージに従い(shares list/documents listを確認して)ください。 - 大きなファイル は問題ありません。2 MiB を超える場合、ツールは Web UI と同様にチャンク分割で送信します。高速ネットワークでは約 15 秒/GB かかりますが、低速ネットワークでははるかに長くなります。数百 MB を超えるファイルの場合は、
shareコマンドに長いタイムアウトを設定する(またはバックグラウンドで実行する)ようにして、中断されないようにし、しばらく時間がかかる可能性があることをユーザーに伝えてください。
典型的な流れ
linshare --json share ./contract.pdf --to [email protected] --expires 7d --message "Please sign" --dry-run
# → 要約をユーザーに表示し、「はい」を待つ
# dry-run で "expirationDate": "2026-11-13" と出力された場合
linshare --json share ./contract.pdf --to [email protected] --expires 2026-11-13 --message "Please sign"
コマンド
| コマンド | 機能 | 事前確認が必要? |
|---|---|---|
linshare login [--server URL] [--email E] | ユーザーが一度だけログイン(パスワード、必要に応じて2FAコード) | ユーザーが実行 |
linshare login --token [--server URL] | ユーザーが LinShare Web UI で作成したトークンを貼り付け | ユーザーが実行 |
linshare logout | トークンを忘却(および取り消し) | いいえ |
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")。