PHPackages                             pds/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. [Utility &amp; Helpers](/categories/utility)
4. /
5. pds/skeleton

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

pds/skeleton
============

Standard for PHP package skeletons.

1.0.0(9y ago)2.4k420.3k—5.8%165[5 issues](https://github.com/php-pds/skeleton/issues)[3 PRs](https://github.com/php-pds/skeleton/pulls)20CC-BY-SA-4.0PHP

Since Dec 13Pushed 2y ago108 watchersCompare

[ Source](https://github.com/php-pds/skeleton)[ Packagist](https://packagist.org/packages/pds/skeleton)[ Docs](https://github.com/php-pds/skeleton)[ RSS](/packages/pds-skeleton/feed)WikiDiscussions 1.x Synced 2d ago

READMEChangelog (5)DependenciesVersions (5)Used By (20)

pds/skeleton
============

[](#pdsskeleton)

This publication describes a standard filesystem skeleton suitable for all PHP packages.

Please see [https://github.com/php-pds/skeleton\_research](https://github.com/php-pds/skeleton_research) for background information.

Command-line tools for `validating` or `generating` PDS conform packages which are included with this standard are documented [here](./docs/tools.md).

The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", "SHOULD", "SHOULD NOT", "RECOMMENDED", "MAY", and "OPTIONAL" in this publication are to be interpreted as described in [RFC 2119](http://tools.ietf.org/html/rfc2119).

Summary
-------

[](#summary)

A package MUST use these names for these root-level directories:

If a package has a root-level directory for ...... then it MUST be named:command-line executables`bin/`configuration files`config/`documentation files`docs/`web server files`public/`other resource files`resources/`PHP source code`src/`test code`tests/`A package MUST use these names for these root-level files:

If a package has a root-level file for ...... then it MUST be named:a log of changes between releases`CHANGELOG(.*)`guidelines for contributors`CONTRIBUTING(.*)`licensing information`LICENSE(.*)`information about the package itself`README(.*)`A package SHOULD include a root-level file indicating the licensing and copyright terms of the package contents.

Root-Level Directories
----------------------

[](#root-level-directories)

### bin/

[](#bin)

If the package provides a root-level directory for command-line executable files, it MUST be named `bin/`.

This publication does not otherwise define the structure and contents of the directory.

### config/

[](#config)

If the package provides a root-level directory for configuration files, it MUST be named `config/`.

This publication does not otherwise define the structure and contents of the directory.

### docs/

[](#docs)

If the package provides a root-level directory for documentation files, it MUST be named `docs/`.

This publication does not otherwise define the structure and contents of the directory.

### public/

[](#public)

If the package provides a root-level directory for web server files, it MUST be named `public/`.

This publication does not otherwise define the structure and contents of the directory.

> N.b.: This directory MAY be intended as a web server document root. Alternatively, it MAY be that the files will be served dynamically via other code, copied or symlinked to the "real" document root, or otherwise managed so that they become publicly available on the web.

### resources/

[](#resources)

If the package provides a root-level directory for other resource files, it MUST be named `resources/`.

This publication does not otherwise define the structure and contents of the directory.

### src/

[](#src)

If the package provides a root-level directory for PHP source code files, it MUST be named `src/`.

This publication does not otherwise define the structure and contents of the directory.

### tests/

[](#tests)

If the package provides a root-level directory for test files, it MUST be named `tests/`.

This publication does not otherwise define the structure and contents of the directory.

### Other Directories

[](#other-directories)

The package MAY contain other root-level directories for purposes not described by this publication.

This publication does not define the structure and contents of the other root-level directories.

Root-Level Files
----------------

[](#root-level-files)

### CHANGELOG

[](#changelog)

If the package provides a root-level file with a list of changes since the last release or version, it MUST be named `CHANGELOG`.

It MAY have a lowercase filename extension indicating the file format.

This publication does not otherwise define the structure and contents of the file.

### CONTRIBUTING

[](#contributing)

If the package provides a root-level file that describes how to contribute to the package, it MUST be named `CONTRIBUTING`.

It MAY have a lowercase filename extension indicating the file format.

This publication does not otherwise define the structure and contents of the file.

### LICENSE

[](#license)

Whereas package consumers might be in violation of copyright law when copying unlicensed intellectual property, the package SHOULD include a root-level file indicating the licensing and copyright terms of the package contents.

If the package provides a root-level file indicating the licensing and copyright terms of the package contents, it MUST be named `LICENSE`.

It MAY have a lowercase filename extension indicating the file format.

This publication does not otherwise define the structure and contents of the file.

### README

[](#readme)

If the package provides a root-level file with information about the package itself, it MUST be named `README`.

It MAY have a lowercase filename extension indicating the file format.

This publication does not otherwise define the structure and contents of the file.

### Other Files

[](#other-files)

The package MAY contain other root-level files for purposes not described in this publication.

This publication does not define the structure and contents of the other root-level files.

###  Health Score

51

—

FairBetter than 95% of packages

Maintenance20

Infrequent updates — may be unmaintained

Popularity63

Solid adoption and visibility

Community46

Growing community involvement

Maturity66

Established project with proven stability

 Bus Factor1

Top contributor holds 50% 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 ~68 days

Total

5

Last Release

3216d ago

### Community

Maintainers

![](https://avatars.githubusercontent.com/u/25754?v=4)[Paul M. Jones](/maintainers/pmjones)[@pmjones](https://github.com/pmjones)

---

Top Contributors

[![afilina](https://avatars.githubusercontent.com/u/199835?v=4)](https://github.com/afilina "afilina (6 commits)")[![raphaelstolt](https://avatars.githubusercontent.com/u/48225?v=4)](https://github.com/raphaelstolt "raphaelstolt (3 commits)")[![sepehr](https://avatars.githubusercontent.com/u/23576?v=4)](https://github.com/sepehr "sepehr (2 commits)")[![cxj](https://avatars.githubusercontent.com/u/446131?v=4)](https://github.com/cxj "cxj (1 commits)")

### Embed Badge

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

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

###  Alternatives

[foxxmd/laravel-elasticbeanstalk-cron

Ensure only one Laravel instance is running CRON jobs in an EB environment

62311.8k](/packages/foxxmd-laravel-elasticbeanstalk-cron)

PHPackages © 2026

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