Skip to content

Add Databricks notebook for installing Genie Code skills#433

Open
Praneeth16 wants to merge 3 commits intodatabricks-solutions:mainfrom
Praneeth16:feature/genie-code-notebook-install
Open

Add Databricks notebook for installing Genie Code skills#433
Praneeth16 wants to merge 3 commits intodatabricks-solutions:mainfrom
Praneeth16:feature/genie-code-notebook-install

Conversation

@Praneeth16
Copy link
Copy Markdown
Contributor

Summary

  • Adds a Databricks notebook (databricks-skills/install_genie_code_skills.py) that installs Genie Code skills from within a workspace, no local terminal needed
  • Uses the Databricks Python SDK (pre-installed in all runtimes) to download skills from GitHub and upload them to /Users/<username>/.assistant/skills/
  • Works on any compute including serverless
  • Skill lists and extra file mappings match install_skills.sh exactly (validated programmatically)
  • Updates README with a "From a Databricks notebook" section under Genie Code Skills

Test plan

  • Python syntax validation passes (ast.parse)
  • All imports resolve (urllib, json, posixpath, databricks.sdk)
  • Skill lists match install_skills.sh: 26 Databricks + 8 MLflow + 1 APX
  • Extra files mappings match install_skills.sh for all 20 Databricks + 5 MLflow + 1 APX entries
  • GitHub raw URLs tested for Databricks, MLflow, and APX skills
  • Ran notebook on fe-vm-cme-conde workspace: 35 skills installed successfully in 59 seconds
  • Verified /Users/<username>/.assistant/skills/ contains all 35 skill directories via databricks workspace list
  • No emdashes, AI slop, or hyperboles in any text

This pull request was AI-assisted by Isaac.

praneeth_paikray-data added 2 commits April 8, 2026 16:29
…pace

Non-technical Genie Code users can now import this notebook into their
workspace and run it to install skills, without needing a local terminal
or the Databricks CLI. The notebook uses the Databricks Python SDK
(pre-installed in all runtimes) to download skills from GitHub and
upload them to /Users/<username>/.assistant/skills/.

- New: databricks-skills/install_genie_code_skills.py (Databricks notebook)
- Updated: README.md with notebook install option in Genie Code section

Co-authored-by: Isaac
The APX repo stores files at skills/apx/SKILL.md (flat), not in a
skill-name subdirectory like the other repos. Added source_path
parameter to install_skill() to handle this, and moved APX extra
files to its own mapping matching get_apx_skill_extra_files() in
install_skills.sh.

Co-authored-by: Isaac
@calreynolds calreynolds requested a review from scottDBX1886 April 8, 2026 15:13
@scottDBX1886
Copy link
Copy Markdown
Collaborator

I like the approach for V1. I think we need to make an update for v2 to dynamically generate the install skills list instead of hardcoded in the notebook as this introduces 2 places (NB and install script) where we have to maintain the skill install lists.

One change first though.

The verify cell is not working. Please see the below change I had to make. The current cell gives "Could not list skills: 'ObjectInfo' object has no attribute 'is_directory'" when executed.

from databricks.sdk import WorkspaceClient

w = WorkspaceClient()
username = w.current_user.me().user_name
skills_path = f"/Users/{username}/.assistant/skills"

try:
entries = list(w.workspace.list(skills_path))
subdirs = sorted([e.path.split("/")[-1] for e in entries if str(e.object_type) == "ObjectType.DIRECTORY"])
if subdirs:
print(f"Found {len(subdirs)} sub-directories in {skills_path}:\n")
for name in subdirs:
print(f" {name}")
else:
print(f"No sub-directories found in {skills_path}.")
except Exception as e:
print(f"Could not list sub-directories: {e}")

Replaces the hardcoded skill registries (DATABRICKS_SKILLS, MLFLOW_SKILLS,
APX_SKILLS and their extra-file mappings) with dynamic discovery using the
GitHub Git Trees API. This eliminates the need to maintain duplicate skill
lists across install_skills.sh and this notebook.

Also fixes the verify cell which used the non-existent `is_directory`
attribute on ObjectInfo — now uses `object_type` comparison instead.

Co-authored-by: Isaac
@Praneeth16
Copy link
Copy Markdown
Contributor Author

@scottDBX1886 thanks for the suggestions! I've implemented them and made the skills discovery dynamic based on GitHub.

@scottDBX1886
Copy link
Copy Markdown
Collaborator

New notebook looks really good. Dynamic skills retrieval is perfect. Cell 7 looks good.
Very nicely done.

Copy link
Copy Markdown
Collaborator

@scottDBX1886 scottDBX1886 left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

All looks good. great PR

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.

2 participants