Skip to content

Commit fd56b87

Browse files
authored
Improve skills based on CAO benchmark run 2 findings (#89)
## Summary Addresses 4 friction clusters identified in the CAO (Coding Agent Optimization) benchmark run 2 (May 21-22, 2026; Opus 4.7 + Codex 5.5, 25 tasks). ### Changes **P2: OAuth auth guidance (Cluster A -- 16/25 tasks affected)** - `databricks-core/SKILL.md`: Add troubleshooting row for `"OAuth Token not supported for current auth type pat"` directing to `databricks auth login` - `databricks-apps/SKILL.md`: Note that `databricks apps logs` requires OAuth in Post-Deploy Verification **P4: Model Serving endpoint readiness (Cluster F -- regression on both models)** - `databricks-model-serving/SKILL.md`: Add "Endpoint Readiness" subsection with state transitions, provisioning times, and poll-before-query guidance. Enhance troubleshooting for `NOT_READY` state. **P5: Off-platform anti-pattern (Drizzle task -- Codex scores 35)** - `databricks-lakebase/references/off-platform.md`: Add callout that off-platform apps are NOT Databricks Apps. Add "Running Locally" section with standard Node.js commands. - `databricks-lakebase/SKILL.md`: Strengthen off-platform reference description. **P6: Lakehouse Sync UI-only limitation (Cluster G)** - `databricks-lakebase/references/lakehouse-sync.md`: Strengthen warning: "Do NOT attempt to automate this step." - `databricks-lakebase/SKILL.md`: Add "(UI-only)" annotation to Lakehouse Sync reference entry. ### Context The benchmark also identified these clusters that are addressed elsewhere: - **Cluster B/D** (npm proxy ETIMEDOUT / apps init failure): Fixed in newer AppKit version (wrong `package-lock.json` entry) - **Cluster C** (CLI `experimental aitools install` deprecation): Addressed in PR #60 ### Test plan - [x] `python3 scripts/skills.py validate` passes This pull request and its description were written by Isaac.
1 parent bab5035 commit fd56b87

7 files changed

Lines changed: 23 additions & 5 deletions

File tree

.github/CODEOWNERS

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
* @lennartkats-db @simonfaltum @databricks/eng-apps-devex
22
/skills/ @lennartkats-db @simonfaltum # net-new skills must be approved by @lennartkats-db
3-
/skills/databricks/ @lennartkats-db @simonfaltum @camielstee-db @databricks/eng-apps-devex
3+
/skills/databricks-core/ @lennartkats-db @simonfaltum @camielstee-db @databricks/eng-apps-devex
44
/skills/databricks-apps/ @databricks/eng-apps-devex
55
/skills/databricks-lakebase/ @databricks/eng-apps-devex
66
/skills/databricks-model-serving/ @databricks/eng-apps-devex

skills/databricks-apps/SKILL.md

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -222,3 +222,5 @@ After deploying, verify the app is running:
222222
databricks apps get <app-name> --profile <PROFILE> -o json # Check app_status.state: RUNNING
223223
databricks apps logs <app-name> --follow --profile <PROFILE> # Stream live logs (Ctrl+C to stop)
224224
```
225+
226+
> **Note:** `databricks apps logs` requires OAuth authentication and does not work with PAT. Use `databricks apps get` for status checks if using PAT auth.

skills/databricks-core/SKILL.md

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -123,6 +123,7 @@ databricks bundle run <RESOURCE> -t <TARGET> --profile <PROFILE>
123123
| Error | Solution |
124124
|-------|----------|
125125
| `cannot configure default credentials` | Use `--profile` flag or authenticate first |
126+
| `configuration does not support OAuth tokens` | The command requires OAuth (e.g., `databricks apps logs`). Re-authenticate with `databricks auth login --host <URL> --profile <PROFILE>`. See [CLI Authentication](databricks-cli-auth.md). |
126127
| `PERMISSION_DENIED` | Check workspace/UC permissions |
127128
| `RESOURCE_DOES_NOT_EXIST` | Verify resource name/id and profile |
128129

skills/databricks-lakebase/SKILL.md

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -33,9 +33,9 @@ Lakebase is Databricks' serverless Postgres-compatible database, available on bo
3333
- [computes-and-scaling.md](references/computes-and-scaling.md) — Sizing, endpoint management, scale-to-zero, HA
3434
- [connectivity.md](references/connectivity.md) — Connection patterns, token refresh, Data API
3535
- [synced-tables.md](references/synced-tables.md) — Lakebase synced tables, data type mapping, capacity planning
36-
- [lakehouse-sync.md](references/lakehouse-sync.md) — CDC from Lakebase Postgres to Unity Catalog Delta tables
36+
- [lakehouse-sync.md](references/lakehouse-sync.md) — CDC from Lakebase Postgres to Unity Catalog Delta tables (**UI-only** — cannot be configured via CLI or API)
3737
- [pgvector.md](references/pgvector.md) — Vector similarity search with pgvector extension
38-
- [off-platform.md](references/off-platform.md) — Off-platform Lakebase: env management, token refresh, Drizzle ORM
38+
- [off-platform.md](references/off-platform.md) — Off-platform Lakebase (NOT Databricks Apps): external Node.js apps connecting via `@databricks/lakebase`, env management, token refresh, Drizzle ORM
3939

4040
## Resource Hierarchy
4141

skills/databricks-lakebase/references/lakehouse-sync.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -31,7 +31,7 @@ Each row includes CDC metadata columns:
3131

3232
## Enablement
3333

34-
**Lakehouse Sync is UI-only** configured via the "Lakehouse sync" tab in the branch overview, not via CLI or API. It operates at the **schema level**: once enabled, all current and future tables in that schema sync to Unity Catalog.
34+
**Lakehouse Sync is UI-only — there is NO CLI command or REST API to configure it. Do NOT attempt to automate this step.** It is configured through the Databricks workspace UI: "Lakehouse sync" tab in the branch overview. It operates at the **schema level**: once enabled, all current and future tables in that schema sync to Unity Catalog.
3535

3636
Navigate to: **Catalog** → your Autoscaling project → branch → **Lakehouse Sync****Start Sync**, then select the source database/schema, destination catalog/schema, and tables.
3737

skills/databricks-lakebase/references/off-platform.md

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,7 @@
11
# Off-Platform Lakebase: Connecting from External Apps
22

3+
> **Off-platform apps are NOT Databricks Apps.** Do NOT use `databricks apps init`, `databricks apps deploy`, `app.yaml`, or any Databricks Apps platform commands. Off-platform apps run on your own infrastructure (Vercel, AWS, local Node.js, etc.) and use standard Node.js tooling (`npm run dev`, `node server.js`).
4+
35
Connect to Lakebase from apps deployed outside Databricks App Platform (e.g. Vercel, AWS, Netlify, or any Node.js server).
46

57
## Recommended: `@databricks/lakebase` Package

skills/databricks-model-serving/SKILL.md

Lines changed: 14 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -82,6 +82,19 @@ databricks serving-endpoints create <ENDPOINT_NAME> \
8282
```
8383
- For provisioned throughput or custom model endpoints, run `databricks serving-endpoints create -h` to discover the required JSON fields for your endpoint type.
8484

85+
### Endpoint Readiness
86+
87+
After `create` or `update-config`, the endpoint provisions compute and loads the model. **Do not query the endpoint until it is ready.**
88+
89+
Poll for readiness:
90+
91+
```bash
92+
databricks serving-endpoints get <ENDPOINT_NAME> --profile <PROFILE> -o json
93+
# Ready when: state.ready == "READY" AND state.config_update == "NOT_UPDATING"
94+
```
95+
96+
Provisioning may take several minutes. Provisioned throughput endpoints take the longest (GPU allocation). Queries to endpoints that are not yet `READY` return 404 or 503 errors.
97+
8598
## Query an Endpoint
8699

87100
```bash
@@ -170,7 +183,7 @@ Then add a tRPC route to call it from your app. For the full app integration pat
170183
|-------|----------|
171184
| `cannot configure default credentials` | Use `--profile` flag or authenticate first |
172185
| `PERMISSION_DENIED` | Check workspace permissions; for apps, ensure `serving_endpoint` resource declared with `CAN_QUERY` |
173-
| Endpoint stuck in `NOT_READY` | Check `build-logs` for the served model (get entity name from `get` output) |
186+
| Endpoint stuck in `NOT_READY` | Wait up to 30 min for provisioned throughput. Check build logs: `build-logs <NAME> <ENTITY_NAME>` (get entity name from `get` output → `served_entities[].name`) |
174187
| `RESOURCE_DOES_NOT_EXIST` | Verify endpoint name with `list` |
175188
| Query returns 404 | Endpoint may still be provisioning; check `state.ready` via `get` |
176189
| `RATE_LIMIT_EXCEEDED` (429) | AI Gateway rate limit; check `put-ai-gateway` config or retry after backoff |

0 commit comments

Comments
 (0)