Skip to content

Commit 5f988e9

Browse files
committed
Add Snowflake semantic view skill and contributing guidelines
1 parent d929b71 commit 5f988e9

File tree

3 files changed

+80
-0
lines changed

3 files changed

+80
-0
lines changed

CONTRIBUTING.md

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -103,6 +103,15 @@ You are an expert [domain/role] with deep knowledge in [specific areas].
103103
- [Best practices to follow]
104104
```
105105

106+
### Adding Skills
107+
108+
Skills are self-contained folders in the `skills/` directory that include a `SKILL.md` file (with front matter) and optional bundled assets.
109+
110+
1. **Create a new skill folder**: Run `npm run skill:create -- --name <skill-name> --description "<skill description>"`
111+
2. **Edit `SKILL.md`**: Ensure the `name` matches the folder name (lowercase with hyphens) and the `description` is clear and non-empty
112+
3. **Add optional assets**: Keep bundled assets reasonably sized (under 5MB each) and reference them from `SKILL.md`
113+
4. **Validate and update docs**: Run `npm run skill:validate` and then `npm run build` to update the generated README tables
114+
106115
### Adding Collections
107116

108117
Collections group related prompts, instructions, and chat modes around specific themes or workflows, making it easier for users to discover and adopt comprehensive toolkits.

docs/README.skills.md

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -22,4 +22,5 @@ Skills differ from other primitives by supporting bundled assets (scripts, code
2222

2323
| Name | Description | Bundled Assets |
2424
| ---- | ----------- | -------------- |
25+
| [snowflake-semanticview](../skills/snowflake-semanticview/SKILL.md) | Create, alter, and validate Snowflake semantic views using Snowflake CLI (snow). Use when asked to build or troubleshoot semantic views/semantic layer definitions with CREATE/ALTER SEMANTIC VIEW, to validate semantic-view DDL against Snowflake via CLI, or to guide Snowflake CLI installation and connection setup. | None |
2526
| [webapp-testing](../skills/webapp-testing/SKILL.md) | Toolkit for interacting with and testing local web applications using Playwright. Supports verifying frontend functionality, debugging UI behavior, capturing browser screenshots, and viewing browser logs. | `test-helper.js` |
Lines changed: 70 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,70 @@
1+
---
2+
name: snowflake-semanticview
3+
description: Create, alter, and validate Snowflake semantic views using Snowflake CLI (snow). Use when asked to build or troubleshoot semantic views/semantic layer definitions with CREATE/ALTER SEMANTIC VIEW, to validate semantic-view DDL against Snowflake via CLI, or to guide Snowflake CLI installation and connection setup.
4+
---
5+
6+
# Snowflake Semantic Views
7+
8+
## One-Time Setup
9+
10+
- Verify Snowflake CLI installation by opening a new terminal and running `snow --help`.
11+
- If Snowflake CLI is missing or the user cannot install it, direct them to https://docs.snowflake.com/en/developer-guide/snowflake-cli/installation/installation.
12+
- Configure a Snowflake connection with `snow connection add` per https://docs.snowflake.com/en/developer-guide/snowflake-cli/connecting/configure-connections#add-a-connection.
13+
- Use the configured connection for all validation and execution steps.
14+
15+
## Workflow For Each Semantic View Request
16+
17+
1. Confirm the target database, schema, role, warehouse, and final semantic view name.
18+
2. Confirm the model follows a star schema (facts with conformed dimensions).
19+
3. Draft the semantic view DDL using the official syntax:
20+
- https://docs.snowflake.com/en/sql-reference/sql/create-semantic-view
21+
4. Populate synonyms and comments for each dimension, fact, and metric:
22+
- Read Snowflake table/view/column comments first (preferred source):
23+
- https://docs.snowflake.com/en/sql-reference/sql/comment
24+
- If comments or synonyms are missing, ask whether you can create them, whether the user wants to provide text, or whether you should draft suggestions for approval.
25+
5. Create a temporary validation name (for example, append `__tmp_validate`) while keeping the same database and schema.
26+
6. Always validate by sending the DDL to Snowflake via Snowflake CLI before finalizing:
27+
- Use `snow sql` to execute the statement with the configured connection.
28+
- If flags differ by version, check `snow sql --help` and use the connection option shown there.
29+
7. If validation fails, iterate on the DDL and re-run the validation step until it succeeds.
30+
8. Apply the final DDL (create or alter) using the real semantic view name.
31+
9. Clean up any temporary semantic view created during validation.
32+
33+
## Synonyms And Comments (Required)
34+
35+
- Use the semantic view syntax for synonyms and comments:
36+
37+
```
38+
WITH SYNONYMS [ = ] ( 'synonym' [ , ... ] )
39+
COMMENT = 'comment_about_dim_fact_or_metric'
40+
```
41+
42+
- Treat synonyms as informational only; do not use them to reference dimensions, facts, or metrics elsewhere.
43+
- Use Snowflake comments as the preferred and first source for synonyms and comments:
44+
- https://docs.snowflake.com/en/sql-reference/sql/comment
45+
- If Snowflake comments are missing, ask whether you can create them, whether the user wants to provide text, or whether you should draft suggestions for approval.
46+
- Do not invent synonyms or comments without user approval.
47+
48+
## Validation Pattern (Required)
49+
50+
- Never skip validation. Always execute the DDL against Snowflake with Snowflake CLI before presenting it as final.
51+
- Prefer a temporary name for validation to avoid clobbering the real view.
52+
53+
## Example CLI Validation (Template)
54+
55+
```bash
56+
# Replace placeholders with real values.
57+
snow sql -q "<CREATE OR ALTER SEMANTIC VIEW ...>" --connection <connection_name>
58+
```
59+
60+
If the CLI uses a different connection flag in your version, run:
61+
62+
```bash
63+
snow sql --help
64+
```
65+
66+
## Notes
67+
68+
- Treat installation and connection setup as one-time steps, but confirm they are done before the first validation.
69+
- Keep the final semantic view definition identical to the validated temporary definition except for the name.
70+
- Do not omit synonyms or comments; consider them required for completeness even if optional in syntax.

0 commit comments

Comments
 (0)