From f6dd00f4b423e1c982a273678c721db28adf9d06 Mon Sep 17 00:00:00 2001 From: Atila Fassina Date: Mon, 8 Jun 2026 18:09:30 +0200 Subject: [PATCH] feat(shared): add scaffolding rule to treat init output as starter code MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Add a `must` rule to TEMPLATE_SCAFFOLDING.rules in the canonical manifest schema, instructing scaffolding agents to treat `databricks apps init` output as starter code rather than requirements — adapting or replacing it to match the requested app behavior. Updates the validate-manifest pinning test and regenerates template/appkit.plugins.json via `pnpm sync:template`. Co-authored-by: Isaac Signed-off-by: Atila Fassina --- .../src/cli/commands/plugin/validate/validate-manifest.test.ts | 1 + packages/shared/src/schemas/manifest.ts | 1 + template/appkit.plugins.json | 1 + 3 files changed, 3 insertions(+) diff --git a/packages/shared/src/cli/commands/plugin/validate/validate-manifest.test.ts b/packages/shared/src/cli/commands/plugin/validate/validate-manifest.test.ts index 9a319bde..70490747 100644 --- a/packages/shared/src/cli/commands/plugin/validate/validate-manifest.test.ts +++ b/packages/shared/src/cli/commands/plugin/validate/validate-manifest.test.ts @@ -967,6 +967,7 @@ describe("validate-manifest", () => { // Pins the canonical content of TEMPLATE_SCAFFOLDING.rules so changes // to the must/should/never strings are explicit and reviewed. expect(TEMPLATE_SCAFFOLDING.rules.must).toEqual([ + "Treat `databricks apps init` output as starter code, not requirements; adapt or replace it to match the requested app", "Keep all secrets and credentials only in app.yaml, databricks.yml, and/or .env", ]); expect(TEMPLATE_SCAFFOLDING.rules.should).toEqual([ diff --git a/packages/shared/src/schemas/manifest.ts b/packages/shared/src/schemas/manifest.ts index e79243a7..58a48c27 100644 --- a/packages/shared/src/schemas/manifest.ts +++ b/packages/shared/src/schemas/manifest.ts @@ -1099,6 +1099,7 @@ export const TEMPLATE_SCAFFOLDING = { }, rules: { must: [ + "Treat `databricks apps init` output as starter code, not requirements; adapt or replace it to match the requested app", "Keep all secrets and credentials only in app.yaml, databricks.yml, and/or .env", ], should: ["ask user when in doubt of resource to use for plugin"], diff --git a/template/appkit.plugins.json b/template/appkit.plugins.json index ea310715..a4aa1c26 100644 --- a/template/appkit.plugins.json +++ b/template/appkit.plugins.json @@ -358,6 +358,7 @@ }, "rules": { "must": [ + "Treat `databricks apps init` output as starter code, not requirements; adapt or replace it to match the requested app", "Keep all secrets and credentials only in app.yaml, databricks.yml, and/or .env" ], "should": [