Skip to content

Theme should declare its own scaffold contract so the CLI can personalize it #4

Description

@Schmandarine

When brmbh/cli scaffolds a site from this theme, nothing renames it. The client's theme still calls itself "brmbh Agentic WP Suite" in WP Admin, and the text domain brmbh-agentic-wp-suite stays hardcoded throughout.

The CLI-side fix is tracked at brmbh/cli#1. This issue covers what this repo should provide so the CLI does not have to hardcode knowledge about the theme's internals.

The numbers

brmbh-agentic-wp-suite appears 65 times across 25 files here. They split three ways:

Theme code — must be rewritten on scaffold (20 files):
404.php, footer.php, functions.php, header.php, index.php, page.php, single.php, style.css, package.json, assets/src/scss/style.scss, inc/block-patterns.php, inc/bootstrap-nav-walker.php, inc/cli.php, inc/dependencies.php, inc/footer-menus.php, inc/gutenberg.php, inc/scaffold.php, inc/template-functions.php, my-acf-blocks/loader.php, my-acf-blocks/example-hero/block.json, template-parts/branding/site-logo.php

Skill docs — a judgement call:
AGENTS/create-block.md and skills/wordpress/SKILL.md reference the text domain as the value agents should use when generating new blocks. If they are not rewritten, every block an agent generates after scaffolding reintroduces the starter's text domain. They probably must be rewritten too. (skills/wordpress/SKILL.md is being deleted from this repo per #1, so it stops mattering here.)

Leave alone:
README.md (this repo's own docs — the scaffold should delete it, not rewrite it), tools/env/production.env.example and tools/env/staging.env.example (the string is a deploy path/dir hint — check what it means before touching), package-lock.json (regenerated by npm install anyway).

A blind repo-wide find/replace is therefore wrong.

Proposal: this repo declares its own scaffold contract

Add a brmbh.template.json at the theme root that the CLI reads after copying files:

{
  "textDomain": "brmbh-agentic-wp-suite",
  "rewrite": ["**/*.php", "style.css", "package.json", "assets/src/scss/style.scss", "AGENTS/*.md"],
  "leave":   ["tools/env/*.example", "package-lock.json"],
  "delete":  ["README.md", "CLAUDE.md", "brmbh.template.json"]
}

Why here and not in the CLI: the text domain, the file layout, and which files are the starter's own meta are all facts about this theme. If the CLI hardcodes them, then renaming the text domain, adding a directory, or adding a doc file silently breaks scaffolding for every already-published CLI version — and the CLI cannot be patched retroactively. Declaring it here means the theme can evolve without a CLI release.

Tasks

Acceptance

The CLI can personalize a scaffold using only this manifest, with no theme-specific strings hardcoded on its side.

Related: brmbh/cli#1, brmbh/cli#6

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    enhancementNew feature or request

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions