diff --git a/AGENTS.md b/AGENTS.md index f5d3500..c8125fb 100644 --- a/AGENTS.md +++ b/AGENTS.md @@ -37,8 +37,8 @@ npm test # Jest acro ## Architectural decisions - **Package layering**: `node-packages/*` (npm workspaces, `@rtcamp` scope) and `composer-packages/*` (Composer, `rtcamp` vendor) are independent ecosystems sharing one repo for coordinated development only — nothing internal is shared or imported across that boundary. -- **Release via subtree split, not a plain publish**: both ecosystems release with `git subtree split --prefix=
+ rtCamp's shareable ESLint flat config for WordPress projects. +
+ +--- + +It extends `@wordpress/eslint-plugin` (recommended), `@eslint-community/eslint-plugin-eslint-comments`, and `eslint-plugin-jest` (scoped to `**/*.test.js`). @@ -8,6 +20,8 @@ rtCamp's shareable **ESLint flat config** for WordPress projects. Extends ## Install +Requires Node.js 22.19+. + ```bash npm install --save-dev @rtcamp/eslint-config eslint @wordpress/eslint-plugin ``` diff --git a/node-packages/eslint-config/package.json b/node-packages/eslint-config/package.json index 71e1fa1..6ad5fac 100644 --- a/node-packages/eslint-config/package.json +++ b/node-packages/eslint-config/package.json @@ -1,6 +1,6 @@ { "name": "@rtcamp/eslint-config", - "version": "1.0.0", + "version": "1.1.0", "description": "rtCamp shareable ESLint flat config for WordPress projects — extends @wordpress/eslint-plugin.", "license": "GPL-2.0-or-later", "author": "rtCamp", diff --git a/node-packages/stylelint-config/CHANGELOG.md b/node-packages/stylelint-config/CHANGELOG.md index 66aef49..6e37353 100644 --- a/node-packages/stylelint-config/CHANGELOG.md +++ b/node-packages/stylelint-config/CHANGELOG.md @@ -6,6 +6,8 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.1.0/). ## [Unreleased] +## [1.1.0] - 2026-10-01 + ### Changed - `engines.node` raised to `>=22.19` to match the rest of the monorepo (`@rtcamp/wp-tooling` needs it for Lighthouse 13). diff --git a/node-packages/stylelint-config/README.md b/node-packages/stylelint-config/README.md index 59b0514..2332366 100644 --- a/node-packages/stylelint-config/README.md +++ b/node-packages/stylelint-config/README.md @@ -1,10 +1,24 @@ -# @rtcamp/stylelint-config ++ rtCamp's shareable Stylelint config for WordPress projects. +
+ +--- + +It extends `@wordpress/stylelint-config` and `@wordpress/stylelint-config/scss`. ## Install +Requires Node.js 22.19+. + ```bash npm install --save-dev @rtcamp/stylelint-config stylelint @wordpress/stylelint-config stylelint-scss ``` diff --git a/node-packages/stylelint-config/package.json b/node-packages/stylelint-config/package.json index d363406..48c18a5 100644 --- a/node-packages/stylelint-config/package.json +++ b/node-packages/stylelint-config/package.json @@ -1,6 +1,6 @@ { "name": "@rtcamp/stylelint-config", - "version": "1.0.0", + "version": "1.1.0", "description": "rtCamp shareable Stylelint config for WordPress projects — extends @wordpress/stylelint-config (+ scss).", "license": "GPL-2.0-or-later", "author": "rtCamp", diff --git a/node-packages/tailwind-config/CHANGELOG.md b/node-packages/tailwind-config/CHANGELOG.md index 24aeedf..a7c94f7 100644 --- a/node-packages/tailwind-config/CHANGELOG.md +++ b/node-packages/tailwind-config/CHANGELOG.md @@ -6,6 +6,8 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.1.0/). ## [Unreleased] +## [1.1.0] - 2026-10-01 + ### Changed - `engines.node` raised to `>=22.19` to match the rest of the monorepo (`@rtcamp/wp-tooling` needs it for Lighthouse 13). diff --git a/node-packages/tailwind-config/README.md b/node-packages/tailwind-config/README.md index 76e7a99..d5035e1 100644 --- a/node-packages/tailwind-config/README.md +++ b/node-packages/tailwind-config/README.md @@ -1,10 +1,24 @@ -# @rtcamp/tailwind-config ++ rtCamp's Tailwind CSS v4 PostCSS config and theme.json sync for WordPress themes. +
+ +--- + +It ships a shareable PostCSS config plus a webpack plugin that keeps Tailwind theme tokens in +sync with `theme.json`. ## Install +Requires Node.js 22.19+. + ```bash npm install --save-dev @rtcamp/tailwind-config tailwindcss @tailwindcss/postcss ``` diff --git a/node-packages/tailwind-config/package.json b/node-packages/tailwind-config/package.json index a923005..4034df4 100644 --- a/node-packages/tailwind-config/package.json +++ b/node-packages/tailwind-config/package.json @@ -1,6 +1,6 @@ { "name": "@rtcamp/tailwind-config", - "version": "1.0.0", + "version": "1.1.0", "description": "rtCamp shareable Tailwind CSS v4 PostCSS config + theme.json→Tailwind webpack plugin for WordPress projects.", "license": "GPL-2.0-or-later", "author": "rtCamp", diff --git a/node-packages/wp-tooling/CHANGELOG.md b/node-packages/wp-tooling/CHANGELOG.md index 9ebc433..1b21ecc 100644 --- a/node-packages/wp-tooling/CHANGELOG.md +++ b/node-packages/wp-tooling/CHANGELOG.md @@ -6,6 +6,8 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.1.0/). ## [Unreleased] +## [2.0.0] - 2026-10-01 + ### Added - `detect-changes --strict` (library: `detectChanges({ strict: true })`): a failed `git diff` exits 1 (throws the new `DetectChangesError`, code `EDIFFFAIL`, exported from `@rtcamp/wp-tooling/ci`) instead of reporting zero changes, which skipped every job gated on the counts and left the run green. Off by default, so existing callers see no change; CI callers should turn it on. The stderr wording keeps the "git diff failed" phrase that rtCamp/wp-shared-workflows matches today. @@ -26,7 +28,7 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.1.0/). - fill `testVersion` from the `Requires PHP` header (PHPCompatibility aborts on the first line of every file without it), `minimum_wp_version` from `Requires at least`, the text domain from `Text Domain`, and the prefixes from the text domain and the PSR-4 namespace; - accept PSR-4 class file names, and exempt block `render.php` files from the global-variable prefix and text-domain-mismatch checks, since core includes them inside a function and they translate with `block.json`'s text domain; - lint `tests/`, exempting it from the prefix, VIP file-operation and remote-data, `ini_set` and global-override rules by sniff name. An exclude-pattern on a re-referenced standard such as `WordPress-Docs` has no effect, because its sniffs are already loaded; - - declare `rtcamp/wp-phpcs` as the only dev dependency, with two `composer.json` wiring entries without which `composer require` fails: the `rtCamp/wp-phpcs` VCS repository, since the package is not on Packagist, and `allow-plugins` for the Composer installer that registers the standards. + - declare `rtcamp/wp-phpcs` as the only dev dependency, with two `composer.json` wiring entries without which `composer require` fails: the `rtCamp/wp-phpcs` VCS repository, so the install works whether or not Packagist serves the package, and `allow-plugins` for the Composer installer that registers the standards. Every PHP file the bundled `wp/*`, `wp-api/*` and `setup/phpunit` scaffolds render (classes, tests and the PHPUnit bootstrap), and the five `utility/*` accessor snippets, passes both. - `automattic/vipwpcs` as `lint/phpcs/vip`'s dev dependency, with `allow-plugins` wiring for `dealerdirect/phpcodesniffer-composer-installer`, which WPCS and VIPCS depend on: without it a non-interactive `composer require` exits 1 and no standard is registered. The `setup` skill's install command and `docs/examples.md` use the same package. @@ -46,7 +48,7 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.1.0/). - PHPCS scaffolds exclude intentionally broken AI evaluation fixtures. The standalone server profiler uses short arrays and documents the specific PHPCS exceptions required by WP-CLI evaluation, privileged CLI query data and STDERR diagnostics. - Feature hooks: `readEnv`/`setEnv` and `readDefine`/`setDefine` treat the key or define name as a literal. They were interpolated into a regular expression, so a name containing `.` or another metacharacter could read or flip a different line. - `wp-tooling features`: when `npm install` fails after enabling a feature, the retry commands it prints no longer put runtime dependencies under `--save-dev`, and a failed interactive change reads "Failed to enable+ The CLI and library behind rtCamp's WordPress starters: scaffolding, project setup, releases, + git hooks, CI helpers and accessibility and performance checks. +
+ +--- -## What's inside +`@rtcamp/wp-tooling` is what [plugin-elementary](https://github.com/rtCamp/plugin-elementary) and +[theme-elementary](https://github.com/rtCamp/theme-elementary) run for `npm run init`, `release:*` +and their git hooks. It works in any WordPress plugin or theme, and it has no runtime +dependencies. -- TTY UI toolkit — Wizard, prompts, selects, spinner (zero-dependency) -- ScaffoldRegistry — auto-discovers `scaffold.json` files in consuming repos -- Release scripts — version bump, changelog, package zip -- Git hooks — commit-msg, pre-commit installer -- Lint configs — `@rtcamp/eslint-config`, `@rtcamp/stylelint-config` -- CI helpers — `detect-changes` (bucket changed files) and `coverage-gate` (fail a PR when too few of its changed lines are covered; reads Clover or LCOV) -- Version monitor — detectors, updaters, reporters for WordPress / PHP / Node +Requirements: -## Development +- Node.js 22.19+ +- A WordPress plugin or theme project. PHP scaffolds target [`rtcamp/wp-primitives`](https://github.com/rtCamp/wp-primitives) `^2.0`. -See [`AGENTS.md`](../../AGENTS.md) at the monorepo root for architecture rules, coding -standards, testing commands, and the release/subtree-split workflow. Contribution -guidelines live in [`CONTRIBUTING.md`](../../CONTRIBUTING.md). +## Install -## Install (consumer side) +```bash +npm install --save-dev @rtcamp/wp-tooling +``` + +## Quick start ```bash -npm install @rtcamp/wp-tooling +npx wp-tooling list # every scaffold in the catalogue +npx wp-tooling add wp/cpt --slug=book --singular=Book --plural=Books +npx wp-tooling features --enable tailwind # toggle a feature the project declares (both starters do) +npx wp-tooling
diff --git a/node-packages/wp-tooling/package.json b/node-packages/wp-tooling/package.json
index 0d7cc9f..4eefda8 100644
--- a/node-packages/wp-tooling/package.json
+++ b/node-packages/wp-tooling/package.json
@@ -1,7 +1,7 @@
{
"name": "@rtcamp/wp-tooling",
"description": "Shared tooling for rtCamp WordPress plugin scaffolding — TTY UI, scaffold registry, release scripts, git hooks, CI helpers, version monitor.",
- "version": "1.0.0",
+ "version": "2.0.0",
"author": "rtCamp",
"bin": {
"wp-tooling": "./bin/wp-tooling.js"
@@ -31,13 +31,13 @@
"./perf": "./src/perf/index.js",
"./version-monitor": "./src/version-monitor/index.js"
},
- "files": [
- "bin",
- "src",
- "scaffolds",
- "docs",
- "README.md"
- ],
+ "files": [
+ "bin",
+ "src",
+ "scaffolds",
+ "docs",
+ "README.md"
+ ],
"homepage": "https://github.com/rtCamp/wp-tooling#readme",
"keywords": [
"cli",
@@ -54,7 +54,8 @@
},
"repository": {
"type": "git",
- "url": "git+https://github.com/rtCamp/wp-tooling.git"
+ "url": "git+https://github.com/rtCamp/wp-tooling.git",
+ "directory": "node-packages/wp-tooling"
},
"scripts": {
"check": "npm run lint && npm test",
diff --git a/package-lock.json b/package-lock.json
index eee16b1..34ce533 100644
--- a/package-lock.json
+++ b/package-lock.json
@@ -12610,7 +12610,7 @@
},
"node-packages/eslint-config": {
"name": "@rtcamp/eslint-config",
- "version": "1.0.0",
+ "version": "1.1.0",
"license": "GPL-2.0-or-later",
"devDependencies": {
"eslint-import-resolver-typescript": "^4.4.4",
@@ -12634,7 +12634,7 @@
},
"node-packages/stylelint-config": {
"name": "@rtcamp/stylelint-config",
- "version": "1.0.0",
+ "version": "1.1.0",
"license": "GPL-2.0-or-later",
"devDependencies": {
"@rtcamp/eslint-config": "^1.0.0",
@@ -12651,7 +12651,7 @@
},
"node-packages/tailwind-config": {
"name": "@rtcamp/tailwind-config",
- "version": "1.0.0",
+ "version": "1.1.0",
"license": "GPL-2.0-or-later",
"devDependencies": {
"@rtcamp/eslint-config": "^1.0.0",
@@ -12667,7 +12667,7 @@
},
"node-packages/wp-tooling": {
"name": "@rtcamp/wp-tooling",
- "version": "1.0.0",
+ "version": "2.0.0",
"license": "GPL-2.0-or-later",
"bin": {
"wp-tooling": "bin/wp-tooling.js"