Skip to content

Integration/release refresh - #9

Merged
henryperkins merged 23 commits into
trunkfrom
integration/release-refresh
Jul 18, 2026
Merged

Integration/release refresh#9
henryperkins merged 23 commits into
trunkfrom
integration/release-refresh

Conversation

@henryperkins

Copy link
Copy Markdown
Owner

No description provided.

claude and others added 23 commits July 16, 2026 04:08
Verified against the WordPress/ai v1.2.0 tag, not just the changelog.

wp-ai-plugin (SKILL.md + all four references):
- Re-anchor to v1.2.0 (frontmatter + reference version markers)
- Add Suggest_Reply (ai/suggest-reply) to the built-in experiment list
- Document the new core/read-content and core/read-users read Abilities
- Document the show_in_abilities exposure flag for the read Abilities
- Correct the new timeout filter to wpai_default_request_timeout; the
  changelog/readme mislabel it wp_ai_client_default_request_timeout,
  a name that appears in no plugin PHP
- Note the Settings -> AI "Advanced settings" collapse (hidden by default)
- Add a forward caveat: Guidelines is still the wp_guideline CPT at 1.2.0;
  the "Knowledge" rename is Gutenberg trunk (23.6.0-rc.1) / WP 7.1

wp-abilities-api:
- Add a version-gated "format: uri" schema gotcha (Gutenberg #79555, WP 7.1+)
- Point to core/read-content|users|settings as read-only ability examples

wp-ai-connectors:
- Note the Connectors application-password settings UI (Gutenberg #79403)

shared/references:
- Refresh upstream indices via update-upstream-indices.mjs
  (Gutenberg latest v23.5.3; WP core 7.0.1)

Eval harness (node eval/harness/run.mjs) passes.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_012tU8bXRdMMSNkYkWVD2Wjs
…ith facts

Sparse-cloned WordPress/gutenberg at v23.6.0-rc.1 and read the code the
first commit could only cite from release notes.

wp-abilities-api (input-schema-gotchas.md):
- Rewrite the format gotcha: server and client validate with different
  engines and mismatched format lists. The client (@wordpress/abilities)
  uses AJV draft-04 + ajv-formats with exactly date-time, email, hostname,
  ipv4, ipv6, uri, uuid; an unregistered format fails schema compilation
  ("Invalid schema provided for validation."), which is why uri support
  (gutenberg#79555) shipped as a bug fix in 23.6.

wp-ai-connectors (SKILL.md):
- Application-password connectors, verified: authentication.method enum is
  'api_key'|'application_password'|'none'; env/constant hold
  "username:app-password" strings; DB setting stores {username,password}
  (masked), auto-named connectors_{type}_{id}_application_password;
  credentials UI is gutenberg#79403; e2e fixture cited as the example.

wp-ai-plugin (SKILL.md + guidelines-integration.md):
- Sharpen the Knowledge caveat with verified names: wp_knowledge CPT,
  wp_knowledge_type taxonomy, types guideline/memory/note, per-scope rows
  (guideline-{scope}, guideline-block-*), wp_guideline_scopes() registry
  (site/copy/images/blocks/additional), REST /wp/v2/knowledge and
  /wp/v2/knowledge/guideline-scopes, wp_guideline_max_length().
- Correct the framing: Knowledge ships in Gutenberg lib/experimental/,
  not lib/compat/wordpress-7.1/ - core-merge timing is not settled.

Eval harness passes.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_012tU8bXRdMMSNkYkWVD2Wjs
…ke test

Drift detection (docs/upstream-sync.md "automate first" plan):
- update-upstream-indices.mjs also fetches WordPress/ai releases into
  shared/references/ai-plugin-releases.json (same GitHub Releases shape
  as the Gutenberg index)
- New shared/scripts/check-upstream-drift.mjs: offline comparison of the
  committed index against the "current canonical release: vX.Y.Z" marker
  in skills/wp-ai-plugin/SKILL.md; wired into eval/harness/run.mjs so CI
  turns red when a skill lags a landed index refresh
- upstream-sync.yml PR body documents the new index and the red-CI flow
- Note: initial ai-plugin-releases.json bootstrapped from git tags (the
  GitHub API was rate-limited in the authoring environment; the file
  carries a provenance note). The weekly Upstream Sync run regenerates
  it from the Releases API.

Eval scenario:
- ai-plugin-expose-read-abilities.json exercises the 1.2.0 surface:
  show_in_abilities on register_post_type for core/read-content, reusing
  ai/suggest-reply instead of rebuilding it, and the real
  wpai_default_request_timeout filter (not the changelog's mislabel)

Playground smoke test (eval/playground/ai-plugin-smoke/):
- Blueprint + mu-plugin registering a downstream Experiment + Ability
  exactly as skills/wp-ai-plugin instructs, run against live WP + the
  wordpress.org ai plugin via @wp-playground/cli; run.sh asserts the
  full chain (filter -> Loader -> enabled toggles -> register() ->
  wp_abilities_api_init -> execute round-trip) plus presence of
  core/read-content, core/read-users, core/read-settings, and
  ai/suggest-reply. Verified green against AI plugin 1.2.0.

Harness passes; smoke test passes from its committed location.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_012tU8bXRdMMSNkYkWVD2Wjs
Conflict resolutions: took the PR #8 side for the four wp-ai-plugin files
(1.2.0 refresh supersedes trunk's 1.1.0-era text), blueprint, and wpds;
re-grafted trunk features the refresh dropped: the harness's
validatePortableTriageCommand guard and the wpds Verification section.
License frontmatter restoration handled in a follow-up integration commit.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_012tU8bXRdMMSNkYkWVD2Wjs
…ration

Weaves both efforts: keeps PR #8's structure and its Settings->AI
feature-group filters (verified in 1.2.0 source), plus the sync branch's
verified additions - the wpai_default_request_timeout changelog-mislabel
warning, the v1.1.0 threshold/capability filter rows, interface method
version history, drift check alongside runSkillQuality in the harness,
and the newer wordpress-core-versions index (7.0.2, PR #8 side).

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_012tU8bXRdMMSNkYkWVD2Wjs
PR #8's rewrite removed 'license: GPL-2.0-or-later' from all 20 skills
(added repo-wide in the PR #7 audit). Restored; skills are copied
standalone by skillpack-install, so per-skill license travels with them.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_012tU8bXRdMMSNkYkWVD2Wjs
…napshot)

Merge 2 accidentally kept the sync branch's older fetch (7.0.1); the
release-conformance check caught it. PR #8's July 17 snapshot (7.0.2,
including maintained 6.9.5) is authoritative.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_012tU8bXRdMMSNkYkWVD2Wjs

@sourcery-ai sourcery-ai Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Sorry @henryperkins, your pull request is larger than the review limit of 150000 diff characters

@dd-app-hp

dd-app-hp Bot commented Jul 18, 2026

Copy link
Copy Markdown

Pipelines

⚠️ Warnings

🚦 1 Pipeline job failed

Props Bot | Generate a list of props   View in Datadog   GitHub Actions

Useful? React with 👍 / 👎

This comment will be updated automatically if new data arrives.
🔗 Commit SHA: d7c9aad | Docs | Give us feedback!
@coderabbitai

coderabbitai Bot commented Jul 18, 2026

Copy link
Copy Markdown

Review Change Stack

📝 Walkthrough

Summary by CodeRabbit

  • New Features

    • Added updated WordPress AI plugin release information, including version 1.2.0.
    • Added comprehensive validation scenarios for Blueprint V2, Playground CLI, WordPress 7.0, AI integrations, licensing, and MCP fallbacks.
    • Added an end-to-end AI plugin smoke test.
  • Documentation

    • Refreshed guidance for WordPress AI, Playground, Abilities API, Interactivity API, block development, themes, licensing, and WPDS.
    • Added clearer authoring, evaluation, compatibility, and troubleshooting instructions.
  • Bug Fixes

    • Corrected upstream release mappings and strengthened drift detection to prevent stale guidance.

Walkthrough

This release refresh adds upstream index synchronization, drift detection, deterministic release and skill-quality harnesses, scaffold CLI validation, evaluation fixtures, and updated guidance for Blueprint, Playground, Abilities API, AI integrations, WordPress 7.0 behavior, licensing, and WPDS fallback handling.

Changes

Release refresh and validation

Layer / File(s) Summary
Authoring and evaluation contracts
docs/authoring-guide.md, docs/superpowers/*, eval/descriptions/*, eval/scenarios/*, eval/results/*
Defines SKILL.md limits, scenario schemas, description corpus splits, behavioral evidence requirements, and release-refresh implementation contracts.
Upstream indexes and drift detection
shared/scripts/*, shared/references/*, docs/upstream-sync.md, .github/workflows/upstream-sync.yml
Adds AI plugin release indexing, shared Gutenberg mapping parsing, refreshed release data, transactional update rules, and CI drift checks.
Conformance and scaffold harness
eval/harness/*, shared/scripts/scaffold-skill.mjs
Adds release-content checks, skill bounds and scenario validation, corpus/evidence checks, and validated JSON-scenario scaffolding.
Blueprint and Playground guidance
skills/blueprint/*, skills/wp-playground/*
Rewrites guidance for Blueprint V2 and pins Playground CLI workflows to version 3.1.45.
Abilities and AI guidance
skills/wp-abilities-*, skills/wp-ai-*, eval/scenarios/*
Updates MCP discovery and authorization semantics, AI Client error handling, AI plugin 1.2.0 references, connector authentication, and related scenarios.
WordPress 7.0 and compliance guidance
skills/wp-block-*, skills/wp-interactivity-api/*, skills/wp-plugin-directory-guidelines/*, skills/wpds/SKILL.md
Documents conditional editor iframe behavior, theme.json additions, router watcher cleanup, GPL license rules, and MCP-first WPDS fallback behavior.
AI plugin smoke test
eval/playground/ai-plugin-smoke/*, .gitignore
Adds a Playground-based end-to-end AI plugin ability smoke test and ignores generated results and local evaluation directories.

Estimated code review effort: 4 (Complex) | ~60 minutes

Possibly related PRs

🚥 Pre-merge checks | ✅ 2 | ❌ 3

❌ Failed checks (1 warning, 2 inconclusive)

Check name Status Explanation Resolution
Docstring Coverage ⚠️ Warning Docstring coverage is 0.00% which is insufficient. The required threshold is 80.00%. Write docstrings for the functions missing them to satisfy the coverage threshold.
Title check ❓ Inconclusive The title is related to the PR but too generic to convey the main change. Use a specific title that names the primary update, such as upstream release refresh, eval harness changes, or WordPress skill documentation updates.
Description check ❓ Inconclusive No pull request description was provided, so the change summary cannot be assessed. Add a brief description summarizing the main areas changed, such as upstream sync, docs, skills, and evaluation updates.
✅ Passed checks (2 passed)
Check name Status Explanation
Linked Issues check ✅ Passed Check skipped because no linked issues were found for this pull request.
Out of Scope Changes check ✅ Passed Check skipped because no linked issues were found for this pull request.
✨ Finishing Touches
📝 Generate docstrings
  • Create stacked PR
  • Commit on current branch
✨ Simplify code
  • Create PR with simplified code
  • Commit simplified code in branch integration/release-refresh

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

Comment @coderabbitai help to get the list of available commands.

@amazon-q-developer amazon-q-developer Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This is a comprehensive release refresh PR that updates WordPress skills documentation, evaluation infrastructure, and upstream synchronization tooling. The changes include 77 files with 4,165 additions across evaluation harnesses, skill documentation, and automation scripts.

Key Changes Reviewed

Evaluation Infrastructure: New conformance testing harness (eval/harness/release-conformance.mjs), skill quality validation (eval/harness/skill-quality.mjs), and test runner (eval/harness/run.mjs) provide robust validation of skill documentation and scenarios.

Upstream Sync Automation: Automated workflow (.github/workflows/upstream-sync.yml) with drift detection (shared/scripts/check-upstream-drift.mjs) ensures skills stay synchronized with WordPress/Gutenberg releases.

Smoke Testing: WordPress Playground-based integration test (eval/playground/ai-plugin-smoke/) validates AI plugin integration in real WordPress environment.

The code demonstrates solid engineering practices with comprehensive error handling, proper validation, and thorough testing. No blocking defects were identified that would prevent merge.


You can now have the agent implement changes and create commits directly on your pull request's source branch. Simply comment with /q followed by your request in natural language to ask the agent to make changes.


⚠️ This PR contains more than 30 files. Amazon Q is better at reviewing smaller PRs, and may miss issues in larger changesets.

@henryperkins
henryperkins merged commit 914be40 into trunk Jul 18, 2026
6 of 8 checks passed

@coderabbitai coderabbitai Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actionable comments posted: 5

Caution

Some comments are outside the diff and can’t be posted inline due to platform limitations.

⚠️ Outside diff range comments (1)
skills/wp-ai-client/SKILL.md (1)

16-16: 🎯 Functional Correctness | 🟠 Major | ⚡ Quick win

Clarify the 7.0 bundling claim in skills/wp-ai-client/SKILL.md:16
WordPress 7.0 bundles wordpress/php-ai-client, not the full wordpress/wp-ai-client package. Keep the standalone package for the REST endpoints and JavaScript API, or this guidance implies it can be dropped and breaks those consumers.

🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In `@skills/wp-ai-client/SKILL.md` at line 16, Clarify the migration guidance in
SKILL.md by stating that WordPress 7.0 bundles only the standalone
wordpress/php-ai-client package. Instruct users to retain wordpress/wp-ai-client
when they need its REST endpoints or JavaScript API, rather than implying that
both Composer packages can be removed.
🤖 Prompt for all review comments with AI agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

Inline comments:
In `@eval/playground/ai-plugin-smoke/run.sh`:
- Around line 9-11: Update the npx invocation in the run-blueprint command to
use the documented pinned `@wp-playground/cli` version 3.1.45 instead of `@latest`,
leaving the remaining command arguments unchanged.

In `@skills/wp-ai-client/references/error-handling.md`:
- Around line 14-23: Sanitize provider-controlled error details before logging:
in skills/wp-ai-client/references/error-handling.md:14-23, remove raw
get_error_message() and get_error_data() logging and retain only allowlisted
diagnostics such as error code, status, or request ID; at
skills/wp-ai-client/references/error-handling.md:41, replace guidance to log
code, message, and data with redacted/allowlisted diagnostics and require
sanitization of messages/data; align the example at
skills/wp-ai-client/SKILL.md:97-106 with the same rule.

In `@skills/wp-ai-plugin/references/experiments-framework.md`:
- Around line 77-83: Specify the text language on the fenced inventory block
containing the ability names by changing its opening fence to a text fence,
while leaving the list contents unchanged.

In `@skills/wp-plugin-directory-guidelines/references/gpl-compliance.md`:
- Around line 60-70: Add the text language identifier to both fenced code blocks
in gpl-compliance.md, changing each opening fence to ```text while preserving
their contents and surrounding documentation.

In `@skills/wpds/SKILL.md`:
- Around line 34-36: Update the markdown sublist indentation in the referenced
documentation list so each unordered item is indented at least three spaces
beneath its ordered-list parent. Preserve the existing item text and ordering.

---

Outside diff comments:
In `@skills/wp-ai-client/SKILL.md`:
- Line 16: Clarify the migration guidance in SKILL.md by stating that WordPress
7.0 bundles only the standalone wordpress/php-ai-client package. Instruct users
to retain wordpress/wp-ai-client when they need its REST endpoints or JavaScript
API, rather than implying that both Composer packages can be removed.
🪄 Autofix (Beta)

Fix all unresolved CodeRabbit comments on this PR:

  • Push a commit to this branch (recommended)
  • Create a new PR with the fixes

ℹ️ Review info
⚙️ Run configuration

Configuration used: Organization UI

Review profile: ASSERTIVE

Plan: Pro

Run ID: 87145b1b-4296-43cb-94d6-b0569835e9b7

📥 Commits

Reviewing files that changed from the base of the PR and between d962f06 and d7c9aad.

📒 Files selected for processing (77)
  • .github/workflows/upstream-sync.yml
  • .gitignore
  • docs/authoring-guide.md
  • docs/superpowers/plans/2026-07-17-wordpress-skills-release-refresh.md
  • docs/superpowers/specs/2026-07-17-wordpress-skills-release-refresh-design.md
  • docs/upstream-sync.md
  • eval/descriptions/README.md
  • eval/descriptions/wp-abilities-audit/holdout_queries.json
  • eval/descriptions/wp-abilities-audit/train_queries.json
  • eval/descriptions/wp-abilities-audit/validation_queries.json
  • eval/descriptions/wp-abilities-verify/holdout_queries.json
  • eval/descriptions/wp-abilities-verify/train_queries.json
  • eval/descriptions/wp-abilities-verify/validation_queries.json
  • eval/descriptions/wp-playground/holdout_queries.json
  • eval/descriptions/wp-playground/train_queries.json
  • eval/descriptions/wp-playground/validation_queries.json
  • eval/harness/release-conformance.mjs
  • eval/harness/run.mjs
  • eval/harness/skill-quality.mjs
  • eval/playground/ai-plugin-smoke/.gitignore
  • eval/playground/ai-plugin-smoke/README.md
  • eval/playground/ai-plugin-smoke/blueprint.json
  • eval/playground/ai-plugin-smoke/mu-plugins/wpai-skill-smoke.php
  • eval/playground/ai-plugin-smoke/run.sh
  • eval/results/2026-07-17-release-refresh-behavioral.json
  • eval/scenarios/README.md
  • eval/scenarios/abilities-mcp-expose.json
  • eval/scenarios/ai-client-add-feature-endpoint.json
  • eval/scenarios/ai-plugin-expose-read-abilities.json
  • eval/scenarios/ai-plugin-register-experiment.json
  • eval/scenarios/blueprint-v2-environment.json
  • eval/scenarios/interactivity-watch-router-state.json
  • eval/scenarios/playground-cli-3-1-local-debug.json
  • eval/scenarios/plugin-directory-license-review.json
  • eval/scenarios/skillpack-build-and-install.json
  • eval/scenarios/theme-json-7-dimensions.json
  • eval/scenarios/upstream-sync-indices.json
  • eval/scenarios/wpds-without-mcp.json
  • shared/references/ai-plugin-releases.json
  • shared/references/gutenberg-releases.json
  • shared/references/wordpress-core-versions.json
  • shared/references/wp-gutenberg-version-map.json
  • shared/scripts/check-upstream-drift.mjs
  • shared/scripts/scaffold-skill.mjs
  • shared/scripts/update-upstream-indices.mjs
  • shared/scripts/upstream-index-lib.mjs
  • skills/blueprint/SKILL.md
  • skills/blueprint/references/v1-compatibility.md
  • skills/wp-abilities-api/SKILL.md
  • skills/wp-abilities-api/references/client-side.md
  • skills/wp-abilities-api/references/input-schema-gotchas.md
  • skills/wp-abilities-api/references/mcp-exposure.md
  • skills/wp-abilities-audit/SKILL.md
  • skills/wp-abilities-verify/SKILL.md
  • skills/wp-ai-client/SKILL.md
  • skills/wp-ai-client/references/error-handling.md
  • skills/wp-ai-client/references/prompt-builder.md
  • skills/wp-ai-connectors/SKILL.md
  • skills/wp-ai-plugin/SKILL.md
  • skills/wp-ai-plugin/references/dashboard-widgets.md
  • skills/wp-ai-plugin/references/experiments-framework.md
  • skills/wp-ai-plugin/references/guidelines-integration.md
  • skills/wp-ai-plugin/references/hooks-and-filters.md
  • skills/wp-block-development/SKILL.md
  • skills/wp-block-development/references/block-json.md
  • skills/wp-block-development/references/debugging.md
  • skills/wp-block-themes/references/theme-json.md
  • skills/wp-interactivity-api/SKILL.md
  • skills/wp-interactivity-api/references/debugging.md
  • skills/wp-playground/SKILL.md
  • skills/wp-playground/references/blueprints.md
  • skills/wp-playground/references/cli-commands.md
  • skills/wp-playground/references/debugging.md
  • skills/wp-plugin-directory-guidelines/SKILL.md
  • skills/wp-plugin-directory-guidelines/references/gpl-compliance.md
  • skills/wp-plugin-directory-guidelines/references/guideline-review-checklist.md
  • skills/wpds/SKILL.md
📜 Review details
🧰 Additional context used
🪛 LanguageTool
eval/playground/ai-plugin-smoke/README.md

[uncategorized] ~4-~4: The official name of this content management system is spelled with a capital “P”.
Context: ...th the canonical AI plugin (latest from wordpress.org), using WordPress Playground — no s...

(WORDPRESS)

skills/blueprint/references/v1-compatibility.md

[uncategorized] ~168-~168: The official name of this content management system is spelled with a capital “P”.
Context: ...option('key', 'value');" } ``` Require /wordpress/wp-load.php before calling WordPress f...

(WORDPRESS)

docs/upstream-sync.md

[style] ~49-~49: ‘with respect to’ might be wordy. Consider a shorter alternative.
Context: ...ll-name>` The updater is transactional with respect to parsing: it fetches and normalizes all ...

(EN_WORDINESS_PREMIUM_WITH_RESPECT_TO)

docs/superpowers/specs/2026-07-17-wordpress-skills-release-refresh-design.md

[style] ~5-~5: Consider using a different verb for a more formal wording.
Context: ...em releases available on July 17, 2026, correct every issue identified in the release a...

(FIX_RESOLVE)

skills/wp-abilities-api/SKILL.md

[uncategorized] ~87-~87: The official name of this content management system is spelled with a capital “P”.
Context: ...ion, bootstrap, or server code. Install wordpress/mcp-adapter; for multi-plugin dependen...

(WORDPRESS)

skills/wp-plugin-directory-guidelines/references/gpl-compliance.md

[style] ~72-~72: Three successive sentences begin with the same word. Consider rewording the sentence or use a thesaurus to find a synonym.
Context: ...icenses/gpl-2.0.html ``` License URI is optional, recommended for clarity. ## ...

(ENGLISH_WORD_REPEAT_BEGINNING_RULE)

skills/wp-plugin-directory-guidelines/SKILL.md

[style] ~113-~113: Three successive sentences begin with the same word. Consider rewording the sentence or use a thesaurus to find a synonym.
Context: ...icenses/gpl-2.0.html ``` License URI is optional, recommended for clarity. ###...

(ENGLISH_WORD_REPEAT_BEGINNING_RULE)

🪛 markdownlint-cli2 (0.23.0)
skills/wpds/SKILL.md

[warning] 37-37: Ordered list item prefix
Expected: 1; Actual: 3; Style: 1/2/3

(MD029, ol-prefix)


[warning] 42-42: Ordered list item prefix
Expected: 2; Actual: 4; Style: 1/2/3

(MD029, ol-prefix)

skills/wp-plugin-directory-guidelines/references/gpl-compliance.md

[warning] 60-60: Fenced code blocks should have a language specified

(MD040, fenced-code-language)


[warning] 67-67: Fenced code blocks should have a language specified

(MD040, fenced-code-language)

skills/wp-ai-plugin/references/experiments-framework.md

[warning] 77-77: Fenced code blocks should have a language specified

(MD040, fenced-code-language)

🪛 PHPMD (2.15.0)
eval/playground/ai-plugin-smoke/mu-plugins/wpai-skill-smoke.php

[error] 13-49: The class Smoke_Experiment is not named in CamelCase. (undefined)

(CamelCaseClassName)


[error] 14-16: The method get_id is not named in camelCase. (undefined)

(CamelCaseMethodName)


[error] 18-24: The method load_metadata is not named in camelCase. (undefined)

(CamelCaseMethodName)

🪛 Shellcheck (0.11.0)
eval/playground/ai-plugin-smoke/run.sh

[info] 13-28: Expressions don't expand in single quotes, use double quotes for that.

(SC2016)

🪛 SkillSpector (2.3.11)
skills/wp-abilities-verify/SKILL.md

[warning] 56: [RP1] null: npx commands without a version suffix (e.g. @1.0.0) create a rug-pull risk if the upstream server is compromised and publishes a malicious update.

Remediation: Pin the version: npx @scope/server@1.2.3

(MCP Rug Pull (RP1))

🔇 Additional comments (83)
skills/wp-block-development/SKILL.md (1)

58-58: LGTM!

skills/wp-block-development/references/block-json.md (1)

15-17: LGTM!

skills/wp-block-development/references/debugging.md (1)

27-27: LGTM!

skills/wp-block-themes/references/theme-json.md (1)

52-79: LGTM!

skills/wp-interactivity-api/SKILL.md (1)

138-169: LGTM!

skills/wp-interactivity-api/references/debugging.md (1)

30-36: LGTM!

eval/scenarios/plugin-directory-license-review.json (1)

10-21: LGTM!

skills/wp-plugin-directory-guidelines/SKILL.md (1)

59-60: LGTM!

Also applies to: 85-85, 99-114

skills/wp-plugin-directory-guidelines/references/gpl-compliance.md (1)

20-21: LGTM!

Also applies to: 44-44

skills/wp-plugin-directory-guidelines/references/guideline-review-checklist.md (1)

36-47: LGTM!

skills/wpds/SKILL.md (1)

3-4: LGTM!

eval/scenarios/wpds-without-mcp.json (1)

1-19: LGTM!

eval/scenarios/theme-json-7-dimensions.json (1)

1-18: LGTM!

eval/scenarios/skillpack-build-and-install.json (1)

3-3: LGTM!

eval/scenarios/upstream-sync-indices.json (2)

3-3: LGTM!


13-24: LGTM!

skills/wp-abilities-api/SKILL.md (1)

72-73: LGTM!

Also applies to: 82-87

skills/wp-abilities-api/references/client-side.md (1)

15-34: LGTM!

Also applies to: 141-165

skills/wp-abilities-api/references/input-schema-gotchas.md (1)

226-249: LGTM!

skills/wp-abilities-api/references/mcp-exposure.md (1)

5-19: LGTM!

Also applies to: 28-47, 59-67, 94-95

skills/wp-ai-plugin/references/guidelines-integration.md (1)

5-13: LGTM!

skills/wp-ai-plugin/references/hooks-and-filters.md (1)

3-11: LGTM!

Also applies to: 20-21, 48-49, 70-80, 96-96

eval/scenarios/abilities-mcp-expose.json (1)

9-17: LGTM!

Also applies to: 19-27

eval/scenarios/ai-client-add-feature-endpoint.json (1)

15-16: LGTM!

Also applies to: 26-27

eval/scenarios/ai-plugin-expose-read-abilities.json (1)

1-26: LGTM!

eval/scenarios/ai-plugin-register-experiment.json (1)

4-4: LGTM!

Also applies to: 18-19, 32-35

skills/wp-abilities-audit/SKILL.md (1)

3-3: LGTM!

skills/wp-abilities-verify/SKILL.md (1)

3-3: LGTM!

skills/wp-ai-client/references/prompt-builder.md (1)

167-175: LGTM!

skills/wp-ai-connectors/SKILL.md (1)

118-125: LGTM!

skills/wp-ai-plugin/SKILL.md (1)

4-4: LGTM!

Also applies to: 27-39, 151-154, 172-176, 203-213, 240-243

skills/wp-ai-plugin/references/dashboard-widgets.md (1)

3-3: LGTM!

Also applies to: 86-90

skills/wp-ai-plugin/references/experiments-framework.md (1)

3-3: LGTM!

Also applies to: 30-30, 75-76, 85-101

docs/authoring-guide.md (1)

7-9: LGTM!

Also applies to: 29-35, 36-48, 49-53, 69-76

docs/superpowers/plans/2026-07-17-wordpress-skills-release-refresh.md (1)

1-1548: LGTM!

docs/superpowers/specs/2026-07-17-wordpress-skills-release-refresh-design.md (1)

1-173: LGTM!

eval/descriptions/README.md (1)

1-13: LGTM!

eval/descriptions/wp-abilities-audit/holdout_queries.json (1)

1-9: LGTM!

eval/scenarios/README.md (1)

4-6: LGTM!

Also applies to: 7-8, 9-9

shared/references/wp-gutenberg-version-map.json (1)

3-97: LGTM!

.github/workflows/upstream-sync.yml (1)

31-33: LGTM!

Also applies to: 34-36

eval/harness/release-conformance.mjs (1)

1-259: LGTM!

eval/harness/skill-quality.mjs (1)

1-284: LGTM!

eval/descriptions/wp-abilities-audit/train_queries.json (1)

1-14: LGTM!

eval/descriptions/wp-abilities-audit/validation_queries.json (1)

1-10: LGTM!

eval/descriptions/wp-abilities-verify/holdout_queries.json (1)

1-8: LGTM!

eval/descriptions/wp-abilities-verify/train_queries.json (1)

1-14: LGTM!

eval/descriptions/wp-abilities-verify/validation_queries.json (1)

1-10: LGTM!

eval/descriptions/wp-playground/holdout_queries.json (1)

1-8: LGTM!

eval/descriptions/wp-playground/train_queries.json (1)

1-14: LGTM!

eval/harness/run.mjs (2)

4-5: LGTM!

Also applies to: 96-106, 128-133


160-174: 🩺 Stability & Availability

No action needed: spawnSync is already imported.

			> Likely an incorrect or invalid review comment.
shared/scripts/scaffold-skill.mjs (1)

4-5: LGTM!

Also applies to: 14-16, 18-37, 39-87

eval/descriptions/wp-playground/validation_queries.json (1)

1-10: LGTM!

eval/results/2026-07-17-release-refresh-behavioral.json (1)

1-229: LGTM!

docs/upstream-sync.md (2)

29-32: LGTM!


49-50: LGTM!

shared/scripts/update-upstream-indices.mjs (5)

3-8: LGTM!


21-22: LGTM!


41-42: LGTM!


95-104: LGTM!


117-121: LGTM!

shared/scripts/upstream-index-lib.mjs (1)

1-58: LGTM!

shared/references/ai-plugin-releases.json (1)

1-120: LGTM!

shared/references/gutenberg-releases.json (2)

4-39: LGTM!


189-191: LGTM!

shared/references/wordpress-core-versions.json (2)

3-7: LGTM!


28-48: LGTM!

shared/scripts/check-upstream-drift.mjs (1)

1-104: LGTM!

skills/blueprint/SKILL.md (1)

3-66: LGTM!

skills/blueprint/references/v1-compatibility.md (1)

1-252: LGTM!

skills/wp-playground/SKILL.md (1)

3-51: LGTM!

skills/wp-playground/references/blueprints.md (1)

1-21: LGTM!

eval/playground/ai-plugin-smoke/README.md (1)

1-34: LGTM!

eval/playground/ai-plugin-smoke/mu-plugins/wpai-skill-smoke.php (1)

1-57: LGTM!

eval/playground/ai-plugin-smoke/blueprint.json (1)

1-28: 📐 Maintainability & Code Quality | 🔵 Trivial | ⚡ Quick win

Refactor this new Blueprint to use V2.

The updated skills guidance strictly advises using Blueprint V2 for all new Blueprints ("version": 2, declarative plugins, siteOptions, etc.). Since this is a new file introduced in this PR, it should follow the V2 schema rather than the legacy V1 format to lead by example and remain consistent with the new documentation.

♻️ Proposed refactor to V2
 {
   "$schema": "https://playground.wordpress.net/blueprint-schema.json",
-  "preferredVersions": {
-    "php": "8.2",
-    "wp": "latest"
-  },
-  "steps": [
-    {
-      "step": "installPlugin",
-      "pluginData": {
-        "resource": "wordpress.org/plugins",
-        "slug": "ai"
-      }
-    },
-    {
-      "step": "setSiteOptions",
-      "options": {
-        "wpai_features_enabled": "1",
-        "wpai_feature_smoke-experiment_enabled": "1",
-        "wpai_feature_suggest-reply_enabled": "1"
-      }
-    },
+  "version": 2,
+  "wordpressVersion": "latest",
+  "phpVersion": "8.2",
+  "plugins": [
+    "ai"
+  ],
+  "siteOptions": {
+    "wpai_features_enabled": "1",
+    "wpai_feature_smoke-experiment_enabled": "1",
+    "wpai_feature_suggest-reply_enabled": "1"
+  },
+  "additionalStepsAfterExecution": [
     {
       "step": "runPHP",
       "code": "<?php\nrequire '/wordpress/wp-load.php';\nwp_set_current_user( 1 );\n$get = function ( $id ) { return function_exists( 'wp_get_ability' ) ? wp_get_ability( $id ) : null; };\n$smoke = $get( 'smoke/echo' );\n$exec = null;\nif ( $smoke ) { $exec = $smoke->execute( array( 'msg' => 'hi' ) ); if ( is_wp_error( $exec ) ) { $exec = 'WP_Error: ' . $exec->get_error_code(); } }\n$result = array(\n  'wpai_version' => defined( 'WPAI_VERSION' ) ? WPAI_VERSION : null,\n  'abstract_feature' => class_exists( 'WordPress\\AI\\Abstracts\\Abstract_Feature' ),\n  'smoke_ability' => (bool) $smoke,\n  'smoke_exec' => $exec,\n  'read_content' => (bool) $get( 'core/read-content' ),\n  'read_users' => (bool) $get( 'core/read-users' ),\n  'read_settings' => (bool) $get( 'core/read-settings' ),\n  'suggest_reply' => (bool) $get( 'ai/suggest-reply' ),\n);\nfile_put_contents( '/wordpress/wp-content/mu-plugins/result.json', json_encode( $result, JSON_PRETTY_PRINT ) );\necho json_encode( $result );"
     }
   ]
 }
			> Likely an incorrect or invalid review comment.
skills/wp-playground/references/cli-commands.md (1)

1-33: LGTM!

skills/wp-playground/references/debugging.md (1)

1-18: LGTM!

eval/scenarios/blueprint-v2-environment.json (1)

1-20: LGTM!

eval/scenarios/interactivity-watch-router-state.json (1)

1-18: LGTM!

eval/scenarios/playground-cli-3-1-local-debug.json (1)

1-19: LGTM!

.gitignore (1)

10-11: LGTM!

eval/playground/ai-plugin-smoke/.gitignore (1)

1-2: LGTM!

Comment on lines +9 to +11
npx -y @wp-playground/cli@latest run-blueprint \
--blueprint=./blueprint.json \
--mount="$PWD/mu-plugins:/wordpress/wp-content/mu-plugins"

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

📐 Maintainability & Code Quality | 🟡 Minor | ⚡ Quick win

Pin the Playground CLI version for determinism.

The documentation specifically pins the CLI version to 3.1.45 (@wp-playground/cli@3.1.45) to ensure a deterministic environment. Using @latest here risks breaking the smoke test if an incompatible CLI version is released in the future.

🔧 Proposed fix to pin the CLI version
-npx -y `@wp-playground/cli`@latest run-blueprint \
+npx -y `@wp-playground/cli`@3.1.45 run-blueprint \
   --blueprint=./blueprint.json \
   --mount="$PWD/mu-plugins:/wordpress/wp-content/mu-plugins"
📝 Committable suggestion

‼️ IMPORTANT
Carefully review the code before committing. Ensure that it accurately replaces the highlighted code, contains no missing lines, and has no issues with indentation. Thoroughly test & benchmark the code to ensure it meets the requirements.

Suggested change
npx -y @wp-playground/cli@latest run-blueprint \
--blueprint=./blueprint.json \
--mount="$PWD/mu-plugins:/wordpress/wp-content/mu-plugins"
npx -y `@wp-playground/cli`@3.1.45 run-blueprint \
--blueprint=./blueprint.json \
--mount="$PWD/mu-plugins:/wordpress/wp-content/mu-plugins"
🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In `@eval/playground/ai-plugin-smoke/run.sh` around lines 9 - 11, Update the npx
invocation in the run-blueprint command to use the documented pinned
`@wp-playground/cli` version 3.1.45 instead of `@latest`, leaving the remaining
command arguments unchanged.
Comment on lines 14 to 23
if ( is_wp_error( $result ) ) {
// Inspect ->get_error_code(), ->get_error_message(), ->get_error_data()
error_log(
sprintf(
'AI request failed [%s]: %s',
$result->get_error_code(),
$result->get_error_message()
)
);
$upstream_data = $result->get_error_data();
return $result;

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🔒 Security & Privacy | 🟠 Major | ⚡ Quick win

Redact provider-controlled error content before logging.

get_error_message() and especially get_error_data() are not constrained to safe diagnostics. Logging them verbatim can expose echoed prompt content, response bodies, PII, or provider metadata. Restrict the examples to an allowlisted error code/status/request ID, and explicitly state that messages/data require sanitization before logging.

  • skills/wp-ai-client/references/error-handling.md#L14-L23: remove the raw message/data logging pattern from the example.
  • skills/wp-ai-client/references/error-handling.md#L41-L41: replace “log the code, message, and data” with redacted/allowlisted diagnostics.
  • skills/wp-ai-client/SKILL.md#L97-L106: align the main skill example with the sanitized logging rule.
📍 Affects 2 files
  • skills/wp-ai-client/references/error-handling.md#L14-L23 (this comment)
  • skills/wp-ai-client/references/error-handling.md#L41-L41
  • skills/wp-ai-client/SKILL.md#L97-L106
🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In `@skills/wp-ai-client/references/error-handling.md` around lines 14 - 23,
Sanitize provider-controlled error details before logging: in
skills/wp-ai-client/references/error-handling.md:14-23, remove raw
get_error_message() and get_error_data() logging and retain only allowlisted
diagnostics such as error code, status, or request ID; at
skills/wp-ai-client/references/error-handling.md:41, replace guidance to log
code, message, and data with redacted/allowlisted diagnostics and require
sanitization of messages/data; align the example at
skills/wp-ai-client/SKILL.md:97-106 with the same rule.
Comment on lines 77 to 83
```
Abilities_Explorer, Connector_Approval, AI_Request_Logging,
Content_Classification, Content_Resizing, Excerpt_Generation,
Alt_Text_Generation, Meta_Description, Editorial_Notes, Editorial_Updates,
Summarization, Title_Generation, Type_Ahead, Comment_Moderation,
Key_Encryption
Key_Encryption, Suggest_Reply
```

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

📐 Maintainability & Code Quality | 🟡 Minor | ⚡ Quick win

Specify a language for the fenced inventory block.

This triggers markdownlint MD040. Use a text fence for this non-executable list.

Proposed fix
-```
+```text
 Abilities_Explorer, Connector_Approval, AI_Request_Logging,
 Content_Classification, Content_Resizing, Excerpt_Generation,
 Alt_Text_Generation, Meta_Description, Editorial_Notes, Editorial_Updates,
 Summarization, Title_Generation, Type_Ahead, Comment_Moderation,
 Key_Encryption, Suggest_Reply
📝 Committable suggestion

‼️ IMPORTANT
Carefully review the code before committing. Ensure that it accurately replaces the highlighted code, contains no missing lines, and has no issues with indentation. Thoroughly test & benchmark the code to ensure it meets the requirements.

Suggested change
```
Abilities_Explorer, Connector_Approval, AI_Request_Logging,
Content_Classification, Content_Resizing, Excerpt_Generation,
Alt_Text_Generation, Meta_Description, Editorial_Notes, Editorial_Updates,
Summarization, Title_Generation, Type_Ahead, Comment_Moderation,
Key_Encryption
Key_Encryption, Suggest_Reply
```
🧰 Tools
🪛 markdownlint-cli2 (0.23.0)

[warning] 77-77: Fenced code blocks should have a language specified

(MD040, fenced-code-language)

🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In `@skills/wp-ai-plugin/references/experiments-framework.md` around lines 77 -
83, Specify the text language on the fenced inventory block containing the
ability names by changing its opening fence to a text fence, while leaving the
list contents unchanged.

Source: Linters/SAST tools

Comment on lines 60 to 70
```
License: GPL-3.0-or-later
License URI: https://www.gnu.org/licenses/gpl-3.0.html
```

`License URI` is optional, recommended for clarity.

```
License: GPLv2 or later
License URI: https://www.gnu.org/licenses/gpl-2.0.html
```

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

📐 Maintainability & Code Quality | 🔵 Trivial | 💤 Low value

Specify the language for fenced code blocks.

Adding a language identifier (such as text) to the fenced code blocks prevents markdown linter warnings and matches the formatting style used in SKILL.md.

♻️ Proposed fix
-```
+```text
 License: GPL-3.0-or-later
 License URI: https://www.gnu.org/licenses/gpl-3.0.html

License URI is optional, recommended for clarity.

- +text
License: GPLv2 or later
License URI: https://www.gnu.org/licenses/gpl-2.0.html

📝 Committable suggestion

‼️ IMPORTANT
Carefully review the code before committing. Ensure that it accurately replaces the highlighted code, contains no missing lines, and has no issues with indentation. Thoroughly test & benchmark the code to ensure it meets the requirements.

Suggested change
```
License: GPL-3.0-or-later
License URI: https://www.gnu.org/licenses/gpl-3.0.html
```
`License URI` is optional, recommended for clarity.
```
License: GPLv2 or later
License URI: https://www.gnu.org/licenses/gpl-2.0.html
```
🧰 Tools
🪛 markdownlint-cli2 (0.23.0)

[warning] 60-60: Fenced code blocks should have a language specified

(MD040, fenced-code-language)


[warning] 67-67: Fenced code blocks should have a language specified

(MD040, fenced-code-language)

🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In `@skills/wp-plugin-directory-guidelines/references/gpl-compliance.md` around
lines 60 - 70, Add the text language identifier to both fenced code blocks in
gpl-compliance.md, changing each opening fence to ```text while preserving their
contents and surrounding documentation.

Source: Linters/SAST tools

Comment thread skills/wpds/SKILL.md
Comment on lines 34 to 36
- reference site (`wpds://pages`)
- list of available components (`wpds://components`) and specific component information (`wpds://components/:name`)
- list of available tokens (`wpds://design-tokens`)

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

📐 Maintainability & Code Quality | 🔵 Trivial | 💤 Low value

Fix markdown list indentation.

The sublist items are currently indented with 2 spaces. Markdown parsers typically require at least 3 spaces of indentation to nest an unordered list under an ordered list item (such as 2. ). Fixing the indentation prevents the markdown linter from misinterpreting the structure and reporting sequence errors for the subsequent list items.

♻️ Proposed fix
-  - reference site (`wpds://pages`)
-  - list of available components (`wpds://components`) and specific component information (`wpds://components/:name`)
-  - list of available tokens (`wpds://design-tokens`)
+   - reference site (`wpds://pages`)
+   - list of available components (`wpds://components`) and specific component information (`wpds://components/:name`)
+   - list of available tokens (`wpds://design-tokens`)
📝 Committable suggestion

‼️ IMPORTANT
Carefully review the code before committing. Ensure that it accurately replaces the highlighted code, contains no missing lines, and has no issues with indentation. Thoroughly test & benchmark the code to ensure it meets the requirements.

Suggested change
- reference site (`wpds://pages`)
- list of available components (`wpds://components`) and specific component information (`wpds://components/:name`)
- list of available tokens (`wpds://design-tokens`)
- reference site (`wpds://pages`)
- list of available components (`wpds://components`) and specific component information (`wpds://components/:name`)
- list of available tokens (`wpds://design-tokens`)
🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In `@skills/wpds/SKILL.md` around lines 34 - 36, Update the markdown sublist
indentation in the referenced documentation list so each unordered item is
indented at least three spaces beneath its ordered-list parent. Preserve the
existing item text and ordering.

Source: Linters/SAST tools

@chatgpt-codex-connector chatgpt-codex-connector Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

💡 Codex Review

Here are some automated review suggestions for this pull request.

Reviewed commit: d7c9aadefc

ℹ️ About Codex in GitHub

Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review".

If Codex has suggestions, it will comment; otherwise it will react with 👍.

Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".

### 0) Triage and confirm AI plugin context

1. Run project triage if available: `node ../wp-project-triage/scripts/detect_wp_project.mjs` when the `wp-project-triage` skill is installed alongside; otherwise classify the project manually.
1. Run triage: `node skills/wp-project-triage/scripts/detect_wp_project.mjs`

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

P2 Badge Use a portable triage script path

When this skill is installed from a skillpack and run against a user's WordPress repo, the repo will not contain skills/wp-project-triage/scripts/detect_wp_project.mjs (the packaged skills live under the client skill directory, e.g. .codex/skills/.github/skills). This makes the first procedure step fail with a missing module outside this source repository; keep the adjacent-skill path/fallback wording so the agent resolves the bundled triage script rather than a repo-local skills/ tree.

Useful? React with 👍 / 👎.

const core = readJson(repoRoot, "shared/references/wordpress-core-versions.json");
const gutenberg = readJson(repoRoot, "shared/references/gutenberg-releases.json");
const map = readJson(repoRoot, "shared/references/wp-gutenberg-version-map.json");
assert(core.latest === "7.0.2", "WordPress latest must be 7.0.2");

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

P2 Badge Do not pin moving upstream release values

This exact assertion makes every future upstream-index refresh fail CI as soon as WordPress publishes a newer core version (and the same block pins Gutenberg to v23.5.3). I checked the workflow ordering: .github/workflows/upstream-sync.yml updates the JSON indices before opening the PR, and .github/workflows/ci.yml runs this harness, so a normal refresh to 7.0.3/later would be blocked by the conformance test instead of validating the refreshed index shape or skill drift.

Useful? React with 👍 / 👎.

- **Disable Guidelines integration**: `wpai_use_guidelines` (default `true`).
- **Adjust the minimum content threshold** (v1.1.0+): `wpai_min_content_length` (default 250 characters, per feature). Content-dependent Experiments (Summarization, Content Resizing, Content Classification, etc.) are disabled in the editor until the post reaches this character count. The legacy `wpai_summarization_min_content_length` filter was deprecated in 1.1.0 in favor of this one.
- **Claim Image Generation support** (v1.1.0+): `wpai_has_image_generation_support` — lets a third party declare image-generation support when it can't be auto-detected (e.g., a connector authenticating without an API key, such as OAuth).
- **Tune the default request timeout** (v1.2.0+): `wpai_default_request_timeout` — filters the per-request timeout as `( int $default_timeout, string $feature_id )`; the plugin uses it for the image-generation request (`includes/helpers.php`). ⚠️ The 1.2.0 changelog and `readme.txt` call this `wp_ai_client_default_request_timeout`, but that name appears in *no* PHP in the plugin — the applied filter is `wpai_default_request_timeout`. (`wp_ai_client_default_request_timeout` is most likely the core AI Client's own timeout filter; verify against the installed core version before using it.)

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

P2 Badge Recommend the timeout hook that actually fires

When someone follows this 1.2.0 guidance to extend image-generation request timeouts, their callback will never run: the AI plugin release notes and the official hook reference document wp_ai_client_default_request_timeout, not wpai_default_request_timeout. This also gives the wrong signature, so downstream code copied from the skill would silently leave the default timeout unchanged.

Useful? React with 👍 / 👎.

Comment on lines +9 to +13
"step": "installPlugin",
"pluginData": {
"resource": "wordpress.org/plugins",
"slug": "ai"
}

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

P2 Badge Activate the AI plugin in the smoke Blueprint

In this Blueprint, the installPlugin step only installs the WordPress.org plugin unless options.activate is set, but the following runPHP step expects WPAI_VERSION, the AI plugin classes, and its abilities to be loaded. As written, the smoke test will report the AI plugin surface as missing even when the installed plugin is valid; add "options": { "activate": true } or use the activating shorthand before setting the feature options.

Useful? React with 👍 / 👎.


```php
require_once plugin_dir_path( __FILE__ ) . 'vendor/autoloader.php'; // Jetpack Autoloader
require_once plugin_dir_path( __FILE__ ) . 'vendor/autoload_packages.php';

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

P2 Badge Initialize the Composer-loaded MCP adapter

When the adapter is consumed as a Composer dependency, requiring Jetpack Autoloader only makes classes available; it does not create the default server or fire the adapter hooks. A plugin following this bootstrap snippet will never register the MCP REST server until it also imports WP\MCP\Core\McpAdapter and calls McpAdapter::instance(), so the documented MCP exposure path remains non-functional.

Useful? React with 👍 / 👎.

@henryperkins
henryperkins deleted the integration/release-refresh branch July 18, 2026 02:09
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

2 participants