gh-bootstrap について
gh-bootstrapは、リポジトリの設定ファイルを生成するメンテナー向けスキルです。技術スタックを検出してテンプレートを取得・レンダリング・検証し、既存ファイルの上書き前には承認を求めます。
主な機能
- 01言語、フレームワーク、GitHubファイルの検出
- 02モードに応じたテンプレート選択
- 03テンプレートの取得とレンダリング
- 04出力とプレースホルダーの検証
- 05既存ファイルとの競合処理
活用シーン
- 01新規リポジトリのGitHubファイル設定
- 02既存プロジェクトへのコミュニティファイル追加
- 03プロジェクト構成に応じたワークフローテンプレート選択
インストール
コマンドをコピーしてターミナルで実行します。
$
npx skills add https:/ / github.com/ bahayonghang/ my-ai-cli-toolkit --skill gh-bootstrapインストール後、Claude Code で/gh-bootstrapを入力して読み込まれたか確認します。
同梱ファイル
SKILL.md と一緒にインストールされる参考資料やスクリプト。
agents/interface.yamlevals/evals.jsonscripts/gh_bootstrap_runtime.pyspecs/template-catalog.md詳細
以下のコマンドでは、
<skill-dir>はこのスキルのベースディレクトリを指し、スキルの読み込み時に通知されます。環境変数ではなく、実際のパスに置き換えてください。ランタイムスクリプトgh_bootstrap_runtime.pyが唯一の実行エンジンです。検出/取得/レンダリング/検証の手順を手動で実装しないでください。
- ユーザーに、コミュニケーションに使用する言語とテンプレートの言語の希望、さらに希望するモードを尋ねます。モードは quick(妥当なデフォルトを使用し、やり取りは最小限)、custom(特定のテンプレートを選択)、または full(利用可能なすべてのテンプレート)です。
- 計画を立てる前に、
python "<skill-dir>/scripts/gh_bootstrap_runtime.py" detect "$ARGUMENTS"を実行して、言語、フレームワーク、既存の GitHub ファイルを検出します。検出結果に言語が含まれない場合(空のプロジェクト、または認識できない技術スタック)は、推測せず、主要な言語を手動で指定するようユーザーに尋ねます。 AskUserQuestionを呼び出し、必要な設定変数(プロジェクト名、GitHub のオーナー/リポジトリ、作者、ライセンス、コンポーネント固有の値)を収集します。- 既存の設定ファイルをスキャンして、競合の解決方法を計画します。ユーザーから明示的な承認を得ずに既存ファイルを上書きしないでください。
specs/template-catalog.mdを読み、必要なファイルとリポジトリ URL の対応を確認します。次に、python "<skill-dir>/scripts/gh_bootstrap_runtime.py" fetch-template ...を使用して、選択したテンプレートのソースをダウンロードします。テンプレートのダウンロードに失敗した場合(ネットワークエラー、404、タイムアウト)、失敗したテンプレートを報告し、スキップするか再試行するかをユーザーに尋ねます。python "<skill-dir>/scripts/gh_bootstrap_runtime.py" render-template ...を使用してファイルをレンダリングし、プレースホルダー置換を決定論的に行います。python "<skill-dir>/scripts/gh_bootstrap_runtime.py" validate-tree <target-root>を使用して生成されたツリーを検証し、置換されていない{{placeholders}}が残っている場合は完了しないでください。
必須ルール
- 絶対に記憶を頼りに設定ファイルを作成しないでください。必ずダウンロードしたテンプレートからレンダリングしてください。
{{variable}}プレースホルダー(例:{{projectName}})は必ず置換してください。GitHub Actions の式(${{ github.* }}、${{ secrets.* }})やアクションのバージョン固定(例:@v4)は絶対に変更しないでください。レンダラーが置換するのは{{...}}のみです。.github/workflows/、Issue テンプレート、PR テンプレート、および基本的なコミュニティファイルを出力対象にします。
コメント
Markdown 対応