### Quick Start: Coupon Form and Applied List
Source: https://docs.ohmyetch.com/woo/component-families/coupons
Quick start example showing the coupon form and applied coupon list with a remove button slot.
```svelte
{#slot default}
{/slot}
```
--------------------------------
### Serialized Multi-Value Meta authoring setup
Source: https://docs.ohmyetch.com/docs/facets/argument-modes.md
Configuration example for the Serialized Multi-Value Meta mode. Authored option values must match the stored string values, not visible labels.
```text
argument_mode = serialized_meta
serialized_meta_argument.meta_key = mk_meta_types
option values = omv, ff, veg
```
--------------------------------
### Facet Target Configuration Example
Source: https://docs.ohmyetch.com/docs/facets/component-families/facet-target.md
Text-based example illustrating how to configure a Facet Target and a Search Facet with a shared target ID.
```text
Target ID: article-results
Facet Target:
- target = article-results
- loop slot = WP Query loop
- fallback slot = "No posts found."
Search Facet:
- target = article-results
- default query argument = search
```
--------------------------------
### Install Devkit Dependencies
Source: https://docs.ohmyetch.com/docs/oh-my-idetch/localwp-devkit/install-and-prepare.md
Installs the devkit's dependencies using Bun. Run this after extracting the ZIP.
```sh
bun install
```
--------------------------------
### Session start sequence: etch_recall_project_memory, etch_get_status, etch_get_document_tree
Source: https://docs.ohmyetch.com/oh-my-idetch/mcp/daily-workflow
Run these three commands at the start of every session to inherit previous sessions' learning. The comment indicates to record a brief and digest first, then check availability and unsaved changes, then get the current document.
```shell
etch_recall_project_memory → digest + record brief first, always
etch_get_status → availability, unsaved changes
etch_get_document_tree → current document
```
--------------------------------
### Meta Filter: Example Data and Authoring Setup
Source: https://docs.ohmyetch.com/facets/recipes
Shows example post meta data and the corresponding authoring setup for a meta filter. Use meta mode when the filtered value lives in post meta. The meta query E2E suite verifies exact matches, numeric ranges, char values, bool values, LIKE, NOT LIKE, IN, NOT IN, BETWEEN, and NOT BETWEEN.
```text
Meta key: facet_price
Values: 10, 25, 50, 75, 100
```
```text
argument_mode = meta
meta_key = facet_price
meta_compare = BETWEEN
meta_type = numeric
option value = 25,75
```
--------------------------------
### /new-project
Source: https://docs.ohmyetch.com/docs/oh-my-idetch/localwp-devkit/first-project.md
Sends the /new-project command to the agent to start the onboarding workflow.
```text
/new-project
```
--------------------------------
### Unzip package structure and install runtime with bun install
Source: https://docs.ohmyetch.com/oh-my-idetch/mcp/install
Shows the unzipped package layout and the command to install the locked runtime from the package root. Requires Bun 1.3.14 or newer; the ZIP contains no connector code, which is installed locally under its own license terms.
```text
etch-agent/
├── README.md
├── AGENTS.md
├── CHANGELOG.md
├── onboarding.md
├── LICENSE
└── mcp/
├── server.js ← the MCP server your harness launches
├── package.json ← locked runtime manifest
├── bun.lock
└── skills/ ← core and user agent skills
```
```bash
bun install --cwd mcp --frozen-lockfile --no-save
```
--------------------------------
### Serialized Multi-Value Meta Option Setup
Source: https://docs.ohmyetch.com/llms-facets.txt
Example option setup for the serialized multi-value meta filter: a label for human-readable text and a value matching the stored option key.
```text
Option label: Vegetarian
Option value: veg
```
--------------------------------
### Select Facet configuration example
Source: https://docs.ohmyetch.com/facets/component-families/select-facet
Example configuration for the Select Facet: target products, default argument mode, facet_key category_name, single selection mode, and an option with value shoes and label Shoes.
```text
Select Facet:
- target = products
- argument_mode = default
- facet_key = category_name
- selection_mode = single
Option:
- value = shoes
- label = Shoes
```
--------------------------------
### Map Facet Example Configuration (text)
Source: https://docs.ohmyetch.com/docs/facets/component-families/map-facet.md
Example configuration for Map Facet, Facet Target, and Map POI. Uses target ID 'stores', with metadata keys store_lat and store_lng.
```text
Map Facet:
- target = stores
- lat_meta_key = store_lat
- lng_meta_key = store_lng
Facet Target:
- target = stores
- used_with_map = true
Map POI inside loop:
- value = current post ID or slug
- lat = current item store_lat
- lng = current item store_lng
```
--------------------------------
### SearchSelect Facet Example
Source: https://docs.ohmyetch.com/docs/facets/component-families/search-select-facet.md
Example configuration for a SearchSelect facet targeting posts with a placeholder and an option with value and label.
```text
SearchSelect Facet:
- target = posts
- argument_mode = default
- facet_key = name
- placeholder = Search by slug
Option:
- value = beta-bar
- label = Beta Bar Post
```
--------------------------------
### Create project with project:create
Source: https://docs.ohmyetch.com/oh-my-idetch/localwp-devkit/first-project
Creates a new project with the given slug. This is part of the manual setup flow.
```bash
bun run project:create -- my-site
```
--------------------------------
### Start every session with recall commands
Source: https://docs.ohmyetch.com/docs/oh-my-idetch/mcp/daily-workflow.md
Run these three commands at the start of every session to inherit previous session context. The first command recalls the project memory digest and brief, the second checks availability and unsaved changes, and the third retrieves the current document tree.
```text
etch_recall_project_memory → digest + record brief first, always
etch_get_status → availability, unsaved changes
etch_get_document_tree → current document
```
--------------------------------
### Checkbox List Facet example configuration
Source: https://docs.ohmyetch.com/docs/facets/component-families/checkbox-list-facet.md
Example configuration for a Checkbox List Facet with target 'posts', default argument mode, and facet key 'name', along with two options.
```text
Checkbox List Facet:
- target = posts
- argument_mode = default
- facet_key = name
Options:
- beta-bar
- gamma-baz
```
--------------------------------
### Install locked runtime with bun install
Source: https://docs.ohmyetch.com/docs/oh-my-idetch/mcp/install.md
Installs the locked runtime from the package root. Requires Bun 1.3.14 or newer. Installs the connector, ws, and zod locally inside mcp/node_modules/.
```sh
bun install --cwd mcp --frozen-lockfile --no-save
```
--------------------------------
### Quick Start: OmeWooCheckoutProvider and OmeWooCheckoutForm
Source: https://docs.ohmyetch.com/woo/component-families/checkout-shell
Quick start markup for the checkout shell. Wrap the checkout form and its fields in OmeWooCheckoutProvider, then place the form with billing, shipping, payment, terms, notices, and the place order button inside its default slot.
```markup
{#slot default}
{#slot default}
{/slot}
{/slot}
```
--------------------------------
### Purchase draft stepper usage example
Source: https://docs.ohmyetch.com/llms-woo.txt
Example demonstrating how to configure the component with counter-stepper presentation suitable for integration within a ProductProvider for variable products, showcasing typical attribute values for behavior, quantity constraints, and accessibility labels.
```JSX
```jsx
```
```
--------------------------------
### Variable product purchase form with ProductProvider
Source: https://docs.ohmyetch.com/woo/component-families/product-purchase
Quick start example for a variable product purchase form. Uses ProductProvider as the structural container, with ProductImage, ProductMedia, ProductPrice, ProductSku, ProductAvailability, ProductDescription, ProductCartQuantity, and AddToCartForm. Includes attribute selectors, variation reset button, add-to-cart button with counter behavior, and buy-now button. Use {item.*} instead of {this.*} when inside a product loop.
```html
{#slot default}
{#slot default}
{/slot}
{#slot default}
{#loop this.omewoo.attributes as attribute}
{/loop}
{/slot}
{/slot}
```
--------------------------------
### Install locked runtime with Bun
Source: https://docs.ohmyetch.com/llms-oh-my-idetch.txt
Installs the connector (`@digital-gravy/etch-connector`), `ws`, and `zod` locally inside `mcp/node_modules/`. Requires Bun 1.3.14 or newer.
```sh
bun install --cwd mcp --frozen-lockfile --no-save
```
--------------------------------
### Install PHPStan dependencies
Source: https://docs.ohmyetch.com/docs/oh-my-idetch/localwp-devkit/troubleshooting.md
Run the exact Composer command from the error to install missing PHPStan binary.
```sh
composer install --working-dir=projects/
```
--------------------------------
### Check and sync project manually
Source: https://docs.ohmyetch.com/oh-my-idetch/localwp-devkit/first-project
Runs the first check and sync for the project. These commands are part of the manual setup flow.
```bash
bun run project:check -- --project my-site
bun run localwp:sync -- --project my-site
```
--------------------------------
### Shipping method selector JSX example
Source: https://docs.ohmyetch.com/docs/woo/component-families/shipping-selector.md
Quick start example for the OmeWooShippingMethodSelector component. Use this on the cart page or checkout page to let the customer choose a shipping rate. The ui.mode is set to 'button-radio' with an aria label, and content.show_price is true with a price separator.
```jsx
```
--------------------------------
### Account provider with every endpoint
Source: https://docs.ohmyetch.com/woo/flows/my-account-page
Example of the OmeWooAccountProvider component with slots for auth, dashboard, and orders. Use this as a starting point for composing the account page.
```svelte
{#slot auth}
{/slot}
{#slot dashboard}
{/slot}
{#slot orders}
{/slot}
```
--------------------------------
### Inspect readiness and capabilities
Source: https://docs.ohmyetch.com/docs/oh-my-idetch/localwp-devkit/first-project.md
Inspects project readiness and installed capabilities.
```sh
bun run localwp:doctor -- --project my-site
bun run localwp:capabilities -- --project my-site
```
--------------------------------
### URL State Serialization Examples
Source: https://docs.ohmyetch.com/facets/how-facets-work
Examples of serialized facet state in URLs, where keys are determined by the facet clause type and specific configuration options.
```text
ome[products][category_name]=shoes
ome[products][meta_value:price]=50
ome[products][tax_query:facet_color]=red
ome[products][acf_relationship:facet_related_posts]=123
ome[products][geo_bbox]=40.5,-74.3,40.9,-73.7
```
--------------------------------
### Mapped Bundle Option Example
Source: https://docs.ohmyetch.com/facets/recipes
Example option for a mapped bundle facet that applies several query clauses. The label is 'News + High priority' with category and priority mappings.
```plaintext
Label: News + High priority
category mapping: category_name = facets-e2e-news
priority mapping: facet_priority = high
```
--------------------------------
### Mapped bundle option example
Source: https://docs.ohmyetch.com/docs/facets/recipes.md
Use mapped bundle when one option applies several query clauses. The example option maps category and priority, and the parent facet defines how those mapping keys expand into query arguments.
```text
Label: News + High priority
category mapping: category_name = facets-e2e-news
priority mapping: facet_priority = high
```
```text
target_multiple_query_arguments = true
query_argument_mappings:
- mapping_key = category, argument_mode = default, facet_key = category_name
- mapping_key = priority, argument_mode = meta, meta_key = facet_priority, meta_compare = =, meta_type = char
```
```text
used_with_multiple_arguments = true
query_value_mappings:
- mapping_key = category, value = facets-e2e-news
- mapping_key = priority, value = high
```
--------------------------------
### Account provider with the core endpoints
Source: https://docs.ohmyetch.com/llms-woo.txt
Example showing how to compose the account provider with slots for authentication, dashboard, and orders endpoints.
```APIDOC
## OmeWooAccountProvider
### Description
Account area shell that owns one slot per account endpoint and switches between them. Slots not composed render nothing for that endpoint.
### Usage
```jsx
{#slot auth}
{/slot}
{#slot dashboard}
{/slot}
{#slot orders}
{/slot}
```
### Slots
- **auth** - Slot for the authentication endpoint (sign in and registration).
- **dashboard** - Slot for the dashboard endpoint.
- **orders** - Slot for the orders endpoint.
### Notes
Slots you do not compose render nothing for that endpoint. Start with the endpoints you need and add the rest later.
```
--------------------------------
### Basic dropdown menu with OmeNavigationMenu
Source: https://docs.ohmyetch.com/ui-components/navigation-menu
Creates a navigation menu with a 'Products' trigger that opens a dropdown containing a link to '/shop'. The trigger is set to open on click and shows an arrow. Use this as a starting point for a simple navigation menu.
```html
{#slot default}
{#slot default}
{#slot default}
{#slot default}Products{/slot}
{#slot default}
Shop all products
{/slot}
{/slot}
{#slot default}
About
{/slot}
{/slot}
{/slot}
```
--------------------------------
### Meta Filter Authoring Setup
Source: https://docs.ohmyetch.com/llms-facets.txt
Authoring setup for the meta filter: sets argument_mode to meta, specifies the meta key, comparison type, and option value range.
```text
argument_mode = meta
meta_key = facet_price
meta_compare = BETWEEN
meta_type = numeric
option value = 25,75
```
--------------------------------
### Multi-Argument Search Configuration
Source: https://docs.ohmyetch.com/docs/facets/component-families/search-facet.md
Example configuration for multi-argument search. When target_multiple_query_arguments is true, the input type becomes query_bundle and the typed value is copied into every row in query_argument_mappings.
```text
target_multiple_query_arguments = true
query_argument_relation = OR
query_argument_mappings:
- native-search -> default search
- priority -> meta facet_priority LIKE char
```
--------------------------------
### Simple product readouts with OmeWooProductProvider
Source: https://docs.ohmyetch.com/docs/woo/component-families/product-purchase.md
JSX example showing how to render price, SKU, availability, and description readouts inside an OmeWooProductProvider. For variable products, attribute selection updates these readouts before the 'ome-woo:variation-selection-changed' event is dispatched.
```jsx
{#slot default}
{/slot}
```
--------------------------------
### WP-CLI via devkit wrapper
Source: https://docs.ohmyetch.com/docs/oh-my-idetch/localwp-devkit/daily-workflow.md
Use WP-CLI through the devkit wrapper to run commands like plugin list and option get home.
```sh
bun run localwp:wp -- --project -- plugin list
```
```sh
bun run localwp:wp -- --project -- option get home
```
--------------------------------
### Purchase Draft Stepper Example
Source: https://docs.ohmyetch.com/woo/component-families/product-purchase
Example of the AddToCartButton configured as a stepper for quantity selection. Use this inside AddToCartForm and ProductProvider for variable products. The stepper updates the purchase draft without sending Store API requests until the Add action is activated.
```html
```
--------------------------------
### Desktop menu with animated and full-width settings
Source: https://docs.ohmyetch.com/docs/ui-components/navigation-menu.md
Desktop menu with animated and full-width settings. The fullWidthTargetSelector is set to ".site-shell". This is the desktop part of the mobile drawer helper example.
```jsx
{#slot default}
{#slot default}
{#slot default}
{#slot default}Services{/slot}
{#slot default}
Design
Development
{/slot}
{/slot}
{/slot}
{/slot}
```
--------------------------------
### Verify after sync with bun run localwp:verify
Source: https://docs.ohmyetch.com/llms-oh-my-idetch.txt
Fast read-only runtime verification checking compiled entity/resource digests, recorded ownership, required active capabilities, and the installed Builder contract without browser E2E. Add --path / for a lightweight frontend availability check when part of the task.
```sh
bun run localwp:verify -- --project
```
```sh
bun run localwp:verify -- --project --path /
```
--------------------------------
### Verify runtime after sync with localwp:verify
Source: https://docs.ohmyetch.com/docs/oh-my-idetch/localwp-devkit/command-reference.md
Runs the fast read-only runtime verification after sync. The first command checks compiled entity/resource digests, recorded ownership, required active capabilities, and the installed Builder contract without browser E2E. The second adds a lightweight frontend availability check when it is part of the task.
```sh
bun run localwp:verify -- --project my-site
```
```sh
bun run localwp:verify -- --project my-site --path /
```
--------------------------------
### List Local sites and bind project
Source: https://docs.ohmyetch.com/oh-my-idetch/localwp-devkit/troubleshooting
Use localwp:list to see available sites, then bind the project to the exact site name.
```bash
bun run localwp:list
bun run localwp:bind -- --project --site ""
```
--------------------------------
### Billing and shipping address forms
Source: https://docs.ohmyetch.com/llms-woo.txt
Example usage of the OmeWooBillingAddressForm and OmeWooShippingAddressForm components inside the OmeWooCheckoutForm.
```APIDOC
## OmeWooBillingAddressForm / OmeWooShippingAddressForm
### Description
Renders Etch-authored billing and shipping address fields that follow Woo's field schema. The shipping form includes a different-shipping toggle.
### Usage
```jsx
{#slot default}
{/slot}
```
### Shared Field Props
- `content.legend` - Fieldset legend text.
- `content.show_legend` - Renders or hides the legend.
- `{field}.use_woo_defaults` - Uses Woo label, hint text, and validation copy.
- `{field}.label` - Custom label when Woo defaults are disabled.
- Field hint copy - Custom input hint copy when Woo defaults are disabled.
- `{field}.error_message` - Custom local validation copy when Woo defaults are disabled.
- `accessibility.aria_label` - Fieldset accessible label.
- `preview.state` - Builder preview state.
### Shipping Toggle Props (ShippingAddressForm only)
- `shipping_toggle.label` - Visible toggle label.
- `shipping_toggle.use_aria_label` - Uses a separate ARIA label when true.
- `shipping_toggle.aria_label` - Accessible toggle label when enabled.
- `shipping_toggle.preview_checked` - Builder preview checked state.
### Notes
- Billing includes email and phone fields; shipping does not.
- Runtime hides shipping fields until the toggle is checked.
```
--------------------------------
### Run localwp:doctor
Source: https://docs.ohmyetch.com/oh-my-idetch/localwp-devkit/daily-workflow
Checks site readiness.
```bash
bun run localwp:doctor -- --project
```
--------------------------------
### Project directory structure
Source: https://docs.ohmyetch.com/oh-my-idetch/localwp-devkit/first-project
Directory structure of a created project. The template also ships composer.json, composer.lock, phpstan.neon.dist, and phpunit.xml.dist for project-local PHP tooling, plus runnable typed-builder examples under examples/builders/.
```text
projects/my-site/
project.json
AGENTS.project.md
oh-my-idetch.php
src/
cms/
examples/
tests/
tools/
var/
```
--------------------------------
### Single product template uses this
Source: https://docs.ohmyetch.com/docs/woo/data-context-and-dynamic-sources.md
Use `{this.*}` on a single product template. The example shows the same fields as the loop version but with `this` prefix, and includes an add-to-cart form with a counter button.
```text
Product title: {this.title}
Product price: {this.omewoo.price.text}
{#slot default}
{/slot}
```
--------------------------------
### Run localwp:capabilities
Source: https://docs.ohmyetch.com/oh-my-idetch/localwp-devkit/daily-workflow
Inspects runtime capabilities.
```bash
bun run localwp:capabilities -- --project
```
--------------------------------
### Option Facet Mapped Bundle Example
Source: https://docs.ohmyetch.com/facets/argument-modes
Shows the parent mappings and an option's value mappings for the mapped bundle facet. The parent defines query_argument_mappings (category -> default category_name, priority -> meta facet_priority), and the option 'News + High priority' defines its values (category = facets-e2e-news, priority = high). An option is valid only when its value mappings match the parent mapping keys.
```text
Parent mappings:
- category -> default category_name
- priority -> meta facet_priority
Option "News + High priority":
- category = facets-e2e-news
- priority = high
```
--------------------------------
### Quick Start: OmeWooPaymentMethodSelector in OmeWooCheckoutForm
Source: https://docs.ohmyetch.com/woo/component-families/payment-selector
Use this selector inside a checkout form to let the customer choose from supported Woo payment methods. The example sets ui.mode to 'select' with an aria label and shows payment method descriptions.
```html
{#slot default}
{/slot}
```
--------------------------------
### URL state examples for facet target
Source: https://docs.ohmyetch.com/docs/facets/how-facets-work.md
Shows the URL query parameter format for a facet target, covering category, meta value, taxonomy, ACF relationship, and geo bounding box clauses. The exact key depends on the clause type and mode-specific options.
```text
ome[products][category_name]=shoes
ome[products][meta_value:price]=50
ome[products][tax_query:facet_color]=red
ome[products][acf_relationship:facet_related_posts]=123
ome[products][geo_bbox]=40.5,-74.3,40.9,-73.7
```
--------------------------------
### builder:help command
Source: https://docs.ohmyetch.com/docs/oh-my-idetch/localwp-devkit/command-reference.md
Shows what an authoring capability allows. Use the --intent flag to specify the capability ID.
```sh
bun run builder:help -- --intent
```
--------------------------------
### Create project with bun run project:create
Source: https://docs.ohmyetch.com/docs/oh-my-idetch/localwp-devkit/first-project.md
Creates the project with the specified slug.
```sh
bun run project:create -- my-site
```
--------------------------------
### Example selectedAttributesMap JSON
Source: https://docs.ohmyetch.com/docs/woo/woo-dynamic-data-tree.md
Example of the machine-readable selected value map. It uses normalized Store API keys, such as `attribute_pa_color` and `attribute_shoe-size`.
```json
{
"attribute_pa_color": "blue",
"attribute_shoe-size": "large"
}
```
--------------------------------
### Initial project check and sync
Source: https://docs.ohmyetch.com/docs/oh-my-idetch/localwp-devkit/first-project.md
Runs the first check and sync for the project.
```sh
bun run project:check -- --project my-site
bun run localwp:sync -- --project my-site
```
--------------------------------
### Bind project to Local site with localwp:bind
Source: https://docs.ohmyetch.com/oh-my-idetch/localwp-devkit/first-project
Binds the project to a Local site by name. The site must exist in LocalWP.
```bash
bun run localwp:bind -- --project my-site --site "My Site"
```
--------------------------------
### List LocalWP sites with localwp:list
Source: https://docs.ohmyetch.com/oh-my-idetch/localwp-devkit/first-project
Lists available LocalWP sites. Use this to see the site name before binding a project.
```bash
bun run localwp:list
```
--------------------------------
### Meta Filter Example Data
Source: https://docs.ohmyetch.com/llms-facets.txt
Example data for the meta filter: a meta key named facet_price with numeric values 10, 25, 50, 75, and 100.
```text
Meta key: facet_price
Values: 10, 25, 50, 75, 100
```
--------------------------------
### Example stored serialized meta value
Source: https://docs.ohmyetch.com/docs/facets/argument-modes.md
Shows an example of a PHP serialized array stored in a post meta field, as used by the Serialized Multi-Value Meta mode.
```text
a:3:{i:0;s:3:"omv";i:1;s:2:"ff";i:2;s:3:"veg";}
```
--------------------------------
### Serialized Multi-Value Meta Example Data
Source: https://docs.ohmyetch.com/llms-facets.txt
Example stored post meta for a serialized multi-value meta filter: a meta key with a PHP serialized array of option keys.
```text
Meta key: mk_meta_types
Stored value: a:3:{i:0;s:3:"omv";i:1;s:2:"ff";i:2;s:3:"veg";}
Stored option values: omv, ff, veg
```
--------------------------------
### ACF Relationship Filter Authoring Setup
Source: https://docs.ohmyetch.com/facets/recipes
Authoring setup for an ACF relationship filter. The relationship field must be stored on the posts being filtered; the facet does not reverse-resolve a relationship stored only on the related posts.
```plaintext
Filtered posts: Projects
Related posts: People
Relationship field on Projects: project_people
Facet option value: numeric Person post ID
```
--------------------------------
### Output ZIP path for build:zip
Source: https://docs.ohmyetch.com/llms-oh-my-idetch.txt
The ZIP file is written to this path after running build:zip.
```text
projects/my-site/dist/oh-my-idetch-.zip
```
--------------------------------
### Check and sync workflow with bun run
Source: https://docs.ohmyetch.com/docs/oh-my-idetch/localwp-devkit/first-project.md
The workflow creates and binds a project, then checks the initial runtime surface before the first sync.
```sh
bun run localwp:list
bun run project:create --
bun run localwp:bind -- --project --site ""
bun run project:check -- --project
bun run localwp:sync -- --project
bun run localwp:doctor -- --project
bun run localwp:capabilities -- --project
```
--------------------------------
### Project source path
Source: https://docs.ohmyetch.com/oh-my-idetch/localwp-devkit/daily-workflow
Work under this path in the project folder. The synced Local plugin copy is not the source of truth and is replaced by sync.
```text
projects/
```
--------------------------------
### Sync project to Local site with localwp:sync
Source: https://docs.ohmyetch.com/docs/oh-my-idetch/localwp-devkit/command-reference.md
Copies checked runtime plugin files into the bound Local site. Sync output goes to the Local site plugin path.
```sh
bun run localwp:sync -- --project my-site
```
--------------------------------
### Bind a project to a Local site with localwp:bind
Source: https://docs.ohmyetch.com/llms-oh-my-idetch.txt
Binds a project to one Local site. You can bind by site name, site ID, or web root. Binding writes the Local web root and target plugin path into projects/my-site/project.json.
```sh
bun run localwp:bind -- --project my-site --site "My Site"
```
```sh
bun run localwp:bind -- --project my-site --site-id
```
```sh
bun run localwp:bind -- --project my-site --web-root "/Users/me/Local Sites/my-site/app/public"
```
--------------------------------
### Purchase draft stepper JSX example
Source: https://docs.ohmyetch.com/docs/woo/component-families/product-purchase.md
Example of the AddToCartButton in counter mode with stepper presentation and form_submit trigger. Use inside AddToCartForm with a ProductProvider for variable products. The stepper updates a purchase draft without sending Store API requests until Add is activated.
```jsx
```
--------------------------------
### builder:component command
Source: https://docs.ohmyetch.com/docs/oh-my-idetch/localwp-devkit/command-reference.md
Looks up a component contract. Use the --key flag to specify the component key.
```sh
bun run builder:component -- --key
```
--------------------------------
### Project directory structure
Source: https://docs.ohmyetch.com/docs/oh-my-idetch/localwp-devkit/first-project.md
Shows the file and folder layout of the created project directory.
```text
projects/my-site/
project.json
AGENTS.project.md
oh-my-idetch.php
src/
cms/
examples/
tests/
tools/
var/
```
--------------------------------
### LocalWP verification loop commands
Source: https://docs.ohmyetch.com/docs/oh-my-idetch/localwp-devkit/ship-plugin-zip.md
Runs the normal LocalWP verification loop before shipping. The project ZIP command only proves the package can be built from checked source; browser/runtime verification is required for interactive OhMyEtch behavior.
```sh
bun run project:check -- --project
bun run localwp:sync -- --project
bun run localwp:verify -- --project
bun run localwp:doctor -- --project
bun run localwp:capabilities -- --project
```
--------------------------------
### Listen to ome-woo:variation-selection-changed event
Source: https://docs.ohmyetch.com/woo/custom-events
Example of listening to the event and logging the selected variation when the selection phase is resolved.
```TypeScript
document.addEventListener("ome-woo:variation-selection-changed", (event) => {
const detail = (event as CustomEvent).detail;
if (detail.selection.phase === "resolved") {
console.log(detail.selected_variation);
}
});
```
--------------------------------
### Checkout page composition with OmeWooOrderReceivedProvider
Source: https://docs.ohmyetch.com/woo/flows/order-received-page
Example of wrapping the checkout form and order received components within the OmeWooOrderReceivedProvider.
```html
{#slot checkout}
{#slot default}
{/slot}
{/slot}
{#slot received}
{/slot}
```
--------------------------------
### Check site readiness
Source: https://docs.ohmyetch.com/docs/oh-my-idetch/localwp-devkit/daily-workflow.md
Runs the devkit doctor to check site readiness.
```sh
bun run localwp:doctor -- --project
```
--------------------------------
### Check project runtime source with project:check
Source: https://docs.ohmyetch.com/docs/oh-my-idetch/localwp-devkit/command-reference.md
Checks the project runtime source before sync or packaging. Run before every sync after changing 'src/**' or 'cms/**'.
```sh
bun run project:check -- --project my-site
```
--------------------------------
### Bind project to Local site
Source: https://docs.ohmyetch.com/docs/oh-my-idetch/localwp-devkit/first-project.md
Binds the project to a Local site by name.
```sh
bun run localwp:bind -- --project my-site --site "My Site"
```
--------------------------------
### Sync target path
Source: https://docs.ohmyetch.com/docs/oh-my-idetch/localwp-devkit/daily-workflow.md
The runtime plugin surface is written to this path in the bound Local site.
```text
wp-content/plugins/oh-my-idetch
```
--------------------------------
### Extract Devkit Directory
Source: https://docs.ohmyetch.com/docs/oh-my-idetch/localwp-devkit/install-and-prepare.md
The devkit ZIP extracts into a directory named oh-my-idetch-localwp-devkit/. Place it in a durable working directory before installing dependencies.
```text
oh-my-idetch-localwp-devkit/
```
--------------------------------
### OmeWooShippingMethodSelector usage example
Source: https://docs.ohmyetch.com/woo/component-families/shipping-selector
Renders the shipping method selector with button-radio mode and price display. Use on cart or checkout page.
```html
```
--------------------------------
### Cross-Facet Behavior E2E Scenario
Source: https://docs.ohmyetch.com/facets/availability-counts-and-options
Example output from an E2E test showing how searching for 'Foo' affects category availability and counts.
```text
Search "Foo" narrows results to Alpha Foo.
Category "news" remains available with count 1.
Category "guides" becomes unavailable with count 0.
```
--------------------------------
### Basic image gallery with OmeLightbox and OmeLightboxItem
Source: https://docs.ohmyetch.com/ui-components/lightbox
Use this snippet to create a basic image gallery with a trigger image, full image, and caption. When the trigger and full slots contain exactly one each, the runtime automatically enters image mode, enabling PhotoSwipe pinch-to-zoom, swipe gestures, and responsive image sizing.
```svelte
{#slot default}
{#slot trigger}
{/slot}
{#slot full}
{/slot}
{#slot caption}
{/slot}
{/slot}
```
--------------------------------
### Sync to LocalWP
Source: https://docs.ohmyetch.com/oh-my-idetch/localwp-devkit/daily-workflow
Syncs the project runtime plugin surface into the bound Local site after the check passes. Writes to wp-content/plugins/oh-my-idetch, reruns the no-write project check, copies the runtime surface, and applies the compiled site definition. Fails closed on any failure and prints exact applied and unchanged evidence on success. Does not sync project notes, tests, tools, package metadata, agent files, local environment files, or user-owned premium plugins.
```bash
bun run localwp:sync -- --project
```
```text
wp-content/plugins/oh-my-idetch
```
--------------------------------
### Basic Carousel with slides only
Source: https://docs.ohmyetch.com/docs/ui-components/carousel.md
Minimal carousel setup with two slides. The settings prop configures slidesPerView and spaceBetween. The default slot contains OmeCarouselSlide components.
```jsx
{#slot default}
{#slot default}Slide 1{/slot}
{#slot default}Slide 2{/slot}
{/slot}
```
--------------------------------
### TabsTrigger Slot Content Example
Source: https://docs.ohmyetch.com/ui-components/tabs
Use this slot content to render rich trigger content like icons or badges. When the slot is populated, it replaces the fallback label.
```svelte
{#slot default}
⚙ Settings
{/slot}
```
--------------------------------
### builder:explain command
Source: https://docs.ohmyetch.com/docs/oh-my-idetch/localwp-devkit/command-reference.md
Explains a builder diagnostic code. Provide the diagnostic code as an argument.
```sh
bun run builder:explain
```
--------------------------------
### Single product template using this prefix
Source: https://docs.ohmyetch.com/woo/data-context-and-dynamic-sources
Use `{this.*}` on a single product template. The example shows accessing product title, price, and passing product data to `OmeWooAddToCartForm` and `OmeWooAddToCartButton`.
```html
Product title: {this.title}
Product price: {this.omewoo.price.text}
{#slot default}
{/slot}
```
--------------------------------
### ome-woo:checkout-loaded
Source: https://docs.ohmyetch.com/llms-woo.txt
Fires after checkout boot loads and checkout components are bound. The detail payload contains the checkout object.
```APIDOC
## Event: ome-woo:checkout-loaded
### Description
Fires after checkout boot loads and checkout components are bound.
### Dispatch Target
First matching checkout root: `[data-ome-woo-checkout-provider]`, `form[data-ome-woo-checkout-form]`, `[data-ome-woo-checkout-notices]`, or `document.body`.
### Bubbles
Yes.
### When it fires
After checkout boot loads and checkout components are bound.
### Detail Payload
`{ checkout }`
```
--------------------------------
### OmeWooProductProvider scope example
Source: https://docs.ohmyetch.com/docs/woo/data-context-and-dynamic-sources.md
Shows how to wrap an add-to-cart form with `OmeWooProductProvider` on a single product template. The provider stores base product and derived variation state for its nearest descendants.
```etch
{#slot default}
...
{/slot}
```
--------------------------------
### Starter Skill Smoke Recipe Required Slugs (text)
Source: https://docs.ohmyetch.com/docs/woo/flows/template-integration-contract.md
Lists the required starter route slugs and assigned Woo page options that a starter-building skill or generated recipe must explicitly mention before claiming Woo route integration is complete. The smoke should fail if any slug is missing or if cart/checkout pages are not assigned.
```text
Required starter route slugs:
- archive-product
- single-product
- page-cart
- page-checkout
- order-confirmation
Required assigned Woo page options:
- woocommerce_cart_page_id
- woocommerce_checkout_page_id
```
--------------------------------
### Custom separator slot with SVG icon
Source: https://docs.ohmyetch.com/docs/ui-components/breadcrumbs.md
Use the `separator` slot to provide custom markup instead of the plain text separator. The example shows an SVG icon inside the slot.
```jsx
{#slot separator}
{/slot}
```
--------------------------------
### Account provider with the core endpoints
Source: https://docs.ohmyetch.com/woo/component-families/my-account
Compose the account area shell with the core endpoints. Slots you do not compose render nothing for that endpoint, so start with the endpoints you need and add the rest later.
```markup
{#slot auth}
{/slot}
{#slot dashboard}
{/slot}
{#slot orders}
{/slot}
```
--------------------------------
### Synced Local plugin copy is not source
Source: https://docs.ohmyetch.com/oh-my-idetch/localwp-devkit/troubleshooting
The synced plugin copy in the Local site is not the source; changes should be made in projects/.
```text
~/Local Sites//app/public/wp-content/plugins/oh-my-idetch
```
--------------------------------
### Date Range Filter Configuration
Source: https://docs.ohmyetch.com/facets/recipes
Configure a date range facet. The first date is the start date and the second is the end date. Supported columns are post_date, post_modified, post_date_gmt, and post_modified_gmt.
```plaintext
argument_mode = date
column = post_date
option value = 2024-01-01,2024-12-31
```
--------------------------------
### Date Range Filter
Source: https://docs.ohmyetch.com/docs/facets/recipes.md
Configures a facet to filter posts by a date range using the 'date' argument mode. The option value must be a comma-separated pair of start and end dates.
```APIDOC
## Date Range Filter
### Description
Use date mode when authored options represent date ranges. The first date is the start date and the second date is the end date.
### Configuration
- **argument_mode** (string) - Required - Set to `date`.
- **column** (string) - Required - The date column to filter on. Supported values: `post_date`, `post_modified`, `post_date_gmt`, `post_modified_gmt`.
- **option value** (string) - Required - Comma-separated start and end dates, e.g., `2024-01-01,2024-12-31`.
### Example
text
argument_mode = date
column = post_date
option value = 2024-01-01,2024-12-31
```
--------------------------------
### Print runtime capabilities with localwp:capabilities
Source: https://docs.ohmyetch.com/docs/oh-my-idetch/localwp-devkit/command-reference.md
Prints JSON describing active runtime capabilities. Use it before assuming Etch, OhMyEtch, AutomaticCSS, CMS fields, or WooCommerce support exists in the bound Local site.
```sh
bun run localwp:capabilities -- --project my-site
```
--------------------------------
### Build project ZIP with build:zip -- --project
Source: https://docs.ohmyetch.com/docs/oh-my-idetch/localwp-devkit/command-reference.md
Checks and packages the specified project as a production plugin ZIP. The ZIP is written to projects/my-site/dist/oh-my-idetch-.zip.
```sh
bun run build:zip -- --project my-site
```