---
title: WordPress.org overlay
---

`--channel=wporg` adds the files a WordPress.org listing and SVN deploy need. They are not present in an unmodified checkout of this repository.

## What the overlay adds

<!-- wp:docspress/file-tree {"root":"overlays/wporg/","tree":"readme.txt\n.wordpress-org/\n  README.md\n.github/workflows/\n  wordpress-plugin-deploy.yml\n  wordpress-plugin-asset-update.yml","caption":"The CLI copies these paths into the generated plugin."} /-->

## readme.txt

The overlay `readme.txt` is a WordPress.org listing stub: contributors `linchpin_agency`, requires at least 6.9, tested up to 6.9, requires PHP 8.3, stable tag 0.1.0, license GPLv2 or later. The description says to replace it.

`scripts/build.sh` copies `readme.txt` into the zip when that file exists, then strips the `x-release-please-start-version` and `x-release-please-end` marker lines.

The deploy workflow compares the release tag (with a leading `v` removed) to `Stable tag` in the built `readme.txt` and fails if they differ.

## Listing assets

`overlays/wporg/.wordpress-org/README.md` says to add a banner, an icon, and at least one screenshot. The SVN deploy and asset-update workflows copy `.wordpress-org` to `/assets`.

## Deploy workflow

`wordpress-plugin-deploy.yml` runs on `release: published` and on `workflow_dispatch` (tag required; dry-run defaults to true on manual runs).

<!-- wp:docspress/flow {"start":1,"steps":[{"title":"Plugin Check","content":"<p>Calls <code>./.github/workflows/plugin-check.yml</code>, which builds with <code>bash scripts/build.sh</code> and runs Plugin Check against <code>./build/plugin-scaffold</code>.</p>"},{"title":"Build the distributable","content":"<p>Checks out the release tag, installs PHP 8.3 and Node from <code>.nvmrc</code>, and runs <code>bash scripts/build.sh</code> with <code>CI=true</code>.</p>"},{"title":"Compare versions","content":"<p>Tag <code>vX.Y.Z</code> must match <code>Stable tag</code> in <code>build/plugin-scaffold/readme.txt</code>.</p>"},{"title":"SVN deploy","content":"<p>Uses 10up/action-wordpress-plugin-deploy with <code>generate-zip: false</code>, <code>SLUG: plugin-scaffold</code>, <code>BUILD_DIR: build/plugin-scaffold</code>, and <code>ASSETS_DIR: .wordpress-org</code>.</p>"}]} /-->

## Asset-update workflow

`wordpress-plugin-asset-update.yml` runs on pushes to `main` that touch `readme.txt`, `.wordpress-org/**`, or the workflow file, and on `workflow_dispatch`. It strips the release-please version markers from `readme.txt`, then runs 10up/action-wordpress-plugin-asset-update with `SLUG: plugin-scaffold`.

## Secrets the overlay names

<!-- wp:docspress/fields {"title":"Workflow secrets","description":"Secret names from the overlay workflows. Do not commit values.","fields":[{"name":"SVN_USERNAME","type":"string","required":true,"defaultValue":"","description":"WordPress.org SVN username. Used by both deploy and asset-update.","values":"","deprecated":false},{"name":"SVN_PASSWORD","type":"string","required":true,"defaultValue":"","description":"WordPress.org SVN password. Used by both deploy and asset-update.","values":"","deprecated":false}],"searchable":false,"compact":true} /-->

<!-- wp:docspress/callout {"tone":"warning","title":"Template identity is still plugin-scaffold","content":"<p>The overlay workflows hard-code <code>SLUG: plugin-scaffold</code> and the Plugin Check path <code>./build/plugin-scaffold</code>. The scaffold command is what renames identity in a generated plugin.</p>","collapsible":false} /-->
