Skip to content

Add manifest v2 fields: experimental, description, min_cli_version#35

Merged
fjakobs merged 3 commits intodatabricks:mainfrom
simonfaltum:simonfaltum/manifest-v2
Mar 26, 2026
Merged

Add manifest v2 fields: experimental, description, min_cli_version#35
fjakobs merged 3 commits intodatabricks:mainfrom
simonfaltum:simonfaltum/manifest-v2

Conversation

@simonfaltum
Copy link
Copy Markdown
Member

Why

The Databricks CLI is adding support for skill filtering by experimental status and CLI version compatibility. The manifest needs new fields to support this.

Changes

Before: Manifest v1 with version, updated_at, and files per skill.

Now: Manifest v2 adds three new fields to each skill entry:

  • experimental (bool): Whether the skill is experimental. All current skills are false.
  • description (string): One-line description of the skill.
  • min_cli_version (string): Minimum CLI version required. Empty string means no minimum.

The CLI handles both v1 and v2 manifests gracefully. Missing v2 fields use zero-value defaults (non-experimental, no description, no version requirement).

Also updated scripts/generate_manifest.py to emit v2 fields with a SKILL_METADATA dict for per-skill configuration.

Test plan

  • python3 scripts/generate_manifest.py validate passes
  • Generated manifest matches expected v2 format
  • All existing skills present with correct file lists

@simonfaltum simonfaltum marked this pull request as ready for review March 22, 2026 22:01
@simonfaltum simonfaltum requested review from a team and lennartkats-db as code owners March 22, 2026 22:01
github-merge-queue bot pushed a commit to databricks/cli that referenced this pull request Mar 26, 2026
…ude-experimental flags (#4813)

## PR Stack

1. [1/5] State + release discovery + directory rename (#4810)
2. [2/5] Install writes state + interactive agent selection (#4811)
3. [3/5] Update + uninstall + version commands (#4812)
4. **[4/5] List improvements + command restructuring + flags** (this PR)
5. [5/5] Project scope (--project/--global) (#4814)

Manifest v2 PR: databricks/databricks-agent-skills#35

**Base**: `simonfaltum/aitools-pr3-lifecycle` (PR 3)

## Why

Commands are nested under `skills` which burns namespace for future
component types (hooks, etc.). There's no way to install specific
skills, target specific agents from the CLI, or see installed status in
the list output.

## Changes

**New `list` command**: Table output with skill names, versions,
installed status, `[experimental]` tags. Sorted alphabetically. Uses
`tabwriter` for alignment.

**Flat command structure**: `aitools
install/update/uninstall/list/version` at the top level. Hidden `skills
install` and `skills list` aliases for backward compat.

**Flags**:
- `--skills` (string, comma-separated) on install, update, uninstall:
operate on specific skills
- `--skills` (bool) on list, version: show detailed skills view
- `--agents` (string, comma-separated) on install: target specific
agents, validates against registry, skips interactive prompt
- `--include-experimental` on install: include experimental skills

**Selective uninstall**: `--skills` on uninstall removes only named
skills, preserves state file with remaining.

## Test plan

- [x] `install --skills`, `--agents`, `--include-experimental` flags
work
- [x] `--agents` validates against registry, errors on unknown
- [x] `uninstall --skills` selective removal, state preserved
- [x] `update --skills` selective update
- [x] `list` shows detailed table
- [x] `skills install` and `skills list` hidden aliases work (Execute
path tested)
- [x] `cmd/apps/init.go` integration preserved
- [x] All lint checks pass
github-merge-queue bot pushed a commit to databricks/cli that referenced this pull request Mar 26, 2026
## PR Stack

1. [1/5] State + release discovery + directory rename (#4810)
2. [2/5] Install writes state + interactive agent selection (#4811)
3. [3/5] Update + uninstall + version commands (#4812)
4. [4/5] List improvements + command restructuring + flags (#4813)
5. **[5/5] Project scope (--project/--global)** (this PR)

Manifest v2 PR: databricks/databricks-agent-skills#35

**Base**: `simonfaltum/aitools-pr4-restructure` (PR 4)

## Why

Skills are currently global-only. Teams working on the same project
can't share a curated set of skills via their repo. Project-scoped
installation puts skills alongside the code, so they can be committed to
git and shared.

## Changes

Before: All skills install to `~/.databricks/aitools/skills/` (global
only).

Now:
- `--project` flag on install, update, uninstall: operates on
`<cwd>/.databricks/aitools/skills/`
- `--global` flag: explicit global scope (default behavior)
- `--global` + `--project` -> error
- Interactive scope prompt on install (default: global). Uses
`huh.NewSelect` in cmd layer.
- Non-interactive defaults to global.
- `SupportsProjectScope` field on `Agent` struct. Only Claude Code and
Cursor support project scope.
- Incompatible agents get a warning, not an error: "Skipped <agent>:
does not support project-scoped skills."
- Version shows both scopes when both exist.
- State includes `scope: "project"` field for project installs.

## Test plan

- [x] `--project` installs to cwd-relative directory
- [x] `--global` + `--project` -> error
- [x] No flag, interactive -> scope prompt shown, default is global
- [x] No flag, non-interactive -> global (no prompt)
- [x] Incompatible agents warned, not errored
- [x] Symlinks only created for capable agents in project scope
- [x] Version shows both scopes when both exist
- [x] `SupportsProjectScope` set correctly for all 6 agents
- [x] All lint checks pass
@fjakobs fjakobs merged commit f4e0e6a into databricks:main Mar 26, 2026
1 check passed
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