mcpField
P
project-init

project-init

github.com/athola開発343100 回インストール1 日前に更新
リポジトリ

project-init について

新規ソフトウェアプロジェクトの初期化や既存ツール設定の更新に使う、Python、Rust、TypeScript対応の対話型開発スキルです。言語の検出、メタデータ収集、テンプレート生成を行い、既存ファイルの確認やGit初期化も扱います。

主な機能

  1. 01プロジェクト言語の検出または選択
  2. 02プロジェクトと言語設定のメタデータ収集
  3. 03既存設定の確認と上書き方法の確認
  4. 04テンプレートからプロジェクトファイルを生成
  5. 05決定事項と学びのログを作成
  6. 06Git初期化とセットアップ検証

活用シーン

  1. 01新しいPython、Rust、TypeScriptプロジェクトの開発基盤構築
  2. 02既存プロジェクトへのGitHubワークフローやフックの追加
  3. 03既存コードベースの構成を統一

インストール

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

$npx skills add https://github.com/athola/claude-night-market --skill project-init

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

同梱ファイル

SKILL.md と一緒にインストールされる参考資料やスクリプト。

modules/
language-detection.md
metadata-collection.md
template-rendering.md

詳細

プロジェクト初期化スキル

開発インフラを一通り整えた新しいソフトウェアプロジェクトを初期化するための対話型ワークフローです。

使用する場面

  • 新しい Python、Rust、または TypeScript プロジェクトを始めるとき
  • 既存プロジェクトのツールを現在の標準に合わせて更新するとき
  • git、GitHub ワークフロー、pre-commit フック、Makefile を設定するとき
  • チーム全体で一貫したプロジェクト構成にしたいとき
  • 構造化されていないプロジェクトをベストプラクティスに沿った形に変えるとき
  • 確立されたコードベースに不足している設定を追加するとき

ワークフロー

1. 言語を検出または選択する

modules/language-detection.md を読み込みます。

  • 既存のファイル(pyproject.toml、Cargo.toml、package.json)から自動検出します
  • 判別できない場合やディレクトリが空の場合は、ユーザーに選択を求めます
  • 言語がサポート対象(python、rust、typescript)であることを検証します
2. プロジェクトのメタデータを収集する

modules/metadata-collection.md を読み込みます。

以下を収集します:

  • プロジェクト名(デフォルト:ディレクトリ名)
  • 作者名とメールアドレス
  • プロジェクトの説明
  • 言語固有の設定:
    • Python:バージョン(デフォルト 3.10)
    • Rust:エディション(デフォルト 2021)
    • TypeScript:フレームワーク(React、Vue など)
  • ライセンスの種類(MIT、Apache、GPL など)
3. 既存のファイルを確認する

既存の設定を確認します:

ls -la

検証: --help フラグを付けてコマンドを実行し、使用可能であることを確認します。

ファイル(Makefile、.gitignore など)が存在する場合:

  • 上書きされる内容を表示します
  • 確認を求めるか、上書き対象を選択できるようにします
  • マージモード(カスタム内容を保持)を提案します
4. テンプレートをレンダリングして適用する

modules/template-rendering.md を読み込みます。

初期化スクリプトを実行します:

python3 plugins/attune/scripts/attune_init.py \
  --lang {{LANGUAGE}} \
  --name {{PROJECT_NAME}} \
  --author {{AUTHOR}} \
  --email {{EMAIL}} \
  --python-version {{PYTHON_VERSION}} \
  --description {{DESCRIPTION}} \
  --path .

検証: --help フラグを付けてコマンドを実行し、使用可能であることを確認します。

このスクリプトは、プロジェクトの意思決定ジャーナル docs/tradeoffs.md と docs/lessons-learned.md もひな形から作成します。これらは追記専用のログで、 後続のワークフロー(brainstorm、specify、plan、execute、review)で 意思決定や学びが生じた際に書き込まれます。既存のジャーナルファイルは上書きされません。 フォーマットは leyline:decision-journal コントラクトに準拠しています。init は leyline のテンプレートがある場合はそれを、ない場合は同梱版を使用するため、 leyline がインストールされていてもいなくても動作します。

検証: docs/tradeoffs.md と docs/lessons-learned.md が存在し、 それぞれに ## Active index と ## Archive セクションがあることを確認します。

5. Git を初期化する(必要な場合)
# Check if git is initialized
if [ ! -d .git ]; then
  git init
  echo "Git repository initialized"
fi

検証: git status を実行して、作業ツリーの状態を確認します。

6. セットアップを検証する

セットアップを検証します:

# Check Makefile targets
make help

# List created files
git status

検証: git status を実行して、作業ツリーの状態を確認します。

7. 次のステップ

ユーザーに次のことを案内します:

# Install dependencies and hooks
make dev-setup

# Run tests to verify setup
make test

# See all available commands
make help

検証: pytest -v を実行し、テストが成功することを確認します。

エラー処理

  • 言語の検出に失敗した場合:--lang を指定するようユーザーに求めます
  • スクリプトが見つからない場合:プラグインのインストール先を案内します
  • アクセスが拒否された場合:スクリプトに chmod +x を実行するよう提案します
  • Git の競合がある場合:既存の作業を stash するか、コミットするよう提案します

成功条件

  • すべてのテンプレートファイルが正常に作成されている
  • ユーザーの確認なしに上書きされていない
  • Git リポジトリが初期化されている
  • make help で使用可能なターゲットが表示される
  • make test がエラーなく実行される(テストがまだなくても)

終了条件

  • 選択した言語のテンプレートファイルが作成されている(または、ドライランの場合は作成予定として報告されている)こと。未確認の上書きがないこと。
  • docs/tradeoffs.md と docs/lessons-learned.md が存在し、それぞれに ## Active index と ## Archive セクションがあること。
  • 既存のジャーナルファイルが検出され、変更されていないこと。
  • Git が初期化され(--no-git の場合を除く)、make help にターゲットが表示されること。
  • --dry-run で実行した場合、ジャーナルを含め、ファイルが一切書き込まれないこと。

例

例 1:新しい Python プロジェクト
**Verification:** Run `pytest -v` to verify tests pass.
User: /attune:project-init

コメント