Add AppKit support and databricks-agent-skills integration (experimental)#533
Open
jamesbroadhead wants to merge 4 commits into
Open
Conversation
Equivalent of databricks-solutions#356 (which targets main), adapted for the experimental branch: - Rename `databricks-app-python` → `databricks-apps-python` (plural) for the bundled skill directory, baselines, manifests, builder-app refs, install scripts, and cross-skill mentions. - `databricks-apps-python/SKILL.md` now leads with AppKit (TypeScript + React SDK) as the recommended approach for new apps, with Python frameworks (Dash, Streamlit, Gradio, Flask, FastAPI, Reflex) demoted to an explicit alternative. Frontmatter `name` and H1 title updated to match. - `install.sh` and `install.ps1` fetch and install skills from `databricks/databricks-agent-skills` (`databricks`, `databricks-apps`, `databricks-lakebase`) via a single GitHub API tree call. New `AGENT_SKILLS` variable supports `source:install-name` syntax (e.g. `databricks-core:databricks`) so the install directory can differ from the upstream skill path. - Preserves experimental's polish: keeps `6-cli-approach.md` (not MCP) and references `databricks-lakebase-autoscale` (since `databricks-lakebase-provisioned` was removed on experimental). Co-authored-by: Isaac
7 tasks
GPT 5.4 xhigh and Gemini 3.1 Pro both flagged the new short agent-skill names triggering latent bugs in the install scripts. Three fixes: 1. install.sh `_is_preselected`: `grep -qw` treats `-` as a word boundary, so checking for `databricks` would falsely match `databricks-jobs`, `databricks-apps`, etc. Strip `source:` prefix from each preselected entry and use `grep -Fxq` for exact whole-line equality. Same fix applied to the deselection cleanup at the cleanup loop. 2. install.ps1: `$preselected -contains "databricks"` is exact equality on array elements, so it never matched the `"databricks-core:databricks"` entry seeded by the app-developer profile — the Agent: Databricks checkbox was never auto-preselected. Normalize `$preselected` by stripping `source:` prefixes once before the menu is built. 3. install.sh/ps1: the "Agent skills (N) -> ..." success line ran unconditionally, even when the GitHub tree fetch failed or every per-skill download warned and was rolled back. Track an `agent_success`/`$agentSuccess` counter and only print the success line when all selected agent skills installed; print a warning when only some succeeded. Co-authored-by: Isaac
…ale dirs Two more ACE review findings, both real: 1. The path-extraction regex `"path":"skills/..."` (no space) does NOT match the GitHub tree API's actual response, which is pretty-printed as `"path": "skills/..."` (space after colon). Result: the installer would warn "Could not fetch agent skill" for every entry and install nothing. Fix: collapse the JSON whitespace before regex extraction, and switch from the `grep '\.'` heuristic to matching the adjacent `"type": "blob"` field so directory entries are correctly skipped. 2. Reinstalls reused the existing $dest_dir / $destDir without clearing it, so files removed upstream would persist locally across upgrades. Fix: `rm -rf` / `Remove-Item -Recurse` the destination before each skill is downloaded. Co-authored-by: Isaac
ACE iteration 2 findings: - Gemini caught that the `grep -qw` word-boundary bug I fixed in `_is_preselected` still bit the resolve_skills() bucketing chain (lines 918/920/922). Passing `--skills databricks` (a valid agent install-name) would match `databricks-app-apx` via the hyphen word-boundary on the APX branch and get misclassified. Switched all three buckets to exact match via `tr ' ' '\n' | grep -Fxq`, and rewrote the source:install-name lookup on line 923 with `-E` and a clean anchored alternation. - GPT caught that when the GitHub tree fetch fails entirely (`agent_tree` empty / `$agentTree` null), the summary branch emits nothing — neither OK nor "only N of M installed" — even though zero of N agent skills were actually installed. Added an `else` branch that emits a `0 of $agent_count installed` warning. Out of scope (flagged but not addressed): - GPT raised legacy-name compatibility for `databricks-app-python` → `databricks-apps-python`. The rename is intentional per the product decision; back-compat aliasing is a separate concern. Co-authored-by: Isaac
2 tasks
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
Equivalent of #356 (which targets
main), adapted for theexperimentalbranch.databricks-apps-python/SKILL.md(renamed fromdatabricks-app-python/) now leads with AppKit (TypeScript + React SDK) as the recommended approach for new apps, with Python frameworks (Dash, Streamlit, Gradio, Flask, FastAPI, Reflex) demoted to an explicit alternative. Frontmatternameand H1 title updated to match.databricks-app-python→databricks-apps-python(plural) for the bundled skill directory, eval baselines, routing manifests, builder-app references, install scripts, and cross-skill mentions.databricks/databricks-agent-skills: bothinstall.shandinstall.ps1now fetch and install skills from databricks/databricks-agent-skills (databricks,databricks-apps,databricks-lakebase). Uses a single GitHub API tree call per install to fetch all files recursively, including nestedreferences/subdirectories.source:install-namerename syntax:AGENT_SKILLSsupportssource:install-nameentries (e.g.databricks-core:databricks) to decouple the upstream repo path from the local install directory name — no changes needed in the upstream repo.Differences vs #356 (preserves experimental's polish)
6-cli-approach.md(experimental's CLI-based app-lifecycle guide). Add AppKit support and databricks-agent-skills integration #356 still references6-mcp-approach.md.databricks-lakebase-autoscaleinstead ofdatabricks-lakebase-provisioned(which experimental removed).Test plan
bash install.sh --list-skillsshows agent skills with install names (notsource:install-nameraw entries)bash install.sh --skills-profile app-developerinstallsdatabricks-apps-python,databricks-app-apx, and agent skillsdatabricks,databricks-apps,databricks-lakebasebash install.sh --skills databrickscorrectly fetches and installsdatabricks-corefrom the agent-skills repo into a directory nameddatabricksbash install.sh --skills-profile allinstalls all 37 skills with no directory conflictsinstall.ps1on WindowsThis pull request was AI-assisted by Isaac.