PHPackages                             automad/extension-skeleton - 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. automad/extension-skeleton

ActiveAutomad-package

automad/extension-skeleton
==========================

An Automad extension package skeleton for developers

1.0.1(7y ago)1360MITPHP

Since Dec 15Pushed 4y ago2 watchersCompare

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

READMEChangelogDependencies (1)Versions (3)Used By (0)

Automad Extension Skeleton
==========================

[](#automad-extension-skeleton)

You can use this package as a Composer package skeleton for new [Automad](https://automad.org) extensions. Follow the steps below to get started. Note that this guide only shows one strategy and tries to help inexperienced developers to understand the basics of package development. In case you are already familiar with Composer you will probably have your own workflow.

1. Create a Composer Package
----------------------------

[](#1-create-a-composer-package)

Before starting to develop the actual extension, the package skeleton has to be created in a temporary location. Your extension will be cloned to the `packages` directory by Composer in a later step to create the autoloader on installation. Use the following command to create a new extension skeleton in a directory called `temp` somewhere on your computer:

```
composer create-project automad/extension-skeleton temp

```

2. Initialize a Repository
--------------------------

[](#2-initialize-a-repository)

Change to the `temp` directory and initialize a new Mercurial or Git repository.

3. Edit The composer.json file
------------------------------

[](#3-edit-the-composerjson-file)

Edit the `name` and `description` fields in the `composer.json`. To install extensions to the `packages` directory and make autoloading work, the following fields are required in an extension's `composer.json` file as well and should **not** be changed:

```
{
    "type": "automad-package",
    "keywords": ["extension"],
    "require": {
        "automad/package-installer": "^1.1"
    },
    "autoload": {
        "classmap": [""]
    }
}

```

4. Rename and Edit The Class File
---------------------------------

[](#4-rename-and-edit-the-class-file)

Before publishing the extension, the structure of the class file has to be defined to enable Composer to create the autoloader when the package is installed. The actual development of the extension is done in a later step. Note that it is good practice to use a combination of `YourVendor/YourExtension` to call extensions in Automad templates and set up the PHP namespace accordingly:

```
namespace YourVendor;
class YourExtension {
    public function YourExtension($Automad, $options) {
        ...
    }
}

```

Also rename the file accordingly to follow the Composer naming convention. Such an extension could then be used later in templates like:

```

```

5. Publish Your Extension
-------------------------

[](#5-publish-your-extension)

Commit and push your new package to Bitbucket or GitHub. The temporary repository can be removed now. Follow the guide on [Packagist](https://packagist.org) to publish your extension.

6. Require Your Extension
-------------------------

[](#6-require-your-extension)

The actual development of the extension has to be done within the `packages` directory of an Automad installation. Therefore navigate to the base directory of Automad and require your package like this:

```
composer require vendor/package:@dev

```

The package will then be installed and an autoloader will be created by Composer. Note that "@dev" is needed to clone the repository to be able to commit and push your changes.

###  Health Score

29

—

LowBetter than 60% of packages

Maintenance20

Infrequent updates — may be unmaintained

Popularity14

Limited adoption so far

Community8

Small or concentrated contributor base

Maturity61

Established project with proven stability

 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

2

Last Release

2700d ago

### Community

Maintainers

![](https://www.gravatar.com/avatar/7a3565413eb5da0526ac25a008fa743c1cd4f30ef1fd5eb17bcfee7e8c6ac5be?d=identicon)[marcantondahmen](/maintainers/marcantondahmen)

---

Top Contributors

[![marcantondahmen](https://avatars.githubusercontent.com/u/8440030?v=4)](https://github.com/marcantondahmen "marcantondahmen (20 commits)")

---

Tags

extension

### Embed Badge

![Health badge](/badges/automad-extension-skeleton/health.svg)

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

PHPackages © 2026

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