> ## Documentation Index
> Fetch the complete documentation index at: https://kawax.biz/llms.txt
> Use this file to discover all available pages before exploring further.

# Laravel Package Skeleton — 公式パッケージ用スターターテンプレート

> laravel/package-skeletonの初期調査。Laravelパッケージ開発のベストプラクティスを集めた公式スターターテンプレート。Pest・Larastan・Pint・Workbench・GitHub Actions CI を含む全部入りの構成。

<Info>
  この記事はソースコード調査に基づく情報です。2026年7月時点で開発中のリポジトリです。
</Info>

## Laravel Package Skeletonとは

[Laravel Package Skeleton](https://github.com/laravel/package-skeleton) は、Laravelパッケージを作る際のスターターテンプレートです。

```bash theme={null}
git clone https://github.com/laravel/package-skeleton.git my-package
cd my-package
composer install
```

`composer install` を実行すると対話的な設定スクリプト (`configure.php`) が自動起動し、パッケージ名・ベンダー名・ネームスペース・使用する機能を一問一答で設定します。設定後は即座に開発を始められる状態になります。

```mermaid theme={null}
graph TD
    A["GitHub で<br>Use this template"] --> B["composer install"]
    B --> C["configure.php が自動実行"]
    C --> D{"対話的な設定"}
    D --> E["パッケージ名・ベンダー・ネームスペース"]
    D --> F["使用する機能を選択"]
    E --> G["設定完了"]
    F --> G
    G --> H["composer test で動作確認"]
```

## なぜこのスケルトンが必要か

Laravelパッケージを「自己流」で作り始めると、テスト環境のセットアップ・静的解析・コードフォーマット・GitHub Actions の設定など、本来のパッケージロジックとは無関係な作業に多くの時間を費やします。

Laravel Package Skeleton は、Laravelチームが実際のパッケージ開発で使うベストプラクティスを一つのテンプレートにまとめたものです。テンプレートを使えば「環境構築」をスキップしてパッケージのロジック実装からすぐに始められます。

## 含まれるツール

| ツール                                                      | 役割             |
| -------------------------------------------------------- | -------------- |
| [Pest](https://pestphp.com/)                             | テストフレームワーク     |
| [Larastan](https://github.com/larastan/larastan)         | Laravel向け静的解析  |
| [Pint](https://laravel.com/docs/pint)                    | コードフォーマッター     |
| [Orchestra Testbench](https://packages.tools/testbench/) | パッケージテスト環境     |
| Workbench                                                | エンドツーエンド開発用アプリ |

## 設定可能なパッケージ機能

`composer install` 時のプロンプトで、必要な機能だけを選択できます。選択しなかった機能に関するスキャフォールドは削除されます。

| 機能           | 説明                   |
| ------------ | -------------------- |
| Config file  | `config/` に設定ファイルを追加 |
| Routes       | ルートファイルを追加           |
| Views        | Blade ビューを追加         |
| Translations | 言語ファイルを追加            |
| Migrations   | マイグレーションファイルを追加      |
| Assets       | 公開用アセットを追加           |
| Commands     | Artisan コマンドを追加      |
| Facade       | ファサードクラスを追加          |
| Boost Skill  | AI エージェント用スキルを追加     |

## 設定可能なツール

機能と同様に、プロジェクトに応じてツールのオン/オフも選択できます。

| ツール             | 説明                       |
| --------------- | ------------------------ |
| Dependabot      | 依存関係の自動更新 PR             |
| Issue Template  | GitHub Issue テンプレート      |
| Changelog       | リリース時の自動 CHANGELOG.md 更新 |
| Funding         | GitHub Sponsors スポンサーリンク |
| Security Policy | セキュリティ脆弱性報告ポリシー          |

## セットアップの流れ

<Steps>
  <Step title="テンプレートからリポジトリを作成">
    GitHub の **Use this template** ボタンを押して新しいリポジトリを作成するか、直接クローンします。

    ```bash theme={null}
    git clone https://github.com/laravel/package-skeleton.git my-package
    cd my-package
    ```
  </Step>

  <Step title="依存関係をインストール">
    `composer install` を実行すると `configure.php` が自動起動します。

    ```bash theme={null}
    composer install
    ```

    スクリプトを手動で実行したい場合は `--no-scripts` オプションを使います。

    ```bash theme={null}
    composer install --no-scripts
    php configure.php
    ```
  </Step>

  <Step title="プロンプトに回答">
    以下の項目を一問一答で設定します。

    * Author Name / Email
    * Vendor 名 (例: `kawax`)
    * Package 名 (例: `my-package`)
    * Package 説明文
    * Class 名 (例: `MyPackage`)
    * 使用する機能のマルチセレクト
    * 使用するツールのマルチセレクト
    * GitHub リポジトリの自動作成（gh CLI が認証済みの場合）
  </Step>

  <Step title="動作確認">
    ```bash theme={null}
    composer test
    ```

    PHPStan → Pint → 型カバレッジ → Pest の順で全チェックを実行します。
  </Step>

  <Step title="Workbench でエンドツーエンドテスト">
    ```bash theme={null}
    composer serve
    ```

    `http://localhost:8000` にパッケージ確認用の簡易 Laravel アプリが起動します。
  </Step>
</Steps>

## 非対話モード

CI やスクリプトからセットアップする場合は `--no-interaction` フラグを使います。

```bash theme={null}
php configure.php --no-interaction --config --routes
```

機能フラグを指定すると、指定した機能だけが含まれます。フラグを省略するとすべての機能が含まれます。

## GitHub Actions CI

スケルトンに含まれる `tests.yml` は、複数の PHP バージョン・Laravel バージョン・OS の組み合わせでテストを実行するマトリックスビルドです。

```yaml theme={null}
matrix:
  os: [ubuntu-latest, windows-latest]
  php: [8.3, 8.4, 8.5]
  laravel: [12.*, 13.*]
  stability: [prefer-lowest, prefer-stable]
```

各ジョブで実行される内容：

1. **PHPStan** (`composer analyse`) — 静的解析
2. **Pint** (`composer lint:check`) — スタイルチェック
3. **型カバレッジ** (`composer test:types`) — 型カバレッジ 100% 確認（Ubuntu のみ）
4. **Pest** (`composer test:unit`) — ユニットテスト（Ubuntu のみ）

## Changelog 自動化

`update-changelog.yml` が GitHub Release をトリガーに `CHANGELOG.md` を自動更新します。`release.yml` で PR ラベル別に変更内容を分類してリリースノートを生成します。

リリースノートのラベル：

| ラベル              | 分類        |
| ---------------- | --------- |
| `breaking`       | 破壊的変更     |
| `enhancement`    | 機能追加      |
| `bug`            | バグ修正      |
| `documentation`  | ドキュメント    |
| `dependencies`   | 依存関係      |
| `maintenance`    | メンテナンス    |
| `skip-changelog` | 変更履歴に含めない |

## configure.php が行うこと

`configure.php` は設定スクリプトで一度だけ実行する bootstrap です。実行後は削除されます。

```mermaid theme={null}
graph LR
    A["configure.php 実行"] --> B["プレースホルダーを置換<br>:vendor_slug/:package_slug<br>:author_name など"]
    B --> C["未使用の機能ファイルを削除"]
    C --> D["README_PACKAGE.md → README.md<br>AGENTS_PACKAGE.md → AGENTS.md"]
    D --> E["CLAUDE.md を AGENTS.md にリンク<br>.claude を .agents にリンク"]
    E --> F["スクリプト自体を削除"]
```

## インストール後の GitHub 設定

README に記載されているインストール後の推奨設定：

* **Dependabot PR は手動レビュー** — 自動マージワークフローは含まれない
* **リリースノートラベルの作成** — `breaking`・`enhancement`・`bug`・`documentation`・`dependencies`・`maintenance`・`skip-changelog`・`duplicate`
* **`main` ブランチ保護の設定** — Changelog 自動化は GitHub Actions が `CHANGELOG.md` にコミットするため、ブランチ保護ルールの調整が必要

追加のリポジトリシークレットは不要です。含まれているワークフローは GitHub の組み込み `GITHUB_TOKEN` を使用します。

## 現在の開発状況

* **GitHubリポジトリ**: [laravel/package-skeleton](https://github.com/laravel/package-skeleton)
* **公開時期**: 2026年7月（活発に開発中）
* **注意**: 開発初期段階のため、API や構成は変更される可能性があります

これからLaravelパッケージを作り始める人は、自己流のスケルトンを1から組み立てるよりもこのテンプレートから始めるのが良いでしょう。Laravel チームが長年のパッケージ開発で得たベストプラクティスが詰まっています。

<Card title="laravel/package-skeleton リポジトリ" icon="github" href="https://github.com/laravel/package-skeleton">
  ソースコードと最新情報はこちら。
</Card>

<Card title="パッケージ開発 公式ドキュメント" icon="book-open" href="https://laravel.com/docs/packages">
  Laravelパッケージ開発の基礎については公式ドキュメントを参照してください。
</Card>
