analyse-with-phpstan
npx skills add https://github.com/phpstan/phpstan --skill analyse-with-phpstan
Agent 安装分布
Skill 文档
Analyse PHP code with PHPStan
Analyse PHP code using the PHPStan playground API at https://api.phpstan.org/analyse. This runs PHPStan across PHP versions 7.2â8.5 and returns errors for each version.
The code to analyse: $ARGUMENTS
Step 1: Prepare the code
Get the PHP code to analyse. If $ARGUMENTS is a file path, read the file contents. The code must start with <?php.
Step 2: Determine settings
Unless the user specified otherwise, use these defaults:
- level:
"10"(strictest) - strictRules:
false - bleedingEdge:
false - treatPhpDocTypesAsCertain:
true
If the user asked for strict rules or bleeding edge, set those to true.
Step 3: Call the playground API
Submit the code via POST:
curl -s -X POST 'https://api.phpstan.org/analyse' \
-H 'Content-Type: application/json' \
-d '{
"code": "<PHP code, JSON-escaped>",
"level": "<level>",
"strictRules": <true|false>,
"bleedingEdge": <true|false>,
"treatPhpDocTypesAsCertain": <true|false>,
"saveResult": true
}'
The code value must be properly JSON-escaped (escape quotes, backslashes, newlines).
Step 4: Parse the response
The response JSON contains:
versionedErrorsâ array of objects, one per PHP version, each with:phpVersionâ integer encoding: e.g.80400= PHP 8.4,70400= PHP 7.4errorsâ array of error objects withmessage,line,identifier,tip(optional),ignorable
idâ UUID for the saved result
Convert phpVersion integers to readable strings: Math.floor(v / 10000) . Math.floor((v % 10000) / 100).
Step 5: Present results as markdown
Output the results in this format:
Playground link
https://phpstan.org/r/<id>
Settings used
Level: <level> | Strict rules: yes/no | Bleeding edge: yes/no
Errors
Group consecutive PHP versions that have identical errors (same messages, lines, and identifiers) into ranges. For example, if PHP 7.2â8.3 all report the same errors, show them as one group.
If all PHP versions report identical errors, show a single group:
All PHP versions (no differences):
| Line | Error | Identifier |
|---|---|---|
| 10 | Parameter #1 $foo expects string, int given. |
argument.type |
If errors differ across versions, show separate groups:
PHP 8.0 â 8.5:
| Line | Error | Identifier |
|---|---|---|
| 10 | Parameter #1 $foo expects string, int given. |
argument.type |
PHP 7.2 â 7.4:
No errors.
If there are no errors on any PHP version, say: No errors found on any PHP version.