Skip to content

deploy: make vanilla aem-boilerplate the runtime; remove AuthorKit#224

Open
paolomoz wants to merge 2 commits into
mainfrom
deploy/remove-authorkit-vanilla-default
Open

deploy: make vanilla aem-boilerplate the runtime; remove AuthorKit#224
paolomoz wants to merge 2 commits into
mainfrom
deploy/remove-authorkit-vanilla-default

Conversation

@paolomoz

Copy link
Copy Markdown
Collaborator

Why

stardust:deploy assumed the AuthorKit runtime by default and treated vanilla aem-boilerplate as a "port AuthorKit onto it" branch (a 55-line bootstrap section + bootstrap-authorkit.mjs). Two things the end-to-end interview sessions made clear:

  1. Operators already go vanilla off-script and it works. Multiple sessions deliberately skipped AuthorKit and shipped full sites (one cited 95 pages + fragments; the multi-site test covered 8 sites). The skill's "vanilla path" wasn't vanilla — it converted vanilla into AuthorKit.
  2. AuthorKit is the source of most silent-failure guardrails (no .block class → grids silently stack; footer double-load; postlcp className edit; body.appear blank-render; fragment-<script> inert; late-fragment CLS), and its upstream runtime has drifted off the static-fragment model the skill documents. Maintaining a stale runtime contract is the worst option.

This PR makes vanilla the first-class (and only documented) target and demotes AuthorKit to a short legacy appendix. (Assumes no actively-maintained live AuthorKit sites depend on the skill — confirmed out-of-band.)

What changed

deploy/SKILL.md

  • Runtime section replaces the AuthorKit bootstrap: a one-line runtime-detection gate + legacy appendix. Records runtime: aem-boilerplate as state so prototype/migrate/diff key the class contract off a declared field instead of re-guessing (addresses the prototype↔deploy contract-drift the sessions flagged).
  • Sections: .default-content-wrapper (not .default-content/.block-content); main > .section:empty{display:none} to collapse the consumed metadata section; grounds set per-block via block.closest('.section').
  • Fonts: metric-matched fallback @font-face + the standard body.appear paint gate vanilla actually drives — drops body.session/decorateSession; inverts the old feat: add workflow-purge skill and fix launcher eventType bitmask #40 warning.
  • Buttons: vanilla decorateButtons.button/.button-container/.primary/.secondary (drops .btn/.btn-group/ak.js decorateButton).
  • Header/footer: self-contained header/footer blocks — block JS runs, so no inert-<script> trap, no postlcp className edit, no late-fragment CLS. Adds a subfolder multi-tenant note (don't hardcode a root-absolute nav source).
  • Updated the anti-patterns, Local-QA, multi-view SPA, and per-page checklist to match.

Scripts

  • Deleted bootstrap-authorkit.mjs (obsolete).
  • build-harness.mjs now loads /scripts/scripts.js (vanilla boot) instead of /scripts/ak.js.

Other skills

Design choices worth a look

  • Self-contained header/footer blocks chosen as the default (vs the boilerplate fragment-content header that loadFragment('/nav')); the fragment-content path is documented as the opt-in for when nav must be DA-authorable.
  • Fonts simplified to no JS-driven font class (metric-match + font-display: swap does the CLS work); the boilerplate body.appear display gate is kept as-is.

Risk / not done here

  • No actively-maintained AuthorKit site is assumed; the legacy recipe survives only as history in IMPROVEMENTS.md.
  • Capability parity (lang switcher, header search, multilingual chrome) is described for vanilla but not shipped as reusable blocks in this PR — worth a follow-up if chrome-heavy migrations regress.

🤖 Generated with Claude Code

stardust:deploy assumed the AuthorKit runtime by default and treated
vanilla aem-boilerplate as a "port AuthorKit onto it" branch. Across the
end-to-end interview sessions, operators repeatedly chose vanilla and
shipped full sites off-script, while AuthorKit was the source of most of
the silent-failure guardrails (no .block class, footer double-load,
postlcp className edit, body.appear blank-render, fragment-<script> inert,
late-fragment CLS) and its upstream runtime has drifted away from the
static-fragment model the skill documents.

Make vanilla the first-class (and only documented) target:

- Runtime section: replace the 55-line "bootstrap AuthorKit onto vanilla"
  recipe with a one-line runtime-detection gate + a short legacy appendix.
  Record `runtime: aem-boilerplate` as state so prototype/migrate/diff key
  the class contract off a declared field instead of re-guessing.
- Sections: `.default-content-wrapper` (not `.default-content`/`.block-content`);
  add `main > .section:empty{display:none}` to collapse the consumed metadata
  section; grounds set per-block via block.closest('.section').
- Fonts: metric-matched fallback @font-face + the standard body.appear paint
  gate vanilla actually drives (drops body.session/decorateSession; inverts #40).
- Buttons: vanilla decorateButtons → .button/.button-container/.primary/.secondary
  (drops .btn/.btn-group/ak.js decorateButton).
- Header/footer: self-contained header/footer blocks (JS runs → no inert-<script>
  trap, no postlcp className edit, no late-fragment CLS); subfolder multi-tenant note.
- Delete bootstrap-authorkit.mjs; point build-harness.mjs at scripts.js (not ak.js).
- Mark AuthorKit findings in IMPROVEMENTS.md as legacy (#4/#21/#26/#40/#81/#84);
  supersede #84. Update diff BLANK_RENDER hint and rollout multilingual chrome routing.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
@github-actions

github-actions Bot commented Jun 28, 2026

Copy link
Copy Markdown

Tessl Skill Lint

⚠️ stardust — 1 warning(s)
⚠ tile.json is deprecated. Migrate to .tessl-plugin/plugin.json to publish a plugin-shape package. Run `tessl plugin migrate` to convert automatically. tile.json support will be removed in a future release.

✔ Plugin adobe/stardust@0.13.1 is valid

✅ All 1 tile(s) lint passed with 1 warning(s) total.

Updated by tessl-lint for commit 10d85ea.

Forces the plugin cache to re-copy from source on update/reinstall so the
AuthorKit-removal changes actually land in installed projects (the cache is
keyed by version; 0.13.1 would otherwise be treated as already-current).

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant