About project definition files

When developing Streamlit or Snowpark applications you often work with multiple files and objects, be it python file or stored procedures. Organizing this in a clear and concise way is very important for smooth development experience. That’s the reason why Snowflake CLI is using the concept of project definition files.

A project definition file (usually named snowflake.yml) is a file containing information about the type of the project you are working on as well as information about the Snowflake objects you are developing. The following snowflake.yml example shows a Snowpark project with a UDF and a stored procedure.

definition_version: 1
  project_name: "my_snowpark_project"
  stage_name: "dev_deployment"
  src: "app/"

    - name: test_function
      handler: "functions.hello_function"
      signature: ""
      returns: string

    - name: hello_procedure
      handler: "procedures.hello_procedure"
        - name: "name"
          type: "string"
      returns: string

Each project type requires specific information about what you are building. Snowflake CLI currently supports the following projects types:


Files inside a project directory are processed by Snowflake CLI and could be uploaded to Snowflake when executing other snow commands. You should use caution when putting any sensitive information inside files in a project directory.