project-init について
新規ソフトウェアプロジェクトの初期化や既存ツール設定の更新に使う、Python、Rust、TypeScript対応の対話型開発スキルです。言語の検出、メタデータ収集、テンプレート生成を行い、既存ファイルの確認やGit初期化も扱います。
主な機能
- 01プロジェクト言語の検出または選択
- 02プロジェクトと言語設定のメタデータ収集
- 03既存設定の確認と上書き方法の確認
- 04テンプレートからプロジェクトファイルを生成
- 05決定事項と学びのログを作成
- 06Git初期化とセットアップ検証
活用シーン
- 01新しいPython、Rust、TypeScriptプロジェクトの開発基盤構築
- 02既存プロジェクトへのGitHubワークフローやフックの追加
- 03既存コードベースの構成を統一
インストール
コマンドをコピーしてターミナルで実行します。
npx skills add https:/ / github.com/ athola/ claude-night-market --skill project-initインストール後、Claude Code で/project-initを入力して読み込まれたか確認します。
同梱ファイル
SKILL.md と一緒にインストールされる参考資料やスクリプト。
modules/language-detection.mdmetadata-collection.mdtemplate-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