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.
That stamped out a complete, activation-ready plugin — PascalCase namespace from the name, READTIME_ constants, readtime_ option keys, text domain set to the slug:
- You land on Reading Time in the admin menu — that screen is generated, not written.
- Change a setting and save. The engine round-trips it through one serialized option row with typed defaults and a sanitized write, nonce-protected.
- The Get Pro button is the freemium switch.
Freemium::is_pro()flips true once a Pro add-on answers thereadtime_is_profilter; nothing in the free plugin is locked behind it. - 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:
- includes/Engine/Freemium.php:24 — your sales page URL
- includes/Settings_Page.php:57 — what your Pro add-on adds
- reading-time.php:4 — the one-line description
- reading-time.php:8 — author
- readme.txt:2, :3, :11, :15, :18, :19, :22 — contributors, tags, short description, the description, feature bullets, Pro line
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.