Skip to content

Add databricks quickstart command - #5464

Merged
simonfaltum merged 5 commits into
mainfrom
simonfaltum/quickstart-command
Jun 9, 2026
Merged

Add databricks quickstart command#5464
simonfaltum merged 5 commits into
mainfrom
simonfaltum/quickstart-command

Conversation

@simonfaltum

Copy link
Copy Markdown
Member

Why

Someone running the Databricks CLI for the first time has no built-in starting point. They have to go find docs, work out auth and profiles, and guess at how to actually build something. databricks quickstart gives them a short, opinionated introduction right in the terminal.

It serves coding agents too: an agent with no Databricks skill loaded can run databricks quickstart to orient itself (auth, profiles, building with Asset Bundles) before attempting work.

Changes

Before: there was no quickstart command.

Now: databricks quickstart prints a short introduction covering authentication, profile selection, building with Databricks Asset Bundles, and where to go next.

  • New cmd/quickstart package, registered in cmd/cmd.go.
  • The text lives in two embedded markdown files: quickstart-human.md (the default) and quickstart-agent.md (denser and agent-oriented; it is also the databricks-quickstart skill, so its YAML frontmatter is stripped before printing).
  • Audience detection: interactive terminals get the human guide, non-interactive callers (coding agents, scripts, CI) get the agent version. It uses cmdio.IsPromptSupported and is deliberately simple for now, leaving room for smarter agent detection later.
  • Output is written to stdout so it can be piped or captured.

Test plan

  • Unit tests for the human/agent selection and frontmatter stripping (cmd/quickstart/quickstart_test.go).
  • Acceptance test for the rendered output (acceptance/quickstart); root-help golden updated to include the new command.
  • ./task fmt-q, ./task lint-q, and ./task checks all clean.
  • Built the binary and ran databricks quickstart non-interactively to confirm the agent version prints with frontmatter stripped.

This pull request and its description were written by Isaac.

Introduce a top-level `databricks quickstart` command that prints a short
introduction to the CLI: authentication, profile selection, building with
Databricks Asset Bundles, and where to go next.
It prints a human-friendly guide by default and a denser, agent-oriented
version when run in a non-interactive terminal (for example, when invoked
by a coding agent). The detection uses cmdio.IsPromptSupported and is
intentionally simple for now, leaving room for smarter agent detection later.
Co-authored-by: Isaac
@eng-dev-ecosystem-bot

eng-dev-ecosystem-bot commented Jun 8, 2026

Copy link
Copy Markdown
Collaborator

Commit: 99473a3

Run: 27211275435

Env🟨​KNOWN🔄​flaky💚​RECOVERED🙈​SKIP✅​pass🙈​skipTime
🟨​aws linux7152619278:40
🟨​aws windows71526392516:01
💚​aws-ucws linux7153578417:25
🔄​aws-ucws windows361535783913:10
💚​azure linux1172649256:59
💚​azure windows11726692311:21
💚​azure-ucws linux1173628377:42
💚​azure-ucws windows11736483512:15
💚​gcp linux1172609287:38
💚​gcp windows11726292611:30
24 interesting tests: 15 SKIP, 7 KNOWN, 2 flaky
Test Nameaws linuxaws windowsaws-ucws linuxaws-ucws windowsazure linuxazure windowsazure-ucws linuxazure-ucws windowsgcp linuxgcp windows
🟨​TestAccept🟨​K🟨​K💚​R🔄​f💚​R💚​R💚​R💚​R💚​R💚​R
🙈​TestAccept/bundle/invariant/no_drift🙈​S🙈​S🙈​S🙈​S🙈​S🙈​S🙈​S🙈​S🙈​S🙈​S
🙈​TestAccept/bundle/resources/permissions🙈​S🙈​S🙈​S🙈​S🙈​S🙈​S🙈​S🙈​S🙈​S🙈​S
🔄​TestAccept/bundle/resources/permissions/dashboards/create✅​p✅​p✅​p🔄​f✅​p✅​p✅​p✅​p🙈​s🙈​s
🔄​TestAccept/bundle/resources/permissions/dashboards/create/DATABRICKS_BUNDLE_ENGINE=terraform✅​p✅​p✅​p🔄​f✅​p✅​p✅​p✅​p
🟨​TestAccept/bundle/resources/permissions/jobs/destroy_without_mgmtperms/with_permissions🟨​K🟨​K💚​R💚​R🙈​S🙈​S🙈​S🙈​S🙈​S🙈​S
🟨​TestAccept/bundle/resources/permissions/jobs/destroy_without_mgmtperms/with_permissions/DATABRICKS_BUNDLE_ENGINE=direct🟨​K🟨​K💚​R💚​R
🟨​TestAccept/bundle/resources/permissions/jobs/destroy_without_mgmtperms/with_permissions/DATABRICKS_BUNDLE_ENGINE=terraform🟨​K🟨​K💚​R💚​R
🟨​TestAccept/bundle/resources/permissions/jobs/destroy_without_mgmtperms/without_permissions🟨​K🟨​K💚​R💚​R🙈​S🙈​S🙈​S🙈​S🙈​S🙈​S
🟨​TestAccept/bundle/resources/permissions/jobs/destroy_without_mgmtperms/without_permissions/DATABRICKS_BUNDLE_ENGINE=direct🟨​K🟨​K💚​R💚​R
🟨​TestAccept/bundle/resources/permissions/jobs/destroy_without_mgmtperms/without_permissions/DATABRICKS_BUNDLE_ENGINE=terraform🟨​K🟨​K💚​R💚​R
🙈​TestAccept/bundle/resources/postgres_branches/basic🙈​S🙈​S🙈​S🙈​S🙈​S🙈​S🙈​S🙈​S🙈​S🙈​S
🙈​TestAccept/bundle/resources/postgres_branches/recreate🙈​S🙈​S🙈​S🙈​S🙈​S🙈​S🙈​S🙈​S🙈​S🙈​S
🙈​TestAccept/bundle/resources/postgres_branches/replace_existing🙈​S🙈​S🙈​S🙈​S🙈​S🙈​S🙈​S🙈​S🙈​S🙈​S
🙈​TestAccept/bundle/resources/postgres_branches/update_protected🙈​S🙈​S🙈​S🙈​S🙈​S🙈​S🙈​S🙈​S🙈​S🙈​S
🙈​TestAccept/bundle/resources/postgres_branches/without_branch_id🙈​S🙈​S🙈​S🙈​S🙈​S🙈​S🙈​S🙈​S🙈​S🙈​S
🙈​TestAccept/bundle/resources/postgres_endpoints/basic🙈​S🙈​S🙈​S🙈​S🙈​S🙈​S🙈​S🙈​S🙈​S🙈​S
🙈​TestAccept/bundle/resources/postgres_endpoints/recreate🙈​S🙈​S🙈​S🙈​S🙈​S🙈​S🙈​S🙈​S🙈​S🙈​S
🙈​TestAccept/bundle/resources/postgres_projects/update_display_name🙈​S🙈​S🙈​S🙈​S🙈​S🙈​S🙈​S🙈​S🙈​S🙈​S
🙈​TestAccept/bundle/resources/synced_database_tables/basic🙈​S🙈​S🙈​S🙈​S🙈​S🙈​S🙈​S🙈​S🙈​S🙈​S
🙈​TestAccept/bundle/resources/vector_search_endpoints/drift/recreated_same_name🙈​S🙈​S🙈​S🙈​S🙈​S🙈​S🙈​S🙈​S🙈​S🙈​S
🙈​TestAccept/bundle/resources/vector_search_indexes/basic🙈​S🙈​S🙈​S🙈​S🙈​S🙈​S🙈​S🙈​S🙈​S🙈​S
🙈​TestAccept/bundle/resources/vector_search_indexes/grants/select🙈​S🙈​S🙈​S🙈​S🙈​S🙈​S🙈​S🙈​S🙈​S🙈​S
🙈​TestAccept/ssh/connection🙈​S🙈​S🙈​S🙈​S🙈​S🙈​S🙈​S🙈​S🙈​S🙈​S
Top 27 slowest tests (at least 2 minutes):
durationenvtestname
6:05azure windowsTestAccept
5:59gcp windowsTestAccept
5:46azure-ucws windowsTestAccept
4:46gcp linuxTestAccept/bundle/resources/apps/inline_config/DATABRICKS_BUNDLE_ENGINE=terraform
4:39gcp windowsTestAccept/bundle/resources/apps/inline_config/DATABRICKS_BUNDLE_ENGINE=terraform
4:33gcp windowsTestAccept/bundle/resources/apps/inline_config/DATABRICKS_BUNDLE_ENGINE=direct
4:20gcp linuxTestAccept/bundle/resources/apps/inline_config/DATABRICKS_BUNDLE_ENGINE=direct
4:07azure windowsTestAccept/bundle/resources/apps/inline_config/DATABRICKS_BUNDLE_ENGINE=terraform
3:25aws windowsTestAccept/bundle/resources/apps/inline_config/DATABRICKS_BUNDLE_ENGINE=terraform
3:18aws linuxTestAccept/bundle/resources/apps/inline_config/DATABRICKS_BUNDLE_ENGINE=terraform
3:16aws windowsTestAccept/bundle/resources/apps/inline_config/DATABRICKS_BUNDLE_ENGINE=direct
3:06azure-ucws linuxTestAccept/bundle/resources/apps/inline_config/DATABRICKS_BUNDLE_ENGINE=direct
3:03aws linuxTestAccept/bundle/resources/apps/inline_config/DATABRICKS_BUNDLE_ENGINE=direct
2:54aws-ucws windowsTestAccept/bundle/resources/apps/inline_config/DATABRICKS_BUNDLE_ENGINE=direct
2:53azure linuxTestAccept
2:50gcp linuxTestAccept
2:49azure-ucws linuxTestAccept
2:46aws-ucws linuxTestAccept
2:46azure-ucws windowsTestAccept/bundle/resources/apps/inline_config/DATABRICKS_BUNDLE_ENGINE=terraform
2:46aws-ucws windowsTestAccept/bundle/resources/apps/inline_config/DATABRICKS_BUNDLE_ENGINE=terraform
2:44aws-ucws linuxTestAccept/bundle/resources/apps/inline_config/DATABRICKS_BUNDLE_ENGINE=terraform
2:43azure windowsTestAccept/bundle/resources/apps/inline_config/DATABRICKS_BUNDLE_ENGINE=direct
2:42azure-ucws windowsTestAccept/bundle/resources/apps/inline_config/DATABRICKS_BUNDLE_ENGINE=direct
2:40azure linuxTestAccept/bundle/resources/apps/inline_config/DATABRICKS_BUNDLE_ENGINE=direct
2:35azure linuxTestAccept/bundle/resources/apps/inline_config/DATABRICKS_BUNDLE_ENGINE=terraform
2:29aws-ucws linuxTestAccept/bundle/resources/apps/inline_config/DATABRICKS_BUNDLE_ENGINE=direct
2:29azure-ucws linuxTestAccept/bundle/resources/apps/inline_config/DATABRICKS_BUNDLE_ENGINE=terraform

On Windows the embedded quickstart markdown was checked out with CRLF, so
stripFrontmatter (which matches an LF fence "---\n") left the skill
frontmatter in the output. That broke the unit test and the acceptance
golden on Windows only. Add a .gitattributes forcing eol=lf for these
go:embed files so the embedded content is identical on every platform,
matching the existing convention in acceptance/ and integration/.
Also switch stripFrontmatter from strings.Index to strings.Cut to fix the
failing modernize lint check.
Co-authored-by: Isaac
Signed-off-by: simonfaltum <simon.faltum@databricks.com>
@simonfaltum
simonfaltum added this pull request to the merge queueJun 9, 2026
Merged via the queue into main with commit 9e7d7d7Jun 9, 2026
23 checks passed
@simonfaltum
simonfaltum deleted the simonfaltum/quickstart-command branch June 9, 2026 15:47
deco-sdk-taggingBot added a commit that referenced this pull request Jun 10, 2026
## Release v1.3.0
### Notable Changes
* The `direct` deployment engine is now Generally Available and the default for new deployments. To opt out, set `engine: terraform` under `bundle` in your `databricks.yml` or set `DATABRICKS_BUNDLE_ENGINE=terraform`. Existing deployments keep their current engine; see https://docs.databricks.com/aws/en/dev-tools/bundles/direct to migrate.
### CLI
* Added the `databricks quickstart` command, a short introduction to the CLI that prints a human-friendly guide interactively and an agent-oriented version when run non-interactively ([#5464](#5464)).
* Add `databricks version --check` to report whether a newer CLI version is available and print the upgrade command for the detected install method ([#5469](#5469)).
* `databricks auth describe` now verifies credentials against both the workspace and account endpoints before reporting a failure, fixing false "Unable to authenticate" errors for account console profiles ([#5479](#5479)).
* `databricks auth login` no longer prompts for workspace selection when logging in to an account console host (`https://accounts.*`). Pass `--workspace-id` explicitly to store a workspace ID on such a profile ([#5504](#5504)).
* `databricks auth profiles --skip-validate` no longer makes any network calls; the host metadata fetch is skipped along with validation ([#5530](#5530)).
### Bundles
* Set the default `data_security_mode` to `DATA_SECURITY_MODE_AUTO` in bundle templates ([#5452](#5452)).
* Mark vector search index index_subtype as backend_default to prevent drift after deployment ([#5454](#5454)).
* `bundle deployment migrate`: handle resources added to or removed from `databricks.yml` since the last Terraform deploy ([#5463](#5463)).
* Add the `genie_spaces` bundle resource for managing Databricks Genie spaces as code, plus `bundle generate genie-space` to import an existing space. Direct deployment engine only ([#5282](#5282)).
* Fix spurious recreate of schemas and volumes whose names use mixed case ([#5531](#5531)).
janniklasrose added a commit that referenced this pull request Jul 3, 2026
Make explicit that raw `(#5464)` refs must be expanded at PR time (`task fmt` /
`task links`, enforced by CI) — the release renders fragments verbatim and does
not expand links, so a raw ref left in a fragment fails CI rather than being
handled later.
Co-authored-by: Isaac
Sign up for freeto 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.

3 participants

@simonfaltum@eng-dev-ecosystem-bot@mihaimitrea-db