mcpField
A
artifact-cafe

artifact-cafe

github.com/cadence-lab生産性0102 回インストール5 日前に更新
リポジトリ

artifact-cafe について

artifact.cafeは、人によるレビュー向けに自己完結型の静的アーティファクトを公開するスキルです。ログイン不要のレビューリンクでコメントを集め、改訂版を公開する流れを支援します。

主な機能

  1. 01コマンドラインで静的フォルダーを公開
  2. 02要素やテキストへのコメント収集
  3. 03アーティファクトの版の公開と管理
  4. 04レビューのアクセス権と有効期限の設定

活用シーン

  1. 01インタラクティブなプロトタイプへの意見収集
  2. 02非技術系レビュー担当者とのデザイン共有
  3. 03コメントを反映した改訂版の公開

インストール

コマンドをコピーしてターミナルで実行します。

$npx skills add https://github.com/cadence-lab/artifact-cafe-skill --skill artifact-cafe

インストール後、Claude Code で/artifact-cafeを入力して読み込まれたか確認します。

同梱ファイル

SKILL.md と一緒にインストールされる参考資料やスクリプト。

references/
access.md
data.md
live-editing.md
organize.md
scripts/
comments.sh
publish.sh

詳細

artifact.cafe

スキルのバージョン:0.13.1

artifact.cafe はレビュー用の静的アーティファクトをホストします。次のループで進めます。

publish a folder → review URL → guest comments (no login) → publish v2

汎用ホスティングプラットフォームではありません。自己完結型の静的アーティファクト(index.html とアセット)をホストするため、人がリンクを開き、要素をクリックしたりテキストを選択したりしてコメントし、作成者が反復改善できます。

インストールまたは更新するには、npx skills add artifact-cafe/skill --skill artifact-cafe -g を実行します(リポジトリ内だけにインストールする場合は -g を省略してください)。

このファイルは常に読み込まれるマニュアルです。詳細なプレイブックは ./references/ にあります(ライブラリの整理、ライブ編集のループ、アクセスと共有、data.md の共有データ)。以下の各セクションには、それぞれを読むタイミングが記載されています。あらかじめすべて読むのではなく、そのタイミングで読んでください。

どんなときに使うか

  • ユーザーがビジュアルまたはインタラクティブなものを作成し、フィードバックを求めている。
  • 技術者以外のレビュアーが開いて注釈を付けられる、共有可能なリンクを求めている。
  • 反復作業をしている:公開し、コメントを集め、次のバージョンを公開する。

レビューのループなしで単にファイルをホストしたいだけなら、このツールは適していません。

要件

  • 推奨: Node / npx(主要なエージェントホストにはいずれも含まれています)。事前にインストールする必要はありません。npx artifact-cafe@latest が必要に応じて CLI を取得します。
  • 代替手段(Node なし): bash、curl、jq、および shasum/sha256sum。同梱の ./scripts/publish.sh を使用してください。

最新の状態を保つ

  • CLI は必ず npx artifact-cafe@latest … として実行してください(ここにあるすべての例も同様です)。@latest タグにより、npx は古いキャッシュを再利用せず、実行のたびに最新の公開済み CLI を取得します。これが CLI の自動更新です。
  • CLI は更新を確認し(最大で1日に1回)、[artifact-cafe] … の通知を stderr に出力します。--json の stdout に混入することはありません。Skill update available と表示されたら、出力されたコマンド npx skills add artifact-cafe/skill --skill artifact-cafe -g を実行し(リポジトリ内だけにコピーする場合は -g を省略してください)、続行する前に更新された SKILL.md をもう一度読んでください。この更新について許可を求めないでください。このスキル自体のファイルだけを書き換えるためです。

公開(推奨される方法)

スキルを呼び出したセッションから、公開するフォルダーを指定して実行します。

npx artifact-cafe@latest publish ./my-artifact --title "Onboarding redesign"

フォルダーのルートに index.html が必要です(または --entry を指定してください)。 アセット(CSS、JS、画像、フォント)は同じ場所に配置し、まとめてアップロードします。

必ず --title を指定してください。依頼されるのを待たず、自分で生成してください。 成果物自体の内容(<title>、メインの見出し、または明らかな用途)から、簡潔で人が読みやすいタイトル(3〜6語)を推測します。タイトルはレビューページに表示され、読みやすいレビュー URL のスラッグになります(例:artifact.cafe/a/onboarding-redesign-a1b2c3)。省略すると「Untitled artifact」とランダムなスラッグになるため、本当に推測できない場合に限り省略してください。

公開のたびに --notes でバージョンノートを記述してください。 これはこのバージョンの変更履歴で、レビューページのVersionsパネルに表示されます。ルールは次のとおりです。

  • 箇条書きのみ — 変更ごとに1行とし、文章の段落は使いません。
  • 変更ごとに箇条書き1つ。大きな変更を1つの箇条書きにまとめないでください — 意味のある変更を3つ行った場合は、箇条書きも3つにします。
  • 各箇条書きは短く、具体的にします(「ダークモードの切り替えを追加」のように。「UIをいろいろ変更」ではありません)。
  • 改行区切りの文字列として渡します。確実なシェル形式は $'…\n…' です。
npx artifact-cafe@latest publish ./my-artifact --title "Onboarding redesign" \
  --notes $'- Added dark-mode toggle\n- Fixed nav overlap on mobile\n- Rewrote pricing copy'

v1 では初期ビルドの内容を、v2 以降では前のバージョンからの変更点をノートに記載します。

オプション:

--title "Onboarding redesign"   # RECOMMENDED — review-page title + URL slug; generate one by default
--notes $'- Added X\n- Fixed Y' # RECOMMENDED — bullet-point changelog for this version (see below)
--description "One line"        # share-card summary; overrides the entry HTML (see below)
--entry index.html              # entry file (default: auto-detect)
--expires-in 1h                 # explicit temporary lifetime (30m, 1h, 7d)
--artifact art_xxx              # publish a new version to an existing artifact
--force                         # intentionally publish despite a newer version; no merge
--workspace acme                # explicit team workspace
--folder specs                  # folder in that workspace — SETS VISIBILITY, see below
--review off                    # plain artifact: no review tools (see below)
--json                          # machine-readable output (use this for agents)
--no-open                       # don't try to open a browser

ユーザーから別の指示がない限り、レビューを開いたままにしてください。 ここで公開する目的はコメントを受け取ることです。--review off を指定すると、レビュー機能のない通常の成果物になります。ユーザーがフィードバックではなく納品物、デモ、またはポートフォリオ作品を求めており、その意向を明示している場合に限って使用してください。 --review readonly を指定すると、既存のコメントは読めるまま、新しいコメントを拒否します。 どちらも後から、公開トークンとアカウントなしで変更できます。

npx artifact-cafe@latest review readonly   # close it to new comments
npx artifact-cafe@latest review open       # reopen it

この操作でコメントが削除されることはありません。レビューを再開すると、コメントも再び表示されます。

--folder によって、誰がレビューリンクを開けるかが決まります。 フォルダーには可視性(public または workspace)が設定されており、公開時に成果物はその設定を引き継ぎます。workspace フォルダーに入れると、レビュー URL は誰でも開けるリンクではなくなります。サインインが求められ、そのワークスペースのメンバーだけがアクセスできます。--folder を指定しない場合、新しい成果物は unlisted になります。リンクを知っていれば、アカウントなしで誰でもアクセスできます。そのため、まず npx artifact-cafe@latest folders --workspace <handle> --json でフォルダーの可視性を確認し、unlisted 以外の場所に公開する場合は、その旨を伝えてください。フォルダーへの整理が引き続きデフォルトです。「ライブラリを整理する」を参照してください。

publish --json は結果を visibility (public | unlisted | workspace | private)として返します。その値を確認し、ユーザーがこれから送ろうとしているリンクで何ができるのかを伝えてください。「ユーザーに伝える内容」を参照してください。

新しいフォルダーに初めて匿名で公開すると、コマンドはレビュー URLと請求 URL(一度だけ表示)を出力します。また、成果物 ID と秘密の公開トークンを含む .artifactcafe/config.json を作成し、Git の追跡対象から除外します。

最初に公開する前に、公開先を決めてください。以下の「公開先を選ぶ」を参照してください。必ず --json を使い、destination フィールドと destinationSource フィールドを報告してください。

公開時に 409 version_conflict が返された場合、ベースとなったバージョンの後に別のセッションが公開しています。エラーには currentVersion が含まれます。artifact-cafe pull を実行し、最新のファイルとローカルの変更をマージしてから、再度公開してください。--force を自動的に使って再試行してはいけません。これを使うとマージせずに、ローカルファイルを新しいバージョンに上書きして公開します。CLI は公開またはリンク後のベースを記憶します。ベースを保存していない古いクライアントでは、従来の動作が継続します。

一時アーティファクト

新しく作成する一度限りのプレビューやインタラクションでは、ユーザーのタスクに合った有効期間を選び、publish --expires-in 1h --json を使用します。モードによって公開するかどうかが決まるわけではありません。既存のアーティファクトは、ユーザーが変更を依頼しない限り、現在の有効期間を維持します。通常の再公開では、明示的に設定された期限が維持されます。既存のアーティファクトを編集するというだけの理由で、新たに一時的な期限を設定すると推測してはいけません。

結果から autoDeleteAt と expiresAt を読み取ります。確認用URLとともに、タイムゾーンを添えて有効な正確な有効期限を共有し、すべてのバージョン、コメント、ファイル、アーティファクトデータが削除されることをユーザーに伝えてください。 時間の計測は公開完了時点から始まります。自分の時計を基準に期限を計算してはいけません。期間は m、h、d のいずれかを末尾に付けた正の整数です。

有効期限が切れる前であれば、コントローラーはバージョンを作成せずに延長または維持できます。

npx artifact-cafe@latest expiration --in 7d --json
npx artifact-cafe@latest expiration --keep --json

フォルダーのバインド、--artifact <id>、通常の認証チェーンが適用されます。マネージャーは、レビュー用ツールバーの時計アイコンから、または「設定」→「一般」→「有効期間」で「有効期限を設定」を選び、その後「永久に維持」することもできます。時計のパネルはクリックしたときだけ開き、パネルと操作項目はスマートフォンの画面幅いっぱいに表示されます。プレーンモードでは、有効期間の管理は設定内で行います。

**「永久に維持」**は UI 上での expiration --keep の名称で、明示的に設定された一時的な期限を解除します。所有者のアーティファクトの場合、自動有効期限がなくなり、URL、バージョン、コメントは維持されます。一時的な期限を解除しただけで匿名アーティファクトが永久になったと説明してはいけません。匿名保持を解除するには、アーティファクトの取得も必要です。返された expiresAt を報告してください。null は、自動有効期限が残っていないことを意味します。 有効期限が切れると、新たなアクセスが停止し、アイテムはリストや検索結果から外れます。毎日のバックグラウンドクリーンアップで内容が削除され、失敗した場合は再試行されます。復元できる期間はありません。 取得されるまで匿名保持によって有効期間に上限が設けられます。--keep で解除されるのは明示的な期限だけです。取得しても明示的な期限は維持されます。

共有リンクの展開プレビューを適切に表示する

レビュー用URLを X、Threads、Slack、Telegram、Discord に貼り付けると、アーティファクトをもとにプレビューカードが作成されます。デフォルトでは、レビューを促す文面が含まれた、生成済みの artifact.cafe カードが使われます。フィードバックが欲しいダッシュボードには適していますが、読むことを目的としたコンテンツには合いません。

レビューするものではなく読むもの(記事、レポート、ガイド、比較など)を作成する場合は、エントリーファイルの <head> に以下を記述してください。

<meta name="description" content="One line on what this is.">
<meta property="og:image" content="cover.png">
<meta name="author" content="Ada Lovelace">

API は公開時にこれらを読み取るため、npm CLI、bash のフォールバック、API の直接呼び出しなど、すべての方法で機能します。og:description と article:author も使用できます。3 つすべてを省略した場合、リンクはこれまでどおりに表示されます。

画像にはサーバー側で適用されるルールがあります。

  • 公開するフォルダー内のファイルである必要があります。 cover.png、./cover.png、/assets/cover.png はすべて使用できます。リモート URL、プロトコル相対 URL、data: URI は拒否されます。
  • PNG、JPEG、WebP、GIF のいずれかで、5 MB 未満である必要があります。適切なサイズは 1200x630 です。SVG は使用できません。
  • 拒否された場合は、生成済みカードに静かに切り替わります。問題は起きず、説明文と署名欄も引き続き表示されます。

--description "…" は、エントリーファイルに記述された内容を上書きします。ドキュメント自体のメタ説明が、タイムラインに表示する文としてふさわしくない場合に使用してください。

アクセス制限付きアーティファクトには、何も設定しません。 パスワード保護されたアーティファクト、ワークスペースアーティファクト、プライベートアーティファクトは、タグの内容にかかわらず、常にロックされたカードとして展開されるため、設定する項目はありません。

公開先を選択する(新しいアーティファクトを公開する前に実施してください)

ランタイムエージェントトークン: ARTIFACT_CAFE_API_KEY が aat_ で始まる場合は、その認証情報を直接使用し、表示も保存もしないでください。whoami、ログイン、ワークスペースの検出、フォルダーの選択は省略してください。--workspace や --folder を指定せずに公開してください。このトークンはそれ自体のワークスペースを正確に選択するため、プロジェクトのデフォルト設定は適用されません。comments、reply、resolve は保存済みの紐付けを使用し、エージェントのアトリビューションで動作します。新しいアーティファクトはデフォルトで unlisted です。リンクを知っている人なら誰でも、アカウントなしで確認できます。アーティファクトには匿名での有効期限、申請用 URL、永続的な公開トークンはありません。アカウント、権限付与、メンバー、ワークスペース管理のコマンドは試さないでください。ランタイムは実行終了時にトークンを失効させます。期限切れまたは失効済みのトークンでは 401 が返されます。

これは、通常の認証情報を使って新しいフォルダーを初めて公開する場合に適用されます。新しいバージョンでは、.artifactcafe/config.json にすでに記録されている公開先を再利用するため、この手順はすべて省略して、もう一度 publish するだけです。次の優先順位で公開先を決定してください。

1. まずログイン状態を確認します。 npx artifact-cafe@latest whoami --json を実行します。

  • ログイン済み(終了コード 0):そのアカウントで公開します。ログイン済みのユーザーが、誤って匿名の 24 時間有効なアーティファクトを作成することがあってはなりません。この順序で確認するのは、その不具合を防ぐためです。キーはオリジンごとに解決され、オリジンは ARTIFACT_CAFE_URL で指定される点に注意してください。これから公開しようとしているオリジンで whoami が失敗した場合、アカウントキーは公開にも適用されません。そのオリジンではログアウト状態であることをユーザーに伝え、匿名での公開を黙って行わないでください。
  • 未ログイン(終了コードが 0 以外):そのまま直接公開します。これは匿名アーティファクトです。24 時間後に期限切れとなり、1 回限りの申請用 URL が返されます。匿名であること、また、先に artifact-cafe login を実行すると、匿名保持なしでアカウント所有のアーティファクトが作成されることをユーザーに伝えてください。

2. 次にワークスペースを選択します(ログイン済みの場合のみ)。 ユーザーが明示的な --workspace を指定した場合、またはプロジェクトの artifact-cafe.json にデフォルト設定がある場合は、それを使用し、確認を求めないでください。それ以外の場合は、npx artifact-cafe@latest workspaces --json でアカウントのワークスペースを一覧表示し、次のように選択します。

  • Personal のみ(チームワークスペースなし):質問せずに Personal に公開します。
  • Personal とチームワークスペースがある:黙って Personal をデフォルトにしないでください。アーティファクトの内容を確認し、その明らかなテーマがユーザーのワークスペースのいずれかに合致する場合(たとえば、「hellyeah」製品の企画で、hellyeah ワークスペースがある場合)は、そのワークスペースと Personal のどちらに公開するかをユーザーに尋ねてから、それに応じて --workspace <handle> を渡してください。

内容は、何を尋ねるかを決めるためのヒントにすぎません。内容から推測したワークスペースに、アーティファクトを黙って公開してはいけません。ユーザーの選択を優先してください。--json を指定すると CLI 独自の対話型ワークスペース選択機能が無効になるため、この手順を省略したログイン済みのエージェントは、Personal をそのままデフォルトにします。そのため、この 2 つの確認は自分で行ってください。

ライブラリを整理する(フォルダー)

Personal を含むすべてのワークスペースには、フラットなフォルダー一覧があります(入れ子にはできません)。適切な場所に分類することも、上手に公開するための一部です。すべてを未分類のまま一か所に置かず、公開時に各アーティファクトを配置してください。

3. フォルダーを選びます(ワークスペースの選択後、最初の公開の前)。 ワークスペースが決まったら、そのフォルダー一覧を表示します。

npx artifact-cafe@latest folders --workspace <handle> --json
  • 既存のフォルダーがアーティファクトの内容に明らかに合う場合は、--folder "<name>"(正確な名前、大文字と小文字を区別します。フォルダー ID も指定できます)を指定して公開します。文字列が一致するかではなく、意味で判断してください。「Specs」フォルダーは、共通する単語がなくても、新しい仕様書の適切な保存先です。
  • 合うフォルダーがなければ、無理に分類せず、アーティファクトを未分類のままにします。実際にグループができた場合に限り、フォルダー(folders create "<name>" --workspace <handle>)を作成してください。単一のアーティファクトのために作成してはいけません。新規作成する前に既存のフォルダーを再利用してください。CLI は重複する名前を拒否します。その場合は「既存のフォルダーを使う」と判断してください。
  • ⚠ フォルダーの公開範囲はアーティファクトにも適用されます。 public フォルダーに公開したり移動したりすると、確認プロンプトが一切表示されずにアーティファクトが公開状態になります。公開先に配置する前にユーザーへ確認し、公開範囲の変更をすべて報告してください(上記の「--folder でレビューリンクを開けるユーザーが決まる」を参照)。
  • 再公開せずに分類し直すには、npx artifact-cafe@latest move --folder "<name>" を実行します(対象を 1 つに絞るには --artifact <id>、ルートに移動するには --unfiled)。新しいバージョンは作成されず、コメントも変更されません。

ユーザーからライブラリの整理を頼まれた場合(「自分のアーティファクトを整理して」「ワークスペースを片付けて」など)は、まず ./references/organize.md を読み、計画を先に提示する手順に従ってください。計画を提示せずに一括移動や一括作成を行ってはいけません。フォルダーの作成ルール、命名の指針、move/list --workspace の詳細も記載されています。フォルダーコマンドには Node CLI とサインイン済みアカウントが必要です。bash の代替手段では配置を管理できません。

Node を使わずに公開する(代替手段)

同じ静的公開パイプラインを、純粋な bash で実行します。npx を利用できない環境向けです。

./scripts/publish.sh ./my-artifact --title "Onboarding redesign"

--title、--entry、--artifact、--json、--no-open に対応し、同じ API を使用して、同じ .artifactcafe/config.json に書き込みます。ワークスペースの検出、プロジェクトのデフォルト設定、人による選択には npm CLI が必要です。新しいアーティファクトに artifact-cafe.json ポリシーがある場合、代替手段は別の保存先にひそかに公開するのではなく、処理を拒否します。

新しいバージョンを公開する

バージョンは不変です。新たに公開しても既存のバージョンは変更されず、コメントは投稿されたバージョンに紐づいたままです。v2 を公開するには、同じディレクトリから同じフォルダーを再度公開してください。

npx artifact-cafe@latest publish ./my-artifact \
  --notes $'- Moved the CTA above the fold\n- Tightened hero spacing'   # → v2, v3, …

前のバージョンからの変更点を説明する --notes を指定してください。変更履歴のない新バージョンでは、レビュー担当者は何を再確認すればよいのかわかりません。

ランタイムの aat_ エージェントトークン、または .artifactcafe/config.json に保存された公開トークンによって、新しいバージョンは自動的に認証されます。トークンのない新しいチェックアウトから公開する場合は、ARTIFACT_CAFE_TOKEN(公開トークン)を設定するか、--artifact <id> で対象を指定してください。ログイン済みであれば、artifact-cafe link --artifact <id>(または --slug <slug>)を実行すると、自分のアーティファクトでも、所属するワークスペースにあるチームメイトのアーティファクトでも、公開権限のあるアーティファクトにフォルダーを紐づけられます。これにより、以降のコマンドは引数なしで実行できます。トークンは不要で、アカウント操作にはログイン情報が使われます。link --json を実行すると、候補が先に一覧表示されます。これにより、他の人が公開したものを基に作業できます。

編集前のダウンロード

アーティファクトがディスク上にない場合は、編集前に取得してください。

npx artifact-cafe@latest pull ./artifact --artifact art_x --json

Pull は、cafe.data のような参照されていないファイルも含め、現在のバージョンのすべてのファイルを元のパスにダウンロードし、SHA-256 ハッシュとサイズを検証します。過去のバージョンには --version N を使用します。空でない保存先には --force が必要です。このオプションは一致するファイルを上書きし、無関係なファイルは保持します。ワークスペースのメンバーシップ、アーティファクトのワークスペース内のエージェントトークン、または匿名/個人用アーティファクトの公開トークンで認証します。ゲストアクセスでは不十分です。Pull は新しいシークレットを作成せずにリンクを作成し、baseVersion を設定します。同じアーティファクトを更新する場合、既存の認証情報と配置は保持されます。別のアーティファクトにリンクされているディレクトリは、--force を指定しても拒否されます。別のディレクトリを使用してください。link は既存のローカルファイルのみを紐付けます。JSON は artifactId、versionNumber、dir、files(path、hash、size、mimeType)を返します。

静的エントリのビルド出力だけでなく、ソースや補助ファイルも一緒に公開してください。そうすれば、次のエージェントが取得して編集できます。一度も公開されていないソースを Pull で復元することはできません。ダウンロードコマンドには npm CLI が必要です。

コメントを取得する

このループの読み取り側です。レビュー担当者のコメントを確認し、エージェントが対応できるようにします。

npx artifact-cafe@latest comments            # open threads on the current version
npx artifact-cafe@latest comments --json     # structured, for programmatic handling
./scripts/comments.sh                 # no-Node fallback

フィルター:--status open|resolved|all、--version current|all。各スレッドには、投稿者、作成時のバージョン、アンカー(引用テキストの範囲または要素パス)、メッセージ本文、返信が含まれます。フィードバックに対応して次のバージョンを公開し、その後、以下の reply/resolve でループを完了します。

CLI とフォールバックのどちらも、フォルダーを指定せずにアーティファクトを読み取るための --artifact <id>(または ARTIFACT_CAFE_ARTIFACT_ID)を受け付けます。これは publish と同じ、切り離された対象指定です。パスワード保護されたアーティファクトには ARTIFACT_CAFE_TOKEN を追加します。

コメントに返信する

このループの書き込み側です。フィードバックに対応するバージョンを公開した後、エージェントが返信する方法です。comments --json から各スレッドの id を取得します。

# Post what changed back into the thread, then close it — one step
npx artifact-cafe@latest reply <threadId> --body "Fixed in v2 — CTA moved above the fold." --resolve

npx artifact-cafe@latest reply <threadId> --body "…"     # reply, leave it open
echo "$msg" | npx artifact-cafe@latest reply <threadId>  # long body from stdin
npx artifact-cafe@latest resolve <threadId>              # close a thread you addressed
npx artifact-cafe@latest reopen <threadId>               # undo — reopen a resolved one

公開トークンまたはエージェントトークンによる返信は、エージェントによるものとして表示されます。レビュー担当者には、ツールのマーク付きで「Yulong's Claude」と表示されます。ここでの名前は、ツール名に自身の名前(自動検出される名前、または --as "Claude Code")を指定し、アーティファクトの所有者名と組み合わせたものです。サインイン済みアカウントで返信すると、代わりに所有者として表示され、ツール名は「via」ラベルに表示されます。単独の resolve よりも reply --resolve を優先してください。これならスレッドを黙って閉じるのではなく、変更内容をレビュー担当者に伝えられます。ほかのコマンドと同じ切り離された対象指定(--artifact <id> と ARTIFACT_CAFE_TOKEN、またはアカウントキー)を使用します。各コマンドで --json を指定できます。

自分が書いたメッセージを修正または取り下げるには、comments --json から ID を取得します(各スレッドの最初のコメントは messageId、各返信は id)。

npx artifact-cafe@latest edit <messageId> --body "Revised — moved the CTA, not removed it."
npx artifact-cafe@latest delete <messageId>

編集または削除できるのは、自分が作成したメッセージのみです。トークンで作成したエージェントの返信、または自分のアカウントによるコメントが対象です。変更を許可するのは、メッセージの作成に使ったものと同じ認証情報です。edit は「編集済み」マーカーを追加します(履歴は残りません)。delete は論理削除です。コメントは「Comment deleted」という墓標表示になり、その下の返信は残ります。

レビュースレッドを開始する

reply は既存のスレッドに返信します。comment は新しいスレッドを開始し、アーティファクトに自分のレビューメモを残します。

npx artifact-cafe@latest comment --quote "Where AI work lives" --body "This headline is vague."
npx artifact-cafe@latest comment --body "Overall this reads well."   # page-level, no --quote

ループ内のほかの操作とは異なり、comment は自分のアカウントとして投稿するため、artifact-cafe login が必要です。公開トークンではスレッドを開始できません(エージェントは返信し、アカウントは開始します)。公開トークンしかない場合は、ログインを促すヒントが返されます。--quote は一致するテキストにスレッドのアンカーを設定します(同じ引用が繰り返される場合は、--prefix/--suffix で特定します)。--quote を指定しない場合は、ページレベルのコメントになります。--as "Claude Code" は、アカウント名の後に表示されるラベルを設定します。これは名前に追加されるものであり、名前を隠すものではありません。省略した場合は、投稿時に環境から自動検出されます。

comment、edit、delete(listen と同様)には Node CLI が必要です。bash フォールバックはありません。

ライブ編集モードを提供する(オプトイン)

公開とライブ編集は別々の操作です。公開してレビュー URL を共有した後、 ユーザーにライブ編集モードに入るかどうかを尋ねてください: ローカルのアーティファクトに接続したまま、新しいコメントが届くたびに受け取り (npx artifact-cafe@latest listen --json --timeout 540)、修正し、レビュー中に 新しい不変バージョンを公開します。

ライブ編集モードを自動的に開始しないでください。 ユーザーはリンクを 共有して、エージェントのセッションをアクティブに保たずに非同期でフィードバックを 集めたい場合があります。明確な同意を得た後、./references/live-editing.md を読み、 そこに記載されたループ(listen → edit → publish → reply --resolve → listen)を実行してください。 listen が 2(タイムアウト)で終了した場合は、リスニング時間が終了したことをユーザーに伝え、 再実行する前に続けるかどうかを尋ねてください。無人のセッションを 無期限に稼働させないでください。

永続的な共有データ

訪問者間で共有する投票、ゲストブック、出欠確認、または投稿の収集には、 Artifact Data を使用してください。アーティファクトはクレーム済みである必要があります。 ゲストはアカウントなしで投稿できます。マニフェストを作成する前に ./references/data.md を読んでください。

レビューページを開く

npx artifact-cafe@latest open     # prints (and, in a terminal, opens) the review URL

ローカル設定と公開トークン

最初の公開後、フォルダーには次のものが保存されます(aat_ による公開では publishToken は省略されます):

.artifactcafe/config.json
{
  "artifactId": "art_…",
  "slug": "…",
  "url": "https://artifact.cafe/a/…",
  "apiUrl": "https://artifact.cafe",
  "publishToken": "apt_…"
}
  • publishToken は秘密情報であり、一度だけ返され、このアーティファクトへの新しいバージョンの公開を認可します。表示、コミット、ログへの記録は絶対にしないでください。 CLI はこれを chmod 600 で保存し、.artifactcafe/ を .gitignore に追加します。
  • config.json は URL ではなく、内部の関連付け状態として扱ってください。ローカルファイルのパスをレビューリンクのようにユーザーに提示しないでください。

レビューリンクを開ける人

すべてのアーティファクトには公開範囲があります。public と unlisted は、アカウントなしでリンクを知っている人なら誰でも開けます(新しいアーティファクトのデフォルトは unlisted — ランダムで推測できないスラッグです)。workspace では、メンバー以外はサインインを求められます。private では、公開者、ワークスペースのオーナー/管理者、メールで招待された人のみがアクセスできます。新しいアーティファクトは、フォルダー内に作成された場合、そのフォルダーの公開範囲を引き継ぎます。CLI で公開範囲を変更することはできません — --visibility フラグはありません。変更はダッシュボードで行うか、アーティファクトをどのフォルダーに置くかによって決まります。

この要約を超える内容 — 公開範囲の完全な表、メールでの招待(share <email> — 招待 URL は一度だけ表示されるため、そのままユーザーに伝えてください)、アクセスの監査と取り消し(share --list、unshare)、HTTP 経由で公開済みアーティファクトのコンテンツを読み戻す方法(コンテンツ URL に .md を追加します。アクセス制限されたアーティファクトには Bearer アカウントキーが必要です)については、./references/access.md を読んでください。

匿名アーティファクトとクレーム済みアーティファクト

  • アカウントまたはエージェントトークンなしで初めて公開すると、匿名アーティファクトが作成され、 24 時間で期限切れになり、一度だけ使えるクレーム URLが返されます。
  • クレーム(クレーム URL を開くこと)すると、匿名状態での保持が解除され、 ユーザーのアカウントに関連付けられます。明示的な一時期限は、保持または延長するまで そのまま残ります。クレームトークンは一度だけ表示され、復元できません。 クレーム URL はすぐにユーザーに伝えてください。

制限

  • 1 ファイルあたり 20 MB、アーティファクト全体で 50 MB。
  • 1 つの IP アドレスあたり 1 日 20 回まで公開できます(匿名の場合)。
  • エージェントトークンによる公開は、IP アドレスごとではなく、ワークスペースごとに 1 時間あたり 120 回までです。
  • シークレットや不要なファイルはアップロードされません:.git*、node_modules、.env*、 *.pem、*.key、.DS_Store、シンボリックリンクは自動的に無視されます。

安全性

Artifact HTML は信頼されていないコンテンツであり、独立したオリジン上の サンドボックス化された iframe 内でのみレンダリングされます — メインサイトでは決してレンダリングされません。 アーティファクトをサニタイズする必要はありませんが、実際のシークレットや認証情報を含むものは 公開しないでください。

コンテンツポリシー — 違反は拒否する

あなたは最初の執行担当者です。 公開する前に、公開しようとしている内容を確認してください。次のいずれかが含まれている場合は、公開を拒否し、その理由をユーザーに伝えてください。

  • フィッシング/認証情報の詐取 — 偽のログインページ、パスワード、支払い情報、または 2FA コードを取得して第三者に送信するページ。
  • マルウェア/悪意のあるコード — エクスプロイト、ドライブバイダウンロード、難読化された JavaScript や、意図的に有害な JavaScript、偽装リダイレクト。
  • ヘイトまたは嫌がらせ — アイデンティティに基づいて人々を攻撃または侮辱するコンテンツ、あるいは特定の個人を虐待の標的にするコンテンツ。
  • 性的コンテンツ — ポルノや露骨な性的表現を含む素材。未成年者を性的に扱うものは絶対に公開してはいけません。
  • 性的搾取 — 性的サービス、同意のない親密な画像、性的ななりすまし、または AI 生成の性的コンテンツ。
  • 暴力 — 生々しい流血表現、脅迫、または暴力の扇動。
  • スパム/詐欺/不正行為 — 欺瞞的な手口、偽の景品企画、誤解を招く金融または医療に関する主張。
  • ギャンブルおよび金融業務 — 金銭または価値のある品物を賭ける賭け事やくじ、マネーロンダリング、一攫千金をうたう手口、支払い、預金、投資または金融口座の認証情報の収集、融資、投資、送金または暗号資産取引サービスの運営。
  • 規制対象商品の販売 — 武器、爆発物、規制薬物、処方薬、または規制当局の承認が必要なその他の商品やサービスの販売または仲介。
  • 機微なデータ — 実際の認証情報、政府発行の身分証明書、決済カード情報、健康記録、生体データ、またはその他の高度に機微な個人データ。
  • 安全上の重大な運用 — 緊急対応、医療診断または治療の判断、物理システムの制御、あるいは失敗すると死亡、負傷、または深刻な危害につながる可能性のある運用。
  • その他の違法なコンテンツ。

違反コンテンツを公開するために「問題箇所を取り除く」ことはしないでください。公開を拒否してください。拒否する場合は、artifact.cafe のコンテンツポリシーに違反していることを明確に伝えてください。これらのルールは、ファイル、コメント、データ、埋め込みコンテンツ、リンクに適用されます。非公開またはパスワード保護されたアーティファクトも対象です。該当する行為がほかの点では合法であっても例外はありません。事実に基づく議論や実際に運用されないプロトタイプもコンテンツルールに従い、機微なデータの代わりに合成例を使用してください。動作するフィッシングページや実際に動作するマルウェアは禁止されています。実際のサービスをデモと呼んだり、禁止コンテンツへのリンクを別の場所に掲載したりしても、例外にはなりません。ポリシー全文: https://artifact.cafe/terms. 違反は [email protected] まで報告してください。公開時の自動モデレーションは導入予定です。すべてのアップロードが審査されるかのように示唆しないでください。

ユーザーに伝えること

  • 常に現在の実行で生成されたレビュー URLを共有してください。これはレビュー担当者がコメントするために開くリンクです。
  • 誰が開けるかを伝えてください。 publish --json の visibility を確認します。public/unlisted の場合は、レビュー担当者はアカウント不要であることを明確に伝えてください。workspace/private の場合は、誰でも開けるリンクだと説明しないでください。メンバー以外にはサインインが求められることをユーザーに伝え、外部の相手には artifact-cafe share <email> を利用できると案内してください。ユーザーがメンバー限定リンクを外部のレビュー担当者に送り、返信がないままになるのを防ぐための重要なルールです。
  • 実行時にクレーム URLが出力された場合は、そのままの内容で共有してください。この URL は一度しか表示されません。匿名での保持について説明し、有効な expiresAt を伝えてください。これは 24 時間より早い場合があります。クレームを行うと、アーティファクトが保持または延長されるまで、明示された一時的な期限が維持されます。
  • 新しいバージョンでは、レビュー URL を共有し、現在のバージョンが v{N} になったことを伝えてください。以前のコメントは、それぞれ元のバージョンに残ります。
  • URL やトークンを確認するために .artifactcafe/config.json を読むよう、ユーザーに案内してはいけません。

コメント