Weave Code
Code Weaver
Helps Laravel developers discover, compare, and choose open-source packages. See popularity, security, maintainers, and scores at a glance to make better decisions.
Feedback
Share your thoughts, report bugs, or suggest improvements.
Subject
Message

Skeleton Laravel Package

pds/skeleton

PDS standard defining a common filesystem skeleton for PHP packages. Specifies required root directories (src, tests, docs, config, bin, public, resources) and key root files (README, LICENSE, CHANGELOG, CONTRIBUTING), plus validation/generation tools.

View on GitHub
Deep Wiki
Context7

Getting Started

Start by installing pds/skeleton as a dev dependency:

composer require --dev pds/skeleton

Then run the validator to check your existing project:

vendor/bin/pds-skeleton validate

Or generate a fresh compliant structure:

vendor/bin/pds-skeleton generate ./my-new-package

The validator also works on arbitrary paths: vendor/bin/pds-skeleton validate ./some-other-project.

First use case: as a foundation for new packages, ensuring consistent structure across your organization or open-source work.

Implementation Patterns

  • New projects: Run generate once, then customize with your own namespace, autoloading (composer.json), and initial source code under src/.
  • Existing projects: Use validate to audit your current layout. Adjust directory names or add missing files (e.g., CHANGELOG.md, CONTRIBUTING.md) to meet requirements.
  • Tooling integration: Add validation to CI pipelines:
    # .github/workflows/skeleton.yml
    - run: vendor/bin/pds-skeleton validate
    
  • Bootstrap automation: Use the generator in scaffolding tools or starter repos (e.g., GitHub Templates) to enforce consistency.
  • Documentation alignment: Map existing docs (e.g., README.md, docs/api.md) into the docs/ directory; place API or usage docs under docs/api/ or similar.

Gotchas and Tips

  • Case sensitivity: Directory/file names must match exactly (config/, not Config/). This matters on case-insensitive filesystems (e.g., macOS/Windows), but validation fails on case-sensitive ones (e.g., Linux) if mismatched.
  • Optional directories: public/ and resources/ are optional; omit them if unused (e.g., pure library). Validation does not fail for their absence.
  • File extensions allowed: For files like CHANGELOG, LICENSE, and README, extensions are permitted (e.g., CHANGELOG.md, LICENSE.txt). The validator uses regex pattern (.*).
  • No vendor handling: The standard explicitly ignores vendor/—don’t try to validate or generate it.
  • Extensibility: The standard only defines structure—not content, autoloading, or package metadata. You still configure composer.json, PSR-4, PHPUnit, etc., yourself.
  • Validator exit codes: 0 = compliant, 1 = non-compliant (per 1.0.1). Useful for CI failsafes.
  • Maturity note: Last release was in 2017. While stable, it’s not actively developed. Still widely influential, and many tools (e.g., TYPO3 CMS, Symfony flex) implicitly follow it.
Weaver

How can I help you explore Laravel packages today?

Conversation history is not saved when not logged in.
Prompt
Add packages to context
No packages found.
davejamesmiller/laravel-breadcrumbs
artisanry/parsedown
christhompsontldr/phpsdk
bower-asset/punycode
bower-asset/inputmask
bower-asset/jquery
bower-asset/yii2-pjax
laravel/nova
spatie/laravel-mailcoach
spatie/laravel-superseeder
laravel/liferaft
nst/json-test-suite
danielmiessler/sec-lists
jackalope/jackalope-transport
twbs/bootstrap4
php-http/client-implementation
phpcr/phpcr-implementation
cucumber/gherkin-monorepo
haydenpierce/class-finder
psr/simple-cache-implementation