---
name: native-app-provider
description: "Use for **ALL** Snowflake Native App Framework tasks: creating app packages, writing manifest files, writing setup scripts, sharing data, testing, versioning, publishing, configuring telemetry and health status reporting, monitoring app health and lifecycle events, setting up event sharing, and debugging apps. This is the **REQUIRED** entry point for any native app work. DO NOT attempt native app development manually - invoke this skill first. Triggers: native app, app package, application package, manifest.yml, setup script, CREATE APPLICATION, Snowflake marketplace, listing, native app framework, build native app, walk me through, guide me, get started, add version, register version, add patch, release channel, release directive, publish app, publish version, upgrade consumers, telemetry, health status, SYSTEM$REPORT_HEALTH_STATUS, log_level, trace_level, event definitions, event sharing, APPLICATION_STATE, lifecycle events, monitor app, debug app, observability."
---

# Snowflake Native App Framework

This is a **routing skill**. It detects the user's intent and directs you to the correct sub-skill. You **MUST** load the sub-skill before doing any work — do NOT attempt native app tasks using only the information on this page.

## Key Concepts

- **Application Package**: Encapsulates the data content, application logic, metadata, and setup script required by an application. Also contains version and patch information
- **Manifest File** (`manifest.yml`): Defines configuration and setup properties required by the application, including the location of the setup script, versions, privileges, and references
- **Setup Script**: Contains SQL statements that run when a consumer installs or upgrades an application. Location is specified in the manifest file
- **Snowflake Native App**: The database object created in the consumer account when they install the application

## Workflow Rules (All Sub-Skills)

These rules apply to **every** sub-skill loaded from the routing table below. Follow them regardless of which sub-skill you are executing.

### Rule 1: Generate a Task List Before Proceeding

Before executing any steps in a sub-skill, generate a numbered task list of the steps you plan to take and present it to the user for confirmation. **Do NOT begin work until the user approves the plan.** This educates the user on what will happen and surfaces potential issues early. Example:

```
Here's what I'll do:
1. Read manifest.yml and setup script
2. Add CREATE EXTERNAL ACCESS INTEGRATION privilege to manifest
3. Generate network rule and EAI in setup script
4. Generate app specification
5. Validate all objects

Shall I proceed?
```

### Rule 2: Generate a Task History After Completion

After completing all steps in a sub-skill, present a **task history summary** to the user. Include:

- **Steps taken**: Numbered checklist of what was done, with pass/fail status for each
- **Configuration**: Key names, roles, and settings used
- **Issues encountered**: Any errors hit and how they were resolved (or "None")
- **Next steps**: What the user should do next

### Rule 3: Generate a Knowledge Handoff for Issues

If any issues were encountered and resolved during execution, include a **knowledge handoff** section in the task history summary:

- **Issue & Resolution table**: What went wrong, root cause, and fix applied
- **Gotchas for future work**: Non-obvious lessons learned during this session
- **Key decisions made**: Approach selections or design choices that were made

## Routing Table

**Before starting any work**, scan the user's full request and identify ALL matching intents from the table below. If the request spans multiple intents (e.g., sharing data AND deploying a version), load each relevant sub-skill before performing that phase of work — do NOT attempt SQL from memory.

| Intent | Triggers | Sub-Skill to Load |
|--------|----------|--------------------|
| **Setup** — Create a new app from scratch | "create native app", "new app package", "set up app", "write manifest", "setup script", "build native app", "walk me through", "get started" | `setup-app/SKILL.md` |
| **Shared Data** — Share tables/views with consumers | "share data", "share table", "secure view", "grant data", "external table", "Iceberg table", "REFERENCE_USAGE", "shared content", "data content" | `shared-data/SKILL.md` |
| **Deploy & Test** — Deploy files and test the app | "deploy app", "test app", "install app", "development mode", "upgrade app", "create application", "test from version", "test from stage" | `deploy-test/SKILL.md` |
| **Debug App** — Debug an app in a developer account | "debug app", "debug mode", "session debug", "inspect objects", "query history", "redaction", "DISABLE_APPLICATION_REDACTION", "SYSTEM$BEGIN_DEBUG_APPLICATION", "debug setup script", "see all objects", "view app queries", "reproduce consumer issues" | `debug-app/SKILL.md` |
| **Version & Release** — Register versions, manage release channels, publish | "register version", "add version", "add patch", "release channel", "publish app", "release directive", "upgrade consumers", "publish to customers" | `app-version-release/SKILL.md` |
| **Privilege Config** — Configure auto-granted privileges for the app | "privilege", "auto-grant", "manifest privileges", "app permissions", "privilege configuration", "consumer privileges", "missing privileges", "request privileges", "configure privileges" | `request-account-privilege/SKILL.md` |
| **External Access Integration** — Configure external API access (EAI) | "external access integration", "EAI", "external API", "network rule", "app spec EAI", "consumer EAI", "external access", "egress", "outbound API", "host_ports", "allowed_network_rules", "configuration_callback" | `request-external-access-integration/SKILL.md` |
| **Security Integration** — Configure OAuth / API authentication | "security integration", "OAuth", "API authentication", "CLIENT_CREDENTIALS", "AUTHORIZATION_CODE", "JWT_BEARER", "OAuth token endpoint", "OAuth scopes", "CREATE SECURITY INTEGRATION" | `request-security-integration/SKILL.md` |
| **Object Access Request** — Request access to consumer objects | "object reference", "consumer table", "consumer object", "access consumer", "register_callback", "SYSTEM$REFERENCE", "request reference", "bind object", "reference definition", "consumer warehouse", "consumer view", "access existing object" | `request-object-access/SKILL.md` |
| **Configure Telemetry & Health** — Configure telemetry levels, event definitions, health reporting, object-level overrides | "health status", "logging", "tracing", "telemetry", "event definitions", "log_level", "trace_level", "metric_level", "SYSTEM$REPORT_HEALTH_STATUS", "configure telemetry", "health check", "health update" | `configure-telemetry-event-and-health-update/SKILL.md` |
| **Monitor App Telemetry & Status** — Query APPLICATION_STATE, lifecycle events, consumer health | "APPLICATION_STATE", "lifecycle events", "monitor app", "query health", "check app status", "upgrade tracking", "audit trail", "consumer health", "app monitoring" | `monitor-app-telemetry-event-and-status/SKILL.md` |
| **Configure Event Sharing** — Set up event accounts, event tables, event definitions, and query shared consumer telemetry | "event sharing", "event accounts", "event sharing setup", "SYSTEM$SET_EVENT_SHARING_ACCOUNT_FOR_REGION", "provider event table", "event account region", "configure event sharing", "receive consumer telemetry" | `configure-event-sharing/SKILL.md` |
| **Listing** — Share data back to provider or third-party accounts | "listing", "share data back", "CREATE SHARE", "CREATE LISTING", "data sharing", "compliance reporting", "telemetry", "shareback", "target accounts", "cross-region sharing", "auto-fulfillment" | `request-listing/SKILL.md` |
| **Manifest Reference** — Look up manifest field details | "manifest reference", "manifest fields", "manifest_version", "artifacts field", "privileges field", "references field" | `references/manifest-reference.md` |

**If the intent is ambiguous** or the user seems new to native apps, ask the user to clarify before proceeding.