# Auto Build

> プロジェクトタイプを自動検出してビルドを実行するスキル。コード変更後にビルドを提案、エラー発生時は修正案を提示。Node.js、Rust、Python、Go、Makefileプロジェクトに対応。

- Skill: `majiayu000/auto-build` (Agent Skill, multi-file: 2 files)
- Install (CLI): `npx skillmds add majiayu000/auto-build`
- Raw SKILL.md: https://api.skillmd.com/api/skills/majiayu000/auto-build/raw
- Safety review: pending
- Works with: Claude Code, Claude.ai, OpenAI Codex
- Category: Coding & Dev Tools
- Author: majiayu000 (https://skillmd.com/u/majiayu000)
- Updated: 2026-09-09
- Page: https://skillmd.com/skills/majiayu000/auto-build

---


# 自動ビルドスキル

プロジェクトの設定を自動検出し、適切なビルドコマンドを実行します。

## 自動提案のタイミング

| 状況 | 提案内容 |
|------|----------|
| コード変更後 | 「ビルドしますか？」 |
| 依存関係追加後 | 「依存関係をインストールしてビルドしますか？」 |
| 設定ファイル変更後 | 「クリーンビルドを実行しますか？」 |
| ビルドエラー発生時 | 「エラーを修正してリビルドしますか？」 |
| テスト前 | 「先にビルドを確認しますか？」 |

## プロジェクトタイプの自動検出

| ファイル | プロジェクトタイプ | パッケージマネージャー |
|----------|-------------------|----------------------|
| `package.json` | Node.js | npm/yarn/pnpm |
| `Cargo.toml` | Rust | cargo |
| `pyproject.toml` | Python | pip/poetry |
| `go.mod` | Go | go |
| `pom.xml` | Java (Maven) | mvn |
| `build.gradle` | Java (Gradle) | gradle |
| `Makefile` | Make | make |

### パッケージマネージャーの検出（Node.js）

```bash
# 優先順位
if [ -f "pnpm-lock.yaml" ]; then
    PM="pnpm"
elif [ -f "yarn.lock" ]; then
    PM="yarn"
elif [ -f "bun.lockb" ]; then
    PM="bun"
else
    PM="npm"
fi
```

## ビルドコマンド

### Node.js プロジェクト

```bash
# 依存関係インストール（必要な場合）
$PM install

# 標準ビルド
$PM run build

# プロダクションビルド
$PM run build:prod  # または NODE_ENV=production $PM run build

# クリーンビルド
rm -rf dist node_modules/.cache && $PM run build
```

### Rust プロジェクト

```bash
# 依存関係解決
cargo fetch

# デバッグビルド
cargo build

# リリースビルド
cargo build --release

# クリーンビルド
cargo clean && cargo build --release
```

### Python プロジェクト

```bash
# 仮想環境（pyproject.tomlの場合）
poetry install  # または pip install -e .

# ビルド
python -m build

# wheel作成
pip wheel .
```

### Go プロジェクト

```bash
# 依存関係取得
go mod download

# ビルド
go build

# プロダクションビルド
CGO_ENABLED=0 go build -ldflags="-s -w"
```

### Makefile プロジェクト

```bash
# 標準ビルド
make

# クリーンビルド
make clean && make

# 特定ターゲット
make build
make release
```

## ビルドフロー

```
┌─────────────────┐
│ プロジェクト検出 │
└────────┬────────┘
         ↓
┌─────────────────┐
│ 依存関係確認    │ ──→ なければインストール
└────────┬────────┘
         ↓
┌─────────────────┐
│ ビルド実行      │
└────────┬────────┘
         ↓
    ┌────┴────┐
    ↓         ↓
┌───────┐ ┌───────┐
│ 成功  │ │ 失敗  │ ──→ エラー分析・修正提案
└───────┘ └───────┘
```

## エラーハンドリング

### 一般的なエラーと対処

| エラー | 原因 | 対処 |
|--------|------|------|
| `MODULE_NOT_FOUND` | 依存関係不足 | `npm install` を実行 |
| `Type error` | TypeScript型エラー | 型定義を修正 |
| `Syntax error` | 構文エラー | 該当箇所を修正 |
| `Out of memory` | メモリ不足 | `NODE_OPTIONS=--max-old-space-size=4096` |

### エラー分析の流れ

1. エラーメッセージを解析
2. エラータイプを特定
3. 該当ファイル・行を特定
4. 修正案を提示
5. ユーザー確認後に修正・リビルド

## 使用シナリオ

### シナリオ1: コード変更後

```
AI: コードを変更しました。ビルドを実行しますか？

# 検出結果
プロジェクトタイプ: Node.js (TypeScript)
パッケージマネージャー: pnpm

# 実行
pnpm run build
```

### シナリオ2: 依存関係追加後

```
AI: 新しい依存関係を追加しました。インストールしてビルドしますか？

# 実行
pnpm install && pnpm run build
```

### シナリオ3: ビルドエラー発生時

```
AI: ビルドエラーが発生しました。

エラー: Cannot find module '@types/node'

修正案:
1. @types/node をインストール
2. リビルド

実行しますか？

# 実行
pnpm add -D @types/node && pnpm run build
```

### シナリオ4: クリーンビルド

```
AI: 設定ファイルが変更されました。クリーンビルドを推奨します。

# 実行
rm -rf dist .cache && pnpm run build
```

## プロジェクト固有の設定

`CLAUDE.md` または `PROJECT.md` にビルド設定を記載可能：

```markdown
## ビルド設定
- ビルドコマンド: `npm run custom-build`
- テストコマンド: `npm run test:all`
- プロダクションビルド: `npm run build:prod`
- 前処理: `npm run prebuild`
```

## 判断基準

### ビルドを提案する条件

- ソースコード（.ts, .js, .rs, .py, .go）が変更された
- 設定ファイル（tsconfig.json, Cargo.toml等）が変更された
- 依存関係ファイル（package.json等）が変更された
- ユーザーが「ビルド」「コンパイル」と言及

### クリーンビルドを提案する条件

- ビルド設定ファイルが変更された
- 依存関係のバージョンが変更された
- 前回ビルドが失敗している
- キャッシュ関連のエラーが発生

## 注意事項

- ビルド前に未保存の変更がないか確認
- 長時間ビルドの場合は進捗を表示
- 複数のビルドターゲットがある場合は選択を促す
- CI/CD環境との整合性を考慮

