PHPackages                             guenther/guenther - 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. [CLI &amp; Console](/categories/cli)
4. /
5. guenther/guenther

ActiveLibrary[CLI &amp; Console](/categories/cli)

guenther/guenther
=================

Command line tool to bootstrap and build Bolt CMS extensions.

0.4.1(9y ago)14791MITPHP

Since Jun 6Pushed 9y ago1 watchersCompare

[ Source](https://github.com/guenther/guenther)[ Packagist](https://packagist.org/packages/guenther/guenther)[ RSS](/packages/guenther-guenther/feed)WikiDiscussions master Synced 4w ago

READMEChangelog (5)Dependencies (5)Versions (7)Used By (0)

Guenther
========

[](#guenther)

Günther is a command line tool that helps you building [Bolt](https://bolt.cm/) extensions.

Installation
------------

[](#installation)

Install *guenther* as global composer package:

```
composer global require "guenther/guenther"

```

To use Günther by just running `guenter`, you will need to add the installation directory to your `PATH` in your `~/.bash_profile` (or `~/.zshrc`) like this:

```
export PATH=~/.composer/vendor/bin:$PATH

```

Features
--------

[](#features)

Günther can:

- bootstrap new extensions
- create classes for service providers, listeners, controllers, etc…
- show you quick descriptions and implementation snippets for several things

Usage
-----

[](#usage)

For all commands, except `how:` ones, it's required that you are in the root folder of your extension.

### Bootstrap a New Extension:

[](#bootstrap-a-new-extension)

```
cd extensions
mkdir -p local/yourname/extensionname
cd local/yourname/extensionname
guenther init yourname extensionname

```

**Note:** Local extensions (often used for testing) will not have their assets auto-copied to the web folder, see the [how-to on the subject](https://docs.bolt.cm/3.1/howto/installing-local-extensions#step-4) for more info.

### Create Classes

[](#create-classes)

```
guenther make:listener StorageEventListener

```

Supported types:

- Controller
- Field
- Listener
- Command (nut)
- Provider

### Built in Wiki

[](#built-in-wiki)

You can view descriptions and usage examples directly on the command line.

```
guenther how:listener

```

Supported types:

- Controller
- Field
- Listener
- Command (nut)
- Provider

### Validate an Extension

[](#validate-an-extension)

You can use the validate command to check if your extension is ready to be released. It will mostly check if all the meta data is on it's place, so you still have to check your extensions code and functionality on your own.

```
guenther validate

```

#### Force Command Execution

[](#force-command-execution)

By default, this command will only run when it detects a local extension. However, you can force the execution with the `--force` or `-f` parameter.

```
guenther validate --force

```

#### Exit Codes

[](#exit-codes)

The validate command returns proper exit codes which makes it usable in a CI environment.

If all checks passed or even contain a few warnings, it will return with an exit code of `0`. If there are any errors, it will return with an exit code of `1`.

#### Save Result to a File

[](#save-result-to-a-file)

You can output all the checks + the result to a file of your choice.

##### Save as Text

[](#save-as-text)

To save the results table without the emojis to a file, use the following parameter:

```
guenther validate --output-text=/path/to/file.txt

```

##### Save as Json

[](#save-as-json)

To save a json string with all checks, their results and the final result, use the following parameter:

```
guenther validate --output-json=/path/to/file.json

```

##### Save as Yaml

[](#save-as-yaml)

To save a yaml string with all checks, their results and the final result, use the following parameter:

```
guenther validate --output-yml=/path/to/file.yml

```

##### All at Once

[](#all-at-once)

Of course, you can also use all three output options at once:

```
guenther validate --output-text=result.txt --output-json=result.json --output-yml=result.yml

```

Configuration
-------------

[](#configuration)

Guenther creates a `.guenther.yml` when you initialize a new extension. This file is used to define the sub folders and sub namespaces of the classes Günther can create.

The default `.guenther.yml` looks like this:

```
controllers:
    folder: Controller
    namespace: Controller
fields:
    folder: Field
    namespace: Field
    template:
        folder: fields
providers:
    folder: Provider
    namespace: Provider
commands:
    folder: Nut
    namespace: Nut
listeners:
    folder: Listener
    namespace: Listener

```

**Note:** Folders and namespaces are relative to the extension `/src` folder and root namespace.

---

License
-------

[](#license)

This tool is open-sourced software licensed under the [MIT license](http://opensource.org/licenses/MIT).

###  Health Score

29

—

LowBetter than 57% of packages

Maintenance20

Infrequent updates — may be unmaintained

Popularity17

Limited adoption so far

Community11

Small or concentrated contributor base

Maturity57

Maturing project, gaining track record

 Bus Factor1

Top contributor holds 96.5% 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 ~11 days

Total

6

Last Release

3618d ago

### Community

Maintainers

![](https://www.gravatar.com/avatar/980ac86584d20a526d07ebb5eddbb9fde34349ba9b17e502bce593ecd031f5a4?d=identicon)[PhillippOhlandt](/maintainers/PhillippOhlandt)

---

Top Contributors

[![PhillippOhlandt](https://avatars.githubusercontent.com/u/3123549?v=4)](https://github.com/PhillippOhlandt "PhillippOhlandt (55 commits)")[![bobdenotter](https://avatars.githubusercontent.com/u/1833361?v=4)](https://github.com/bobdenotter "bobdenotter (1 commits)")[![zomars](https://avatars.githubusercontent.com/u/3504472?v=4)](https://github.com/zomars "zomars (1 commits)")

---

Tags

clihelpertoolbootstrapboltbolt cms

###  Code Quality

TestsPHPUnit

### Embed Badge

![Health badge](/badges/guenther-guenther/health.svg)

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

###  Alternatives

[sulu/sulu

Core framework that implements the functionality of the Sulu content management system

1.3k1.4M196](/packages/sulu-sulu)[tempest/framework

The PHP framework that gets out of your way.

2.2k31.1k12](/packages/tempest-framework)[shopware/core

Shopware platform is the core for all Shopware ecommerce products.

585.4M521](/packages/shopware-core)[friendsoftypo3/content-blocks

TYPO3 CMS Content Blocks - Content Types API | Define reusable components via YAML

101466.4k45](/packages/friendsoftypo3-content-blocks)[jolicode/castor

A lightweight and modern task runner. Automate everything. In PHP.

54642.4k4](/packages/jolicode-castor)[open-dxp/opendxp

Content &amp; Product Management Framework (CMS/PIM)

9317.2k55](/packages/open-dxp-opendxp)

PHPackages © 2026

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