rs-init について
プロジェクトに RootSpec を導入する開発者向けのセットアップスキルです。リポジトリを調査して仕様ファイルや前提設定を用意し、検出したツールに合わせて調整したうえで、`/rs-spec` への引き継ぎ前に検証します。
主な機能
- 01プロジェクトと仕様の状態確認
- 02RootSpec ファイルとスクリプトの作成
- 03前提条件の検出と設定
- 04Cypress reporter の接続
- 05初期化結果の検証
活用シーン
- 01新規プロジェクトへの RootSpec 導入
- 02未完了の初期化の再開
- 03既存環境の前提条件設定
インストール
コマンドをコピーしてターミナルで実行します。
npx skills add https:/ / github.com/ rootspec/ rootspec --skill rs-initインストール後、Claude Code で/rs-initを入力して読み込まれたか確認します。
詳細
RootSpec を使用するために、プロジェクトをセットアップします。まず、これから行う内容を開発者に伝えてください。
「このプロジェクトに RootSpec をセットアップします。仕様ディレクトリを作成し、フレームワークファイルをコピーして、前提条件(開発サーバー、テストランナーなど)を設定します。1〜2 分ほどかかります。」
ステップ 1:プロジェクトをスキャンする
現在の状態を確認します。プロジェクトのルートディレクトリから、次を実行してください。
bash "$(dirname "$0")/../rs-shared/scripts/scan-spec.sh" .
bash "$(dirname "$0")/../rs-shared/scripts/scan-project.sh" .
これらのパスが見つからない場合は、skills ディレクトリ内で scan-spec.sh を検索してスクリプトを見つけてください。
出力に基づいて、状況を判断します。
- 新規初期化 —
.rootspec.jsonもrootspec/ディレクトリもありません。最もよくあるケースです。 - 一部のみ初期化 — 一部のファイルはありますが、ほかのファイルがありません(前回の初期化が中断された場合)。
- 再初期化 —
.rootspec.jsonがあります。バージョンがバンドルされたフレームワークより古い場合は、代わりに/rs-updateを提案してください。それ以外の場合は、何を更新したいか開発者に確認してください。既存の仕様ファイル(01-05)は上書きしないでください。開発者が確認した場合は、00.AXIOMS.mdと00.FRAMEWORK.mdを最新のバンドル版に更新してもかまいません。 - 初期化済み — すべてそろっています。開発者にその旨を伝え、代わりに
/rs-specを提案してください。
続行する前に、確認した内容を報告してください。
ステップ 2:プロジェクトをブートストラップする
ブートストラップスクリプトを実行して、仕様ディレクトリ、基本ファイル、前提条件、.rootspec.json を作成してください。
bash "$(dirname "$0")/../rs-shared/scripts/bootstrap-init.sh" . "$(dirname "$0")/../rs-shared"
このパスが見つからない場合は、skills ディレクトリ内で bootstrap-init.sh を検索してスクリプトを見つけてください。
これにより、新規プロジェクトに必要なすべてのファイルが作成されます。具体的には、フレームワークファイルを含む rootspec/、scripts/dev.sh、scripts/test.sh、.githooks/pre-commit、scripts/release.sh、Cypress レポーター、.rootspec.json、package.json です。すでに存在するファイルはスキップされます。
ステップ 3:前提条件を検出して調整する
検出スクリプトを実行して、ブートストラップで作成されたものと、プロジェクトにもともと存在していたものを確認してください。
bash "$(dirname "$0")/../rs-shared/scripts/detect-prerequisites.sh" .
スクリプトは、検出されたパスまたは none を含む DEV_SERVER=、PRE_COMMIT_HOOK=、RELEASE_SCRIPT=、VALIDATION_SCRIPT= の各行を出力します。
各前提条件の詳細については、../rs-shared/fragments/prerequisites.md を読んでください。
package.json のルール: package.json の dependencies セクションや devDependencies セクションを直接編集してはいけません。パッケージを追加するときは、必ず npm install <pkg> または npm install --save-dev <pkg> を使用してください。依存関係ツリーは npm が管理します。scripts セクションは直接編集してもかまいません(たとえば、dev:start を追加する場合)。
検出した内容を報告してください。既存のコードベースがあるプロジェクトでは、ブートストラップのデフォルト設定を調整します。
- 開発サーバー —
scripts/dev.shとscripts/preview.shは、DEV_CMD/PREVIEW_CMDが空の状態で、再帰防止機能付きで提供されます。値が設定されるまでは、実行時に必ず失敗します。ここでは設定しないでください。/rs-implがdetect-stack.shを実行し、検出したスタックに基づくフレームワークのバイナリを設定します(または、プロジェクトのブートストラップ前のpackage.jsonに記録された値を使用します。この値は.rootspec.jsonのprerequisites.detectedに保存されています)。引き継ぎ時に、「/rs-implを実行して、開発/プレビュー用ラッパーを設定し、規約を作成してください」と伝えてください。 - 既存の前提条件 — プロジェクトに開発サーバーやテストランナーなどがすでにある場合は、ブートストラップのデフォルト設定ではなく、それらを指すように
.rootspec.jsonを更新してください。 - package.json のスクリプト —
dev:start、dev:stop、dev:restartのエントリーがまだない場合は追加してください。dev、preview、startの各スクリプトは、必ず./scripts/dev.sh/./scripts/preview.shを経由する必要があります。新規プロジェクトの場合、bootstrap-init.shはこの形式でスクリプトを作成します。既存のコードベースがあるプロジェクトの場合は、既存のdev/preview/startスクリプトをラッパー経由に書き換えてください。(書き換え前の値は.rootspec.jsonのprerequisites.detectedに保存されるため、/rs-implで再利用できます。)
Cypress プラグインのセットアップ
RootSpec Cypress レポーターをセットアップします(ブートストラップによってファイルはすでにコピーされています)。
cypress.config.tsに組み込みます — 設定ファイルが存在する場合は、レポーターを指定したsetupNodeEventsフックを追加します。新しい設定ファイルを作成する場合は、最初から組み込んでください。正確な組み込み方法については、../rs-shared/fragments/prerequisites.mdを参照してください。
このプラグインは Cypress の実行後に rootspec/tests-status.json を自動更新するため、エージェントが結果を解析したり、スクリプトを呼び出したりする必要はありません。
ステップ 4:.rootspec.json を更新する
ステップ 3 で、ブートストラップのデフォルトと異なる既存の前提条件が見つかった場合は、正しいパスで .rootspec.json を更新します。
ステップ 5:確認して引き継ぐ
確認スクリプトを実行します。
bash "$(dirname "$0")/../rs-shared/scripts/verify-init.sh" .
不足しているものが報告された場合は、作成します。その後、次のように報告します。
「プロジェクトを初期化しました。以下をセットアップしました。
- [作成したファイルの一覧]
- [設定した、またはスキップした前提条件の一覧]
/rs-spec を実行して、仕様を作成してください。」
対象範囲
開発者が引数を渡した場合:
"resume"→ 未完了のステップまでスキップします"prerequisites"→ ステップ 3~4 のみ実行します(前提条件を検出・作成し、.rootspec.jsonを更新します)
スコープ
- 読み取り可能: すべてのプロジェクトファイル
- 書き込み可能:
rootspec/ディレクトリ(spec-status.json、tests-status.jsonを含む)、.rootspec.json、前提条件のテンプレート(例:scripts/dev.sh) - 書き込み不可: アプリケーションのソースコード、既存のテストファイル