genesis について
genesis CLI と `lwlee2608/genesis` の最新テンプレートで新しいリポジトリを構成するスキルです。必要な構成やファイルだけを選び、プロジェクトに合わせて調整する手順を示します。
主な機能
- 01フラグモードでの CLI 実行
- 02テンプレートに基づく構成
- 03範囲を絞ったファイルコピー
- 04プロジェクト名と DB 名の調整
- 05フロントエンドの Oxlint 設定
活用シーン
- 01新規リポジトリの作成
- 02指定したサーバー要素の追加
- 03テンプレートファイルの調整
- 04フロントエンドの lint 設定
インストール
コマンドをコピーしてターミナルで実行します。
npx skills add https:/ / github.com/ lwlee2608/ genesis --skill genesisインストール後、Claude Code で/genesisを入力して読み込まれたか確認します。
詳細
Genesis のスキャフォールディング
genesis CLI で新しいリポジトリを開始します。それ以外はすべて、lwlee2608/genesis の reference/project-00 テンプレートから追加します。これらのファイルを一から、または記憶を頼りに作成しないでください。
構成
reference/project-00/
├── docker-compose.yml # dev stack: Postgres only
└── services/
├── project-00-server/ # Go API
│ ├── cmd/project-00/ # main, config, logger
│ ├── internal/
│ │ ├── api/http/ # router, handlers, dto, middleware
│ │ └── db/ # migrations, queries, sqlc (generated)
│ ├── Dockerfile
│ ├── Makefile
│ └── sqlc.yaml
└── project-00-web/ # React/Vite/TS app
├── src/ # main.tsx, App.tsx
├── Dockerfile # build + nginx serve
├── nginx.conf
└── entrypoint.sh
引数
new、または.git以外に何もないディレクトリで引数が指定されていない場合:ルール 1 に従います。- その他の引数(例:「サーバーを追加」「sqlc をセットアップ」):作業の範囲を指定します。テンプレート全体ではなく、一致するファイルだけをコピーします。
- 空ではないディレクトリで引数が指定されていない場合:どの部分をスキャフォールディングするか尋ねます。
ルール
-
新しいリポジトリは
genesisのフラグモードで開始します。 対象ディレクトリでgenesis -name <app> -module <module>を実行し、CLI が生成しない部分をテンプレートから追加します。genesisを引数なしで実行しないでください。TUI が開き、TTY がない場合は 1 で終了します。-nameの既定値はディレクトリ名、-moduleの既定値はoriginリモートです。いずれかが設定されていない、または正しくない場合は、両方を指定してください。-fullstackと-httpの既定値はtrueです。=falseを指定して無効にします。- AI README をユーザーが求めた場合に限り、
-readme -desc "<one line>"を追加します。これにはOPENROUTER_API_KEYが必要です。 - CLI は空ではないディレクトリでは実行できません。ファイルを警告なしに置き換えるため、ユーザーが上書きを確認した後に限り
-forceを追加します。 genesisが見つからない場合、またはflag provided but not definedで失敗した場合(フラグモードに対応する前のバージョンです)は、curl -fsSL https://raw.githubusercontent.com/lwlee2608/genesis/main/scripts/install.sh | bashでインストールする前にユーザーに確認してください。
-
記憶を頼りに作業せず、最新のリポジトリをクローンします。
https://github.com/lwlee2608/genesisを(ブランチmainから)--depth=1を指定して/tmp/genesis-templateに一度だけクローンします。その後、reference/project-00以下のファイルを読みます。モノレポのレイアウトもテンプレートの一部であり、ファイルだけではありません。リポジトリは更新されるため、記憶に基づく内容は古くなります。 -
そのままコピーせず、適切に調整します。 すべての
project-00をプロジェクト名に置き換えます。ディレクトリ名、Go モジュールgithub.com/lwlee2608/project-00、cmd/project-00/のパスとバイナリ、Makefile のAPP :=、Docker のイメージ名とコンテナ名に含まれています。Postgres のデータベース名とユーザー名には、アンダースコア形式(project_00)を使用します。テンプレートのその他の構成と規約は維持します。 -
Web フロントエンドには Oxlint を使用します。 参照元から
.oxlintrc.json、oxlint依存関係、lint スクリプトをコピーします。React Hooks と React Refresh のルールを維持します。置き換え対象となる ESLint の設定と依存関係を削除し、pnpm でロックファイルを再生成します。
成果物を Railway にデプロイする場合は、/genesis-railway を使用します。Overwatcher を使用する VM 向けの prod compose は、/genesis-cicd overwatcher から取得します。