Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
9 changes: 5 additions & 4 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,7 @@

## Overview

AI-Driven Development (vibe coding) on Databricks just got a whole lot better. The **AI Dev Kit** gives your AI coding assistant (Claude Code, Cursor, Windsurf, etc.) the trusted sources it needs to build faster and smarter on Databricks.
AI-Driven Development (vibe coding) on Databricks just got a whole lot better. The **AI Dev Kit** gives your AI coding assistant (Claude Code, Cursor, Antigravity, Windsurf, etc.) the trusted sources it needs to build faster and smarter on Databricks.

<p align="center">
<img src="databricks-tools-core/docs/architecture.svg" alt="Architecture" width="700">
Expand Down Expand Up @@ -52,11 +52,12 @@ AI-Driven Development (vibe coding) on Databricks just got a whole lot better. T
- [Claude Code](https://claude.ai/code)
- [Cursor](https://cursor.com)
- [Gemini CLI](https://github.com/google-gemini/gemini-cli)
- [Antigravity](https://antigravity.google)


### Install in existing project
By default this will install at a project level rather than a user level. This is often a good fit, but requires you to run your client from the exact directory that was used for the install.
_Note: Project configuration files can be re-used in other projects. You find these configs under .claude, .cursor, or .gemini_
_Note: Project configuration files can be re-used in other projects. You find these configs under .claude, .cursor, .gemini, or .agents_

#### Mac / Linux

Expand Down Expand Up @@ -84,7 +85,7 @@ bash <(curl -sL https://raw.githubusercontent.com/databricks-solutions/ai-dev-ki
**Install for specific tools only**

```bash
bash <(curl -sL https://raw.githubusercontent.com/databricks-solutions/ai-dev-kit/main/install.sh) --tools cursor,gemini
bash <(curl -sL https://raw.githubusercontent.com/databricks-solutions/ai-dev-kit/main/install.sh) --tools cursor,gemini,antigravity
```

</details>
Expand Down Expand Up @@ -124,7 +125,7 @@ irm https://raw.githubusercontent.com/databricks-solutions/ai-dev-kit/main/insta
**Install for specific tools only**

```powershell
.\install.ps1 -Tools cursor,gemini
.\install.ps1 -Tools cursor,gemini,antigravity
```

</details>
Expand Down
39 changes: 31 additions & 8 deletions install.ps1
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
#
# Databricks AI Dev Kit - Unified Installer (Windows)
#
# Installs skills, MCP server, and configuration for Claude Code, Cursor, OpenAI Codex, GitHub Copilot, and Gemini CLI.
# Installs skills, MCP server, and configuration for Claude Code, Cursor, OpenAI Codex, GitHub Copilot, Gemini CLI, and Antigravity.
#
# Usage: irm https://raw.githubusercontent.com/databricks-solutions/ai-dev-kit/main/install.ps1 -OutFile install.ps1
# .\install.ps1 [OPTIONS]
Expand Down Expand Up @@ -233,7 +233,7 @@ while ($i -lt $args.Count) {
Write-Host " --mcp-only Skip skills installation"
Write-Host " --mcp-path PATH Path to MCP server installation"
Write-Host " --silent Silent mode (no output except errors)"
Write-Host " --tools LIST Comma-separated: claude,cursor,copilot,codex,gemini"
Write-Host " --tools LIST Comma-separated: claude,cursor,copilot,codex,gemini,antigravity"
Write-Host " --skills-profile LIST Comma-separated profiles: all,data-engineer,analyst,ai-ml-engineer,app-developer"
Write-Host " --skills LIST Comma-separated skill names to install (overrides profile)"
Write-Host " --list-skills List available skills and profiles, then exit"
Expand Down Expand Up @@ -567,15 +567,18 @@ function Invoke-DetectTools {
$hasCopilot = ($null -ne (Get-Command code -ErrorAction SilentlyContinue)) -or
(Test-Path "$env:LOCALAPPDATA\Programs\Microsoft VS Code\Code.exe")
$hasGemini = $null -ne (Get-Command gemini -ErrorAction SilentlyContinue)
$hasAntigravity = ($null -ne (Get-Command antigravity -ErrorAction SilentlyContinue)) -or
(Test-Path "$env:LOCALAPPDATA\Programs\Antigravity\Antigravity.exe")

$claudeState = $hasClaude; $claudeHint = if ($hasClaude) { "detected" } else { "not found" }
$cursorState = $hasCursor; $cursorHint = if ($hasCursor) { "detected" } else { "not found" }
$codexState = $hasCodex; $codexHint = if ($hasCodex) { "detected" } else { "not found" }
$copilotState = $hasCopilot; $copilotHint = if ($hasCopilot) { "detected" } else { "not found" }
$geminiState = $hasGemini; $geminiHint = if ($hasGemini) { "detected" } else { "not found" }
$antigravityState = $hasAntigravity; $antigravityHint = if ($hasAntigravity) { "detected" } else { "not found" }

# If nothing detected, default to claude
if (-not $hasClaude -and -not $hasCursor -and -not $hasCodex -and -not $hasCopilot -and -not $hasGemini) {
if (-not $hasClaude -and -not $hasCursor -and -not $hasCodex -and -not $hasCopilot -and -not $hasGemini -and -not $hasAntigravity) {
$claudeState = $true
$claudeHint = "default"
}
Expand All @@ -586,11 +589,12 @@ function Invoke-DetectTools {
}

$items = @(
@{ Label = "Claude Code"; Value = "claude"; State = $claudeState; Hint = $claudeHint }
@{ Label = "Cursor"; Value = "cursor"; State = $cursorState; Hint = $cursorHint }
@{ Label = "GitHub Copilot"; Value = "copilot"; State = $copilotState; Hint = $copilotHint }
@{ Label = "OpenAI Codex"; Value = "codex"; State = $codexState; Hint = $codexHint }
@{ Label = "Gemini CLI"; Value = "gemini"; State = $geminiState; Hint = $geminiHint }
@{ Label = "Claude Code"; Value = "claude"; State = $claudeState; Hint = $claudeHint }
@{ Label = "Cursor"; Value = "cursor"; State = $cursorState; Hint = $cursorHint }
@{ Label = "GitHub Copilot"; Value = "copilot"; State = $copilotState; Hint = $copilotHint }
@{ Label = "OpenAI Codex"; Value = "codex"; State = $codexState; Hint = $codexHint }
@{ Label = "Gemini CLI"; Value = "gemini"; State = $geminiState; Hint = $geminiHint }
@{ Label = "Antigravity"; Value = "antigravity"; State = $antigravityState; Hint = $antigravityHint }
)

$result = Select-Checkbox -Items $items
Expand Down Expand Up @@ -1153,6 +1157,13 @@ function Install-Skills {
"copilot" { $dirs += Join-Path $BaseDir ".github\skills" }
"codex" { $dirs += Join-Path $BaseDir ".agents\skills" }
"gemini" { $dirs += Join-Path $BaseDir ".gemini\skills" }
"antigravity" {
if ($script:Scope -eq "global") {
$dirs += Join-Path $env:USERPROFILE ".gemini\antigravity\skills"
} else {
$dirs += Join-Path $BaseDir ".agents\skills"
}
}
}
}
$dirs = $dirs | Select-Object -Unique
Expand Down Expand Up @@ -1559,6 +1570,14 @@ function Write-McpConfigs {
}
Write-Ok "Gemini CLI MCP config"
}
"antigravity" {
if ($script:Scope -eq "project") {
Write-Warn "Antigravity only supports global MCP configuration."
Write-Msg " Config written to ~/.gemini/antigravity/mcp_config.json"
}
Write-GeminiMcpJson (Join-Path $env:USERPROFILE ".gemini\antigravity\mcp_config.json")
Write-Ok "Antigravity MCP config"
}
}
}
}
Expand Down Expand Up @@ -1610,6 +1629,10 @@ function Show-Summary {
Write-Msg "$step. Launch Gemini CLI in your project: gemini"
$step++
}
if ($script:Tools -match 'antigravity') {
Write-Msg "$step. Open your project in Antigravity to use Databricks skills and MCP tools"
$step++
}
Write-Msg "$step. Open your project in your tool of choice"
$step++
Write-Msg "$step. Try: `"List my SQL warehouses`""
Expand Down
54 changes: 39 additions & 15 deletions install.sh
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@
#
# Databricks AI Dev Kit - Unified Installer
#
# Installs skills, MCP server, and configuration for Claude Code, Cursor, OpenAI Codex, GitHub Copilot, and Gemini CLI.
# Installs skills, MCP server, and configuration for Claude Code, Cursor, OpenAI Codex, GitHub Copilot, Gemini CLI, and Antigravity.
#
# Usage: bash <(curl -sL https://raw.githubusercontent.com/databricks-solutions/ai-dev-kit/main/install.sh) [OPTIONS]
#
Expand Down Expand Up @@ -149,7 +149,7 @@ while [ $# -gt 0 ]; do
echo " --mcp-only Skip skills installation"
echo " --mcp-path PATH Path to MCP server installation (default: ~/.ai-dev-kit)"
echo " --silent Silent mode (no output except errors)"
echo " --tools LIST Comma-separated: claude,cursor,copilot,codex,gemini"
echo " --tools LIST Comma-separated: claude,cursor,copilot,codex,gemini,antigravity"
echo " --skills-profile LIST Comma-separated profiles: all,data-engineer,analyst,ai-ml-engineer,app-developer"
echo " --skills LIST Comma-separated skill names to install (overrides profile)"
echo " --list-skills List available skills and profiles, then exit"
Expand Down Expand Up @@ -502,24 +502,27 @@ detect_tools() {
local has_codex=false
local has_copilot=false
local has_gemini=false
local has_antigravity=false

command -v claude >/dev/null 2>&1 && has_claude=true
{ [ -d "/Applications/Cursor.app" ] || command -v cursor >/dev/null 2>&1; } && has_cursor=true
command -v codex >/dev/null 2>&1 && has_codex=true
{ [ -d "/Applications/Visual Studio Code.app" ] || command -v code >/dev/null 2>&1; } && has_copilot=true
{ command -v gemini >/dev/null 2>&1 || [ -f "$HOME/.gemini/local/gemini" ]; } && has_gemini=true
{ [ -d "/Applications/Antigravity.app" ] || command -v antigravity >/dev/null 2>&1; } && has_antigravity=true

# Build checkbox items: "Label|value|on_or_off|hint"
local claude_state="off" cursor_state="off" codex_state="off" copilot_state="off" gemini_state="off"
local claude_hint="not found" cursor_hint="not found" codex_hint="not found" copilot_hint="not found" gemini_hint="not found"
[ "$has_claude" = true ] && claude_state="on" && claude_hint="detected"
[ "$has_cursor" = true ] && cursor_state="on" && cursor_hint="detected"
[ "$has_codex" = true ] && codex_state="on" && codex_hint="detected"
[ "$has_copilot" = true ] && copilot_state="on" && copilot_hint="detected"
[ "$has_gemini" = true ] && gemini_state="on" && gemini_hint="detected"
local claude_state="off" cursor_state="off" codex_state="off" copilot_state="off" gemini_state="off" antigravity_state="off"
local claude_hint="not found" cursor_hint="not found" codex_hint="not found" copilot_hint="not found" gemini_hint="not found" antigravity_hint="not found"
[ "$has_claude" = true ] && claude_state="on" && claude_hint="detected"
[ "$has_cursor" = true ] && cursor_state="on" && cursor_hint="detected"
[ "$has_codex" = true ] && codex_state="on" && codex_hint="detected"
[ "$has_copilot" = true ] && copilot_state="on" && copilot_hint="detected"
[ "$has_gemini" = true ] && gemini_state="on" && gemini_hint="detected"
[ "$has_antigravity" = true ] && antigravity_state="on" && antigravity_hint="detected"

# If nothing detected, pre-select claude as default
if [ "$has_claude" = false ] && [ "$has_cursor" = false ] && [ "$has_codex" = false ] && [ "$has_copilot" = false ] && [ "$has_gemini" = false ]; then
if [ "$has_claude" = false ] && [ "$has_cursor" = false ] && [ "$has_codex" = false ] && [ "$has_copilot" = false ] && [ "$has_gemini" = false ] && [ "$has_antigravity" = false ]; then
claude_state="on"
claude_hint="default"
fi
Expand All @@ -535,15 +538,17 @@ detect_tools() {
"GitHub Copilot|copilot|${copilot_state}|${copilot_hint}" \
"OpenAI Codex|codex|${codex_state}|${codex_hint}" \
"Gemini CLI|gemini|${gemini_state}|${gemini_hint}" \
"Antigravity|antigravity|${antigravity_state}|${antigravity_hint}" \
)
else
# Silent: use detected defaults
local tools=""
[ "$has_claude" = true ] && tools="claude"
[ "$has_cursor" = true ] && tools="${tools:+$tools }cursor"
[ "$has_copilot" = true ] && tools="${tools:+$tools }copilot"
[ "$has_codex" = true ] && tools="${tools:+$tools }codex"
[ "$has_gemini" = true ] && tools="${tools:+$tools }gemini"
[ "$has_claude" = true ] && tools="claude"
[ "$has_cursor" = true ] && tools="${tools:+$tools }cursor"
[ "$has_copilot" = true ] && tools="${tools:+$tools }copilot"
[ "$has_codex" = true ] && tools="${tools:+$tools }codex"
[ "$has_gemini" = true ] && tools="${tools:+$tools }gemini"
[ "$has_antigravity" = true ] && tools="${tools:+$tools }antigravity"
[ -z "$tools" ] && tools="claude"
TOOLS="$tools"
fi
Expand Down Expand Up @@ -1091,6 +1096,13 @@ install_skills() {
copilot) dirs+=("$base_dir/.github/skills") ;;
codex) dirs+=("$base_dir/.agents/skills") ;;
gemini) dirs+=("$base_dir/.gemini/skills") ;;
antigravity)
if [ "$SCOPE" = "global" ]; then
dirs+=("$HOME/.gemini/antigravity/skills")
else
dirs+=("$base_dir/.agents/skills")
fi
;;
esac
done

Expand Down Expand Up @@ -1462,6 +1474,14 @@ write_mcp_configs() {
fi
ok "Gemini CLI MCP config"
;;
antigravity)
if [ "$SCOPE" = "project" ]; then
warn "Antigravity only supports global MCP configuration."
msg " Config written to ${B}~/.gemini/antigravity/mcp_config.json${N}"
fi
write_gemini_mcp_json "$HOME/.gemini/antigravity/mcp_config.json"
ok "Antigravity MCP config"
;;
esac
done
}
Expand Down Expand Up @@ -1505,6 +1525,10 @@ summary() {
msg "${step}. Launch Gemini CLI in your project: ${B}gemini${N}"
step=$((step + 1))
fi
if echo "$TOOLS" | grep -q antigravity; then
msg "${step}. Open your project in Antigravity to use Databricks skills and MCP tools"
step=$((step + 1))
fi
msg "${step}. Open your project in your tool of choice"
step=$((step + 1))
msg "${step}. Try: \"List my SQL warehouses\""
Expand Down
Loading