Live demo

One command, and this is what came out

The boilerplate is a scaffolder. So the demo is the thing it scaffolds: the command below was run once, nothing was hand-edited afterwards, and the plugin it produced is what boots in the Playground button.

# the whole of it ./new-plugin.sh "Reading Time" readtime reading-time ../reading-time

That stamped out a complete, activation-ready plugin — PascalCase namespace from the name, READTIME_ constants, readtime_ option keys, text domain set to the slug:

reading-time/ ├── reading-time.php header, constants, bootstrap ├── readme.txt wp.org format, name filled in ├── uninstall.php removes its option ├── build.sh + .distignore, makes the wp.org zip ├── assets/ │ └── admin.css └── includes/ ├── Plugin.php wiring ├── Feature.php where your feature goes ├── Settings_Page.php working, nonce-protected └── Engine/ ├── Admin.php menu + asset enqueue ├── Freemium.php the free/Pro switch └── Settings.php typed defaults, sanitized writes

First boot takes about half a minute. You land on the generated plugin's own settings screen, already signed in as admin. The password is the WordPress Playground default. The zip it installs is the unedited output of the command above, run through the generated build.sh — so it holds the 14 shipping files and not the development ones, which is what .distignore is for. Download it and read it yourself.

  1. You land on Reading Time in the admin menu — that screen is generated, not written.
  2. Change a setting and save. The engine round-trips it through one serialized option row with typed defaults and a sanitized write, nonce-protected.
  3. The Get Pro button is the freemium switch. Freemium::is_pro() flips true once a Pro add-on answers the readtime_is_pro filter; nothing in the free plugin is locked behind it.
  4. Plugins → Plugin File Editor, or the downloaded zip, to read the generated source.

What it does not write for you

The scaffolder finishes by listing every line only you can write, with its file and line number. This is that list, verbatim, for the run above:

Then you add your feature in includes/Feature.php and run bash build.sh for the zip you submit to WordPress.org. The demo plugin is deliberately left with those placeholders in place, because that is honestly what one command produces — the boilerplate writes the plumbing, not your plugin. Playground is temporary and nothing you change there is saved.