PHPackages                             sandermuller/repo-init - PHPackages - PHPackages  [Skip to content](#main-content)[PHPackages](/)[Directory](/)[Categories](/categories)[Trending](/trending)[Leaderboard](/leaderboard)[Changelog](/changelog)[Analyze](/analyze)[Collections](/collections)[Log in](/login)[Sign up](/register)

1. [Directory](/)
2. /
3. [Utility &amp; Helpers](/categories/utility)
4. /
5. sandermuller/repo-init

ActiveLibrary[Utility &amp; Helpers](/categories/utility)

sandermuller/repo-init
======================

AI playbook + stub library for bootstrapping the canonical Sander/hihaho repo setup. Install globally: `composer global require sandermuller/repo-init`.

1.4.2(1w ago)1148↓66.7%[1 PRs](https://github.com/SanderMuller/repo-init/pulls)1MITPHPPHP ^8.3CI passing

Since May 17Pushed 5d agoCompare

[ Source](https://github.com/SanderMuller/repo-init)[ Packagist](https://packagist.org/packages/sandermuller/repo-init)[ Docs](https://github.com/sandermuller/repo-init)[ RSS](/packages/sandermuller-repo-init/feed)WikiDiscussions main Synced 1w ago

READMEChangelog (10)Dependencies (13)Versions (31)Used By (1)

sandermuller/repo-init
======================

[](#sandermullerrepo-init)

[![Latest Version on Packagist](https://camo.githubusercontent.com/1aca7faa6e246408a41050c6e52aa6fd2aec3b7619ff6636df209035fe426c73/68747470733a2f2f696d672e736869656c64732e696f2f7061636b61676973742f762f73616e6465726d756c6c65722f7265706f2d696e69742e7376673f7374796c653d666c61742d737175617265)](https://packagist.org/packages/sandermuller/repo-init)[![GitHub Tests Action Status](https://camo.githubusercontent.com/10d7febb6bf810881e2ebaf3121080c719ddd5c7be489c3f2cd8c78f64672e1c/68747470733a2f2f696d672e736869656c64732e696f2f6769746875622f616374696f6e732f776f726b666c6f772f7374617475732f73616e6465726d756c6c65722f7265706f2d696e69742f696e746567726974792e796d6c3f6272616e63683d6d61696e266c6162656c3d7465737473267374796c653d666c61742d737175617265)](https://github.com/sandermuller/repo-init/actions/workflows/integrity.yml)[![Total Downloads](https://camo.githubusercontent.com/f2cf807cf9bbe67e579f69476f2ada29f44707eb30a5049d480fd8b1f5c9a549/68747470733a2f2f696d672e736869656c64732e696f2f7061636b61676973742f64742f73616e6465726d756c6c65722f7265706f2d696e69742e7376673f7374796c653d666c61742d737175617265)](https://packagist.org/packages/sandermuller/repo-init)[![License](https://camo.githubusercontent.com/5736d82356a83092ac4fd035c8d386111018282cd749ecd71e4f9d82762cf79b/68747470733a2f2f696d672e736869656c64732e696f2f7061636b61676973742f6c2f73616e6465726d756c6c65722f7265706f2d696e69742e7376673f7374796c653d666c61742d737175617265)](LICENSE)[![Laravel Boost](https://camo.githubusercontent.com/90f2604136cf241bd1fa46f5c025c7dad12d8cdc1b66e7662c12003c7f79abf8/68747470733a2f2f62616467652e6c61726176656c2e636c6f75642f626f6f73742d62616467652e7376673f7374796c653d666c61742d737175617265)](https://github.com/laravel/boost)

AI playbook + stub library for bootstrapping the canonical Sander / hihaho dev setup. Pure markdown + stub files. **No PHP code in the package itself.** Install globally once, use everywhere — same UX as `composer global require laravel/installer`.

What it does
------------

[](#what-it-does)

Walks an AI agent (Claude Code, Cursor, GitHub Copilot, …) through **bootstrap**, **audit**, or **upgrade** of a PHP repo against a canonical baseline:

- `pint.json`, `phpstan.neon.dist`, `phpstan-baseline.neon`, `rector.php` — code-quality tooling
- `.editorconfig`, `.gitattributes` (with the `# >>> package-boost (managed) >>>` block — sentinel name preserved for backward compat; owned by `package-boost-php`), `.gitignore`
- `.mcp.json` (Laravel-aware categories only; the framework-agnostic categories — `php-package`, `composer-plugin`, `phpstan-extension`, `rector-extension`, `skill-bundle` — skip it)
- `.config/boost.php` — boost-core agent config, pinning Claude Code / Copilot / Codex (every category except `laravel-project`, which uses `laravel/boost`). The `.config/` layout is canonical (boost-core ≥ 0.17); the sync manifest lives at `.config/boost/`
- `sandermuller/boost-skills` — the shared dev-workflow skill library, added to `require-dev` + `.config/boost.php`; bootstrap interactively picks which skill tags (`php` / `frontend` / `github` / `jira`) to activate
- Shared `.github/workflows/{phpstan,pint-check,rector-check,update-changelog}.yml` + per-category `run-tests.yml` + `dependabot.yml`
- `tests/Pest.php` or `phpunit.xml` (vendor-driven default)
- Per-category extras (testbench.yaml, workbench/, ServiceProvider, extension.neon, src/Plugin.{shape}.php for composer-plugin, etc.)

Install (one-time per machine)
------------------------------

[](#install-one-time-per-machine)

```
composer global require sandermuller/repo-init
composer global exec -- boost sync --scope=user --all
```

The second command publishes the `repo-init` skill (and any other globally-installed [`sandermuller/boost-core`](https://github.com/SanderMuller/boost-core) consumer's skills) into `~/.claude/skills/sandermuller__repo-init/`, `~/.cursor/skills/sandermuller__repo-init/`, `~/.agents/skills/sandermuller__repo-init/`, etc. The skill then auto-activates in any project. Re-run `composer global exec -- boost sync --scope=user --all` after each `composer global update` to refresh. (The `composer global exec --` form runs `boost` from Composer's global `vendor/bin/` regardless of your current directory; the literal `--` separator stops Composer from interpreting `boost`'s flags as its own.) See `references/boost-core-user-scope.md` for the full contract.

> **Changed in boost-core 0.6.0.** Before 0.6.0 boost-core was a Composer plugin and auto-synced on every `composer global` install/update. 0.6.0 removed the plugin (boost-core is now `type: library`); the sync is the one-line manual command above instead. Older boost-core migrations (e.g. the 0.4.0 user-scope slug rename) are covered in [`UPGRADING.md`](UPGRADING.md).

Use
---

[](#use)

Ask Claude (or any agent with the synced skill):

> Set up this repo as a Laravel package. Audit this repo against the canonical setup. Upgrade tooling here to current baseline.

The agent reads the `repo-init` skill, decides intent + category, and opens the matching phase file from `$(composer global config home)/vendor/sandermuller/repo-init/phases/`. Everything happens in your conversation; nothing is written to your target repo by repo-init itself (the agent does the writes, following the phase's instructions).

Update
------

[](#update)

```
composer global update sandermuller/repo-init
composer global exec -- boost sync --scope=user --all
```

The second line is required: boost-core 0.6.0 removed the auto-sync plugin, so refreshing the user-scope skill dirs is a manual command after every update.

Repo categories supported
-------------------------

[](#repo-categories-supported)

CategoryDetection signal`laravel-project``type: project` + `laravel/framework` in `require``laravel-package` (sander-style)`type: library` + `illuminate/*` in `require``laravel-package` (spatie-style)+ `spatie/laravel-package-tools` in `require``php-package``type: library`, framework-agnostic`phpstan-extension``type: phpstan-extension``rector-extension``type: rector-extension``composer-plugin``type: composer-plugin``skill-bundle``type: library` + `sandermuller/boost-core` in `require`Each has its own bootstrap, audit, and upgrade phase file (23 phase files total — 7 audit + 7 upgrade + 9 bootstrap, the extra 2 bootstraps cover `filament-plugin` and `nova-tool` which fall through to `laravel-package` for audit/upgrade). `composer-plugin` covers framework-agnostic Composer plugins (e.g. boost-core, package-boost-php) with sub-flags for command-provider / event-subscriber shapes. `skill-bundle` covers distributable packages whose product is AI agent skills — `type: library`, `sandermuller/boost-core` in runtime `require`, ships `resources/boost/skills/`, no `src/`.

What's NOT in the package
-------------------------

[](#whats-not-in-the-package)

- No PHP source under `src/`. No artisan commands, no Symfony Console binary. The agent does all the work.
- No state files written to your target repo. No `.repo-init-state.json`, no `.ai/playbooks/repo-init/` copies. Stubs are read in place from the global vendor dir.
- No automatic destructive ops. Every overwrite, every dep install, every `composer require` is gated on a prompt or a documented safety rail (see [`checklists/per-category-never-touch.md`](checklists/per-category-never-touch.md)).

Project-local install (escape hatch)
------------------------------------

[](#project-local-install-escape-hatch)

If you want to pin a specific repo-init version per project:

```
composer require --dev sandermuller/repo-init
vendor/bin/boost sync
```

The project-local install takes precedence over the global one. Remove with `composer remove --dev sandermuller/repo-init`.

Uninstall
---------

[](#uninstall)

```
composer global remove sandermuller/repo-init
```

Optional skill cleanup (the synced user-level skill dirs survive `composer global remove` because `sync` writes file copies — see `references/boost-core-user-scope.md`):

```
rm -rf ~/.{claude,cursor,agents,github,amp,gemini,junie,kiro,opencode}/skills/sandermuller__repo-init
```

(boost-core 0.6+ fans into 9 agent targets — the brace expansion above clears all of them in one line. Keep the synced skills if you might re-install later — re-running the install + `composer global exec -- boost sync --scope=user --all` re-syncs them, so leaving them in place is harmless.)

Design
------

[](#design)

See [`SPEC.md`](SPEC.md) for the full design (markdown-only + global-install model).

Highlights:

- Single entry point — [`resources/boost/skills/repo-init/SKILL.md`](resources/boost/skills/repo-init/SKILL.md).
- 23 self-contained phase playbooks under [`phases/`](phases/).
- 18 reference docs under [`references/`](references/) (incl. machine-readable [`per-category-deps.yml`](references/per-category-deps.yml)).
- 5 checklists under [`checklists/`](checklists/).
- 13 stub trees under [`stubs/`](stubs/) — `shared/` + 2 test-framework variants + 10 categories (composer-plugin, filament-plugin, laravel-package, laravel-package-spatie, laravel-project, nova-tool, php-package, phpstan-extension, rector-extension, skill-bundle).

Dependencies
------------

[](#dependencies)

Runtime (`require`) — what `composer global require sandermuller/repo-init` pulls in for every consumer:

- [`sandermuller/boost-core`](https://github.com/SanderMuller/boost-core) — `type: library` from 0.6.0 (the Composer plugin was removed in that release). Ships the standalone `vendor/bin/boost` bin and the `BoostAutoSync::run` auto-sync engine (silent on no-op installs; prints the one-line sync summary when `wrote>0`). Categories that depend on boost-core directly (`skill-bundle`) wire `BoostAutoSync::run` in `post-install-cmd` / `post-update-cmd`; wrapper categories instead wire their wrapper's namespace façade (`PackageBoostPhp\Scripts\AutoSync::run` / `PackageBoostLaravel\Scripts\AutoSync::run`), which delegates to it — so the scaffold references only a class from its own direct dependency. See [`references/composer-scripts.md`](references/composer-scripts.md).

Maintenance (`require-dev`) — used only by repo-init's own dev workflow; NOT propagated to consumers (Composer never installs a required package's `require-dev`):

- [`sandermuller/package-boost-php`](https://github.com/SanderMuller/package-boost-php) — the boost-family umbrella repo-init dogfoods (it's also what the `php-package` / `phpstan-extension` / `rector-extension` / `composer-plugin` scaffolds pin).
- [`sandermuller/boost-skills`](https://github.com/SanderMuller/boost-skills) — the shared dev-workflow skill library (code-review, bug-fixing, pre-release, evaluate, …); boost-core syncs its skills into repo-init's agent dirs at dev time.
- `laravel/pint` — code style.

Contributing
------------

[](#contributing)

See [`CONTRIBUTING.md`](CONTRIBUTING.md).

Security
--------

[](#security)

See [`SECURITY.md`](SECURITY.md).

Changelog
---------

[](#changelog)

See [`CHANGELOG.md`](CHANGELOG.md).

License
-------

[](#license)

MIT — see [`LICENSE`](LICENSE).

###  Health Score

49

—

FairBetter than 94% of packages

Maintenance99

Actively maintained with recent releases

Popularity17

Limited adoption so far

Community8

Small or concentrated contributor base

Maturity59

Maturing project, gaining track record

 Bus Factor1

Top contributor holds 100% of commits — single point of failure

How is this calculated?**Maintenance (25%)** — Last commit recency, latest release date, and issue-to-star ratio. Uses a 2-year decay window.

**Popularity (30%)** — Total and monthly downloads, GitHub stars, and forks. Logarithmic scaling prevents top-heavy scores.

**Community (15%)** — Contributors, dependents, forks, watchers, and maintainers. Measures real ecosystem engagement.

**Maturity (30%)** — Project age, version count, PHP version support, and release stability.

###  Release Activity

Cadence

Every ~0 days

Total

28

Last Release

9d ago

Major Versions

0.8.1 → 1.0.02026-05-23

### Community

Maintainers

![](https://www.gravatar.com/avatar/abeb7bd51fd77656b4133bdcdf4eca99cc8b495b83ca72f63674ff15f2b72a39?d=identicon)[SanderMuller](/maintainers/SanderMuller)

---

Top Contributors

[![SanderMuller](https://avatars.githubusercontent.com/u/9074391?v=4)](https://github.com/SanderMuller "SanderMuller (96 commits)")

---

Tags

laravelaiscaffoldphpstan-extensionbootstrapphp-packagerector-extension

###  Code Quality

Code StyleLaravel Pint

### Embed Badge

![Health badge](/badges/sandermuller-repo-init/health.svg)

```
[![Health](https://phpackages.com/badges/sandermuller-repo-init/health.svg)](https://phpackages.com/packages/sandermuller-repo-init)
```

###  Alternatives

[anahkiasen/former

A powerful form builder

1.4k1.4M14](/packages/anahkiasen-former)[nascent-africa/jetstrap

A Laravel 8 package to easily switch TailwindCSS resources generated by Laravel Jetstream to Bootstrap 4 or 5.

706212.2k1](/packages/nascent-africa-jetstrap)[summerblue/generator

Extend Laravel's generators scaffold.

33540.5k](/packages/summerblue-generator)[rinvex/laravel-menus

Rinvex Menus is a simple menu builder package for Laravel, that supports hierarchical structure, ordering, and styling with full flexibility using presenters for easy styling and custom structure of menu rendering.

294.0k20](/packages/rinvex-laravel-menus)[nguyendachuy/laravel-menu

Laravel Menu Builder | Drag &amp; Drop | Bootstrap | Laravel 7 | Laravel 8 | Laravel 9 | Laravel 10 | Laravel 11 | Laravel 12

162.2k](/packages/nguyendachuy-laravel-menu)

PHPackages © 2026

[Directory](/)[Categories](/categories)[Trending](/trending)[Changelog](/changelog)[Analyze](/analyze)
