Maintain StaticPHP v3 packages and artifacts. Use when adding, modifying, reviewing, or validating config under config/pkg or config/artifact; package classes under src/Package; extension/library/target/tool dependencies; PHP configure args; build hooks; package metadata; or related tests and docs.
80
100%
Does it follow best practices?
Run evals on this skill
Adds up to 20 points to the overall score
View guide
Passed
No findings from the security scan
Use this skill to make focused package changes without re-reading the entire repository. StaticPHP v3 separates declarative package/artifact YAML from package-specific PHP build logic; prefer config-only edits unless current patterns require a class.
Identify the package kind and exact name.
config/pkg/ext/ext-name.yml, class src/Package/Extension/name.php.config/pkg/lib/name.yml, class src/Package/Library/name.php.config/pkg/target/name.yml, class src/Package/Target/name.php.config/pkg/tool/name.yml, class src/Package/Tool/name.php.config/artifact/name.yml, class src/Package/Artifact/name.php.Search for the closest existing package before designing anything new.
rg "#\\[BuildFor|UnixCMakeExecutor|UnixAutoconfExecutor|WindowsCMakeExecutor" src/Package.rg "static-libs|pkg-configs|arg-type|depends@" config/pkg.rg "type: ghrel|type: pecl|type: pie|type: git|binary: hosted" config.Read references/package-reference.md when changing YAML fields, artifact definitions, package naming, dependencies, platform suffixes, or validation expectations.
Read references/build-class-patterns.md when PHP build logic, attributes, lifecycle hooks, custom configure args, source patching, or executor usage is needed.
Validate narrowly, then broadly if risk warrants it.
php bin/spc dev:lint-configvendor/bin/phpunit tests/StaticPHP/Config tests/StaticPHP/Registry tests/StaticPHP/Util/DependencyResolverTest.php --no-coveragecomposer test, composer analyseconfig/pkg/* and config/artifact/* as the source of package truth; package classes augment behavior.@unix, @linux, @macos, @windows.ext-; libraries, tools, and targets use their package names.UnixAutoconfExecutor, UnixCMakeExecutor, WindowsCMakeExecutor, shell(), cmd(), and FileSystem.buildroot/, source/, downloads/, pkgroot/) to fix package definitions.config/pkg/ext/ext-name.yml with type: php-extension, artifact.source.type: pecl, dependencies, and php-extension.arg-type; add a class only if configure args, patches, or hooks are non-standard.config/pkg/lib/name.yml with artifact, dependencies, and install verification fields (headers, static-libs, pkg-configs, static-bins); add build class methods by OS.ghrel, ghtar, ghtagtar, git with regex, filelist, pecl, pie) over hard-coded URLs when upstream supports it.references/package-reference.md: YAML package/artifact model, naming, fields, validation, and commands.references/build-class-patterns.md: PHP package attributes, stages, hooks, executors, and class patterns.59584de
If you maintain this skill, you can claim it as your own. Once claimed, you can manage eval scenarios, bundle related skills, attach documentation or rules, and ensure cross-agent compatibility.