From d671738868927291d9a8efe4ae6f3ac68c6086bd Mon Sep 17 00:00:00 2001
From: Wilmer Arambula
Date: Tue, 5 May 2026 07:10:44 -0400
Subject: [PATCH 1/8] chore: update configuration files for consistency and
clarity; adjust `.editorconfig`, `.gitattributes`, `.gitignore`,
`.styleci.yml`, and `README.md`.
---
.editorconfig | 12 ++++++++++++
.gitattributes | 8 ++++++++
.github/linters/.codespellrc | 2 +-
.gitignore | 14 +++++++++++---
.styleci.yml | 2 +-
README.md | 2 +-
composer.json | 1 +
7 files changed, 35 insertions(+), 6 deletions(-)
diff --git a/.editorconfig b/.editorconfig
index ef7ce10..6b45e5d 100644
--- a/.editorconfig
+++ b/.editorconfig
@@ -13,6 +13,18 @@ trim_trailing_whitespace = true
[*.js]
indent_size = 2
+[*.scss]
+indent_size = 2
+
+[*.css]
+indent_size = 2
+
+[package.json]
+indent_size = 2
+
+[package-lock.json]
+indent_size = 2
+
[*.md]
indent_size = 2
trim_trailing_whitespace = false
diff --git a/.gitattributes b/.gitattributes
index 56db1bf..011a56c 100644
--- a/.gitattributes
+++ b/.gitattributes
@@ -22,13 +22,21 @@
*.ttf binary
# Exclude files from the archive
+/.editorconfig export-ignore
+/.gitattributes export-ignore
+/.github export-ignore
/.github/dependabot.yml export-ignore
/.github/workflows export-ignore
+/.gitignore export-ignore
+/.styleci.yml export-ignore
/codeception.yml export-ignore
+/composer-require-checker.json export-ignore
/docs export-ignore
+/ecs.php export-ignore
/infection.json* export-ignore
/phpstan*.neon* export-ignore
/phpunit.xml.dist export-ignore
+/rector.php export-ignore
/runtime export-ignore
/tests export-ignore
diff --git a/.github/linters/.codespellrc b/.github/linters/.codespellrc
index 1375eee..be02967 100644
--- a/.github/linters/.codespellrc
+++ b/.github/linters/.codespellrc
@@ -1,2 +1,2 @@
[codespell]
-skip = */tests/*,tests/**,*/composer.lock,*/composer.json
+skip = */tests/*,tests/**,*/composer.lock,*/composer.json,*/package-lock.json,*/dist/*,*/node_modules/*,*/vendor/*,vendor/**,*/runtime/*,runtime/**
diff --git a/.gitignore b/.gitignore
index 848ddae..3606d98 100644
--- a/.gitignore
+++ b/.gitignore
@@ -1,3 +1,10 @@
+# AI agents (if present)
+.codex
+.claude
+
+# asset build pipeline tracks its lockfile to keep CI builds reproducible.
+!src/assets/package-lock.json
+
# codecoverage (if present)
code_coverage
@@ -25,12 +32,12 @@ nbproject
node_modules
package-lock.json
-# phpstorm project (if present)
-.idea
-
# phpactor (if present)
.phpactor.*
+# phpstorm project (if present)
+.idea
+
# phpunit (if present)
.phpunit.cache
.phpunit.result.cache
@@ -52,3 +59,4 @@ Thumbs.db
.buildpath
.project
.settings
+.gitignore
diff --git a/.styleci.yml b/.styleci.yml
index 40c1c55..8995a69 100644
--- a/.styleci.yml
+++ b/.styleci.yml
@@ -1,7 +1,7 @@
preset: psr12
risky: true
-version: 8.1
+version: 8.3
finder:
exclude:
diff --git a/README.md b/README.md
index 9eb2c1b..a8deb8a 100644
--- a/README.md
+++ b/README.md
@@ -212,7 +212,7 @@ Follow the same convention used across PHP Forge repositories:
## Documentation
-- 📚 [Installation Guide](docs/installation.md)
+- 📥 [Installation Guide](docs/installation.md)
## Package information
diff --git a/composer.json b/composer.json
index d10fa05..08d76ea 100644
--- a/composer.json
+++ b/composer.json
@@ -43,6 +43,7 @@
"rector.php"
],
"modes": {
+ ".editorconfig": "append",
".gitignore": "append",
"composer-require-checker.json": "preserve",
"ecs.php": "preserve",
From bc5e9c1d22d5095a0a25073b45e16c0eaf685130 Mon Sep 17 00:00:00 2001
From: Wilmer Arambula
Date: Tue, 5 May 2026 07:18:18 -0400
Subject: [PATCH 2/8] Apply fixed Coderabbitai review.
---
.gitattributes | 2 --
.gitignore | 5 +----
2 files changed, 1 insertion(+), 6 deletions(-)
diff --git a/.gitattributes b/.gitattributes
index 011a56c..2360366 100644
--- a/.gitattributes
+++ b/.gitattributes
@@ -25,8 +25,6 @@
/.editorconfig export-ignore
/.gitattributes export-ignore
/.github export-ignore
-/.github/dependabot.yml export-ignore
-/.github/workflows export-ignore
/.gitignore export-ignore
/.styleci.yml export-ignore
/codeception.yml export-ignore
diff --git a/.gitignore b/.gitignore
index 3606d98..3ef6bbc 100644
--- a/.gitignore
+++ b/.gitignore
@@ -2,9 +2,6 @@
.codex
.claude
-# asset build pipeline tracks its lockfile to keep CI builds reproducible.
-!src/assets/package-lock.json
-
# codecoverage (if present)
code_coverage
@@ -31,6 +28,7 @@ nbproject
# node_modules (if present)
node_modules
package-lock.json
+!src/assets/package-lock.json
# phpactor (if present)
.phpactor.*
@@ -59,4 +57,3 @@ Thumbs.db
.buildpath
.project
.settings
-.gitignore
From 950bd097a07feca6ba42ef5abffed7797faf8d9f Mon Sep 17 00:00:00 2001
From: Wilmer Arambula
Date: Tue, 5 May 2026 12:15:54 -0400
Subject: [PATCH 3/8] Apply fixed Coderabbitai review.
---
.gitattributes | 1 +
.github/linters/.codespellrc | 2 +-
.github/linters/.gitleaks.toml | 2 +-
.gitignore | 1 +
CHANGELOG.md | 4 ++
README.md | 61 ++++++--------------
composer.json | 42 ++++++--------
scaffold-lock.json | 88 +++++++++++++++++++++++++++++
scaffold.json | 10 ++++
ecs.php => src/config/ecs.php | 0
rector.php => src/config/rector.php | 0
11 files changed, 139 insertions(+), 72 deletions(-)
create mode 100644 scaffold-lock.json
create mode 100644 scaffold.json
rename ecs.php => src/config/ecs.php (100%)
rename rector.php => src/config/rector.php (100%)
diff --git a/.gitattributes b/.gitattributes
index 2360366..82335aa 100644
--- a/.gitattributes
+++ b/.gitattributes
@@ -36,6 +36,7 @@
/phpunit.xml.dist export-ignore
/rector.php export-ignore
/runtime export-ignore
+/scaffold-lock.json export-ignore
/tests export-ignore
# Avoid merge conflicts in CHANGELOG
diff --git a/.github/linters/.codespellrc b/.github/linters/.codespellrc
index be02967..1375eee 100644
--- a/.github/linters/.codespellrc
+++ b/.github/linters/.codespellrc
@@ -1,2 +1,2 @@
[codespell]
-skip = */tests/*,tests/**,*/composer.lock,*/composer.json,*/package-lock.json,*/dist/*,*/node_modules/*,*/vendor/*,vendor/**,*/runtime/*,runtime/**
+skip = */tests/*,tests/**,*/composer.lock,*/composer.json
diff --git a/.github/linters/.gitleaks.toml b/.github/linters/.gitleaks.toml
index fba3f57..bccf2d9 100644
--- a/.github/linters/.gitleaks.toml
+++ b/.github/linters/.gitleaks.toml
@@ -1,6 +1,6 @@
title = "gitleaks config"
-[[allowlists]]
+[allowlist]
description = "Allow test fixture data with dummy credentials"
paths = [
'''tests/support/data/.*\.php''',
diff --git a/.gitignore b/.gitignore
index 3ef6bbc..304001d 100644
--- a/.gitignore
+++ b/.gitignore
@@ -57,3 +57,4 @@ Thumbs.db
.buildpath
.project
.settings
+phpunit.xml
diff --git a/CHANGELOG.md b/CHANGELOG.md
index 53242b0..8c9cecf 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -5,6 +5,10 @@ All notable changes to this project will be documented in this file.
The format is based on [Conventional Commits](https://www.conventionalcommits.org/en/v1.0.0/),
and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
+## 0.3.0 Under development
+
+- feat!: ship `ecs.php` and `rector.php` wrappers from `src/config/` via `scaffold.json`; metadata moves to `php-forge/baseline`.
+
## 0.2.0 May 04, 2026
- docs: add social media badge for following on X in `README.md`.
diff --git a/README.md b/README.md
index a8deb8a..8b2f5d8 100644
--- a/README.md
+++ b/README.md
@@ -127,15 +127,11 @@ return static function (RectorConfig $rectorConfig): void {
};
```
-## Scaffolded distribution (optional)
+## Scaffolded wrappers (optional)
-This package is also a [`yii2-extensions/scaffold`](https://github.com/yii2-extensions/scaffold) provider.
-
-When the scaffold plugin is installed and authorized, `composer install` distributes the canonical metadata and
-super-linter configs into your repository root automatically; so the ECS / Rector wrappers above and the shared linter
-rules stay in lock-step across every repository that opts in.
-
-Opt in by adding the plugin and authorizing this package as a provider:
+This package is a [`yii2-extensions/scaffold`](https://github.com/yii2-extensions/scaffold) provider for the
+**root `ecs.php` and `rector.php` wrapper templates**. Consumers can opt in by allowing the plugin and listing this
+package as an authorised scaffold provider:
```bash
composer require yii2-extensions/scaffold:^0.1 --dev
@@ -150,6 +146,7 @@ composer require yii2-extensions/scaffold:^0.1 --dev
},
"extra": {
"scaffold": {
+ "auto": false,
"allowed-packages": [
"php-forge/coding-standard"
]
@@ -158,45 +155,21 @@ composer require yii2-extensions/scaffold:^0.1 --dev
}
```
-On the next `composer install` / `composer update`, these files land in your repository root:
-
-| File | Mode | Purpose |
-| ------------------------------------ | ---------- | -------------------------------------------------------- |
-| `.editorconfig` | `replace` | Editor settings (UTF-8, LF, indent) |
-| `.gitattributes` | `replace` | Text/binary handling, archive excludes |
-| `.gitignore` | `append` | Common ignore patterns; project-specific lines preserved |
-| `.styleci.yml` | `replace` | StyleCI config (PSR-12 + risky) |
-| `.ecrc` | `replace` | editor-config-checker exclusions |
-| `.prettierignore` | `replace` | Paths Prettier should skip |
-| `.prettierrc.json` | `replace` | Prettier formatting rules |
-| `.stylelintignore` | `replace` | Paths stylelint should skip |
-| `composer-require-checker.json` | `preserve` | Composer require-checker whitelist (project-specific) |
-| `.github/linters/actionlint.yml` | `replace` | actionlint config for Super-Linter |
-| `.github/linters/.codespellrc` | `replace` | codespell config |
-| `.github/linters/.gitleaks.toml` | `replace` | gitleaks config |
-| `.github/linters/.markdown-lint.yml` | `replace` | markdownlint config |
-| `ecs.php` | `preserve` | ECS wrapper for the project root |
-| `rector.php` | `preserve` | Rector wrapper for the project root |
-
-Mode semantics:
-
-- `replace`: lock-step with this package. Local edits trigger a warning and the file is skipped on update.
- Use `vendor/bin/scaffold reapply --force` to re-sync.
-- `append`: provider content is appended to the existing file. Project lines are never blown away.
-- `preserve`: file is written once on first install and never overwritten.
-
-The scaffolded `ecs.php` / `rector.php` ship with `83` as the default PHP target; switch to `81`, `82`, or `84` to match
-your minimum PHP version. Mode `preserve` protects your edits across `composer update`.
-
-### Scaffold commands
+With `auto: false`, the plugin does not run on `composer install`; sync the wrappers manually:
```bash
-vendor/bin/scaffold status # show which files are synced/modified/missing
-vendor/bin/scaffold diff # diff between local and provider version
-vendor/bin/scaffold reapply [] [--force] # re-apply provider content
-vendor/bin/scaffold eject # stop tracking a file (kept on disk)
+vendor/bin/scaffold reapply --provider=php-forge/coding-standard
```
+Both wrappers ship in mode `preserve` (written once on first install, never overwritten) so consumer edits to paths or
+PHP target version survive subsequent runs.
+
+## Related packages
+
+For dev environment scaffolding (editorconfig, gitignore, super-linter configs, etc.), see
+[`php-forge/baseline`](https://github.com/php-forge/baseline). The two packages are independent — adopt either, both,
+or neither.
+
## Composer scripts
Follow the same convention used across PHP Forge repositories:
@@ -212,7 +185,7 @@ Follow the same convention used across PHP Forge repositories:
## Documentation
-- 📥 [Installation Guide](docs/installation.md)
+- 📚 [Installation Guide](docs/installation.md)
## Package information
diff --git a/composer.json b/composer.json
index 08d76ea..9c9b6bd 100644
--- a/composer.json
+++ b/composer.json
@@ -1,7 +1,7 @@
{
"name": "php-forge/coding-standard",
"type": "library",
- "description": "Centralized ECS, Rector, and tooling configurations for PHP projects.",
+ "description": "Centralized ECS and Rector configurations for PHP projects.",
"keywords": [
"coding-standard",
"ecs",
@@ -10,11 +10,17 @@
"scaffold-provider"
],
"license": "BSD-3-Clause",
+ "minimum-stability": "dev",
+ "prefer-stable": true,
"require": {
"php": ">=8.3",
"rector/rector": "^2.1",
"symplify/easy-coding-standard": "^13.0"
},
+ "require-dev": {
+ "php-forge/baseline": "dev-main",
+ "yii2-extensions/scaffold": "dev-main"
+ },
"autoload": {
"psr-4": {
"PHPForge\\CodingStandard\\": "./"
@@ -25,34 +31,18 @@
"dev-main": "0.3.x-dev"
},
"scaffold": {
- "copy": [
- ".editorconfig",
- ".gitattributes",
- ".gitignore",
- ".styleci.yml",
- ".ecrc",
- ".prettierignore",
- ".prettierrc.json",
- ".stylelintignore",
- "composer-require-checker.json",
- ".github/linters/actionlint.yml",
- ".github/linters/.codespellrc",
- ".github/linters/.gitleaks.toml",
- ".github/linters/.markdown-lint.yml",
- "ecs.php",
- "rector.php"
- ],
- "modes": {
- ".editorconfig": "append",
- ".gitignore": "append",
- "composer-require-checker.json": "preserve",
- "ecs.php": "preserve",
- "rector.php": "preserve"
- }
+ "manifest": "scaffold.json",
+ "auto": false,
+ "allowed-packages": [
+ "php-forge/baseline"
+ ]
}
},
"config": {
- "sort-packages": true
+ "sort-packages": true,
+ "allow-plugins": {
+ "yii2-extensions/scaffold": true
+ }
},
"scripts": {
"ecs": "./vendor/bin/ecs check src --config src/ecs-83.php --fix",
diff --git a/scaffold-lock.json b/scaffold-lock.json
new file mode 100644
index 0000000..9d8d956
--- /dev/null
+++ b/scaffold-lock.json
@@ -0,0 +1,88 @@
+{
+ "providers": {
+ "php-forge/baseline": {
+ "version": "dev-main",
+ "path": "vendor/php-forge/baseline"
+ }
+ },
+ "files": {
+ ".editorconfig": {
+ "hash": "sha256:f0cafe474d79d769f397f2e8839c642ca3ef1a0ce38b6e9f82ed9e49bccf84f6",
+ "provider": "php-forge/baseline",
+ "source": "metadata/.editorconfig",
+ "mode": "append"
+ },
+ ".gitattributes": {
+ "hash": "sha256:88b62c371df01eac6e0298625a03baee372bd4048a6452cc2a1aeee0d49eba10",
+ "provider": "php-forge/baseline",
+ "source": "metadata/gitattributes",
+ "mode": "replace"
+ },
+ ".gitignore": {
+ "hash": "sha256:9e5e968a4f71578af06247a009998c24d27682fa88f4c0883de2e4bec80d45ca",
+ "provider": "php-forge/baseline",
+ "source": "metadata/.gitignore",
+ "mode": "append"
+ },
+ ".styleci.yml": {
+ "hash": "sha256:825f8c744ffbd2bc2369712e7192b8694129a8ecbc3fd91dc9300fccecf827bd",
+ "provider": "php-forge/baseline",
+ "source": "metadata/.styleci.yml",
+ "mode": "replace"
+ },
+ ".ecrc": {
+ "hash": "sha256:b6b65a789b169356effceb798df40aee94443eaef9839353809850d3ad8a7d7d",
+ "provider": "php-forge/baseline",
+ "source": "metadata/.ecrc",
+ "mode": "replace"
+ },
+ ".prettierignore": {
+ "hash": "sha256:fcebacee7151573cd30da0c600c9feb5138cdb8a94b10d2e29ddab8d72ecd87b",
+ "provider": "php-forge/baseline",
+ "source": "metadata/.prettierignore",
+ "mode": "replace"
+ },
+ ".prettierrc.json": {
+ "hash": "sha256:4bf1ad096981736c7bd00136026e046f4b23fcefa1f8db84dcd0bacac19e97a2",
+ "provider": "php-forge/baseline",
+ "source": "metadata/.prettierrc.json",
+ "mode": "replace"
+ },
+ ".stylelintignore": {
+ "hash": "sha256:12186f0a5c42b4f894f7bdda1b1ca5ebc69f92d906aa9075a459d4d08fe4edc1",
+ "provider": "php-forge/baseline",
+ "source": "metadata/.stylelintignore",
+ "mode": "replace"
+ },
+ "composer-require-checker.json": {
+ "hash": "sha256:f4fbbc7876fa3f695b69dd7dc7ad4637d33dfab97fe445b476de26480f85055d",
+ "provider": "php-forge/baseline",
+ "source": "metadata/composer-require-checker.json",
+ "mode": "preserve"
+ },
+ ".github/linters/.codespellrc": {
+ "hash": "sha256:a9afcf57f68542d7cc308af4ca923ef6bde18de7a606b99190b8a15bdef612ef",
+ "provider": "php-forge/baseline",
+ "source": "metadata/.github/linters/.codespellrc",
+ "mode": "replace"
+ },
+ ".github/linters/.gitleaks.toml": {
+ "hash": "sha256:c500506cb29afadfd898384f12bcabdf5b494f6f2da982217e0a6e33b10f6ec6",
+ "provider": "php-forge/baseline",
+ "source": "metadata/.github/linters/.gitleaks.toml",
+ "mode": "replace"
+ },
+ ".github/linters/.markdown-lint.yml": {
+ "hash": "sha256:5d41c7471e15fea1b307a39791436179c5db6ae7c7daf00042d21750117bead4",
+ "provider": "php-forge/baseline",
+ "source": "metadata/.github/linters/.markdown-lint.yml",
+ "mode": "replace"
+ },
+ ".github/linters/actionlint.yml": {
+ "hash": "sha256:5c4071e2aa711e7d2e6bbb9c06d82399feab06ef5ff8feae4f9b6a61b383852f",
+ "provider": "php-forge/baseline",
+ "source": "metadata/.github/linters/actionlint.yml",
+ "mode": "replace"
+ }
+ }
+}
\ No newline at end of file
diff --git a/scaffold.json b/scaffold.json
new file mode 100644
index 0000000..9c6439e
--- /dev/null
+++ b/scaffold.json
@@ -0,0 +1,10 @@
+{
+ "copy": [
+ { "from": "src/config/ecs.php", "to": "ecs.php" },
+ { "from": "src/config/rector.php", "to": "rector.php" }
+ ],
+ "modes": {
+ "ecs.php": "preserve",
+ "rector.php": "preserve"
+ }
+}
diff --git a/ecs.php b/src/config/ecs.php
similarity index 100%
rename from ecs.php
rename to src/config/ecs.php
diff --git a/rector.php b/src/config/rector.php
similarity index 100%
rename from rector.php
rename to src/config/rector.php
From 72236e6f55478a967f6016aeff8e18153b9ed0ab Mon Sep 17 00:00:00 2001
From: Wilmer Arambula
Date: Tue, 5 May 2026 12:23:30 -0400
Subject: [PATCH 4/8] Fix Linter CI.
---
.prettierrc.json | 2 +-
README.md | 36 +++++++++++++++++++++---------------
docs/installation.md | 38 --------------------------------------
3 files changed, 22 insertions(+), 54 deletions(-)
delete mode 100644 docs/installation.md
diff --git a/.prettierrc.json b/.prettierrc.json
index 8f87fe1..dab6c39 100644
--- a/.prettierrc.json
+++ b/.prettierrc.json
@@ -19,7 +19,7 @@
}
},
{
- "files": ["**/package.json", "**/package-lock.json"],
+ "files": ["**/package.json", "**/package-lock.json", "**/scaffold-lock.json"],
"options": {
"tabWidth": 2
}
diff --git a/README.md b/README.md
index 8b2f5d8..76b0f37 100644
--- a/README.md
+++ b/README.md
@@ -13,19 +13,29 @@
Share one set of rules across multiple repositories via Composer.
-## Features
+## System requirements
-
-
-
-
+- [`PHP`](https://www.php.net/downloads) 8.3 or higher.
+- [`Composer`](https://getcomposer.org/download/) for dependency management.
## Installation
```bash
-composer require php-forge/coding-standard:^0.2 --dev
+composer require php-forge/coding-standard:^0.3 --dev
```
+Or add the dependency manually to `composer.json`:
+
+```json
+{
+ "require-dev": {
+ "php-forge/coding-standard": "^0.3"
+ }
+}
+```
+
+Then run `composer update`.
+
## Configuration files
This package ships shared ECS and Rector configurations under
@@ -127,11 +137,11 @@ return static function (RectorConfig $rectorConfig): void {
};
```
-## Scaffolded wrappers (optional)
+## Scaffolded distribution
This package is a [`yii2-extensions/scaffold`](https://github.com/yii2-extensions/scaffold) provider for the
-**root `ecs.php` and `rector.php` wrapper templates**. Consumers can opt in by allowing the plugin and listing this
-package as an authorised scaffold provider:
+**root `ecs.php` and `rector.php` wrapper templates** (sourced from `src/config/` via `scaffold.json`). Consumers can
+opt in by allowing the plugin and listing this package as an authorised provider:
```bash
composer require yii2-extensions/scaffold:^0.1 --dev
@@ -161,8 +171,8 @@ With `auto: false`, the plugin does not run on `composer install`; sync the wrap
vendor/bin/scaffold reapply --provider=php-forge/coding-standard
```
-Both wrappers ship in mode `preserve` (written once on first install, never overwritten) so consumer edits to paths or
-PHP target version survive subsequent runs.
+Both wrappers ship in mode `preserve` — written once on first install, never overwritten — so consumer edits to paths
+or PHP target version survive subsequent runs.
## Related packages
@@ -183,10 +193,6 @@ Follow the same convention used across PHP Forge repositories:
}
```
-## Documentation
-
-- 📚 [Installation Guide](docs/installation.md)
-
## Package information
[](https://www.php.net/releases/8.3/en.php)
diff --git a/docs/installation.md b/docs/installation.md
deleted file mode 100644
index 4f32a9b..0000000
--- a/docs/installation.md
+++ /dev/null
@@ -1,38 +0,0 @@
-# Installation guide
-
-## System requirements
-
-- [`PHP`](https://www.php.net/downloads) 8.3 or higher.
-- [`Composer`](https://getcomposer.org/download/) for dependency management.
-
-## Installation
-
-### Method 1: Using [Composer](https://getcomposer.org/download/) (recommended)
-
-Install the extension.
-
-```bash
-composer require php-forge/coding-standard:^0.2 --dev
-```
-
-### Method 2: Manual installation
-
-Add to your `composer.json`.
-
-```json
-{
- "require-dev": {
- "php-forge/coding-standard": "^0.2"
- }
-}
-```
-
-Then run.
-
-```bash
-composer update
-```
-
-## Next steps
-
-- 📖 [Readme](../README.md)
From 4f009dc06d1e18dd3406443c62fba77f084d13ab Mon Sep 17 00:00:00 2001
From: Wilmer Arambula
Date: Tue, 5 May 2026 12:41:38 -0400
Subject: [PATCH 5/8] Fix Linter CI.
---
.ecrc | 3 ++-
.prettierignore | 3 +++
.prettierrc.json | 2 +-
README.md | 7 +++----
scaffold-lock.json | 4 ++--
5 files changed, 11 insertions(+), 8 deletions(-)
diff --git a/.ecrc b/.ecrc
index 4e244a2..bb0f71a 100644
--- a/.ecrc
+++ b/.ecrc
@@ -5,6 +5,7 @@
"\\.min\\.css$",
"\\.min\\.js$",
"^vendor/",
- "^runtime/"
+ "^runtime/",
+ "scaffold-lock\\.json$"
]
}
diff --git a/.prettierignore b/.prettierignore
index 9793904..1886a83 100644
--- a/.prettierignore
+++ b/.prettierignore
@@ -16,3 +16,6 @@ tests/runtime/**
# Tool configs maintained by hand to keep their array order meaningful.
composer-require-checker.json
+
+# Auto-generated by yii2-extensions/scaffold; never hand-edited.
+scaffold-lock.json
diff --git a/.prettierrc.json b/.prettierrc.json
index dab6c39..8f87fe1 100644
--- a/.prettierrc.json
+++ b/.prettierrc.json
@@ -19,7 +19,7 @@
}
},
{
- "files": ["**/package.json", "**/package-lock.json", "**/scaffold-lock.json"],
+ "files": ["**/package.json", "**/package-lock.json"],
"options": {
"tabWidth": 2
}
diff --git a/README.md b/README.md
index 76b0f37..d2c0760 100644
--- a/README.md
+++ b/README.md
@@ -171,14 +171,13 @@ With `auto: false`, the plugin does not run on `composer install`; sync the wrap
vendor/bin/scaffold reapply --provider=php-forge/coding-standard
```
-Both wrappers ship in mode `preserve` — written once on first install, never overwritten — so consumer edits to paths
+Both wrappers ship in mode `preserve`; written once on first install, never overwritten so consumer edits to paths
or PHP target version survive subsequent runs.
## Related packages
-For dev environment scaffolding (editorconfig, gitignore, super-linter configs, etc.), see
-[`php-forge/baseline`](https://github.com/php-forge/baseline). The two packages are independent — adopt either, both,
-or neither.
+For dev environment scaffolding, see [`php-forge/baseline`](https://github.com/php-forge/baseline). The two packages
+are independent adopt either, both, or neither.
## Composer scripts
diff --git a/scaffold-lock.json b/scaffold-lock.json
index 9d8d956..5aabcb6 100644
--- a/scaffold-lock.json
+++ b/scaffold-lock.json
@@ -31,13 +31,13 @@
"mode": "replace"
},
".ecrc": {
- "hash": "sha256:b6b65a789b169356effceb798df40aee94443eaef9839353809850d3ad8a7d7d",
+ "hash": "sha256:8227fada934c245fc98e67d691a9c8bee48b86adbbac9fbb6282057ca321d9b5",
"provider": "php-forge/baseline",
"source": "metadata/.ecrc",
"mode": "replace"
},
".prettierignore": {
- "hash": "sha256:fcebacee7151573cd30da0c600c9feb5138cdb8a94b10d2e29ddab8d72ecd87b",
+ "hash": "sha256:d12c54d82c23d562342765ceda6897ca26b73eba0c700c127408c0a9bc17d595",
"provider": "php-forge/baseline",
"source": "metadata/.prettierignore",
"mode": "replace"
From 52742c0895ebb056709438b4955157d6ae355384 Mon Sep 17 00:00:00 2001
From: Wilmer Arambula
Date: Tue, 5 May 2026 12:50:53 -0400
Subject: [PATCH 6/8] Fix Linter CI.
---
.github/linters/.editorconfig-checker.json | 11 +++++++++++
1 file changed, 11 insertions(+)
create mode 100644 .github/linters/.editorconfig-checker.json
diff --git a/.github/linters/.editorconfig-checker.json b/.github/linters/.editorconfig-checker.json
new file mode 100644
index 0000000..bb0f71a
--- /dev/null
+++ b/.github/linters/.editorconfig-checker.json
@@ -0,0 +1,11 @@
+{
+ "Exclude": [
+ "phpstan-baseline\\.neon$",
+ "^tests/runtime/",
+ "\\.min\\.css$",
+ "\\.min\\.js$",
+ "^vendor/",
+ "^runtime/",
+ "scaffold-lock\\.json$"
+ ]
+}
From 53e18a11ee100f573ac29c80a8148e2ba946fb29 Mon Sep 17 00:00:00 2001
From: Wilmer Arambula
Date: Tue, 5 May 2026 16:36:03 -0400
Subject: [PATCH 7/8] Add `.editorconfig-checker.json` to linters in
`scaffold-lock.json`.
---
scaffold-lock.json | 6 ++++++
1 file changed, 6 insertions(+)
diff --git a/scaffold-lock.json b/scaffold-lock.json
index 5aabcb6..55fbf6f 100644
--- a/scaffold-lock.json
+++ b/scaffold-lock.json
@@ -83,6 +83,12 @@
"provider": "php-forge/baseline",
"source": "metadata/.github/linters/actionlint.yml",
"mode": "replace"
+ },
+ ".github/linters/.editorconfig-checker.json": {
+ "hash": "sha256:8227fada934c245fc98e67d691a9c8bee48b86adbbac9fbb6282057ca321d9b5",
+ "provider": "php-forge/baseline",
+ "source": "metadata/.github/linters/.editorconfig-checker.json",
+ "mode": "replace"
}
}
}
\ No newline at end of file
From f243d793e6dcb7426a6ca558ab5d81400cd881c5 Mon Sep 17 00:00:00 2001
From: Wilmer Arambula
Date: Tue, 5 May 2026 16:37:39 -0400
Subject: [PATCH 8/8] Fix grammar in `README.md` for clarity.
---
README.md | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/README.md b/README.md
index d2c0760..6081139 100644
--- a/README.md
+++ b/README.md
@@ -177,7 +177,7 @@ or PHP target version survive subsequent runs.
## Related packages
For dev environment scaffolding, see [`php-forge/baseline`](https://github.com/php-forge/baseline). The two packages
-are independent adopt either, both, or neither.
+are independent; adopt either, both, or neither.
## Composer scripts