Skip to content

2026-08-02 — Fire test: KMPNativeBase rendered by the engine

The roadmap's "prueba de fuego": migrate a real template (Sebas1705/KMPNativeBase, 113 files, KMP Android+Desktop+iOS with convention plugins) and render it with the released CLI.

Results

  • First render: paths, packages and rootProject.name renamed correctly; 13 files kept old identity. Three causes:
  • The convention-plugin namespace uses the bare token kmpbase (kmpbase.kmp.library, kmpbase.detekt) — a third identity the manifest had to declare. Template fix: kmpbase → {project_name.flat} (longest-first ordering makes the bare token safe).
  • Desktop storage dirs (.kmpbase/, kmpbase_secure) — same token, same fix.
  • Engine bug found: the slash variant of dotted identities only applied to paths, not content — docs citing dev/template/kmpbase paths kept the old identity. Fixed in planner (slash variant now applies to both), spec updated, regression test added.
  • Second render: zero leftovers across all 114 output files. Plugin IDs, storage dirs and doc paths all renamed.

Takeaways

  • The "template compiles + canonical identity" model works on a real, non-trivial multi-module Gradle project.
  • Writing a template's manifest is mostly identity archaeology: finding every form the canonical identity takes (dotted, bare token, slash form, storage dirs). The dry-run + leftover-grep loop finds them fast.
  • KMPNativeBase's template.yml (3 identity entries, 2 variables) lives in the local migration workspace, ready to be committed to the template repo.