Install any skill in seconds. Free to start, no credit card required.
Get Started Free →Use this skill to set up a basic PHP project. It initializes Composer, installs testing and static analysis tools (PHPUnit, PHPStan, PHP_CodeSniffer), and provisions basic configuration files (phpstan.neon.dist and phpcs.xml).
.claude/skills/miguelaperez-setup-php-project/SKILL.md| Test case | Without → With | Effect | Δ tokens | Δ turns |
|---|---|---|---|---|
| case-10 | ✗→✓ | ▲ Improved | -2% | 0% |
| case-13 | ✗→✓ | ▲ Improved | -44% | 0% |
| case-04 | ✓→✓ | = Same ✓ | 70% | 0% |
| case-05 | ✓→✓ | = Same ✓ | -12% | 0% |
| case-06 | ✓→✓ | = Same ✓ | 22% | 0% |
When the user asks you to initialize or set up a basic PHP project, follow these steps:
First, check if composer.json exists in the project root. If it does not exist, initialize composer with default values by running:
bashcomposer init --no-interaction
Install the required development dependencies. Run the following command:
bashcomposer require --dev phpunit/phpunit phpstan/phpstan squizlabs/php_codesniffer slevomat/coding-standard
Check if phpstan.neon.dist exists. If not, copy the phpstan.neon.dist template from this skill's resources directory to the project root:
bashcp ./resources/phpstan.neon.dist .
> !NOTE] > The source path ./resources/phpstan.neon.dist is relative to the directory of this skill. Ensure you are in the skill directory or provide the correct relative path when executing the copy command.
Make sure to adjust the paths in the copied file if the project uses different directories for its source code and tests.
Check if phpcs.xml exists. If not, copy the phpcs.xml template from this skill's resources directory to the project root to enforce PSR-12 coding standards:
bashcp ./resources/phpcs.xml .
> !NOTE] > The source path ./resources/phpcs.xml is relative to the directory of this skill. Ensure you are in the skill directory or provide the correct relative path when executing the copy command.
You may need to create src and tests directories if they do not exist, as these configuration files expect them.
Once the setup is complete, verify that the files have been created and the dependencies are properly listed in composer.json. Inform the user that the PHP project has been successfully initialized and configured with PHPUnit, PHPStan, and PHP_CodeSniffer.
| Case | Status | Duration (ms) | Turns | Tokens | Tool calls | ||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| Without | With | Δ | Without | With | Δ | Without | With | Δ | Without | With | Δ | ||
case-01 | fail→fail | 11,889 | 3,047 | -74% | 1 | 1 | 0% | 2,795 | 804 | -71% | 0 | 0 | — |
case-02 | fail→fail | 26,115 | 5,457 | -79% | 1 | 1 | 0% | 2,311 | 791 | -66% | 0 | 0 | — |
case-03 | fail→fail | 11,677 | 5,328 | -54% | 1 | 1 | 0% | 2,811 | 821 | -71% | 0 | 0 | — |
case-04 | pass→pass | 6,641 | 10,968 | +65% | 1 | 1 | 0% | 1,491 | 2,542 | +70% | 0 | 0 | — |
case-05 | pass→pass | 11,667 | 8,021 | -31% | 1 | 1 | 0% | 2,512 | 2,223 | -12% | 0 | 0 | — |
case-06 | pass→pass | 5,551 | 7,754 | +40% | 1 | 1 | 0% | 1,319 | 1,615 | +22% | 0 | 0 | — |
case-07 | pass→pass | 3,293 | 3,102 | -6% | 1 | 1 | 0% | 605 | 1,109 | +83% | 0 | 0 | — |
case-08 | pass→pass | 3,017 | 1,567 | -48% | 1 | 1 | 0% | 498 | 667 | +34% | 0 | 0 | — |
case-09 | pass→pass | 10,479 | 2,273 | -78% | 1 | 1 | 0% | 1,857 | 809 | -56% | 0 | 0 | — |
case-18 | pass→pass | 5,701 | 2,468 | -57% | 1 | 1 | 0% | 1,136 | 884 | -22% | 0 | 0 | — |
case-10 | fail→pass | 13,559 | 10,901 | -20% | 1 | 1 | 0% | 2,493 | 2,436 | -2% | 0 | 0 | — |
case-11 | pass→pass | 4,727 | 1,757 | -63% | 1 | 1 | 0% | 837 | 751 | -10% | 0 | 0 | — |
case-12 | fail→fail | 14,734 | 1,704 | -88% | 1 | 1 | 0% | 2,118 | 700 | -67% | 0 | 0 | — |
case-13 | fail→pass | 7,663 | 1,618 | -79% | 1 | 1 | 0% | 1,264 | 706 | -44% | 0 | 0 | — |
case-14 | pass→pass | 8,062 | 4,821 | -40% | 1 | 1 | 0% | 1,378 | 1,328 | -4% | 0 | 0 | — |
case-15 | pass→pass | 3,135 | 1,988 | -37% | 1 | 1 | 0% | 553 | 815 | +47% | 0 | 0 | — |
case-16 | pass→pass | 4,211 | 1,856 | -56% | 1 | 1 | 0% | 761 | 717 | -6% | 0 | 0 | — |
case-17 | pass→pass | 2,812 | 2,180 | -22% | 1 | 1 | 0% | 478 | 669 | +40% | 0 | 0 | — |
case-19 | pass→pass | 5,602 | 1,739 | -69% | 1 | 1 | 0% | 1,068 | 760 | -29% | 0 | 0 | — |
case-20 | pass→pass | 11,936 | 1,654 | -86% | 1 | 1 | 0% | 2,111 | 687 | -67% | 0 | 0 | — |
case-21 | pass→pass | 2,553 | 2,373 | -7% | 1 | 1 | 0% | 413 | 813 | +97% | 0 | 0 | — |
case-22 | pass→pass | 7,083 | 3,005 | -58% | 1 | 1 | 0% | 1,301 | 925 | -29% | 0 | 0 | — |
DecimalAI ran this skill against gemini-3.6-flash twice over the same eval suite — once with the skill loaded and once without — and compared the two runs case by case. 22 cases were attempted, and 20 counted toward the lift figure. The other 2 produced results that are not comparable between the two arms, so they are excluded from the headline rather than averaged into it. The headline lift of +9 percentage points is the difference between those two pass rates over the 20 comparable cases. 1 case got worse with the skill loaded, and it is included in that figure.
Without the skill loaded, the model failed this case. With it loaded, the same prompt on the same model passed. This is one improved case from the latest verified run; every case, including any that regressed, is in the table above.
Other measured skills in the registry, with their headline benchmark lift.