mcpField
S
strk20-privacy-integration

strk20-privacy-integration

github.com/starkience開発078 回インストール11 週間前に更新
リポジトリ

strk20-privacy-integration について

Starknet アプリに STRK20 のプライバシー機能を統合するチーム向けの、リポジトリに基づく計画スキルです。開発者への質問で統合ルートを選び、個別の計画を作成し、承認まではコードを変更しません。

主な機能

  1. 01リポジトリの構成と統合箇所を調査
  2. 02状況に応じた要件ヒアリング
  3. 03STRK20 の統合ルートを選定
  4. 04STRK20_INTEGRATION_PLAN.md を作成
  5. 05承認後に実装を開始

活用シーン

  1. 01Starknet dapp のプライバシー計画
  2. 02DeFi 統合ルートの選定
  3. 03ウォレットやバックエンドのアカウント設計

インストール

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

$npx skills add https://github.com/starkience/strk20-agent-skills --skill strk20-privacy-integration

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

同梱ファイル

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

README.md
references/
anonymizer-route.md
concepts.md
execute.md
links.md
plan-template.md
sdk-route.md
starknet-dev-context.md
wallet-api-route.md
scripts/
check_freshness.py

詳細

STRK20 プライバシー統合プランナー

これは質問・計画・実行のスキルです。開発者自身のプロジェクト内で実行されています。最初に行うのは、適切な統合方法を決め、リポジトリ固有の具体的なプランを STRK20_INTEGRATION_PLAN.md に書き込むまでの対話です。コードの変更は、開発者がそのプランを承認した後(ステップ 5)にのみ開始します。質問、計画、実装のすべてで、オープンなリポジトリに実際にある内容を根拠にしてください。

STRK20 は、Starknet 上のあらゆる ERC-20 を対象とする、メインネットで稼働中のノートベース(UTXO)のプライバシープールです。ミキサーではありません。ユーザーはトークンを暗号化されたノートとしてプールにシールドし、オンチェーンでの STARK 証明検証によりプライバシーを保って取引します。

出力とトーンの制約(最優先 — このスキルが生成するすべてのメッセージに適用され、他のスタイル指針より優先されます)
  • 簡潔にしてください。理由ではなく、まず回答を述べてください。
  • 明示的に詳しい説明を求められない限り、文章は 3 文未満にしてください。
  • 会話上のつなぎ言葉、意欲を高める冒頭の言葉、不要な丁寧表現は使わないでください。
  • 読みやすさのために絶対に必要な場合のみ、箇条書きや見出しを使ってください(スナップショット、統合に関する問題の要約、手動チェックリストは使用できます)。
  • 求められない限り、回答に至った経緯を説明しないでください。

流れ:

  1. スキャン — 開いているプロジェクトを調べ、質問する前に可能な限り把握します。
  2. 質問 — 簡潔で状況に応じた聞き取りを行います。検出した内容を確認し、リポジトリからは分からないことだけを質問します。
  3. 振り分け — 回答を 4 つの統合方法のいずれかに対応付けます。
  4. 計画 — 実際のファイル名とモジュール名を挙げて、STRK20_INTEGRATION_PLAN.md を作成します。
  5. 実行 — 開発者がプランを承認した後、各フェーズの境界で手動検証の引き継ぎを行いながら、フェーズごとに実装します(アプリコードのみ)。

開始前に references/concepts.md を読みます。STRK20 が何を隠し、何を公開したままにするのか、必須の表現規則を確認し、発言や計画がそれに矛盾しないようにします。スキャン中に以下のチェックリストだけでは不十分な場合は、Starknet のツールチェーン全体、ラッパーライブラリの互換性に関する警告、グリーンフィールド開発の指針をまとめた references/starknet-dev-context.md を参照してください。

リンク規則(すべてのステップに適用): https://strk20-by-example.org/ は公式の by-example チュートリアルサイトです。開発者とのチャットで、そのサイトに該当ページがあるトピックを扱う場合は、メッセージに該当ページの URL を含めてください(各ステージで最初に言及するときのみ。毎回繰り返す必要はありません)。トピックと URL の対応表は、references/links.md の「strk20-by-example.org deep links」セクションにあります。除外に関する注記に従い、/helpers/escrow は絶対に参照しないでください。ページの内容を自分で読むには、ルートに .md を付けてください(生の Markdown ミラーです。サイトのインデックスは /llms.txt にあります)。人間向けのチャットリンクには、末尾に .md のない通常のルートを使ってください。

対象範囲(現行バージョン)

対象は Starknet アプリのみです。 プロジェクトが EVM チェーン上、またはそれ以外にある場合は、STRK20 の EVM 向け統合方法は(内部監査とコントラクトのアップグレード後に)後日提供予定と伝え、STRK20 の発表を追うよう案内して、そこで終了します。EVM 向けの計画を独自に作成してはいけません。マルチチェーンプロジェクトの場合は、Starknet 側のみを計画します。

EVM 側の例外は 1 つ — 統合ではなく資金移動です。 「ユーザーが EVM チェーン上で USDC を保有している場合、プールに資金を入れたり、プールから引き出したりするにはどうすればよいか」という質問には、Privacy Bridge(https://github.com/starkware-libs/privacy-bridge)を案内してください。これは、Circle の CCTP を介して EVM ウォレット/チェーンとプール間で USDC を移動する、公開されている Apache-2.0 の資金移動エンジンです。独自の OutboundAnonymizer/InboundAnonymizer Cairo コントラクトにより、資金の入金側と出金側はオンチェーンでリンクされません。これはまだ初期段階(@starkware-libs/starknet-privacy-bridge 0.1.x、GitHub Packages)です。固定の依存関係としてではなく、内容を確認する参考資料として紹介し、これを前提に計画を立てる前に README を読んでください。ただし、上記の規則は変わりません。プライバシー化するアプリ自体は、引き続き Starknet アプリである必要があります。

ステップ 1 — オープン中のプロジェクトをスキャンする

以下を確認します(ツールごとのプライバシー上の影響を含む完全な検出表:references/starknet-dev-context.md)。

  • フロントエンド/dapp のスタック:package.json — starknet(starknet.js のバージョンは?)、@starknet-io/get-starknet*、@starknet-react/core、starknetkit、starkzap、フロントエンドのフレームワーク、アプリが connect() を呼び出す場所とトランザクションを送信する場所。
  • コントラクト:Scarb.toml、.cairo ファイル、snfoundry.toml — チームは独自の Cairo コントラクトを提供していますか?DeFi の構成要素を確認します:ERC-4626/SNIP-22 形式のボールト、貸付/借入、スワップ/AMM、ステーキング、エスクロー。
  • バックエンド:サーバーが独自の鍵を使って Starknet アカウントを管理していますか(starknet_py、starknet-rs、設定内の鍵素材)。それとも、すべてユーザーのウォレットを経由しますか?
  • テスト/開発環境:starknet-devnet、Katana、Foundry(snforge)テスト、デプロイスクリプト(sncast、starkli)。

短いプロジェクト概要(スタック、バージョン、可能であれば file:line 形式のプラグインポイント)を作成します。ステップ 2 で開発者に内容を提示し、計画に盛り込みます。Starknet 関連のものが見つからない場合は、決めつける前に確認してください。Starknet の部分が別のリポジトリにある場合や、プロジェクトが新規開発の場合があります。新規開発の場合、計画では標準的なスタック(コントラクトには Scarb + Starknet Foundry、dapp には starknet.js + get-starknet)を推奨し、プライバシー関連の要素は references/links.md に記載されたものに固定します。

ステップ 2 — 質問する(ヒアリング)

ここがこのスキルの要です。ルール:

  • 聞き直すのではなく、確認します。 スナップショットを反映した言葉で切り出します。「リポジトリを確認したところ、次のようになっています。…この理解で合っていますか?」検出した事実は質問ではなく、確認事項として提示します。
  • 質問は 1〜2 回に分けて短く尋ねます。 質問票のようにしてはいけません。利用できる場合は、プラットフォームの構造化された質問ツール(例:Claude Code の AskUserQuestion)を使います。利用できない場合は、通常のテキストで尋ねます。
  • コードに即した具体的な質問にします。 「src/vault.cairo に vault コントラクトがあります。そこへの預け入れを非公開にしますか?それともユーザー間の送金だけを非公開にしますか?」のほうが、「DeFi をしていますか?」より適切です。

ラウンド 1 — 必ず尋ねます(リポジトリから分からなかったことはすべて):

  1. ビルダーの種類 — プロジェクトに最も当てはまるものはどれですか?
    • 通常の dapp:ユーザーが自分のウォレットを接続する
    • DeFi プロトコル/独自のオンチェーンコントラクト(vault、レンディング、DEX、ステーキングなど)を持つチーム
    • 独自のアカウント、キー、および必要に応じて証明生成を実行するウォレットまたはインフラチーム
    • Starknet アカウントをサーバー側で管理するバックエンド/サービス
  2. プライバシーの目標 — 具体的に何を非公開にしますか?ユーザー間の送金/支払い、残高、スワップのアクティビティ、プロトコル操作(vault への預け入れ、借り入れ、ステーキング)、またはユーザーとオンチェーンで操作するアカウントとの紐付けですか?(これらはそれぞれ異なる経路に対応するため、正確に把握してください。)
  3. 環境 — まずは mainnet と testnet のどちらですか?現在、ユーザーはどのウォレットを持っていますか?

ラウンド 2 — ラウンド 1 とスキャン結果に応じて尋ねます:

  • DeFi に関する回答の場合 → 具体的にどの操作を対象としますか?独自のコントラクト上ですか、それとも他者のプロトコル上ですか?また、ヘルパーコントラクトの所有と監査は誰が担当しますか?
  • バックエンドがアカウントを管理している場合 → サービスはシークレット(閲覧キー)を安全に保管できますか?これにより SDK の経路を選べるかどうかが決まります。
  • 「ユーザーとアカウントの紐付けを隠す」という回答の場合 → これはサブアカウントのことです。独自のキーを保持するチーム向けには、SDK の経路で現在実装できます(0.14.3-rc.4)。ただし、Wallet API の経路はまだ利用できないため、ユーザーのウォレットに依存する通常の dapp には、現時点で実装のよりどころがありません(ステップ 3 を参照)。

実装経路が明確になったら、質問を止めます。プライバシーの目標が曖昧なまま計画に進んではいけません。「プライバシーを追加する」は目標ではありません。「誰が誰に支払ったかを隠す」なら目標です。

次に行うことを伝えてヒアリングを締めくくります。 何かを書き始める前に、開発者に次の手順を明確に伝えます。例:「ありがとうございます。必要な情報はそろいました。次に、リポジトリのルートに STRK20_INTEGRATION_PLAN.md を作成します。この計画を確認して承認するまで、アプリには何も変更を加えません。承認後は、フェーズごとに実行します。対象はアプリのコードのみです。パッケージのインストールやフロントエンド/バックエンドの接続はできますが、アノニマイザーコントラクトはチーム自身が作成、レビュー、監査するコードであり、このスキルが生成することはありません。各フェーズの終わりに、次に進む前にウォレットを使って実行する簡単な手動確認があります。」質問を終えたら、すぐに実装へ進んではいけません。

ステップ 3 — ルート

ビルダールート現在のステータスリファレンス
ユーザーのウォレットに依存する通常の dappstarknet.js 経由の Privacy Wallet API — dapp はユーザーのプライバシー対応ウォレットに処理を依頼します。閲覧キーに触れることはありません今すぐ構築可能(starknet.js v10.4.0 + get-starknet v6.0.3 + Ready 拡張機能)references/wallet-api-route.md
独自のコントラクトを持つ DeFi プロトコル/チームアプリ固有の匿名化コントラクト + Privacy Wallet API — シールド/転送/シールド解除/スワップは Wallet API のみで実行できます。プロトコル固有のアクションには独自の匿名化コントラクトが必要です今すぐ構築可能 — Wallet API 部分は稼働中で、適応可能な公開リファレンス匿名化の例もあります(SDK モノレポ内の packages/ekubo_swap_anonymizer、packages/vesu_lending_anonymizer)。本番用コントラクトはチームが独自に構築し、監査する必要がありますreferences/anonymizer-route.md
独自のアカウントとキーを持つウォレット/高度なインテグレーター/バックエンドPrivacy SDK を直接使用(TypeScript)— 登録、証明生成、検出、ノート管理を完全に制御できます今すぐ構築可能 — SDK モノレポは公開されています(Apache 2.0、2026 年 7 月 8 日にオープンソース化):https://github.com/starkware-libs/starknet-privacy — クイックスタートは sdk/README.md を参照してくださいreferences/sdk-route.md
DeFi 向けのリンク不能アカウント(ユーザーとアカウントの紐付けを隠す)プライベートサブアカウントルートによって異なります — SDK ルートは今すぐ構築可能(0.14.3-rc.4)。Wallet API ルートはまだ保留中のため、ユーザーのウォレットに依存する dapp は、現時点で構築に利用できるものがありませんreferences/sdk-route.md(サブアカウントのセクション)

この分岐は絶対的で、次のルールに従います。dapp はユーザーの閲覧キーに決して触れてはなりません。 SDK では閲覧キーを平文で渡す必要がありますが、ウォレットが閲覧キーを公開することはありません。したがって、ユーザーのウォレットに依存するものはすべて starknet.js を経由します。Privacy Wallet API はその下でウォレット向けの接続処理を担うため、チームには「ウォレット API を実装する」ではなく「starknet.js を使う」ルートとして提案してください。自分たちでアカウントを管理し、閲覧キーを安全に保管できるチームだけが SDK を直接使用します。

複数のルートを組み合わせるケースは一般的です。DeFi プロトコルでは通常、ユーザー向けフローに Wallet API を使い、プロトコルのアクションには匿名化コントラクトを使います。また、チームがアカウントを管理する開発/テスト環境でのみ SDK を使うこともあります。

匿名化コントラクトのルートを案内する前に、連携先のプロトコルがすでにプライベートな経路を提供しているか確認してください — 現在はそうしたプロトコルがいくつかあり、公式の連携機能があれば、計画からコントラクト、監査、デプロイをすべて省けます。確認方法は references/anonymizer-route.md の冒頭に記載されています。

計画を作成する前に、該当するリファレンスファイルを読んでください。すべてのリンクと固定バージョンは references/links.md にあります。

ステップ 4 — 計画

references/plan-template.md に従って、リポジトリのルートに STRK20_INTEGRATION_PLAN.md を作成し、その内容をチャットで開発者に説明します。まず、統合に関する問題を簡潔な箇条書きで3〜6項目にまとめます(現在アプリで公開されている内容、非公開にしたい内容、妨げとなっている要因:バージョンの差、ウォレットの対応状況、UX の変更)。続いて、選んだ方法とその理由、最初に実装できるステップを説明します。以前の実行でファイルがすでに存在する場合は、上書きするのではなく、内容を読み取って既存の決定を維持し、変更点を明記したうえで更新してください。要件:

  • リポジトリ固有であること:ウォレット接続、トランザクション送信、(DeFi の場合は)コントラクトとのやり取りが実装されている実際のファイル/モジュールを挙げ、それぞれの変更内容を説明してください。スキャンなしでも書けるような計画は不合格です。
  • 非表示と表示の範囲を明確にすること:references/concepts.md にある非表示/表示の表を、対象のフローに合わせて調整して含めてください。
  • 段階的であること:まず今週中に実装できるもの(Wallet API のルートでの接続と、最初のシールド済みフロー)、次に機能統合、最後に、着手条件(「SDK リポジトリが公開されたら X を行う」など)を設定した追跡対象としての近日公開機能を記載してください。
  • バージョンを明記すること:references/links.md にある正確なパッケージバージョンを記載してください。get-starknet v6.x は npm の next タグにあるため、バージョンを明示する必要があります。
  • コード以外の次のステップも含めること:Ready 拡張機能とウォレットのテスト用 dapp でのテストを記載してください。また、匿名化コントラクトについては、チームがレビュー、監査、デプロイ、保守を担うことを明記し、監査のステップを計画に含めてください。

ステップ 5 — 実行(計画の承認後のみ)

実行は、開発者が STRK20_INTEGRATION_PLAN.md を確認し、明示的に承認した場合(または既存の計画を実行するよう依頼した場合)にのみ開始します。独断でステップ 4 からステップ 5 に進んではいけません。既存の計画がある状態でセッションを再開する場合は、まず古くなっていないか再確認してください。npm のバージョン/dist-tag、モノレポのパス、references/links.md に記載されたウォレットの状況を確認し、差異があればビルド前に提示します。

最初のフェーズに着手する前に references/execute.md を読みます。ここには全体の実行ループ、スタックごとの検証コマンド、手動チェックリストのテンプレート、失敗時の手順が記載されています。流れは次のとおりです。

  1. ビルド前に再確認する — 現在の API を確認するために WalletAccount ガイドを取得します(メソッド名を推測してはいけません)。パッケージのバージョンを確認し、そのフェーズで SDK モノレポに関わる場合は、SDK モノレポも確認します。
  2. 計画の範囲どおりにフェーズの変更を行う — リポジトリに既存の規約があれば、それに従います。
  3. ヘッドレスで検証する — クリーンインストール、ビルド/型チェックの成功、既存テストの成功を確認します。リポジトリに既存のテスト環境がある場合は、テストを追加します。
  4. 計画ファイルでフェーズを記録する(ステータスと日付)— セッションをまたいでも計画が唯一の信頼できる情報源として機能するようにします。
  5. 引き継いで停止する — 該当する strk20-by-example.org のリンクを添えて、そのフェーズの手動検証チェックリストを開発者に渡し、次のフェーズに進む前に確認を待ちます。

実行時のガードレール(必須):

  • アプリのコードのみ。Cairo は対象外です。 フェーズで匿名化コントラクトが必要な場合は、設計上のガイダンスを提示し、公開されているリファレンスパッケージ(packages/ekubo_swap_anonymizer、packages/vesu_lending_anonymizer)を案内します。チームが独自のコントラクトを作成、レビュー、監査、デプロイ、保守します。
  • 鍵のマテリアルは禁止です。 表示鍵、秘密鍵、その他のシークレットをファイルに書き込んではいけません。環境変数のプレースホルダーのみ使用します。ユーザーの表示鍵が必要に思えるステップがあれば、その方法は誤りです。ステップ 3 に戻ってください。
  • デフォルトはテストネットです。 メインネットに影響する変更には、その時点で開発者から明示的な確認を得る必要があります。
  • 段階的な機能縮退はフェーズ 1 に含まれます(任意ではありません)。プライバシーに対応していないウォレットを検出し、references/wallet-api-route.md に従って機能を縮退させます。
  • 実行中に作成する UX 文言は references/concepts.md に従います — 非表示/表示の範囲を正直に示し、コンプライアンスを理由にした表現や、スクリーニング回避を想起させる表現は使いません。

正確性に関するルール(必須 — 計画は一般公開向けの文面です)

  • ステータスは変わります。 このスキルに記載されたステータスは、2026年7月8日のオープンソース公開時点のものです(github.com/starkware-libs/starknet-privacy は公開されている公式リソースです。また、sdk/README.md のクイックスタートは、このスキルに記載された SDK のセットアップ手順よりも優先されます)。計画を仕上げる前に、内容を改めて推測するのではなく、同梱のチェックを実行してください。

    python3 scripts/check_freshness.py        # add --quick to skip URL checks
    

    このチェックでは、npm の固定バージョン、モノレポのパッケージパス(このスキルで存在しないと記載されているパスを含む)、Wallet API の仕様バージョンを検証し、変更された内容を出力します。ただし、問題なく完了しても確認できるのはパスとバージョンのみです。安定したパスの下で、機能は変わることがあります。 このスキルで「近日公開」とされている機能に計画が依存する場合は、モノレポの sdk/CHANGELOG.md も確認してください。機能の追加は、まずそこに記録されます。スキルではまだ実装できないとされていた間に、サブアカウントに関する SDK API が追加されました。

  • API の詳細をでっち上げないでください。 統合コードを検討する際は、メソッド名を推測するのではなく、現在の API を確認するために WalletAccount ガイド(URL は references/links.md に記載)を取得してください。

  • 選択的開示:プールでは、無関係なユーザーの情報を公開せずに、正当な規制上の要請に対応するために必要な情報を開示できます。これを自動的なコンプライアンス、規制当局の承認、または推奨として説明しないでください。

  • スクリーニング:入金スクリーニングはプロトコルによってオンチェーンで強制されます(v0.14.3 以降)。セルフホスト型の証明生成でも、これを回避することはできません。スクリーニングを回避する手段として、いかなる方法も提示しないでください。

  • DeFi にコードが不要なわけではありません:プロトコル固有のプライベート DeFi には、アノニマイザーコントラクトと Wallet API の両方が必要です。プールのコンポーザビリティだけで対応できると約束しないでください。

  • アノニマイザーはユーザーのアドレスを隠します — 金額やアプリの利用状況は、引き続き公開される可能性があります。サブアカウントはウォレットとの関連を隠します — dapp での操作や金額は、引き続き公開される可能性があります。計画で実現するのがどちらなのかを明記してください。

  • トランザクションの送信者に操作を帰属させないでください。 プライベートトランザクションは中継されるため、すべてのユーザーに対して送信者はリレイヤーです。ユーザーごとの操作履歴(履歴、ランキング、分析、報酬、クエストのチェックなど)を集計する計画機能では、プールの Deposit イベントを読み取り、その最初のインデックス付きキーで絞り込んでください。計画ではイベント名とキーを明記してください。references/concepts.md を参照してください。

  • ノート PC やスマートフォンの証明生成性能について、主張しないでください。 証明生成の数値はマシンに依存するサーバー上のデータです。計画には数値を記載しないでください。

  • dapp が閲覧キー、ノート、証明を扱うことはありません。計画の手順でそれらが必要になる場合は、その方法は適切ではありません。ステップ 3 を再確認してください。

コメント