mcpField
N
new-rails-project

new-rails-project

github.com/shpigford開発69 回インストール
リポジトリ

new-rails-project について

RailsとReactを組み合わせた新規プロジェクトの生成を支援するスキルです。データベース、バックグラウンドジョブ、テスト、動作確認の構成を定めています。

主な機能

  1. 01Rails 8、PostgreSQL、Inertia.js
  2. 02React、Vite、Tailwind CSS
  3. 03SidekiqとRedisによるジョブ処理
  4. 04UUID主キーと暗号化フィールド
  5. 05minitestとセキュリティスキャン

活用シーン

  1. 01現在のディレクトリにRailsプロジェクトを作成
  2. 02指定されたスタックでアプリをセットアップ
  3. 03新規プロジェクトのテスト規約を策定

インストール

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

$npx skills add https://github.com/shpigford/skills --skill new-rails-project

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

詳細

現在のディレクトリに、$1 という名前の新しい Rails プロジェクトを生成します。一般的なガイダンスとして @CLAUDE.md を参照してもかまいませんが、ここに記載されたガイダンスが優先されます。

技術スタック

次の技術スタックをセットアップしてください。

  • Rails ~8 と PostgreSQL — サーバーサイドフレームワークとデータベース
  • Inertia.js ~2.3 — API を使わずに Rails と React を連携させ、SPA のような操作性を実現します
  • React ~19.2 — フロントエンド UI フレームワーク
  • Vite ~5 — HMR 対応の JavaScript バンドラー
  • Tailwind CSS ~4 — ユーティリティファーストの CSS フレームワーク
  • Sidekiq 8 — sidekiq-scheduler によるスケジュール済みジョブに対応したバックグラウンドジョブ処理
  • Redis — セッション、キャッシュ、ジョブキュー

Rails のガイダンス

  • Kamal や Docker は使用しないでください
  • Rails の「solid_*」コンポーネントやシステムは使用しないでください
  • 可能な限り、開発環境の設定を本番環境の設定に合わせてください
  • キャッシュには Redis を使用してください

データベース

  • すべてのテーブルで UUID を主キーとして使用します(pgcrypto 拡張機能)
  • タイムゾーンに対応するため、タイムスタンプには timestamptz を使用します
  • 柔軟なメタデータの保存には JSONB カラムを使用します
  • パフォーマンスを考慮し、包括的なインデックス戦略を採用します
  • 機密データ(OAuth トークン、API キー)には暗号化フィールドを使用します

バックグラウンドジョブ

  • Redis と Sidekiq 8 を使用してください

テスト

  • 常に minitest を使用してください
  • 外部サービスには mocha gem と VCR を使用してください(providers レイヤーのみ)
  • モックインスタンスには OpenStruct を優先してください
  • 必要なものだけをモックしてください

コードの保守

  • 重要なコード変更の後に bundle exec rubocop -a を実行してください
  • スタイル設定には .rubocop.yml を使用してください
  • bundle exec brakeman でセキュリティスキャンを実施してください

フロントエンド

  • すべての React コンポーネントとビューは TSX にしてください

全般的なガイダンス

  • 計画時には、明確化のための質問をたくさんしてください。質問は多いほどよいです。要件や仕様を集めるため、AskUserQuestionTool を積極的に活用してください。質問しすぎることはありません。

検証

bin/rails server を実行し、playwright MCP を介して http://localhost:3000 にアクセスして、ボイラープレートが動作することを確認してください。

コメント