lkrdev/lookml_skills

lookml-model

Use this skill when you need to create or modify a LookML Model file (.model.lkml). This includes defining connections, includes, and configuring model-level settings.

First seen Mar 19, 2026

Installation

$ npx skills add lkrdev/lookml_skills --skill lookml-model

Similar popular skills

Related neighbors and high-traction skills in the same topics — useful to compare before installing.

Also in this package

Other skills from lkrdev/lookml_skills.

npx skills add lkrdev/lookml_skills

Browse all from lkrdev/lookml_skills

More details

Agent compatibility

Declared targets from SKILL.md / docs. Unmarked agents are not listed — the skill may still install via the CLI.

Claude Code Not declared
Cursor Not declared
Codex Not declared
GitHub Copilot Not declared
Windsurf Not declared
Gemini CLI Not declared
Cline Not declared
OpenCode Not declared

Repository health

Stars 13
License LICENSE
Default branch main
Open issues 1
Status Active

Package contents

Files included with this skill beyond the listing page.

  • skill md SKILL.md 4,252 B
  • docs SUMMARY.md 187 B

History

  1. First seen on skills.sh
  2. First recorded snapshot · 57 installs

SKILL.md

Instructions

  1. Define the Model File: A model file generally corresponds to a single database connection and includes Explores.
  2. Required Parameters:

- connection: "connection_name": Must match a connection defined in Looker Admin. - include: "pattern": Specifies which view and dashboard files are available to the model.

  1. Best Practices:

- Includes: Avoid include: ".view" if possible to prevent performance issues and namespace clutter. Use specific paths or wildcards like include: "/views/users.view" or include: "/views/marketing/.view". - Label: Use label: to provide a user-friendly name for the model in the UI. - Week Start Day: Set weekstartday: if the business logic requires a specific start day (e.g., monday). - Datagroups & Caching: ALWAYS use datagroups for caching policies to align Looker with your ETL/ELT processes.

4. Datagroups & Caching

Datagroups are the preferred mechanism for managing caching policies.

  • Definition: Define in the model file.
  • sql_trigger: A query that returns a single value (e.g., max timestamp). If the value changes, the cache is invalidated.
  • maxcacheage: A fallback duration if the trigger doesn't change.
  • persist_with: Apply the datagroup to Explores or the entire model.

Datagroups vs persist_for

Feature Datagroups (Recommended) persist_for
Trigger SQL Query (Smart) Fixed Time (Dumb)
Alignment Aligns with ETL/ELT completion Misaligned (guesswork)
Management Centralized in Model file Scattered in Explores/Models
Use Case Production dashboards, ETL synchronization Ad-hoc queries, Real-time (<1h) needs

[!TIP]
Use persist_for ONLY for real-time dashboards where you need to force a cache refresh every X minutes (e.g., stock tickers, fast-moving inventory). For everything else, use Datagroups.

5. Include Patterns

Use strict patterns to control scope and performance.

Pattern Description Use Case
include: "/views/*.view" All views in specific folder Standard modularity
include: "/views/marketing/users.view" Specific file Precise control, avoids conflicts
include: "/**/*.view" Recursive (all views in project) Avoid unless small project
include: "/dashboards/*.dashboard" All dashboards in folder Importing dashboards

Examples

Basic Model

connection: "thelook"

# Include all views in the views/ folder
include: "/views/*.view"

# Include all dashboards
include: "/*.dashboard"

# Define an Explore (usually better to define in separate files for large projects, but acceptable here for small ones)
explore: orders {
  join: users {
    type: left_outer
    sql_on: ${orders.user_id} = ${users.id} ;;
    relationship: many_to_one
  }
}

Model with Specific Settings

````lookml connection: "snowlooker"

label: "eCommerce Analytics"

Set valid week start day

weekstartday: monday

Include specific folders

include: "/views/finance/.view" include: "/views/marketing/.view"

Model with Datagroup (Best Practice)

connection: "thelook"

# Define the caching policy
datagroup: ecommerce_etl {
  description: "Triggers when the max created_at date changes in the events table."
  sql_trigger: SELECT MAX(created_at) FROM `project.dataset.events` ;;
  max_cache_age: "24 hours" # Fallback
}

# Apply default caching to all Explores in this model
persist_with: ecommerce_etl

include: "/views/*.view"

explore: orders {
  # This explore inherits 'persist_with: ecommerce_etl' from the model default
}

explore: real_time_dashboard {
  # Override with a different policy if needed
  persist_for: "5 minutes"
}