Communitygithub.com

replica-architect — アーキテクチャ設計エージェント

スタック、データベーススキーマ、APIを計画し、レプリカクローンのビルド順序を定めます。replica-recon が作成したマップを基に、管理された安定した技術を選定し、データモデルをインデックス付きの本番SQLへ変換します。

replica-architect — アーキテクチャ設計エージェント とは?

replica-architect は、Claude Code、Cursor、Codex などのAIエージェント向けに設計されたスキルです。/replica-recon が生成した recon マップ(replica/recon.md と replica/features.csv)を読み込み、アプリクローンの完全なアーキテクチャ計画を作成します。 このスキルは、スタック選定(Next.js、Supabase、Tailwind など管理された安定技術を推奨)、データベーススキーマ(UUID主キー、外部キーインデックス、RLSアクセスルールを含むSQL)、APIルート(各フローごとのメソッド・権限・入出力を定義)、タイムゾーンや冪等性などの重要課題、そしてビルド順序(まず垂直スライス、後から機能追加)を体系的に導出します。 出力として replica/architecture.md と replica/schema.sql(最初のマイグレーションとしても利用可能)を生成し、最後に次のステップである /replica-design を提案します。これにより、ユーザーは「クローンを計画して」「データベースを設計して」「アーキテクチャを決めて」といった指示を出すだけで、実装にすぐ取りかかれる詳細な設計書を得られます。

対応~Claude Code~Codex CLI✓Cursor
npx skills add https://github.com/silasroliver-hue/replica-skill-cursor/tree/HEAD/.cursor/skills/replica-architect

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

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

ドキュメント

replica-architect

replica/recon.md と replica/features.csv を読み込みます。 replica/architecture.md を書き出します(テンプレート: このフォルダ内の architecture.md)。

もし recon マップが存在しない場合は、停止して最初に /replica-recon を実行してください。 記憶だけでアプリの機能を推測してクローンを計画すると、半分の機能を見逃すことになります。

ステップ1: スタック

ユーザーが既にスタックを持っている場合は、その知識を活用します。 そうでない場合はデフォルトを使用します。すべての部分が管理されており、ドキュメント化され、ユーザーゼロでも安価です。

レイヤーデフォルト代替候補
WebアプリNext.js (App Router) + TypeScriptRemix, SvelteKit, Rails
スタイリングTailwind, replica-design のトークンCSS modules
モバイルExpo (React Native)SwiftUI, Kotlin
データベースSupabase または Neon 上の PostgresPlanetScale, SQLite (Turso)
ORMDrizzle または Prisma生SQL
認証Supabase Auth または Auth.jsClerk
決済Stripe Checkout + BillingLemon Squeezy, Paddle
メールResend または PostmarkSES
ジョブVercel Cron, Inngest または Trigger.devFly上のワーカー
ファイルSupabase Storage または Cloudflare R2S3
ホスティングVercelNetlify, Fly, Render

各選択肢について、その理由を一行で記述します。データベースは1つ。マイクロサービスは使いません。 クローンに必要なのは元のアプリのアーキテクチャではなく、元のアプリの機能です。

ステップ2: スキーマ

推論されたデータモデルをSQLに変換します。すべてのテーブルについて:

  • id uuid primary key default gen_random_uuid(), created_at, updated_at
  • ユーザーが所有するすべてのものに所有者カラム(user_id または org_id)
  • on delete ルールをデフォルトではなく明示的に決めた外部キー
  • すべての外部キーとフィルタ/ソート対象カラムにインデックス
  • ステータスフィールドには enum または check 制約
  • 時刻は常に timestamptz でUTC保存
  • 金額は整数セント + 通貨カラム
  • アクセスルール: Supabaseの場合はPostgres行レベルセキュリティ、またはデータレイヤーでクエリごとに1回の認可チェック。どちらを使うか明記。

例(予約アプリの場合):

create table bookings (
  id uuid primary key default gen_random_uuid(),
  event_type_id uuid not null references event_types(id) on delete cascade,
  host_id uuid not null references users(id) on delete cascade,
  start_at timestamptz not null,
  end_at timestamptz not null,
  guest_name text not null,
  guest_email text not null,
  guest_timezone text not null,
  status text not null default 'confirmed'
    check (status in ('confirmed','cancelled','rescheduled')),
  answers jsonb not null default '{}',
  created_at timestamptz not null default now(),
  constraint no_zero_length check (end_at > start_at)
);
create index on bookings (host_id, start_at);

次に、recon で見つかった厳しい制約です。2人のユーザーが同じスロットを予約するのはUIの問題ではなく、データベースの問題です(排他制約またはユニークインデックスで対処)。

ステップ3: API

recon マップのフローごとに1テーブル。各ルートまたはサーバーアクションについて:

method path | 何をするか | 誰が呼び出せるか | 入力 | 出力 | フロー

さらに、着信Webhook(Stripe、カレンダープロバイダー)、発信Webhook、およびバックグラウンドジョブ(リマインダー、同期、クリーンアップ)をスケジュールとともに記述します。

公式で公開されたAPIのみを使用し、ユーザー自身のキーを使います。たとえブラウザで見えても、元のアプリのプライベートエンドポイントは決して使いません。

ステップ4: 厄介な部分

該当するものそれぞれについて一行で記述: タイムゾーンと夏時間、冪等性(Webhookが2回届く)、競合状態、レート制限、ファイルサイズ制限、検索、リアルタイム、オフライン、メール到達性、マルチテナント、GDPRデータ削除。

ステップ5: ビルド順序

  1. 垂直スライス。コアループをエンドツーエンドで、見た目は悪くてよい: サインアップ、主要機能を1つ実行、結果を確認。スタックが機能することを証明します。
  2. Must-have(features.csv からエリア別)。
  3. Should-have、次に Could-have。
  4. 修正(replica-entrepreneur が実行後に見つけるもの)。

各マイルストーンには、その画面(S-ID)、テーブル、ルートをリストします。

出力

replica/architecture.md、replica/schema.sql のSQL(最初のマイグレーションとしても可)、および概要: スタックを一行、テーブル数、ルート数、最もリスクの高い3つの部分、そして次のステップ: /replica-design。

Individual skills in this repo

This repo contains 1 individual skill — each has its own dedicated page.

関連スキル