| name | refresh-genie-best-practices |
| description | Interactively refresh the local Genie best-practices reference from the official Databricks Genie docs. TRIGGER when the user asks to "refresh / update Genie best practices", "check the Databricks docs for new best practices", "are our best practices up to date", or wants to sync genie_validator/prompts/best_practices.md with the latest documentation. Scope is limited to practices that affect Genie space design and configuration. |
Refresh Genie Best Practices
This skill drives an interactive review that keeps the evaluator's local best-practices reference in sync with the official Databricks Genie documentation. It only proposes changes that matter for Genie space design and configuration (the scope of this agent) and applies them only after the user approves.
Keep relevance high and noise low. Most runs will surface few or zero changes. Reporting "no relevant updates" is a correct and expected outcome. Do not invent updates to look productive. When in doubt about whether a finding matters to a Genie space author, drop it. Less is more.
Files this skill touches
All paths are relative to the repo root.
genie_validator/prompts/best_practices.md - the authoritative reference (sections 1-6). The thing you update.
genie_validator/prompts/evaluator_system.md - the evaluator system prompt. It cites best_practices.md by section number (sections 1-6, 1-3, 2, 3g, 3h, 4, 5, 6). If you renumber or restructure sections, update these references in the same pass.
genie_validator/prompts/org_conventions.md - customer-specific conventions (naming, fiscal calendar, currency/timezone). NOT driven by public docs. Read-only here: only flag conflicts, never auto-edit.
genie_validator/prompts/report_system.md - read-only sanity check; it only renders the reference date string.
Load-bearing constraints (do not break)
- Date line format. Line 3 of
best_practices.md is exactly Last updated: YYYY-MM-DD. It is parsed by genie_validator/nodes.py (re.search(r"Last updated:\s*(\d{4}-\d{2}-\d{2})", ...)) into _BEST_PRACTICES_DATE and shown in the report. Keep this exact format. Update it last, and only if at least one edit was applied.
- Preserve section numbering. The evaluator prompt references sections by number. Prefer additive edits inside the existing section (1-6 and the 3a-3h subsections). Only restructure if unavoidable, and then mirror every changed reference in
evaluator_system.md.
- No em dashes. Per repo and global convention, do not use em dashes in any edited markdown. Use a comma, colon, parentheses, or a sentence break.
- Match house style. Concise, imperative bullets that read like the surrounding
best_practices.md content.
Procedure
1. Load local state
Read best_practices.md in full (note the Last updated: date and the current 1-6 / 3a-3h structure), org_conventions.md, and skim evaluator_system.md to see which section numbers it cites. Open by telling the user the current Last updated: date and how stale that is relative to today, so they can gauge how much drift to expect.
2. Fetch the docs
WebFetch these six authoritative pages:
Optionally consult https://docs.databricks.com/llms.txt to discover newly added adjacent Genie pages not in the list above. Only follow links that are clearly about Genie space authoring.
If a fetch fails (restricted egress, etc.), say so explicitly and continue with whatever fetched. Do not silently skip a source.
3. Diff against local
For each practice the docs describe, classify it: already covered / new / changed (docs now say something different from local).
Apply a hard scope filter. KEEP only items that affect Genie space design and configuration, for example:
- Tables/views in the space, descriptions, hard limits, knowledge-store budget.
- Instructions: SQL expressions (measures/filters/fields), example SQL queries, SQL functions, general text instructions, and the instruction priority hierarchy.
- Joins and relationship cardinality; synonyms; format assistance; entity matching.
- Benchmark question design.
- UC data-layer expectations that the evaluator checks (types, PK/FK, naming, descriptions).
DROP (out of scope): end-user querying tips, UI click-throughs, billing/quotas, permissions/governance plumbing, release-note chatter, and anything not actionable as an evaluation rule the agent could check against a space config.
4. Present a prioritized proposal
Present surviving candidates as a single Markdown table, sorted by priority (High first). Use these exact columns:
| ID | Prio | Docs | Current local state | Recommendation |
|---|
- ID: short stable handle (e.g.
A, B, C).
- Prio:
High / Medium / Low, by how much the change affects space-design accuracy.
- Docs: what the docs say now, in one terse phrase. Name the source page in parentheses (e.g. "(tune-quality)").
- Current local state: what
best_practices.md says today: not covered / partial / conflicts. One terse phrase.
- Recommendation:
Include -> §<section> or Skip, plus a 3-6 word reason.
Write for a Genie space author practitioner: sentence fragments, no marketing language, no restating the obvious. Keep each cell short enough to scan. Omit source URLs and "new vs changed" prose from the table; if the user wants detail on a row, give it on request.
If nothing clears the scope filter, skip the table: state plainly that the local reference is already aligned with the docs, no changes recommended, and stop here. That is a valid outcome.
Then ask the user which IDs to apply. Do not edit anything before they choose.
5. Apply approved edits
For each approved item:
- Edit
best_practices.md additively within the matching section to preserve numbering and house style.
- If a change genuinely requires restructuring sections, update the corresponding
section N references in evaluator_system.md in the same pass so they still point at real headings.
6. Org-conventions conflict check
Re-read org_conventions.md against the applied changes. If a newly added universal practice conflicts with a customer convention (rare), surface the conflict to the user and let them decide. Never edit org_conventions.md automatically.
7. Bump the date
Only if at least one edit was applied, update line 3 of best_practices.md to Last updated: <today in YYYY-MM-DD>.
8. Summarize
Report what changed (with section locations), what was skipped and why, and any follow-ups in evaluator_system.md or conflicts flagged in org_conventions.md.
Post-edit checks (only when edits were applied)
grep -n "Last updated:" genie_validator/prompts/best_practices.md shows the new YYYY-MM-DD.
- Smoke import still works and the date parses (not "unknown"):
uv run python -c "import genie_validator.nodes as n; print(n._BEST_PRACTICES_DATE)"
- Every
section N reference in evaluator_system.md still maps to a real heading in best_practices.md.