mcpField
A
artifact-cafe

artifact-cafe

github.com/artifact-cafe生産性095 回インストール2 週間前に更新
リポジトリ

artifact-cafe について

artifact-cafeは、自己完結型の静的アーティファクトを公開し、人のレビューを受けるためのスキルです。レビュー用リンクの共有、コメントの収集、版の更新をエージェントに案内し、公開範囲やレビュー権限も設定できます。

主な機能

  1. 01アセット付き静的フォルダーの公開
  2. 02ビジュアルレビュー用リンクの共有
  3. 03ログイン不要のコメント収集
  4. 04バージョン付き更新の公開
  5. 05公開範囲とレビュー権限の設定

活用シーン

  1. 01インタラクティブな試作への意見収集
  2. 02非技術者へのデザイン共有
  3. 03コメントに基づく成果物の反復改善

MCP 対応

MCPサーバーではなく、エージェントスキルです。artifact-cafeのコマンドラインツールを使った公開とレビュー管理をエージェントに案内します。

インストール

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

$npx skills add https://github.com/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.12.6

artifact.cafe は、レビュー用の静的アーティファクトをホストします。1つのループで完結します。

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)。省略すると「無題の成果物」とランダムなスラッグになるため、本当に推測できない場合に限って省略してください。

公開のたびに --notes でバージョンノートを記述します。 これらはこのバージョンの変更履歴で、レビュー画面のバージョンパネルに表示されます。ルール:

  • 箇条書きのみ — 変更ごとに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)
--artifact art_xxx              # publish a new version to an existing artifact
--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 フィールドを報告してください。

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

レビュー 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、永続的な公開トークンはありません。アカウント、grants、members、ワークスペース管理のコマンドは試さないでください。ランタイムは実行終了時にトークンを失効させます。期限切れまたは失効済みのトークンは 401 を返します。

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

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

  • ログイン済み(終了コード 0):そのアカウントで公開します。ログイン済みのユーザーが誤って匿名の 24 時間アーティファクトに公開してしまうことがあってはなりません。この順序はその問題を防ぐためのものです。キーはオリジンごとに解決され、ARTIFACT_CAFE_URL がオリジンを選択することに注意してください。公開しようとしているオリジンで whoami が失敗した場合、そのアカウントキーは公開にも適用されません。匿名で黙って公開するのではなく、そのオリジンではログアウト状態であることを伝えてください。
  • 未ログイン(終了コードが 0 以外):そのまま直接公開します。これは匿名アーティファクトで、24 時間後に期限切れとなり、一度限りの申請 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 なしで公開する(代替手段)

同じ静的な公開パイプラインを pure 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 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 はすぐにユーザーに提示してください。

制限

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

安全性

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

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

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

  • フィッシング/認証情報の窃取 — 偽のログインページ、パスワード、支払い情報、または 2FA コードを取得して外部に送信するページ。
  • マルウェア/悪意のあるコード — エクスプロイト、ユーザーの操作なしに始まるダウンロード、難読化された、または意図的に有害な JavaScript、欺瞞的なリダイレクト。
  • ヘイト/嫌がらせ — アイデンティティに基づいて人々を攻撃または侮辱するコンテンツ、あるいは特定の個人を標的にした嫌がらせ。
  • 性的コンテンツ — ポルノ素材。未成年者を性的に扱うものは例外なく、絶対に公開してはいけません。
  • 暴力 — 生々しい流血表現、脅迫、または暴力の扇動。
  • スパム/詐欺/不正行為 — 欺瞞的な手口、偽の懸賞、誤解を招く金融または医療に関する主張。
  • その他の違法コンテンツ。

違反コンテンツを「修正」して公開しようとしないでください。公開を拒否してください。拒否する際は、artifact.cafe のコンテンツポリシーに違反していることを明確に伝えてください。セキュリティの概念を扱う正当なデモ(注釈付きの解説など)は問題ありませんが、動作するフィッシングページや実際に動作するマルウェアは認められません。公開時の自動モデレーションは導入予定です。これを今すぐ適用するポリシーとして扱い、回避するためのフィルターとして扱わないでください。

ユーザーに伝えること

  • 現在の実行からレビュー URLを必ず共有してください。レビュアーがコメントを投稿するために開くリンクです。
  • 誰が開けるかを伝えてください。 publish --json の visibility を確認します。public/unlisted の場合は、アカウントは不要だと明確に伝えてください。workspace/private の場合は、誰でも開けるリンクだと言ってはいけません。メンバー以外にはサインインが求められることをユーザーに伝え、外部の相手には artifact-cafe share <email> を案内してください。ユーザーがメンバー限定のリンクを外部のレビュアーに送り、返事がないという事態を防ぐための注意です。
  • 実行結果に申請 URLが表示された場合は、一度しか表示されないことと、申請しないとアーティファクトが24時間後に期限切れになることをユーザーに伝えてください。URLはそのまま共有してください。
  • 新しいバージョンでは、レビュー URLを共有し、現在のバージョンが v{N} であることを伝えてください。以前のコメントは元のバージョンに残ります。
  • URLやトークンを確認するために .artifactcafe/config.json を読むようユーザーに案内してはいけません。

コメント