Skip to content
Draft
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
The table of contents is too big for display.
Diff view
Diff view
  •  
  •  
  •  
98 changes: 48 additions & 50 deletions .agents/skills/author-recipes-and-cookbooks/SKILL.md

Large diffs are not rendered by default.

Original file line number Diff line number Diff line change
Expand Up @@ -41,12 +41,12 @@ Use this checklist after drafting and before final handoff.

## Example Quality

- Confirm example app directory is named `template/` (for `databricks apps init --template` compatibility).
- Confirm optional `pipelines/`, `seed/`, and `provisioning/sql/` live under `template/` (not only at `examples/<id>/` root).
- Confirm **`template/README.md`** is the full runbook: provisioning order (SQL vs manual vs bundles), seeding commands, pipeline and app deploy, and optional `databricks apps init` scaffold URL.
- Confirm example code lives at `app-templates/<id>/` in the [app-templates](https://github.com/databricks/app-templates) repo (flat layout — no `template/` subdir).
- Confirm optional `pipelines/`, `seed/`, and `provisioning/sql/` live at the example root.
- Confirm **`README.md`** is the full runbook: provisioning order (SQL vs manual vs bundles), seeding commands, pipeline and app deploy, and optional `databricks apps init` scaffold URL.
- Confirm all workspace-specific values use `REPLACE_ME` placeholders.
- Confirm `.databricks/`, `node_modules/`, and `.env` are not committed.
- Confirm pipeline SQL uses schema-qualified names (not hardcoded catalog names).
- Confirm `initCommand` in `recipes.ts` uses clone + `cd` into `devhub/examples/<id>/template` (see `createExample()` / example detail page); optional CLI scaffold uses `https://github.com/databricks/devhub/tree/main/examples/<id>`.
- Confirm `initCommand` in `recipes.ts` uses clone + `cd` into `app-templates/<id>` (see `createExample()` / example detail page); optional CLI scaffold uses `https://github.com/databricks/app-templates/tree/main/<id>`.
- Images are optional. If provided, confirm they pass `npm run verify:images` (16:9 ±2%, ≥1600×900 px, PNG/JPG/WEBP — no SVG screenshots). Set `previewImageLightUrl`/`previewImageDarkUrl` (or `galleryImages` for a multi-slide carousel) in the `createExample()` entry. When omitted, the UI falls back to generic card art.
- Confirm `content/examples/<id>.md` exists and matches the example's `id`, and points readers at `template/README.md` for setup.
- Confirm `content/examples/<id>.md` exists and matches the example's `id`, and points readers at `README.md` for setup.
5 changes: 0 additions & 5 deletions .gitattributes

This file was deleted.

4 changes: 2 additions & 2 deletions CONTRIBUTING.md
Original file line number Diff line number Diff line change
Expand Up @@ -97,15 +97,15 @@ DevHub has three internal content tiers that compose into each other:

- **Recipe** — atomic, copy-pasteable agent prompt for one outcome (e.g. "Create a Lakebase instance"). The smallest unit; everything else is built from these.
- **Cookbook** — composes multiple recipes into a longer end-to-end guide, plus its own meta content (intro, narrative, ordering). No app source.
- **Example** — a cookbook _plus_ a full deployable `examples/<slug>/template/` codebase. Bundles recipes and cookbook narrative around runnable app code.
- **Example** — a cookbook _plus_ a full deployable codebase that lives in the [app-templates](https://github.com/databricks/app-templates) repo at `app-templates/<slug>/`. Bundles recipes and cookbook narrative around runnable app code.

So: recipes are the atoms, cookbooks compose recipes with additional context, and examples are cookbooks with shipped code. **User-facing, all three are presented as one thing: a "template"** — the site, navigation, filters, copy-pasted prompts, and `llms.txt` only ever say "template(s)".

| Tier | Purpose | Source |
| ------------ | ------------------------------------------------------------------ | --------------------------------------------------------------------------------- |
| **Recipe** | One atomic outcome (e.g. "Create a Lakebase instance") | `content/recipes/<id>.md` + metadata in `src/lib/recipes/recipes.ts` |
| **Cookbook** | End-to-end walkthrough composed from multiple recipes | Metadata in `src/lib/recipes/recipes.ts` + page in `src/pages/templates/<id>.tsx` |
| **Example** | Cookbook + full runnable app template with code, pipelines, deploy | `content/examples/<id>.md` + `examples/<id>/template/` + metadata |
| **Example** | Cookbook + full runnable app template with code, pipelines, deploy | `content/examples/<id>.md` + `app-templates/<id>/` (separate repo) + metadata |

All three render at `/templates/<id>` and live in one unified Templates catalog filterable by service. Slugs must be globally unique across all three — the content-entries plugin validates this at build time.

Expand Down
7 changes: 2 additions & 5 deletions api/content-markdown.ts
Original file line number Diff line number Diff line change
Expand Up @@ -188,11 +188,8 @@ function readExampleMarkdown(rootDir: string, slug: string): string {
if (example.initCommand) {
lines.push("## Quick start", "", "```bash", example.initCommand, "```", "");
}
if (example.githubPath) {
lines.push(
`[View source on GitHub](https://github.com/databricks/devhub/tree/main/${example.githubPath}/template)`,
"",
);
if (example.templateUrl) {
lines.push(`[View source on GitHub](${example.templateUrl})`, "");
}
const includedTemplates = [
...example.cookbookIds.map((id) => cookbooks.find((c) => c.id === id)),
Expand Down
2 changes: 1 addition & 1 deletion content/examples/agentic-support-console/goal.md
Original file line number Diff line number Diff line change
Expand Up @@ -13,7 +13,7 @@ Customer interactions flow from your application's OLTP database (Lakebase Postg

### What to Adapt

Provisioning (manual steps and SQL), seeding, pipeline deploys, reverse sync, and app deploy are documented in the repository’s **`template/README.md`** alongside the code.
Provisioning (manual steps and SQL), seeding, pipeline deploys, reverse sync, and app deploy are documented in the repository’s **`README.md`** alongside the code.

To make this template your own:

Expand Down
2 changes: 1 addition & 1 deletion content/examples/content-moderator/goal.md
Original file line number Diff line number Diff line change
Expand Up @@ -13,7 +13,7 @@ Content moves through a review pipeline backed by Lakebase and AI Gateway:

### What to Adapt

Setup and provisioning are documented in the repository’s **`template/README.md`**.
Setup and provisioning are documented in the repository’s **`README.md`**.

To make this template your own:

Expand Down
2 changes: 1 addition & 1 deletion content/examples/inventory-intelligence/goal.md
Original file line number Diff line number Diff line change
Expand Up @@ -17,7 +17,7 @@ The app should have a **beautiful, polished design** — clean typography, consi

### What to Adapt

Provisioning (Unity Catalog schemas, Lakebase REPLICA IDENTITY), seeding, pipeline deploys, reverse sync, and app deploy are documented in the repository's **`template/README.md`** alongside the code.
Provisioning (Unity Catalog schemas, Lakebase REPLICA IDENTITY), seeding, pipeline deploys, reverse sync, and app deploy are documented in the repository's **`README.md`** alongside the code.

To make this template your own:

Expand Down
2 changes: 1 addition & 1 deletion content/examples/rag-chat/goal.md
Original file line number Diff line number Diff line change
Expand Up @@ -23,7 +23,7 @@ This validates the [AppKit templates system](/docs/appkit/v0/development/templat

### What to Adapt

Setup and provisioning are documented in the repository's **`template/README.md`**.
Setup and provisioning are documented in the repository's **`README.md`**.

To make this template your own:

Expand Down
2 changes: 1 addition & 1 deletion content/examples/saas-tracker/goal.md
Original file line number Diff line number Diff line change
Expand Up @@ -11,7 +11,7 @@ All subscription data lives in a single Lakebase Postgres table and is served di

### What to Adapt

Setup and provisioning are documented in the repository’s **`template/README.md`**.
Setup and provisioning are documented in the repository’s **`README.md`**.

To make this template your own:

Expand Down
2 changes: 1 addition & 1 deletion content/examples/vacation-rentals/goal.md
Original file line number Diff line number Diff line change
Expand Up @@ -11,7 +11,7 @@ The app composes four Databricks primitives behind a single React UI:

### What to Adapt

Setup, environment variables, and bundle deployment are documented in the repository's **`template/README.md`**.
Setup, environment variables, and bundle deployment are documented in the repository's **`README.md`**.

To make this template your own:

Expand Down
6 changes: 2 additions & 4 deletions examples/README.md
Original file line number Diff line number Diff line change
@@ -1,7 +1,5 @@
# DevHub examples

Each example includes a **`template/`** folder: Databricks App (AppKit), optional **`pipelines/`**, **`seed/`**, and **`provisioning/sql/`** when baseline SQL helps.
The runnable example apps that DevHub references (Agentic Support Console, Vacation Rentals, SaaS Tracker, Content Moderator, Inventory Intelligence, RAG Chat) now live in the [databricks/app-templates](https://github.com/databricks/app-templates) repository at `app-templates/<slug>/`.

**Runbook:** use each example’s **`template/README.md`** for manual steps, SQL order, seeding, and deploy.

See **[agentic-support-console/template/README.md](./agentic-support-console/template/README.md)** for a full stack (UC, Lakebase CDC, pipelines, reverse sync).
This folder retains only `vacation-rentals/blog-post-snippets/` — supporting code snippets referenced by the "Building a Vacation Rental Operations App with AppKit" blog post. The runnable Vacation Rentals template itself lives at [app-templates/vacation-rentals](https://github.com/databricks/app-templates/tree/main/vacation-rentals).
Loading