This file provides guidance to Claude Code (claude.ai/code) when working with code in this repository.
Airdrop is a Laravel package that speeds up deployments by skipping asset compilation when possible. It calculates a hash of build inputs (packages, JS/CSS files, ENV vars, etc.) and reuses previously built assets if the configuration hasn't changed.
Full docs: https://hammerstone.dev/airdrop/docs
# Run tests
vendor/bin/phpunit
# Run a single test
vendor/bin/phpunit --filter test_name
# Code formatting
vendor/bin/pint
# Check formatting without changes
vendor/bin/pint --testDrivers (src/Drivers/) - Handle storage/retrieval of built assets:
BaseDriver- Abstract base withdownload()andupload()methodsFilesystemDriver- Uses Laravel's filesystem (local, S3, etc.)GithubActionsDriver- Uses GitHub Actions cache
Triggers (src/Triggers/) - Determine what affects the build hash:
- Implement
TriggerContract::triggerBuildWhenChanged($config) FileTrigger- Hashes file contentsConfigTrigger- Hashes config values
Commands (src/Commands/):
airdrop:download- Pull cached assets if hash matchesairdrop:upload- Store built assets with current hashairdrop:hash- Output current hashairdrop:debug- Debug trigger outputsairdrop:install- Publish config file
Uses Laravel Pint with the Laravel preset. Key customizations in pint.json:
concat_space: one space around concatenation operatortrailing_comma_in_multiline: false