YayCheckout Pro - WooCommerce Checkout Builder
WooCommerce Checkout Builder
Install
This is the repository archive. It installs, but the folder name will carry the branch suffix and updates will not flow.
Install straight from GitHub with WP-CLI:
wp plugin install https://github.com/yaycommerce/yaycheckout/archive/refs/heads/main.zipYayCheckout: WooCommerce Checkout Builder
A checkout builder for WooCommerce: merchants build checkout layouts from blocks, assign them to shoppers, and style them, and the storefront renders the active layout in place of WooCommerce's checkout form. One repository ships a Pro build from dev/edd and a Free build from dev/lite (how they split).
Requirements
- A WordPress site with WooCommerce active. The minimum WordPress, WooCommerce and PHP versions are in the plugin header of
yaycheckout.php. - PHP 8.2 or later for the dev tooling. The product itself must run on PHP 7.4.
- Composer 2.
- Node 22, with pnpm through Corepack.
package.jsonpins the pnpm version. - A GitHub account with read access to the private admin-shell repository. Composer clones it from GitHub.
- WP-CLI, for
pnpm makepot. jq, which the Claude Code guard hook needs.- Claude Code 2.1.283 or later.
Onboarding
-
Clone into the site's plugins directory:
cd <site>/wp-content/plugins git clone https://github.com/YayCommerce/YayCheckout.git yaycheckout cd yaycheckout -
Switch to Node 22 and enable pnpm:
nvm use corepack enable -
Run the dev script, then install from a second terminal:
./scripts/run.sh dev pnpm installOn a fresh clone,
pnpm installfails until the dev script has createdvendor-prefixed/(known issue). The dev script ends by starting Vite on port 3040 and a blocks watcher, which keep running. Rungit statusonce it has started: the dev script can rewritecomposer.jsonandscoper.inc.php. -
Activate the plugin in wp-admin.
YAYCHECKOUT_IS_DEVELOPMENTdefaults totrue, so wp-admin loads the SPA from the dev server: keep./scripts/run.sh devrunning while you work in the admin. To load a built bundle instead, define the constant asfalseinwp-config.phpand run./scripts/run.sh build(known issue). -
Run the lint and test commands in CLAUDE.md § Commands. The admin lint fails today on
dev/edd, andcomposer testneeds a test database; docs/known-issues.md gives the output to expect and the setup. Your result should match it. -
Start Claude Code in the repo with
claude, and accept the trust dialog. Until you do, Claude ignores the command allowlist in.claude/settings.json. Then:CLAUDE.mdloads at the start of every session;- a rule in
.claude/rules/loads when Claude reads a file itspathsmatch; - the skills in
.claude/skills/show up in the skill list, and each loads when you call it or your request matches its description; - the guard hook in
.claude/hooks/stops Claude's file tools from editing generated directories.
Daily workflow
The git rules are in CLAUDE.md § Git: branch names, Conventional Commits, PR-only into dev/edd, and what an agent may never do. The parts only people do:
- Review. Every PR into
dev/eddneeds one approval from a teammate other than its author, then it is squash-merged. - Promotion.
dev/eddreachesmainby a PR with a merge commit, before a release. - Releases. Build Pro from
dev/eddand Free fromdev/lite, after mergingdev/eddintodev/lite. The release commands are in CLAUDE.md § Commands. What the release builds and checks is in docs/architecture.md § Build and release, and the rules for changing it are in .claude/rules/release.md. Release notes go inreadme.txt.
Agent tooling
The team's skills cover a change from idea to PR. Each one is called by name, and its SKILL.md holds the details:
| Skill | Run it when | It writes |
|---|---|---|
/yaybrainstorming |
you want to design a feature, a behaviour change, a refactor or an integration before planning it | a design doc in docs/specs/ |
/yayplan |
you have an accepted design doc, or a request you want planned without one | a plan in docs/plans/ |
/yaytidy |
before you open a PR | a report of duplicated facts and code, and the fixes you pick |
/yayplancheck |
after each phase of a plan, and before merging | a PASS or FAIL review against the plan, from a fresh subagent |
/yaybacklog |
you want to see what reviews left open, check whether an item is done, or record a finding you won't fix in this PR | ticked boxes and new items in docs/backlog/, and removes the items that are done |
/build-checkout-template |
you build one template of the HTML checkout-templates mock as a layout template | templates/layouts/<slug>/markup.php and design.json, committed on a branch |
A typical change runs /yaybrainstorming, then /yayplan, then you implement it, running /yayplancheck after each phase. Before the final review, /yayplancheck asks whether to run /yaytidy first. A change may also skip the design and go straight to /yayplan. A review finding you don't fix in the PR goes to the backlog with /yaybacklog add, and the PR that fixes it later ticks its boxes with /yaybacklog check.
Status lifecycle. A spec or plan is deleted once its work ships; git history keeps it. An agent acts only on a spec whose Status is accepted or a plan whose Status is active. The Status words and when each one is set belong to the templates: the design template for specs, and the plan template for plans.
Decision records. Write one when a change makes or reverses a choice that is costly to undo and that the code can't justify by itself. The decision-record practice gives the examples, the file name and the four headings. The record lands in the PR that makes the change.
Keeping the harness current
Owner map. Each topic has one home. Other files only link to it.
| Topic | Home |
|---|---|
| Daily commands, hard rules, git rules | CLAUDE.md |
| PHP, admin SPA, blocks and release-tooling rules | .claude/rules/ |
| How the pieces fit | docs/architecture.md |
| Conventions the code can't show | docs/conventions.md |
| Gotchas and checks that fail today | docs/known-issues.md |
| Follow-ups that reviews left open | docs/backlog/ |
| Why X, not Y | docs/decisions/ |
| Spec and plan formats and their Status words | the yaybrainstorming and yayplan skills |
| Reviewing work against its plan | the yayplancheck skill |
| The backlog item format, and checking items against the code | the yaybacklog skill |
| Duplicated facts before a PR, and the stacked-branch PR base | the yaytidy skill |
| Turning a template of the HTML mock into a layout template, and the pitfalls templates 01–03 taught | the build-checkout-template skill |
| Onboarding, review, promotion and release practice, agent tooling, harness upkeep | this README |
Update-when triggers. Every harness file opens with a Purpose line and an Update when line: in an HTML comment in CLAUDE.md, this README and the rules, in the first lines of each doc, decision record and backlog item, and in YAML comments in each skill's frontmatter. When your change matches a file's trigger, update that file in the same PR.
Personal overrides. These are gitignored, and the harness must work without them:
.claude/settings.local.json: your own permissions and settings on top of.claude/settings.json;CLAUDE.local.md: your own instructions on top ofCLAUDE.md. It may drop the commit and PR trailers thatCLAUDE.mdasks for.
Shared skills. The YayCommerce plugins share the five skills, and their canonical copy lives in YayCommerce/YayLoyalty. This repo copies each skill's directory whole and never edits it: a fix lands in YayLoyalty first, then the directory here is replaced. See the harness record.
Mechanical checks. Run ./scripts/check-harness.sh before merging a PR that changes a harness file. It checks paths, links, headers, rule globs, skill names, decision records and backlog items, prints one line per finding, and exits 1 if there is any. It fails on dev/edd today (known issue); your change must not add a finding.
Prompt audit. Run /doctor prompt-audit in Claude Code after upgrading Claude Code and before merging a PR that changes CLAUDE.md, a rule or a skill. Every finding gets a fix, or a reason to keep the text.
License
GPLv2 or later. See the plugin header in yaycheckout.php.