Laravel Packages

Skeletor

Published
Skeletor image

Skeletor is an application skeleton scaffolding package created by Josh Manders. With this package you can use it to add additional functionality to anything you can setup with composer create-project. It works well with Laravel, however, it isn’t exclusive to Laravel apps.

To install this package you use composer:

composer install --dev aniftyco/skeletor

From there you update the scripts section of composer.json:

"post-create-project-cmd": [
"NiftyCo\\Skeletor\\Runner::execute"
],

And then create a Skeletorfile.php in the root of your project with this:

<?php
 
use NiftyCo\Skeletor\Skeletor;
 
return function (Skeletor $skeletor) {
// add the commands you would like to execute in your new application starter
};

Skeletor offers various methods for gathering input, displaying information, executing file operations, and running commands—including find and replace within files. A few examples can be seen below:

// Display Messages and Alerts
$skeletor->intro('Welcome to the App setup wizard!');
 
// Text Input with a default value
$appName = $skeletor->text('Enter your App name:', 'laravel_news');
 
// Replace a string in a file
// e.g. $skeletor->replaceInFile('search string', 'replace string', 'path/to/file.txt');
$skeletor->replaceInFile('APP_NAME=Laravel', 'APP_NAME=' . $appName, '.env');
 
// Confirm a user choice with a default value
if ($skeletor->confirm('Do you want to install AcmeUIKit?', true) {
// Process some tasks and display a spinner
$skeletor->spin(
message: 'Installing AcmeUIKit and dependencies',
success: 'AcmeUIKit installed.',
error: 'Failed to install AcmeUIKit and one or more of its dependencies.',
callback: function () use ($skeletor) {
$skeletor->exec(['npm', 'install', '@acme/ui']);
}
);
}
 
$skeletor->outro('Your application setup is complete!');

With this in place, you can publish your skeleton to Packagist. When you run composer create-project with a Skeletor application skeleton, it automatically hooks into the post-create-project-cmd event and runs the setup commands defined in Skeletorfile.php.

As an example, Josh has already created a Laravel starter template that you can use which mimics his own personal preferences when starting a new Laravel app.

composer create-project starter/laravel my-new-app

If you need more control over your application setup, Skeletor makes customization easy. Whether you’re integrating a UI component library with a default layout, configuring Inertia with React or Vue.js, adding your database credentials to the .env file or automating other setup tasks, you can script these steps once and apply them to every new project—saving time and effort.

To learn more about Skeletor you can view the source code and documentation on Github.

Yannick Lyn Fatt photo

Staff Writer at Laravel News and Full stack web developer.

Sponsored

serpapi logo
SerpApi

The Web Search API for Your LLM and AI Applications

Visit SerpApi

The latest

View all →
Laravel Auditor Audits Your App With Your Own AI Agent image

Laravel Auditor Audits Your App With Your Own AI Agent

Read article
A simple form builder that stays out of your way image

A simple form builder that stays out of your way

Read article
Laravel AI: Trace Agent Runs With Lifecycle Events image

Laravel AI: Trace Agent Runs With Lifecycle Events

Read article
Laravel AI: Get Raw HTTP Responses and Rate Limits image

Laravel AI: Get Raw HTTP Responses and Rate Limits

Read article
Agent Run Observability in Laravel AI SDK 0.11 image

Agent Run Observability in Laravel AI SDK 0.11

Read article
Debounced Queued Event Listeners in Laravel image

Debounced Queued Event Listeners in Laravel

Read article