mcpField
M
makefile-generation

makefile-generation

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

makefile-generation について

makefile-generation は、Python、Rust、TypeScript プロジェクト向けに標準的な開発ターゲットを含む Makefile を作成または更新するスキルです。言語を判定し、生成したターゲットを検証します。

主な機能

  1. 01Python、Rust、TypeScript の判定
  2. 02言語別の標準ターゲット生成
  3. 03ビルドと品質チェックのコマンド追加
  4. 04make help とドライランでの検証

活用シーン

  1. 01プロジェクトへの Makefile 追加
  2. 02開発コマンドの標準化
  3. 03ビルド自動化ターゲットの更新

インストール

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

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

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

詳細

Makefile 生成スキル

Python、Rust、または TypeScript プロジェクト向けに、標準的な開発用ターゲットを備えた Makefile を生成します。

使用する場面

  • Makefile がないプロジェクトに Makefile が必要な場合
  • 新しいターゲットを追加して Makefile を更新する場合
  • プロジェクト間でビルド自動化を標準化する場合
  • 開発ワークフロー用のコマンドを設定する場合
  • 言語固有のビルドターゲットを作成する場合

使用しない場面

  • Makefile がすでに存在し、最新の状態である場合
  • プロジェクトで別のビルドシステムのみを使用している場合(例:npm scripts のみ)
  • 標準的なパターンに当てはまらない複雑なカスタムビルドプロセスの場合
  • 既存の Makefile の更新には、代わりに /attune:upgrade-project を使用してください

標準ターゲット

Python Makefile

一般的なターゲット:

  • help - 使用可能なターゲットを表示
  • install - uv で依存関係をインストール
  • lint - ruff でリントを実行
  • format - ruff でコードをフォーマット
  • typecheck - mypy で型チェックを実行
  • test - pytest を実行
  • test-coverage - カバレッジレポート付きでテストを実行
  • check-all - すべての品質チェックを実行
  • clean - 生成ファイルとキャッシュを削除
  • build - 配布パッケージをビルド
  • publish - PyPI に公開
Rust Makefile

一般的なターゲット:

  • help - 使用可能なターゲットを表示
  • fmt - rustfmt でフォーマット
  • lint - clippy を実行
  • check - Cargo のチェックを実行
  • test - テストを実行
  • build - リリースバイナリをビルド
  • clean - ビルド成果物をクリーンアップ
TypeScript Makefile

一般的なターゲット:

  • help - 使用可能なターゲットを表示
  • install - npm の依存関係をインストール
  • lint - ESLint を実行
  • format - Prettier でフォーマット
  • typecheck - tsc で型チェックを実行
  • test - Jest のテストを実行
  • build - 本番用にビルド
  • dev - 開発サーバーを起動

ワークフロー

1. 言語を検出する
# Check for language indicators
if [ -f "pyproject.toml" ]; then
    LANGUAGE="python"
elif [ -f "Cargo.toml" ]; then
    LANGUAGE="rust"
elif [ -f "package.json" ]; then
    LANGUAGE="typescript"
fi

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

2. テンプレートを読み込む
from pathlib import Path

template_path = Path("plugins/attune/templates") / language / "Makefile.template"

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

3. プロジェクト情報を収集する
metadata = {
    "PROJECT_NAME": "my-project",
    "PROJECT_MODULE": "my_project",
    "PYTHON_VERSION": "3.10",
}

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

4. テンプレートをレンダリングする
from template_engine import TemplateEngine

engine = TemplateEngine(metadata)
engine.render_file(template_path, Path("Makefile"))

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

5. 検証する
make help

検証: make --dry-run を実行し、ビルド設定を確認します。

カスタマイズ

ユーザーは、生成されたターゲットの後にカスタムターゲットを追加できます。

# ============================================================================
# CUSTOM TARGETS
# ============================================================================

deploy: build ## Deploy to production
	./scripts/deploy.sh

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

関連スキル

  • Skill(attune:project-init) - プロジェクトの完全な初期化
  • /abstract:make-dogfood コマンド - Makefile のテストと検証

完了条件

  • プロジェクトのルートに Makefile が作成され、最低限 help ターゲットと、検出された言語の標準ターゲットがすべて含まれている(Python:install/lint/format/typecheck/test、Rust:fmt/lint/check/test/build、TypeScript:install/lint/format/typecheck/test/build)。
  • make help がエラーなく実行され、生成されたすべてのターゲットと説明を一覧表示する。
  • 各標準ターゲットに対して make --dry-run <target> が終了コード 0 で終了し、レシピの構文が有効であることを確認できる。
  • 言語が検出されない場合(pyproject.toml、Cargo.toml、または package.json がない場合)、スキルは検出に失敗したことを報告して処理を停止し、空の Makefile を生成しない。

コメント