folivoro / climb
Modernize Sloth projects to the latest version.
Requires
- php: ^8.4
- composer/composer: ^2.9
- ergebnis/composer-normalize: ^2.52
- ergebnis/json-normalizer: ^4.9
- laravel-zero/framework: ^12.0.2
- nikic/php-parser: ^5.0
- rector/rector: ^2.4
- symfony/var-exporter: ^8.0
Requires (Dev)
- laravel/pint: ^1.25.1
- mockery/mockery: ^1.6.12
- pestphp/pest: ^3.8.4|^4.1.2
This package is auto-updated.
Last update: 2026-05-19 09:18:58 UTC
README
folivoro/climb 🧗
Modernizes Sloth projects to the latest version.
Installation
composer global require folivoro/climb
Make sure ~/.composer/vendor/bin is in your $PATH:
export PATH="$PATH:$HOME/.composer/vendor/bin"
Usage
From the root of your Sloth project:
climb
Explicitly target a version:
climb --to=2
What it does
v1 → v2
- UpdateComposerJson — removes deprecated Sloth v1 scripts, normalizes
composer.json - UpdateComposerPackages — swaps
sixmonkey/sloth/folivoro/slothforfolivoro/sloth:^2.0, removes old Layotter packages, installsfolivoro/cecropia, optionally installsfolivoro/layotter-bridge - MigrateConfigs — installs a temporary MU-plugin to dump all
Configure::values, migrates them to Laravel-style config files inapp/config/andtheme/config/ - MigrateViewExtensions — converts legacy Twig filter/function registrations to
AbstractViewExtensionclasses intheme/Extensions/View/ - MigrateTypedProperties — removes typed property declarations from Model and Taxonomy classes via Rector
- MigrateBootstrap — removes Sloth v1 bootstrapping from
bootstrap.php, deletes obsoletesloth.phpmu-plugin, cleans up.gitignore
Prerequisites
- PHP ^8.4
composeravailable on$PATH- A Sloth v1 project with
installer-pathsconfigured incomposer.json
How MigrateConfigs works
climb installs a temporary MU-plugin (legacy-config-dumper.php) into your WordPress MU-plugin directory. On the next WordPress request it dumps all Configure::read() values to climb-config.json in your project root, then climb removes the plugin automatically.
climb reads WP_HOME from your .env and suggests the URL to open — but you can make the request however you like (browser, curl, Docker, Lando, etc.).
If climb-config.json already exists, the dump step is skipped.
License
MIT