Skip to content

Promote aitools skills-management commands to top-level#4917

Open
jamesbroadhead wants to merge 7 commits intomainfrom
jbroadhead/aitools-public
Open

Promote aitools skills-management commands to top-level#4917
jamesbroadhead wants to merge 7 commits intomainfrom
jbroadhead/aitools-public

Conversation

@jamesbroadhead
Copy link
Copy Markdown

@jamesbroadhead jamesbroadhead commented Apr 8, 2026

Summary

  • Promotes the aitools skills-management surface to top-level databricks aitools: install, update, uninstall, list, version
  • Source files for the promoted surface (and the agents/installer libs they depend on) physically move from experimental/aitools/ to a new top-level aitools/ package, so directory layout matches stability tier
  • Keeps the tools subtree under experimental/aitools/ — query, discover-schema, get-default-warehouse, statement — because tools.go still says "There are no stability guarantees for these tools"
  • The hidden skills alias group also stays under experimental/aitools/
  • The old paths under databricks experimental aitools install/update/uninstall/list/version and databricks experimental aitools skills install/list keep working as silent backward-compat aliases — no deprecation warning fires, the commands just forward

The aitools skills-management surface is feature-complete after the 5-PR series (#4810#4814) that added state tracking, lifecycle commands, and project scope support. The tools subtree is functionally useful but its shape is still in flux, so promoting only the stable half.

Command shape after this PR

# Stable, top-level
databricks aitools install      # use --skills <name>[,<name>...] for specific skills
databricks aitools update
databricks aitools uninstall
databricks aitools list
databricks aitools version

# Silent backward-compat aliases (no warning)
databricks experimental aitools install/update/uninstall/list/version
databricks experimental aitools skills {list,install}

# Experimental, unchanged path
databricks experimental aitools tools query
databricks experimental aitools tools discover-schema
databricks experimental aitools tools get-default-warehouse
databricks experimental aitools tools statement {submit,get,status,cancel}

Test plan

  • databricks aitools --help shows install/update/uninstall/list/version (no tools)
  • databricks --help lists aitools in the output
  • databricks experimental aitools install runs without warning and the work happens (silent alias)
  • databricks experimental aitools tools query … runs as before
  • databricks experimental aitools tools --help lists query/discover-schema/get-default-warehouse/statement
  • Existing aitools tests pass plus new alias-forwarding coverage in experimental/aitools/cmd/skills_test.go

This pull request was AI-assisted by Isaac.

@github-actions
Copy link
Copy Markdown

github-actions Bot commented Apr 9, 2026

Approval status: pending

/cmd/apps/ - needs approval

Files: cmd/apps/init.go
Suggested: @arsenyinfo
Also eligible: @MarioCadenas, @pkosiec, @fjakobs, @keugenek, @calvarjorge, @Shridhad, @atilafassina, @igrekun, @pffigueiredo, @ditadi

/experimental/aitools/ - needs approval

4 files changed
Suggested: @arsenyinfo
Also eligible: @MarioCadenas, @pkosiec, @fjakobs, @lennartkats-db, @keugenek, @calvarjorge, @Shridhad, @atilafassina, @igrekun, @pffigueiredo, @ditadi

General files (require maintainer)

36 files changed
Based on git history:

  • @simonfaltum -- recent work in experimental/aitools/cmd/, ./, .github/

Any maintainer (@andrewnester, @anton-107, @denik, @pietern, @shreyas-goenka, @simonfaltum, @renaudhartert-db) can approve all areas.
See OWNERS for ownership rules.

@simonfaltum
Copy link
Copy Markdown
Member

I think we should move the code itself (the files) out of experimental as part of this as well.

jamesbroadhead added a commit that referenced this pull request Apr 28, 2026
Per Simon's review on #4917, the source files should live outside
experimental/ now that aitools is a top-level command. Renames the
directory from experimental/aitools/ to aitools/ and updates all
import paths, examples, and tooling references (Makefile, OWNERS,
testmask, pr-checklist).

The experimental/aitools alias still routes to the same package via
its new import path, so 'databricks experimental aitools' continues
to work as a deprecated entry point.

Co-authored-by: Isaac
@simonfaltum simonfaltum force-pushed the jbroadhead/aitools-public branch from c1b87a6 to 8b230d7 Compare April 30, 2026 08:12
@simonfaltum simonfaltum changed the title Promote aitools from experimental to top-level command Promote aitools skills-management commands to top-level Apr 30, 2026
@arsenyinfo
Copy link
Copy Markdown
Contributor

No findings.


🔍 Reviewed by nitpicker

Move install/update/uninstall/list/version source files (and the agents/installer
libs they depend on) from experimental/aitools/ to a new top-level aitools/
package. Wire `databricks aitools <X>` at top-level.

The tools subtree (query, discover-schema, get-default-warehouse, statement)
and the hidden skills alias group stay under experimental/aitools/ where their
stability story still lives.

The old paths under `databricks experimental aitools install/update/uninstall/list/version`
and `databricks experimental aitools skills install/list` keep working as silent
backward-compat aliases (no deprecation warnings).

Co-authored-by: Isaac
User-facing strings that pointed callers at `databricks experimental aitools install/update`
now point at the new canonical `databricks aitools install/update`. Test assertions
updated to match.

Co-authored-by: Isaac
The README and PR description advertise `databricks aitools install [skill-name]`,
but the promoted command had `Use: "install"` and `cobra.NoArgs`, so the
documented form would fail. Match the docs: accept an optional positional
skill name and map it to the same path as `--skills`. The two are mutually
exclusive to keep behavior unambiguous. Replace the old reject-positional-args
test with coverage for the positional path and the conflict case.

Co-authored-by: Isaac
The README listed `databricks aitools install [skill-name]`, but the command
is `Use: "install"` with `cobra.NoArgs` and uses `--skills <name>` for
specific skills. Match the actual command.

Co-authored-by: Isaac
@jamesbroadhead
Copy link
Copy Markdown
Author

jamesbroadhead commented Apr 30, 2026

Hi @lennartkats-db — Claude here, on James's behalf.

This PR has changed shape since you were originally tagged. A heads-up before you take a look:

Simon is now effectively a co-author. He force-pushed and rewrote the branch on Apr 30 — the original commits are gone. The current commits implement the "promote skills surface, keep tools experimental" approach: source files for install/update/uninstall/list/version physically moved to a new aitools/ package, while tools and the skills alias group stay in experimental/aitools/. Old paths under experimental aitools keep working as silent backward-compat aliases (no deprecation warning).

Branch is now rebased onto current main and includes a couple of follow-up fixes from a self-review pass:

  • experimental aitools Long help text was stale (advertised hidden subcommands) — now a one-liner pointing at the canonical path
  • databricks aitools install <skill-name> now accepts a positional to match the legacy alias's behavior; positional and --skills are mutually exclusive

CI: all standard checks green. Integration Tests show one failure (https://go/deco-tests/25155597272) — the changes here shouldn't be touching anything integration-relevant, so it reads as a flake, but worth a quick triage if you happen to be looking.

After the silent-alias restructure, install/update/uninstall/list/version
and the skills alias group are all Hidden under `experimental aitools`,
leaving only `tools` visible. The Long string still advertised install
and skills as if they were active here.

Reword to: state that skills-management has moved to top-level, and that
`tools` is the only experimental surface still maintained under this path.

Co-authored-by: Isaac
Restores the positional skill-name form on the canonical command. The
legacy alias `databricks experimental aitools skills install <name>`
already accepted a positional and forwarded it via --skills; the
canonical `databricks aitools install <name>` previously rejected
positionals (cobra.NoArgs), so users mechanically migrating scripts hit
"unknown command".

Behavior:
- `databricks aitools install`                — install all skills (unchanged)
- `databricks aitools install <name>`         — install just that skill
- `databricks aitools install --skills a,b`   — install multiple
- positional + --skills together              — error, mutually exclusive

Replaces TestInstallRejectsPositionalArgs with positive coverage for the
positional path, the conflict case, and the >1-positional rejection.

Co-authored-by: Isaac
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.

3 participants