feat: standardize woo-config-agent for multi-provider support#1141
feat: standardize woo-config-agent for multi-provider support#1141ashleyshaw wants to merge 7 commits into
Conversation
- AGENT.md with unified specification (v2.0.0) - Claude, Copilot, OpenAI provider configs - Store analysis, setup optimization, product configuration - Payment integration and performance optimization guidance Co-Authored-By: Claude Haiku 4.5 <noreply@anthropic.com>
|
✅ Template check passed after update. Thanks for fixing the PR description. |
|
Warning Review limit reached
Next review available in: 44 minutes Enable usage-based reviews in Billing to review now. Otherwise, wait until the next included review is available. How can I continue?After more reviews become available, a review can be triggered using the To avoid repeated limits, reduce automatic review volume by pausing incremental auto-reviews earlier, using label-based review opt-in, excluding WIP or generated PR titles, or requesting reviews manually when the PR is ready. If your team needs uninterrupted high-volume reviews, an organization admin can enable usage-based reviews. How do review limits work?CodeRabbit enforces per-developer PR review limits for each organization. Most developers receive the normal plan review availability. For paid Pro and Pro+ PR reviews, CodeRabbit uses adaptive limits for sustained high-volume activity. When a developer's recent PR review activity reaches the 95th percentile or higher among CodeRabbit users, additional reviews become available more gradually as earlier reviews age out of the rolling window. Please refer docs for additional details. Review details⚙️ Run configurationConfiguration used: Repository YAML (base), Organization UI (inherited) Review profile: CHILL Plan: Pro Run ID: 📒 Files selected for processing (9)
📝 WalkthroughWalkthroughAdds a new WooCommerce Config Agent with shared metadata and prompts, plus Claude, Copilot, and OpenAI-specific documentation, skills, and tool definitions. ChangesWooCommerce Config Agent
Estimated code review effort: 2 (Simple) | ~10 minutes Possibly related issues
Suggested labels: 🚥 Pre-merge checks | ✅ 5✅ Passed checks (5 passed)
✨ Finishing Touches🧪 Generate unit tests (beta)
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. Comment |
There was a problem hiding this comment.
💡 Codex Review
Here are some automated review suggestions for this pull request.
Reviewed commit: abbf32461c
ℹ️ 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".
| providers: | ||
| - claude | ||
| - copilot | ||
| - openai |
There was a problem hiding this comment.
Add provider plugin manifests before marking support active
The agent declares all three providers active, but a repository-wide search found no WooCommerce plugin under plugins/ and no entry in plugins/PLUGIN_MANIFEST.json. Because provider discovery is performed through the registered plugin manifests, none of these configurations is installable through the repository's normal Claude, Copilot, or OpenAI paths; add and register the lightspeed-ecommerce-* plugin with its provider manifests.
Useful? React with 👍 / 👎.
| @@ -0,0 +1,19 @@ | |||
| [ | |||
There was a problem hiding this comment.
Use the canonical provider configuration shape
When this file is validated or loaded through schema/provider-config.schema.json, the top-level array is rejected because the contract requires an object containing provider and tools; openai/tools.json has the same defect and should use the corresponding provider/functions object. As written, both provider configurations are syntactically valid JSON but cannot be consumed by the standard multi-provider tooling.
Useful? React with 👍 / 👎.
| - id: store-analysis | ||
| - id: setup-optimization | ||
| - id: product-configuration | ||
| - id: payment-integration | ||
| - id: performance-optimization |
There was a problem hiding this comment.
Reference Copilot skills that actually exist
In the Copilot deployment, all five IDs resolve to nothing: a repository-wide search of agents/woo-config-agent/skills/ found no matching skill files or definitions. Copilot therefore advertises commands backed by unavailable skills; map these entries to the exported WooCommerce skill packages and include their valid references, or add the missing skill packages.
Useful? React with 👍 / 👎.
| - Analyze and optimize WooCommerce store configuration | ||
| - Configure products, pricing, and inventory | ||
| - Integrate payment gateways and payment processing | ||
| - Optimize for performance and conversions | ||
| - Setup customer management and support systems |
There was a problem hiding this comment.
Restore approval and production-safety guardrails
When connected to a real store, these instructions permit payment, pricing, inventory, and customer-system changes without preserving the exported agent's read-first/confirm-before-write workflow, staging-first requirement, or rules for credentials and customer/payment data. Because every provider inherits this shared prompt, add explicit approval gates, staging defaults, least-privilege handling, and prohibitions on exposing secrets before authorising these state-changing responsibilities.
AGENTS.md reference: AGENTS.md:L21-L21
Useful? React with 👍 / 👎.
Resolves .remember/now.md merge conflict and regenerates package-lock.json so npm ci passes (typescript 7.0.2->5.9.3, parser 8.64.0->8.65.0). Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
⏱️ Aging and SLA annotation
Maintained by project-meta-sync workflow. |
Metadata governance
|
There was a problem hiding this comment.
Actionable comments posted: 6
🤖 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 `@agents/woo-config-agent/AGENT.md`:
- Around line 5-8: Apply UK-English spelling consistently across all listed
agent surfaces: in agents/woo-config-agent/AGENT.md lines 5-8 and 49-70, update
the specified terminology; in shared/core-prompt.md lines 3-19, claude/agent.md
lines 7-19, and claude/tools.json lines 3-18, replace the specified US spellings
and verb usage; in copilot/agent.md line 5, expose /analyse and /optimise while
retaining US spellings only as compatibility aliases if required.
- Around line 24-29: Use one canonical identity for the five tools across all
provider definitions: agents/woo-config-agent/AGENT.md lines 24-29,
agents/woo-config-agent/openai/agent.md line 5, and
agents/woo-config-agent/openai/tools.json lines 2-6 must either use the same
canonical IDs or explicitly document mappings between the shared names and
provider-specific function names, so tool discovery resolves each function
consistently.
In `@agents/woo-config-agent/claude/agent.md`:
- Around line 13-19: Complete the Claude provider contract across both sites: in
agents/woo-config-agent/claude/agent.md lines 13-19, document the expected
Claude JSON response shape and error/failure behavior; in
agents/woo-config-agent/claude/tools.json lines 1-19, convert every tool to the
provider’s valid manifest format and add typed input_schema definitions
containing all required inputs for each tool.
In `@agents/woo-config-agent/openai/tools.json`:
- Around line 1-7: Expand each function declaration—create_store_analysis,
optimize_setup, configure_products, setup_payments, and analyze_performance—with
a clear description and a typed parameters schema. Define the required inputs
for store URLs, product settings, and payment configuration, including
appropriate property types, required arrays, and validation constraints so
OpenAI can reliably construct valid calls.
In `@agents/woo-config-agent/shared/core-prompt.md`:
- Around line 5-19: Add explicit shipping, tax compliance, and analytics
responsibilities to the shared WooCommerce workflow in the Core Responsibilities
section, and add corresponding checks to Best Practices. Preserve the existing
payment gateway, inventory, security, and performance coverage so the shared
prompt reflects the full advertised configuration scope.
- Around line 13-19: Replace the slogan-style safety items in
agents/woo-config-agent/shared/core-prompt.md (lines 13-19) with a reusable
explicit safety policy covering sensitive-data minimization, secret handling,
authorization, and refusal or reduction of unsafe data usage. Apply that shared
policy in agents/woo-config-agent/openai/agent.md (lines 3-5), requiring
explicit user approval and a preview before invoking any write-capable or
side-effecting WooCommerce function; keep the guardrails centralized for reuse
rather than duplicating them.
🪄 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: Repository YAML (base), Organization UI (inherited)
Review profile: CHILL
Plan: Pro
Run ID: ed3a96e3-0319-4ff4-a311-472172c3eaac
⛔ Files ignored due to path filters (1)
package-lock.jsonis excluded by!**/package-lock.json
📒 Files selected for processing (8)
agents/woo-config-agent/AGENT.mdagents/woo-config-agent/claude/agent.mdagents/woo-config-agent/claude/tools.jsonagents/woo-config-agent/copilot/agent.mdagents/woo-config-agent/copilot/skills.yamlagents/woo-config-agent/openai/agent.mdagents/woo-config-agent/openai/tools.jsonagents/woo-config-agent/shared/core-prompt.md
📜 Review details
⏰ Context from checks skipped due to timeout. (10)
- GitHub Check: sync-metadata
- GitHub Check: readme-regen
- GitHub Check: Unified Labeling, Status, and Type Assignment
- GitHub Check: Testing
- GitHub Check: lint
- GitHub Check: Linting
- GitHub Check: coderabbit-gate
- GitHub Check: Analyze (javascript-typescript)
- GitHub Check: Analyze (python)
- GitHub Check: Summary
⚠️ CI failures not shown inline (2)
GitHub Actions: changelog-validate / validate: feat: standardize woo-config-agent for multi-provider support
Conclusion: failure
##[group]Run actions/github-script@v7
with:
script: const cp = require("node:child_process");
const author = context.payload.pull_request?.user?.login || "";
const labels = (context.payload.pull_request?.labels || []).map((l) => l.name);
const has = (name) => labels.includes(name);
if (author === "dependabot[bot]" || author === "app/dependabot") {
core.info("Skipping changelog requirement for Dependabot pull requests.");
core.setOutput("run_validation", "false");
return;
}
if (has("meta:needs-changelog") && has("meta:no-changelog")) {
core.setFailed("PR cannot include both meta:needs-changelog and meta:no-changelog.");
return;
}
const restrictedTypes = new Set([
"type:feature",
"type:bug",
"type:performance",
"type:security",
"type:release",
"type:hotfix",
]);
if (has("meta:no-changelog") && labels.some((label) => restrictedTypes.has(label))) {
core.setFailed("meta:no-changelog is not allowed for high-impact release-related change types.");
return;
}
const baseSha = context.payload.pull_request?.base?.sha;
const headSha = context.payload.pull_request?.head?.sha;
const changed = cp
.execSync(`git diff --name-only ${baseSha} ${headSha}`, {
encoding: "utf8",
maxBuffer: 1024 * 1024 * 100,
})
.split("\n")
.filter(Boolean);
if (changed.includes("CHANGELOG.md")) {
core.info("CHANGELOG.md updated in PR diff.");
core.setOutput("run_validation", "true");
return;
}
if (has("meta:no-changelog")) {
core.info("Skipping changelog requirement due to meta:no-changelog label.");
core.setOutput("run_validation", "false");
return;
}
core.setFailed("PR requires a CHANGELOG.md update or the meta:no-changelog label.");
github-***REDACTED***
debug: false
user-agent: actions/github-script
result-encoding: json
retries: 0
retry-exempt-status-codes: 400,401,403,404,422
##[endgroup]
##[error]PR requires a CHANGELOG.md update or the meta:no-changelog label.
GitHub Actions: changelog-validate / 0_validate.txt: feat: standardize woo-config-agent for multi-provider support
Conclusion: failure
##[group]Run actions/github-script@v7
with:
script: const cp = require("node:child_process");
const author = context.payload.pull_request?.user?.login || "";
const labels = (context.payload.pull_request?.labels || []).map((l) => l.name);
const has = (name) => labels.includes(name);
if (author === "dependabot[bot]" || author === "app/dependabot") {
core.info("Skipping changelog requirement for Dependabot pull requests.");
core.setOutput("run_validation", "false");
return;
}
if (has("meta:needs-changelog") && has("meta:no-changelog")) {
core.setFailed("PR cannot include both meta:needs-changelog and meta:no-changelog.");
return;
}
const restrictedTypes = new Set([
"type:feature",
"type:bug",
"type:performance",
"type:security",
"type:release",
"type:hotfix",
]);
if (has("meta:no-changelog") && labels.some((label) => restrictedTypes.has(label))) {
core.setFailed("meta:no-changelog is not allowed for high-impact release-related change types.");
return;
}
const baseSha = context.payload.pull_request?.base?.sha;
const headSha = context.payload.pull_request?.head?.sha;
const changed = cp
.execSync(`git diff --name-only ${baseSha} ${headSha}`, {
encoding: "utf8",
maxBuffer: 1024 * 1024 * 100,
})
.split("\n")
.filter(Boolean);
if (changed.includes("CHANGELOG.md")) {
core.info("CHANGELOG.md updated in PR diff.");
core.setOutput("run_validation", "true");
return;
}
if (has("meta:no-changelog")) {
core.info("Skipping changelog requirement due to meta:no-changelog label.");
core.setOutput("run_validation", "false");
return;
}
core.setFailed("PR requires a CHANGELOG.md update or the meta:no-changelog label.");
github-***REDACTED***
debug: false
user-agent: actions/github-script
result-encoding: json
retries: 0
retry-exempt-status-codes: 400,401,403,404,422
##[endgroup]
##[error]PR requires a CHANGELOG.md update or the meta:no-changelog label.
🧰 Additional context used
📓 Path-based instructions (3)
**/*.{yml,yaml,json}
📄 CodeRabbit inference engine (CLAUDE.md)
Do not use a
referencesfrontmatter field; use inline links or footer sections instead.
Files:
agents/woo-config-agent/copilot/skills.yamlagents/woo-config-agent/openai/tools.jsonagents/woo-config-agent/claude/tools.json
**/*
📄 CodeRabbit inference engine (CLAUDE.md)
**/*: Do not commitnode_modules/,build/, or other generated artefacts.
Do not add WordPress plugin- or theme-specific project code to this.githubcontrol-plane repository.
Do not move existing agents, instructions, or schemas without a migration issue recording the source path, target path, and validation plan.
Do not enqueue editor-only WordPress assets on the front end, or front-end assets in the editor.
**/*: Use UK English in code, documentation, comments and contributor-facing text, prioritising clarity, scalability and maintainability.
Every code change must include lint fixes, relevant tests and a short rationale summarising the change.
Never output secrets; treat production and customer data as sensitive and follow the OWASP Top 10 for web security.
Files:
agents/woo-config-agent/copilot/skills.yamlagents/woo-config-agent/openai/tools.jsonagents/woo-config-agent/claude/tools.jsonagents/woo-config-agent/copilot/agent.mdagents/woo-config-agent/shared/core-prompt.mdagents/woo-config-agent/claude/agent.mdagents/woo-config-agent/openai/agent.mdagents/woo-config-agent/AGENT.md
**/*.{md,mdx}
📄 CodeRabbit inference engine (CLAUDE.md)
Use UK English throughout documentation and Markdown content (for example, “optimise”, “organisation”, “colour”, and “behaviour”).
Files:
agents/woo-config-agent/copilot/agent.mdagents/woo-config-agent/shared/core-prompt.mdagents/woo-config-agent/claude/agent.mdagents/woo-config-agent/openai/agent.mdagents/woo-config-agent/AGENT.md
🧠 Learnings (1)
📓 Common learnings
Learnt from: CR
Repo: lightspeedwp/.github
Timestamp: 2026-07-22T22:55:50.895Z
Learning: WooCommerce guidance should address payment gateways, inventory, shipping, tax compliance, analytics, security, and performance.
🔇 Additional comments (6)
agents/woo-config-agent/AGENT.md (1)
1-4: LGTM!Also applies to: 9-23, 30-43, 72-82
agents/woo-config-agent/shared/core-prompt.md (1)
1-1: LGTM!agents/woo-config-agent/claude/agent.md (1)
1-5: LGTM!agents/woo-config-agent/copilot/agent.md (1)
1-3: LGTM!agents/woo-config-agent/copilot/skills.yaml (1)
1-8: LGTM!agents/woo-config-agent/openai/agent.md (1)
1-2: LGTM!
| description: >- | ||
| Specialized configuration assistant for WooCommerce stores. Provides expert | ||
| guidance on setup, optimization, payment integration, product management, | ||
| and e-commerce best practices. |
There was a problem hiding this comment.
📐 Maintainability & Code Quality | 🟡 Minor | ⚡ Quick win
Apply the UK-English rule consistently across the agent surfaces.
agents/woo-config-agent/AGENT.md#L5-L8: replace “Specialized” and “optimization” with “Specialised” and “optimisation”.agents/woo-config-agent/AGENT.md#L49-L70: replace “Specializes”, “Optimize”, and “organization” with “Specialises”, “Optimise”, and “organisation”.agents/woo-config-agent/shared/core-prompt.md#L3-L19: replace “specializing”, “Optimize”, “Setup” as a verb, “organization”, and “optimization”.agents/woo-config-agent/claude/agent.md#L7-L19: replace “optimization” and “Optimize”.agents/woo-config-agent/copilot/agent.md#L5-L5: expose/analyseand/optimise, retaining US spellings only as compatibility aliases if required.agents/woo-config-agent/claude/tools.json#L3-L18: replace “Analyze”, “Optimize”, and “Setup” as a verb.
As per coding guidelines, use UK English in code, documentation, comments and contributor-facing text.
📍 Affects 5 files
agents/woo-config-agent/AGENT.md#L5-L8(this comment)agents/woo-config-agent/AGENT.md#L49-L70agents/woo-config-agent/shared/core-prompt.md#L3-L19agents/woo-config-agent/claude/agent.md#L7-L19agents/woo-config-agent/copilot/agent.md#L5-L5agents/woo-config-agent/claude/tools.json#L3-L18
🤖 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 `@agents/woo-config-agent/AGENT.md` around lines 5 - 8, Apply UK-English
spelling consistently across all listed agent surfaces: in
agents/woo-config-agent/AGENT.md lines 5-8 and 49-70, update the specified
terminology; in shared/core-prompt.md lines 3-19, claude/agent.md lines 7-19,
and claude/tools.json lines 3-18, replace the specified US spellings and verb
usage; in copilot/agent.md line 5, expose /analyse and /optimise while retaining
US spellings only as compatibility aliases if required.
Source: Coding guidelines
…dator
Replace stub provider configs with substantial content (1,046 lines):
- shared/core-prompt.md: 7-phase WooCommerce methodology
- claude/{agent.md,tools.json}: 8 tools with full input schemas
- copilot/{agent.md,skills.yaml}: 7 skills with GitHub integration
- openai/{agent.md,tools.json}: 8 functions with parameter schemas
Also documents the 50-option / 50-field limits in docs/ISSUE_FIELDS.md so
the pre-existing validate:issue-fields check passes on develop.
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Satisfies changelog-validate (type:feature requires a CHANGELOG.md entry; meta:no-changelog is disallowed for restricted types). Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
🔍 Reviewer Summary for PR #1141CI Status: ❌ Recommendations
|
…check Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Standardizes the WooCommerce Config Agent using the Phase 1 multi-provider pattern.
Summary
AGENT.mdunified specification with 12 capabilitiesshared/core-prompt.mdwith payment security and analytics methodologypackage-lock.jsonwithpackage.jsonso CInpm cipassesLinked issues
Closes #1101
Changelog
package-lock.jsonsync so CI install step passesChecklist (Global DoD / PR)
{type}/{scope}-{short-title}naming conventionAGENT.mdspecification present with valid YAML frontmatterclaude/,copilot/,openai/,shared/)README.md, provider matrix)