leostera/riot

Riotリポジトリの`sites/`配下におけるClouldflare Workers、Wrangler設定、Astro/Starlightサイト、pkgs.ml レジストリ/CDN/ドキュメント/プレイフロー、Cloudflare D1/R2/Queues/Durable Objects/Workflows バインディング、サービス内のBunロックファイル、サービスローカルなTypeScriptテストなど、変更・レビュー・デバッグ・テスト・デプロイ・ドキュメント作成時に使用します。

riot とは?

このスキルは、`leostera/riot` リポジトリ内の `sites/` ディレクトリ以下にある複数のサービス群を効率的に開発・運用するための包括的なガイドラインとワークフローを提供します。主にCloulflare Workers、Astro/Starlightで構築されたサイト、pkgs.ml パッケージレジストリ、CDN、ドキュメントサービス、そしてインストールスクリプトのプロキシなどを扱います。各サービスが独自の `package.json` や `bun.lock` を持つ独立した構成を採用しており、スキルはこれらのサービスに対する安全かつ一貫性のある開発手順を定義します。具体的には、Wranglerを使ったWorkerライフサイクル管理、D1マイグレーション、R2ストレージ操作、キューやDurable Objectsの扱い、各サービスに特化したテスト手法(`FakeR2Bucket` や `FakeD1Database` を用いたローカルテストなど)をカバーします。生産環境へのデプロイやデータ変更には明示的なユーザー承認を必要とし、運用安全性を重視しています。また、`wrangler.toml` とTypeScriptの `Env` インターフェースを同期させるなど、設定とバインディングの一貫性を保つためのベストプラクティスも含まれています。

対応~Claude Code~Codex CLI~Cursor
npx skills add https://github.com/leostera/riot/tree/HEAD/.agents/skills/riot-services

Installed? Explore more 生産性&コラボレーション skills: steipete/gemini, steipete/gh-issues, steipete/skill-creator · View all 6 →

お気に入りのAIに質問する

このエージェントスキルを事前に読み込んだ状態で新しいチャットを開きます。

ドキュメント

Riot サービス

サービスループ

  1. 最初に riot-contributor を使用して、リポジトリのワークフロー、ダーティワークツリーの処理、および検証の期待事項を確認します。
  2. 特定のサイト/サービスディレクトリから作業します。各サービスは独自の package.json、bun.lock、tsconfig.json、通常は wrangler.toml を持ちます。
  3. スクリプトが存在する場合は、ツールを直接呼び出す代わりに bun run <script> を使用します。
  4. サービスごとのロックファイルを保持します。明示的に要求されない限り、リポジトリルートにJSワークスペースを追加しないでください。
  5. デプロイ、リモートマイグレーション、ライブE2Eテスト、トークン変更、DNS変更、および本番データ変更は、明示的なユーザー承認操作として扱います。
  6. まずローカルチェックとフェイクを優先します。ライブテストは、サービス固有の環境変数を介したオプトインです。

サービス一覧

  • sites/api.pkgs.ml:パッケージレジストリのコントロールプレーンWorker。公開/認証/検索/ビュー/イベント、D1マイグレーション、Drizzleスキーマ、R2ストレージキー、キュー、Durable Objectによる公開調整、およびD1バックアップワークフローを担当します。
  • sites/cdn.pkgs.ml:パッケージアーティファクト、スパースインデックスドキュメント、Riot/OCamlバイナリメタデータ、およびアクセス分析を提供するCDN Worker。../api.pkgs.ml/src からレジストリの型/ストレージヘルパーを再利用します。
  • sites/docs.pkgs.ml:生成されたパッケージドキュメントサービス。R2からドキュメントを提供し、パッケージ公開/処理キューを消費し、パイプライン実行/イベントをレジストリD1に記録し、Cloudflare Sandboxコンテナを使用してドキュメント/ビルドの検証を行います。
  • sites/pkgs.ml:公開パッケージレジストリWebアプリ。Astro + Cloudflareアダプター + Reactアイランド。レジストリのビューAPIとスパースインデックスドキュメントを読み取ります。
  • sites/riot.ml:メインの静的Riotウェブサイト。Astro + Tailwind、Pagesスタイルのデプロイ。
  • sites/get.riot.ml:インストールスクリプトのリダイレクト/プロキシWorker。

Cloudflare ツール

  • Worker/Astroサービスのライフサイクルには Wrangler を使用します:wrangler dev、wrangler deploy、wrangler d1 migrations apply、wrangler pages deploy、wrangler types、および設定駆動のローカル開発。
  • グローバルインストールに依存するのではなく、サービスローカルの wrangler 依存関係を最新に保ち、ロックファイルで固定します。
  • 統合 cf CLIは、API/リソースの検査、または現在公開されている操作(特にアカウント、ゾーン、DNS、D1 API、R2 API、キューAPI、workers APIメタデータ、スキーマ探索)にのみ使用します。
  • 実際のCloudflare変更に cf を使用する前に、npx cf auth whoami を実行し、npx cf agent-context <product> または npx cf schema <command...> でコマンドの形状を検査してください。
  • サービス固有のコマンドがローカルで検証され、同じ設定駆動の動作をサポートしていることが確認されない限り、Wranglerのデプロイ/開発/マイグレーションスクリプトを cf に置き換えないでください。

設定とバインディング

  • wrangler.toml、エクスポートされた Env TypeScriptインターフェース、テスト用フェイク環境を同期させたままにします。
  • Workerのエントリポイントと共有モジュールでは、明示的な Env インターフェースを優先します。
  • 非シークレットのデフォルトは [vars] に配置し、シークレットは .env、Wranglerシークレット、またはCloudflare管理シークレットに保持します。
  • api.pkgs.ml のD1スキーマ変更については、sites/api.pkgs.ml/migrations/ にSQLマイグレーションを追加し、src/schema.ts/DBヘルパーを一緒に更新します。
  • ランタイムのD1アクセスは、api.pkgs.ml/src/db.ts、metadata-db.ts、pipeline-db.ts、access-db.ts、または狭い名前の兄弟ファイルにあるDrizzleヘルパーを介して行います。
  • R2オブジェクトキーの契約は api.pkgs.ml/src/storage.ts にあります。キーを変更する場合は、CDN/API/Webコンシューマーとテストを一緒に更新します。
  • レジストリイベントペイロードの形状は、ユーザー向けのサービス履歴です。新しいイベントタイプを api.pkgs.ml/src/types.ts、DBシリアライゼーション、ビュー、およびテストに追加します。

テスト

  • 変更を完了する前に、変更したサービスの bun run check を実行します。
  • サービスがローカルテストを定義している場合は、bun run test を実行します。
  • 明示的に要求されない限り、bun run deploy、bun run migrate:remote、またはライブ test:e2e を実行しないでください。
  • api.pkgs.ml の場合、ローカルテストは tests/helpers.ts の FakeR2Bucket、FakeD1Database、FakeQueue、および FakeExecutionContext を使用します。
  • cdn.pkgs.ml の場合、Cloudflare SDKモックを発明する代わりに、レジストリのテストフェイクを再利用します。
  • docs.pkgs.ml の場合、フェイクパイプライン実行エンジンとキュー排出ヘルパーを優先します。イベントストリームをテストする際は、データベースシーケンスによる耐久性のある順序付けをアサートします。
  • Astroサービスの場合、bun run check を実行します。チェックの一環として、Astroが .astro 型ファイルを再生成することを期待します。

Web 開発

  • 各サービスの既存のUIスタックに合わせます。pkgs.ml はAstroサーバー出力、Reactアイランド、Tailwind、Cloudflareアダプターを使用します。docs*.ml は該当する場合にStarlightを使用します。riot.ml は静的Astroサイトです。
  • 最初の画面は、マーケティングのプレースホルダーではなく、実際の製品/サービスの表面にします。
  • 抽象化を追加する前に、既存のコンポーネント、レイアウト、CSSトークン、フォント、およびルート規約を使用します。
  • レジストリWebの変更には、sites/pkgs.ml/src/lib/web-views.ts のレジストリビューAPIと、package-index.ts のスパースインデックスヘルパーを優先します。

運用安全性

  • 本番エンドポイントを実際のものとして扱います:api.pkgs.ml、registry.pkgs.ml、cdn.pkgs.ml、pkgs.ml、docs.pkgs.ml、docs.riot.ml、play.riot.ml、riot.ml、および get.riot.ml。
  • 明示的なユーザーの指示なしに、リモートD1の復元/エクスポート/インポート、DNS書き込み、ルート/ドメイン書き込み、デプロイ、またはトークン操作を決して実行しないでください。
  • ライブスモークテストが要求された場合は、まずそのサービスのREADME/envゲートを読み、どの環境変数がテストを破壊的または認証済みにするかを明記してください。

関連スキル