haspadar / piqule
Quality checks for PHP projects
v0.10.6
2026-03-14 23:49 UTC
Requires
- php: ~8.3.16 || ~8.4.3 || ~8.5.0
- friendsofphp/php-cs-fixer: ^3.91
- infection/infection: ^0.32.0
- phpmd/phpmd: ^2.15
- phpmetrics/phpmetrics: ^2.9
- phpstan/phpstan: ^2.1
- phpunit/phpunit: ^12.0
- squizlabs/php_codesniffer: ^4.0
- symfony/process: ^7.0
- vimeo/psalm: ^6.14
Suggests
- ext-xdebug: Required to generate coverage reports and run Infection
- dev-main
- v0.10.6
- v0.10.5
- v0.10.4
- v0.10.3
- v0.10.2
- v0.10.1
- v0.10.0
- v0.9.0
- v0.8.0
- v0.7.0
- v0.6.0
- v0.5.1
- v0.5.0
- v0.4.1
- v0.4.0
- v0.3.1
- v0.3.0
- v0.2.0
- v0.1.1
- v0.1.0
- dev-composer-installed-ci-binary
- dev-use-shared-infra-image
- dev-restore-minor-php-matrix
- dev-composer-installed-autoload
- dev-renovate/major-symfony
- dev-renovate/phpunit-phpunit-13.x
- dev-honest-php-minimum
- dev-graceful-hadolint-skip
- dev-renovate/infection-infection-0.x-lockfile
- dev-skip-checks-without-sources
- dev-code-standards-compliance
- dev-document-dev-md
- dev-warn-outdated-templates-on-check
- dev-move-gitignore-to-piqule
- dev-renovate-config-pre-push
- dev-plugin-style-pre-push
- dev-enforce-test-conventions
- dev-update-docs
- dev-always-once-sync
- dev-default-config
- dev-flat-config
- dev-default_scalar
- dev-separate-dsl-final-format
- dev-test-release-drafter
- dev-simplify-release-drafter
- dev-sync-file-permissions
- dev-piqule-fix-psalm
- dev-restore-renovate-validation
- dev-restore-renovate
- dev-separate-composer-and-docker-runtimes
- dev-piqule-single-ci
- dev-ghcr-matrix-build
- dev-ci-php-matrix
- dev-external-runtime
- dev-args-git-files
- dev-centralize-toolchain-in-docker
- dev-refactor-output
- dev-make-ci-workflow-configurable
- dev-make-templates-configurable
- dev-injectable-dsl-actions
- dev-unify-actions-with-values
- dev-remove-legacy-dsl-model
- dev-unify-formula-args-as-values
- dev-config-always-returns-list
- dev-add-join-actions
- dev-formula-action
- dev-formula-args
- dev-renovate-disable-major-toolchain
- dev-config
- dev-replacement-missing
- dev-replacement
- dev-xml-named-placeholders
- dev-php-block-placeholders
- dev-xml-placeholders
- dev-php-placeholders
- dev-pin-php-runtime
- dev-deps-phpunit12-symfony7
- dev-yaml-placeholders
- dev-json-placeholders
- dev-align-symfony-process-with-php-version
- dev-update-dockerfile
- dev-parameterize-hadolint-config
- dev-apply-placeholders-to-files
- dev-refine-file-placeholders-parsing
- dev-introduce-placeholders-abstraction
- dev-add-placeholder-default-implementation
- dev-separate-renovate-from-templates
- dev-rename-always-to-root
- dev-remove-obsolete-filesystem-layer
- dev-each-file
- dev-storage-reactions
- dev-reporting-storage-reaction
- dev-diffing-storage
- dev-storage-write-file
- dev-combined-files
- dev-mapped-files
- dev-replaced-file
- dev-prefixed-file-names
- dev-remove-io-from-file
- dev-folder-files
- dev-storage-entries
- dev-disk-storage
- dev-introduce-file
- dev-introduce-storage
- dev-rename-file-to-source
- dev-path-file-directory-separation
- dev-remove-filesystem-path
- dev-file-path
- dev-directory-path
- dev-file-name
- dev-files-namespace
- dev-placed-file
- dev-path-naming-cleanup
- dev-filesystem-renaming
- dev-executable-file-reaction
- dev-storage-is-executable
- dev-remove-legacy-sync
- dev-replace-piqule-sync-with-file-application
- dev-storage-files-refactor
- dev-storage-names-support
- dev-disk-path
- dev-rename-file-target-to-reaction
- dev-application-dry-run
- dev-composite-files
- dev-application
- dev-file-outcome-events
- dev-file-event-targets
- dev-reporting-target
- dev-targets-composite
- dev-file-skipped-event
- dev-file-updated-event
- dev-file-events
- dev-files-mapping
- dev-executable-file
- dev-storage-write-executable
- dev-forced-file
- dev-initial-file
- dev-inline-file
- dev-file-abstraction
- dev-storage-abstraction
- dev-storage-contracts
- dev-prepare-artifact-model
- dev-file-id
- dev-phpstan-ci-direct-run
- dev-xml-lint-ci-simplification
- dev-sync-template-configs
- dev-xdebug-in-dockerfile
- dev-remove-redundant-jq-check
- dev-remove-unused-pmd-cpd
- dev-add-prettier
- dev-unified-composer-commands
- dev-php-cs-fixer-cache-location
- dev-phpmetrics-config
- dev-add-xmllint
- dev-add-jq
- dev-add-phpcs
- dev-add-linter-commands
- dev-simplify-piqule-installation
- dev-unify-sync-entrypoint
- dev-unify-cli-entrypoint
- dev-chain-sync
- dev-add-skip-if-exists-sync
- dev-separate-sync-strategy
- dev-init-entrypoint
- dev-templates/once
- dev-complete-always-templates
- dev-templates/always
- dev-chore/templates-init
- dev-fix/dockerfile-location
- dev-fix/pmd-cpd-input-name
- dev-feature/managed-dockerfile
- dev-fix/project-root-resolution
- dev-fix/bin-autoload-bootstrap
- dev-chore/remove-ast-metrics
- dev-ci/phpmetrics
- dev-feature/add-phpmetrics-gate
- dev-feature/phpmetrics
- dev-refactor/split-sync-cli
- dev-feature/add-pmd-cpd
- dev-ci/ast-metrics-ci-mode
- dev-refactor/docker-remove-composer
- dev-fix/dockerfile-toolchain
- dev-refactor/piqule-config-layout
- dev-chore/ci-fix-yamllint-comments
- dev-feature/phpmd
- dev-feature/ast-metrics-ci
- dev-feature/phpmetrics-support
- dev-docs/update-readme-sync-model
- dev-docs/add-psalm-badge
- dev-feature/add-psalm
- dev-feature/phpstan
- dev-refactor/infra-piqule-layout
- dev-fix/ci-stryker-dashboard-secret
- dev-chore/ci-infection
- dev-chore/docker-hardening
- dev-ci/add-infection
- dev-fix/ci-user-controlled-run
- dev-chore/ci-pin-actions
- dev-refactor/remove-unreachable-paths
- dev-chore/path-coverage-ci
- dev-refactor/extract-tests-workflow
- dev-refactor/hadolint-remove-inputs
- dev-docs/add-readme-badges
- dev-fix/codecov-coverage-path
- dev-ci/add-codecov
- dev-fix/phpunit-version-constraint
- dev-test/unit-output
- dev-test/integration-file-and-console
- dev-refactor/target-interface-cleanup
- dev-test/disk-target-storage
- dev-test/synchronization-integration
- dev-refactor/test-suites-structure
- dev-test/dry-run-target-storage
- dev-refactor/composer-path-resolution
- dev-test/dry-run-notice-command
- dev-test/synchronization-command
- dev-refactor/cli-normalize-arguments
- dev-test/phpunit-setup
- dev-docs/readme
- dev-feature/dry-run
- dev-refactor/remove-target-states
- dev-refactor/materialization-without-project-snapshot
- dev-refactor/unify-sync-command
- dev-refactor/target-states
- dev-refactor/domain-naming-alignment
- dev-feature/hashes-snapshot-integration
- dev-refactor/hashes
- dev-refactor/rename-lock-to-snapshot
- dev-refactor/snapshot-interface
- dev-refactor/registry-lock
- dev-feat/github-workflows-templates
- dev-feature/synchronization
- dev-fix/init-lock-remember
- dev-refactor/piqule-directory-and-lock
- dev-refactor/project-piqule-directory-and-lock
- dev-refactor/remove-states
- dev-refactor/target-materialization
- dev-feature/target-state
- dev-feature/step-scenario
- dev-refactor/source-file-infrastructure
- dev-refactor/output-text-line
- dev-refactor/project-move-init-update-logic
- dev-refactor/project-state-and-source-target
- dev-refactor/run-context-cli
- dev-refactor/step-based-init
- dev-refactor/source-target-directories
- dev-refactor/filesystem-model
- dev-refactor/prepare-copytemplates-for-lock
- dev-refactor/remove-command-interface
- dev-feat/copy-templates
- dev-feat/init-command
- dev-feat/cli-entrypoint
- dev-feat/output-core
- dev-feat/output-ansi-colors
- dev-feat/command-scenarios
- dev-feat/project-structure
- dev-feat/filesystem-abstraction
- dev-feat/output-line-model
- dev-chore/disable-not-operator-successor-space
- dev-chore/introduce-templates-directory
- dev-chore/adjust-renovate-schedule
- dev-ci/refine-renovate-managers
- dev-ci/cleanup-renovate-config
- dev-ci/fix-renovate-config
- dev-ci/renovate-config-fix
- dev-ci/fix-markdownlint-regex-manager
- dev-ci/fix-registry-aliases
- dev-chore/cleanup-renovate-migration
- dev-ci/move-renovate-config
- dev-ci/fix-renovate-repositories
- dev-chore/renovate-hourly
- dev-chore/renovate-hourly-0
- dev-chore/renovate-hourly-30
- dev-chore/renovate-hourly-20
- dev-ci/hourly-renovate-schedule
- dev-ci/update-config-paths
- dev-ci/add-default-configs
- dev-ci/migrate-to-local-workflows
- dev-ci/remote-workflows
- dev-ci/renovate-docker-upgrades
- dev-ci/populate-ci-dockerfile
- dev-ci/add-hadolint-workflow
- dev-ci/docker-integration
- dev-refactor/workflows-single-ci
- dev-ci/pr-size-checker-integration
- dev-fix/renovate-with-token
- dev-fix/renovate-token
- dev-ci/renovate-integration
- dev-ci/typos-integration
- dev-ci/hadolint-integration
- dev-ci/integrate-markdownlint
- dev-ci/integrate-actionlint
- dev-feat/actionlint
- dev-feat/markdownlint-config
- dev-chore/remove-spdx
- dev-docs/update-readme-config-example
- dev-fix/composer-lock-php82
- dev-feat/php-cs-fixer-workflow
- dev-feat/composer-autoload
This package is auto-updated.
Last update: 2026-03-14 23:49:44 UTC
README
Opinionated quality policies for PHP projects.
Zero configuration required.
Reproducible and consistent checks across environments.
Install
composer require --dev haspadar/piqule vendor/bin/piqule sync
Configure
Customization is optional.
If needed, create .piqule.php in the project root.
Use OverrideConfig with dot-separated keys:
<?php declare(strict_types=1); use Haspadar\Piqule\Config\DefaultConfig; use Haspadar\Piqule\Config\OverrideConfig; return new OverrideConfig(new DefaultConfig(), [ 'ci.php.matrix' => ['8.3', '8.4', '8.5'], 'ci.pr.max_lines_changed' => 400, 'ci.piqule_bin' => 'vendor/bin/piqule', ]);
.piqule/ and .github/ are generated by piqule sync and may be safely deleted.
Commands
piqule sync— generate configuration from templatespiqule check— run all checkspiqule check <tool>— run specific toolpiqule fix— run auto-fixable toolspiqule fix <tool>— run specific fixer
Checks
- PHPStan
- Psalm
- PHPUnit
- Infection
- PHPMD
- PHP Metrics
- PHP_CodeSniffer
- PHP-CS-Fixer
- actionlint
- hadolint
- shellcheck
- markdownlint-cli2
- jsonlint
- yamllint
- typos
GitHub CI includes:
- Pull request size limit
- Code coverage (Codecov)
These checks ensure consistency and quality in pull requests and releases.
Contributing
Contributions are welcome.
- Fork the repository
- Create a feature branch
- Ensure all checks pass
- Open a pull request
All pull requests must pass CI before merging.
License
MIT