{"allowedRenditionsWidth":["320","480","640","768","960","1200","1440","1920"],"templateName":"quickstart-page-template","canonicalLink":"https://www.snowflake.com/en/developers/guides/get-started-coco-vscode-extension/","robotsTags":[],"cssClassNames":"page basicpage summit-page","language":"en","title":"Getting Started with CoCo in the Snowflake VS Code Extension","analyticsPageType":"quickstart-page-template","analyticsCategory":"general","analyticsSubCategory":"","excludeFromAnalytics":false,":mappedPath":"/en/developers/guides/get-started-coco-vscode-extension/",":type":"snowflake-site/components/structure/page","analyticsContentTags":["snowflake-site:taxonomy/solution-center/certification/quickstart"],"analyticsEnabled":true,"isPasswordProtected":false,":items":{"root":{"gridClassNames":"aem-Grid aem-Grid--12 aem-Grid--default--12","columnClassNames":{"markup_editor_1950346551":"aem-GridColumn aem-GridColumn--default--12","experiencefragment-banner":"aem-GridColumn aem-GridColumn--default--12","experiencefragment-header":"aem-GridColumn aem-GridColumn--default--12","responsivegrid":"aem-GridColumn aem-GridColumn--default--12","experiencefragment-footer":"aem-GridColumn aem-GridColumn--default--12","modal_container":"aem-GridColumn aem-GridColumn--default--12","markup_editor":"aem-GridColumn aem-GridColumn--default--12"},"columnCount":12,":items":{"experiencefragment-banner":{"id":"experiencefragment-6d48d4c291","localizedFragmentVariationPath":"/content/experience-fragments/snowflake-site/language-masters/en/site/pushdown-banner/master/jcr:content","configured":true,":type":"snowflake-site/components/experiencefragment","xfModelPath":"/content/experience-fragments/snowflake-site/language-masters/en/site/pushdown-banner/master.xfmodel.json"},"experiencefragment-header":{"id":"experiencefragment-88f13087f7","localizedFragmentVariationPath":"/content/experience-fragments/snowflake-site/language-masters/en/site/mega-nav-header/master/jcr:content","configured":true,":type":"snowflake-site/components/experiencefragment","xfModelPath":"/content/experience-fragments/snowflake-site/language-masters/en/site/mega-nav-header/master.xfmodel.json","languageNavPath":"/content/snowflake-site/global/en/developers/guides/get-started-coco-vscode-extension.languagenav.json"},"markup_editor_1950346551":{"id":"markup-editor-eb1a4f2fb5","title":" ","cssContent":".snowflake-markdown-table code[class*=language-],.snowflake-markdown-table code[class*=language-],.snowflake-markdown .snowflake-text code[class*=language-],.snowflake-markdown .snowflake-text pre[class*=language-]{background-color:rgba(var(--ui-12-rgb),.5);color:var(--text-01);text-shadow:none;padding:var(--spacing-00);border-radius:var(--spacing-00);font-size:smaller}",":type":"snowflake-site/components/markup-editor","isGSAPEnabled":false},"responsivegrid":{"gridClassNames":"aem-Grid aem-Grid--12 aem-Grid--default--12","columnClassNames":{"quickstart_hero":"aem-GridColumn aem-GridColumn--default--12","flexible_column_cont":"aem-GridColumn aem-GridColumn--default--12","markup_editor":"aem-GridColumn aem-GridColumn--default--12"},"columnCount":12,":items":{"quickstart_hero":{"id":"quickstart-hero-0eb86b71f5","isDeveloperGuidesPage":false,"quickstartHeroFirstCertifiedTag":{"tagText":"Quickstart","tagColor":"#29B5E8","tagPath":"/content/cq:tags/snowflake-site/taxonomy/solution-center/certification/quickstart","tagIcon":""},"quickstartHeroTitle":{"lines":["Getting Started with CoCo in the Snowflake VS Code Extension"],"type":"heading2",":type":"snowflake-site/components/title-v2"},"quickstartHeroAuthor":"Gilberto Hernandez, Snowflake CoCo","quickstartHeroBreadcrumbs":[{"title":"Getting Started with CoCo in the Snowflake VS Code Extension","url":"https://www.snowflake.com/content/snowflake-site/global/en/developers/guides/get-started-coco-vscode-extension","currentPage":true},{"title":"Guides","url":"https://www.snowflake.com/content/snowflake-site/global/en/developers/guides","currentPage":false},{"title":"Snowflake for Developers","url":"https://www.snowflake.com/content/snowflake-site/global/en/developers","currentPage":false}],"quickstartHeroForkRepoLink":{"id":"button-f0dfcc6af1","showOutboundIcon":false,"buttonLink":{"valid":true,"attributes":{"target":"_blank"},"url":"https://github.com/Snowflake-Labs/sfquickstarts/tree/master/site/sfguides/src/get-started-coco-vscode-extension"},"linkTargetContentType":"GENERIC",":type":"snowflake-site/components/button","linkType":"SNOWFLAKE_EXTERNAL","text":"Fork Repo"},":type":"snowflake-site/components/quickstart/quickstart-hero","fragmentPath":"/content/dam/snowflake-site/en/content-fragments/quickstarts/get-started-coco-vscode-extension"},"flexible_column_cont":{"id":"flexible-column-container-2896bf8423","propertiesId":"quickstart-template-main-flexible-container","type":"2-column-75-25","alignColumns":"top","containerMaxWidth":"extra-large","topPadding":"none","bottomPadding":"none","spaceBetween":"small","reverseOnMobile":false,"carouselOnMobile":false,"backgroundImageOption":"none","flexible_column_content_container_1":{"layout":"SIMPLE","id":"container-4e9e1017ec",":type":"snowflake-site/components/flexible-column-container/flexible-column-content-container",":items":{"contentfragment":{"id":"contentfragment-fa537da595","description":"","paragraphs":["&lt;!-- ------------------------ --&gt;\n","\u003Ch2\u003EOverview\u003C/h2\u003E\n","\u003Cp\u003ESnowflake CoCo (Cortex Code) is an AI-powered coding agent with deep Snowflake expertise. It can execute SQL, edit files, search your codebase, and run multi-step workflows against your Snowflake account. CoCo in the Snowflake VS Code extension puts that agentic experience directly in the same window where you're already writing code, right alongside the extension's SQL editor, object explorer, and other tools.\u003C/p\u003E\n","\u003Cp\u003EIn this guide, you'll install the Snowflake extension, open CoCo, and work through a series of interactions to get a feel for CoCo in VS Code. By the end, you'll have built a reusable data quality monitoring procedure entirely through natural-language conversation with CoCo. We'll also cover some options for configuring CoCo in VS Code.\u003C/p\u003E\n\u003Cblockquote\u003E\n","\u003Cp\u003E\u003Cstrong\u003ENote:\u003C/strong\u003E CoCo in the VS Code extension also works in Cursor. Simply install the Snowflake extension from the Cursor marketplace the same way you would in VS Code. Everything in this guide applies to both editors.\u003C/p\u003E\n\u003C/blockquote\u003E\n","\u003Ch3\u003EWhat You'll Learn\u003C/h3\u003E\n\u003Cul\u003E\u003Cli\u003EHow to install the Snowflake VS Code extension and open CoCo\u003C/li\u003E\u003Cli\u003EHow to attach files and workspace context to CoCo using \u003Ccode\u003E@\u003C/code\u003E references\u003C/li\u003E\u003Cli\u003EHow to execute SQL through CoCo and iterate on queries conversationally\u003C/li\u003E\u003Cli\u003EHow to have CoCo generate, propose, and deploy a stored procedure\u003C/li\u003E\u003Cli\u003EHow to use skills in the VS Code extension\u003C/li\u003E\u003Cli\u003EHow to configure several parameters for CoCo within VS Code\u003C/li\u003E\u003C/ul\u003E\n","\u003Ch3\u003EWhat You'll Need\u003C/h3\u003E\n\u003Cul\u003E\u003Cli\u003EA \u003Ca href=\"https://signup.snowflake.com/?utm_source=snowflake-devrel&amp;utm_medium=developer-guides&amp;utm_cta=developer-guides\"\u003ESnowflake account\u003C/a\u003E (trial or existing)\u003C/li\u003E\u003Cli\u003EVisual Studio Code installed (or Cursor)\u003C/li\u003E\u003Cli\u003EA Snowflake role with access to at least one database, schema, and warehouse\u003C/li\u003E\u003C/ul\u003E\n","\u003Ch3\u003EWhat You'll Build\u003C/h3\u003E\n\u003Cul\u003E\u003Cli\u003EA stored procedure that monitors a table for data quality issues (null values, duplicates, stale data) &ndash; generated entirely through conversation with CoCo within the Snowflake VS Code Extension\u003C/li\u003E\u003C/ul\u003E\n&lt;!-- ------------------------ --&gt;\n","\u003Ch2\u003EInstall the Snowflake VS Code Extension\u003C/h2\u003E\n","\u003Cp\u003ELet's start by installing the Snowflake extension and signing in to your account.\u003C/p\u003E\n","\u003Ch3\u003EInstall from the Marketplace\u003C/h3\u003E\n\u003Col\u003E\u003Cli\u003EOpen VS Code and select \u003Cstrong\u003ECode\u003C/strong\u003E &gt; \u003Cstrong\u003ESettings\u003C/strong\u003E &gt; \u003Cstrong\u003EExtensions\u003C/strong\u003E\u003C/li\u003E\u003Cli\u003EIn the search field, type \u003Cstrong\u003ESnowflake\u003C/strong\u003E.\u003C/li\u003E\u003Cli\u003ELook for the extension with the Snowflake badge (a check mark in a blue circle) and select \u003Cstrong\u003EInstall\u003C/strong\u003E.\u003C/li\u003E\u003C/ol\u003E\n","\u003Cp\u003EAfter installation completes, you'll see the Snowflake icon in the \u003Cstrong\u003EActivity Bar\u003C/strong\u003E of VS Code.\u003C/p\u003E\n","\u003Cp\u003E\u003Cimg src=\"https://www.snowflake.com/content/dam/snowflake-site/developers/guides/get-started-coco-vscode-extension/install-snowflake.png\" alt=\"Installation\"\u003E\u003C/p\u003E\n&lt;!-- ------------------------ --&gt;\n","\u003Ch2\u003ESign in to Snowflake\u003C/h2\u003E\n","\u003Cp\u003ENext, sign in to Snowflake using the extension:\u003C/p\u003E\n\u003Col\u003E\u003Cli\u003ESelect the Snowflake icon in the \u003Cstrong\u003EActivity Bar\u003C/strong\u003E.\u003C/li\u003E\u003Cli\u003EEnter your \u003Cstrong\u003EAccount Identifier\u003C/strong\u003E (or the URL you use to connect to Snowflake) and select \u003Cstrong\u003EContinue\u003C/strong\u003E.\u003C/li\u003E\u003Cli\u003EChoose your authentication method:\n\u003Cul\u003E\u003Cli\u003E\u003Cstrong\u003ESingle sign-on\u003C/strong\u003E &ndash; uses your SSO credentials\u003C/li\u003E\u003Cli\u003E\u003Cstrong\u003EUsername/password\u003C/strong\u003E &ndash; your Snowflake username and password\u003C/li\u003E\u003Cli\u003E\u003Cstrong\u003EKey Pair\u003C/strong\u003E &ndash; uses key-pair authentication\u003C/li\u003E\u003C/ul\u003E\n\u003C/li\u003E\u003Cli\u003EEnter your credentials and select \u003Cstrong\u003ESign in\u003C/strong\u003E.\u003C/li\u003E\u003C/ol\u003E\n","\u003Cp\u003EAfter a successful sign in, the sidebar displays your account information, your default role, the \u003Cstrong\u003EObject Explorer\u003C/strong\u003E with your databases, and your \u003Cstrong\u003EQuery History\u003C/strong\u003E.\u003C/p\u003E\n","\u003Cp\u003E\u003Cimg src=\"https://www.snowflake.com/content/dam/snowflake-site/developers/guides/get-started-coco-vscode-extension/login.png\" alt=\"Sign in\"\u003E\u003C/p\u003E\n&lt;!-- ------------------------ --&gt;\n","\u003Ch2\u003EOpen CoCo and Run Your First Prompt\u003C/h2\u003E\n","\u003Cp\u003ENow that you're signed in, let's open CoCo and have your first conversation.\u003C/p\u003E\n","\u003Ch3\u003EOpen the CoCo agent chat panel\u003C/h3\u003E\n","\u003Cp\u003EStart by opening CoCo in the VS Code agent chat panel:\u003C/p\u003E\n\u003Col\u003E\u003Cli\u003E\n","\u003Cp\u003EIn the menu bar, click on \u003Cstrong\u003EView\u003C/strong\u003E, then click \u003Cstrong\u003EChat\u003C/strong\u003E\u003C/p\u003E\n\u003C/li\u003E\u003Cli\u003E\n","\u003Cp\u003EA chat panel will appear. Click on \u003Cstrong\u003ECoCo\u003C/strong\u003E at the top of the chat panel to select the CoCo agent chat panel.\u003C/p\u003E\n\u003C/li\u003E\u003C/ol\u003E\n","\u003Cp\u003EAlternatively, you can open CoCo from within files in your VS Code workspace. At the top of a file, look for the CoCo icon. Click on the icon to open CoCo in the agent chat panel.\u003C/p\u003E\n","\u003Cp\u003EYou can also open CoCo from the command palette (\u003Ccode\u003ECoCo: Open\u003C/code\u003E or \u003Ccode\u003ECoCo: Focus on Chat view\u003C/code\u003E), or with the keyboard shortcut \u003Cstrong\u003EShift\u003C/strong\u003E+\u003Cstrong\u003ECmd\u003C/strong\u003E+\u003Cstrong\u003EL\u003C/strong\u003E on macOS (\u003Cstrong\u003EShift\u003C/strong\u003E+\u003Cstrong\u003ECtrl\u003C/strong\u003E+\u003Cstrong\u003EL\u003C/strong\u003E on Windows/Linux).\u003C/p\u003E\n","\u003Cp\u003EThat's it! You now have CoCo ready to go in VS Code. You'll see a chat interface with a text input at the bottom. This is where you'll interact with CoCo. A new chat session starts automatically, scoped to your current VS Code workspace directory.\u003C/p\u003E\n","\u003Cp\u003E\u003Cimg src=\"https://www.snowflake.com/content/dam/snowflake-site/developers/guides/get-started-coco-vscode-extension/coco_agent_panel.png\" alt=\"Open chat panel\"\u003E\u003C/p\u003E\n","\u003Ch3\u003EAsk your first question\u003C/h3\u003E\n","\u003Cp\u003EType the following prompt and press Enter:\u003C/p\u003E\n\u003Cpre\u003E\u003Ccode class=\"language-text\"\u003EWhat databases do I have access to? Show me the top 5 by size.\n\u003C/code\u003E\u003C/pre\u003E\n","\u003Cp\u003ECoCo will propose running a SQL query against your account. You'll see a permission prompt asking you to approve the action. Select \u003Cstrong\u003EAllow once\u003C/strong\u003E (or \u003Cstrong\u003EAllow for session\u003C/strong\u003E if you'd like to skip future approvals for this session).\u003C/p\u003E\n","\u003Cp\u003EAfter approval, CoCo executes the query and displays the results directly in the chat panel. You should see a table listing your databases with their sizes.\u003C/p\u003E\n","\u003Cp\u003ENote that you can specify what mode CoCo should run in directly from the chat panel:\u003C/p\u003E\n\u003Cul\u003E\u003Cli\u003E\n","\u003Cp\u003E\u003Cstrong\u003EAgent\u003C/strong\u003E (the default; CoCo can propose actions and asks you to approve tool calls)\u003C/p\u003E\n\u003C/li\u003E\u003Cli\u003E\n","\u003Cp\u003E\u003Cstrong\u003EPlan\u003C/strong\u003E (CoCo produces a plan for you to review before it touches anything)\u003C/p\u003E\n\u003C/li\u003E\u003Cli\u003E\n","\u003Cp\u003E\u003Cstrong\u003EBypass\u003C/strong\u003E (CoCo executes without per-action approval; use with care).\u003C/p\u003E\n\u003C/li\u003E\u003C/ul\u003E\n","\u003Cp\u003EThis guide uses the default Agent mode throughout.\u003C/p\u003E\n","\u003Cp\u003EGreat &ndash; you've now run the core building loop with CoCo in VS Code: you ask, CoCo proposes, you approve, results appear. All within VS Code, against your connected Snowflake account.\u003C/p\u003E\n&lt;!-- ------------------------ --&gt;\n","\u003Ch2\u003EUse Editor Context with CoCo\u003C/h2\u003E\n","\u003Cp\u003EThere are a few ways to point CoCo at what you want it to read. Let's cover a few approaches.\u003C/p\u003E\n","\u003Ch3\u003EAsk CoCo from the editor\u003C/h3\u003E\n","\u003Cp\u003EWhen you have a file open, you'll see an \u003Cstrong\u003EAsk CoCo\u003C/strong\u003E button directly above blocks of code. Click it to send the code block to CoCo as a prompt. This is the fastest way to get CoCo's input on code blocks you're looking at &ndash; one click, no typing required.\u003C/p\u003E\n","\u003Cp\u003E\u003Cimg src=\"https://www.snowflake.com/content/dam/snowflake-site/developers/guides/get-started-coco-vscode-extension/ask_coco.png\" alt=\"Ask CoCo\"\u003E\u003C/p\u003E\n","\u003Ch3\u003EAdd a selection via right-click\u003C/h3\u003E\n","\u003Cp\u003EIf you want to send specific lines of code to CoCo, select the lines in your editor, right-click, and choose \u003Cstrong\u003ECoCo: Add selection to chat\u003C/strong\u003E. The selected text appears in the chat input as attached context, ready for you to type a follow-up question.\u003C/p\u003E\n","\u003Cp\u003E\u003Cimg src=\"https://www.snowflake.com/content/dam/snowflake-site/developers/guides/get-started-coco-vscode-extension/add_selection.png\" alt=\"Add selection\"\u003E\u003C/p\u003E\n","\u003Ch3\u003EAttach context with @\u003C/h3\u003E\n","\u003Cp\u003EYou can attach context from your workspace into the CoCo chat panel by using the \u003Ccode\u003E@\u003C/code\u003E character. You can use it in a variety of ways:\u003C/p\u003E\n\u003Cul\u003E\u003Cli\u003E\n","\u003Cp\u003EYou can attach a single file by typing \u003Ccode\u003E@\u003C/code\u003E and then selecting the specific file\u003C/p\u003E\n\u003C/li\u003E\u003Cli\u003E\n","\u003Cp\u003EYou can attach more than one file by using \u003Ccode\u003E@\u003C/code\u003E multiple times in the same prompt\u003C/p\u003E\n\u003C/li\u003E\u003Cli\u003E\n","\u003Cp\u003EYou can attach entire directories if you want CoCo to consider a broader project context &ndash; for example, a \u003Cstrong\u003Edbt_project.yml\u003C/strong\u003E alongside your SQL models, or a \u003Cstrong\u003EREADME.md\u003C/strong\u003E that describes your pipeline architecture.\u003C/p\u003E\n\u003C/li\u003E\u003Cli\u003E\n","\u003Cp\u003E\u003Ccode\u003E@\u003C/code\u003E also searches your Snowflake account &ndash; you can attach databases, schemas, tables, and other objects as context, not just workspace files.\u003C/p\u003E\n\u003C/li\u003E\u003C/ul\u003E\n","\u003Cp\u003ELet's try the first approach out.\u003C/p\u003E\n\u003Col\u003E\u003Cli\u003ECreate a new file in your workspace called \u003Cstrong\u003Esample_query.sql\u003C/strong\u003E and paste the following:\u003C/li\u003E\u003C/ol\u003E\n\u003Cpre\u003E\u003Ccode class=\"language-sql\"\u003ESELECT\n    DATE_TRUNC('month', created_at) AS month,\n    COUNT(*) AS total_orders,\n    SUM(amount) AS total_revenue,\n    AVG(amount) AS avg_order_value\nFROM orders\nGROUP BY 1\nORDER BY 1 DESC\nLIMIT 12;\n\u003C/code\u003E\u003C/pre\u003E\n\u003Col start=\"2\"\u003E\u003Cli\u003E\n","\u003Cp\u003ESwitch to the CoCo panel. In the chat input, type \u003Ccode\u003E@\u003C/code\u003E and then start typing \u003Cstrong\u003Esample_query.sql\u003C/strong\u003E &ndash; CoCo will suggest the file. Select it to attach it as context.\u003C/p\u003E\n\u003C/li\u003E\u003Cli\u003E\n","\u003Cp\u003ENow type your question:\u003C/p\u003E\n\u003C/li\u003E\u003C/ol\u003E\n\u003Cpre\u003E\u003Ccode class=\"language-text\"\u003ECan you explain what this query does and suggest improvements?\n\u003C/code\u003E\u003C/pre\u003E\n","\u003Cp\u003ECoCo reads the attached file and responds with a detailed breakdown. Here's an example of what you'll get back:\u003C/p\u003E\n\u003Cul\u003E\u003Cli\u003E\u003Cstrong\u003EWhat it does:\u003C/strong\u003E A monthly order summary for the last 12 months, calculating \u003Ccode\u003Etotal_orders\u003C/code\u003E, \u003Ccode\u003Etotal_revenue\u003C/code\u003E, and \u003Ccode\u003Eavg_order_value\u003C/code\u003E per month.\u003C/li\u003E\u003Cli\u003E\u003Cstrong\u003E\u003Ccode\u003ELIMIT 12\u003C/code\u003E doesn't guarantee &quot;last 12 months&quot;\u003C/strong\u003E &ndash; it returns the 12 most recent months with data, which could span more than a year if some months have no orders. CoCo suggests an explicit date filter with \u003Ccode\u003EDATEADD\u003C/code\u003E.\u003C/li\u003E\u003Cli\u003E\u003Cstrong\u003ENULLs silently skew results\u003C/strong\u003E &ndash; \u003Ccode\u003ECOUNT(*)\u003C/code\u003E counts rows with NULL \u003Ccode\u003Eamount\u003C/code\u003E, but \u003Ccode\u003ESUM\u003C/code\u003E and \u003Ccode\u003EAVG\u003C/code\u003E ignore them. CoCo flags this mismatch.\u003C/li\u003E\u003Cli\u003E\u003Cstrong\u003EMissing rounding\u003C/strong\u003E &ndash; CoCo suggests \u003Ccode\u003EROUND(SUM(amount), 2)\u003C/code\u003E and \u003Ccode\u003EROUND(AVG(amount), 2)\u003C/code\u003E.\u003C/li\u003E\u003Cli\u003E\u003Cstrong\u003ENo order status filter\u003C/strong\u003E &ndash; if the table has a \u003Ccode\u003Estatus\u003C/code\u003E column, cancelled or refunded orders may be inflating counts.\u003C/li\u003E\u003Cli\u003E\u003Cstrong\u003EAdd a median\u003C/strong\u003E &ndash; \u003Ccode\u003EAVG\u003C/code\u003E is sensitive to outliers. CoCo suggests \u003Ccode\u003EMEDIAN(amount)\u003C/code\u003E since Snowflake supports it natively.\u003C/li\u003E\u003Cli\u003E\u003Cstrong\u003EFully qualify the table\u003C/strong\u003E &ndash; \u003Ccode\u003EFROM orders\u003C/code\u003E relies on the session's default database/schema. CoCo recommends a full path.\u003C/li\u003E\u003C/ul\u003E\n","\u003Cp\u003EThis is a good example of what CoCo brings to the table: it doesn't just explain the SQL, it identifies subtle correctness issues that are easy to miss during development.\u003C/p\u003E\n&lt;!-- ------------------------ --&gt;\n","\u003Ch2\u003EExecute SQL Through CoCo\u003C/h2\u003E\n","\u003Cp\u003ESo far you've asked CoCo questions and let it read local files. CoCo can also run queries against your Snowflake account and iterate on results conversationally.\u003C/p\u003E\n","\u003Ch3\u003EExplore a table\u003C/h3\u003E\n","\u003Cp\u003EAsk CoCo to help you understand a table in your account:\u003C/p\u003E\n\u003Cpre\u003E\u003Ccode class=\"language-text\"\u003EDescribe the SNOWFLAKE_SAMPLE_DATA.TPCH_SF1.ORDERS table. What columns does it have and how many rows?\n\u003C/code\u003E\u003C/pre\u003E\n","\u003Cp\u003ECoCo will run \u003Ccode\u003EDESCRIBE TABLE\u003C/code\u003E and \u003Ccode\u003ESELECT COUNT(*)\u003C/code\u003E (with your approval), then present the results with an explanation of each column.\u003C/p\u003E\n","\u003Ch3\u003EIterate on a query\u003C/h3\u003E\n","\u003Cp\u003ENow let's build a query conversationally:\u003C/p\u003E\n\u003Cpre\u003E\u003Ccode class=\"language-text\"\u003EWrite me a query that shows the top 10 customers by total order amount from that orders table, including their order count and average order value.\n\u003C/code\u003E\u003C/pre\u003E\n","\u003Cp\u003ECoCo generates the SQL and offers to run it. After you approve, results appear in a grid within the chat panel. You can copy values or download the results from that grid.\u003C/p\u003E\n","\u003Cp\u003EIf you want to refine the results, just continue the conversation:\u003C/p\u003E\n\u003Cpre\u003E\u003Ccode class=\"language-text\"\u003EAdd a filter so we only see customers who placed at least 5 orders.\n\u003C/code\u003E\u003C/pre\u003E\n","\u003Cp\u003ECoCo modifies the query and runs the updated version. You're building queries through dialogue, and each iteration takes a single follow-up message.\u003C/p\u003E\n","\u003Ch3\u003EAnalyze query results\u003C/h3\u003E\n","\u003Cp\u003ECoCo can also read the result grid from queries you've already run, including queries you executed directly in the extension's SQL editor. This turns the result grid into another form of context, without needing to copy rows or errors into the chat. Here are a couple of interactions you can route to CoCo directly from the results grid:\u003C/p\u003E\n\u003Cul\u003E\u003Cli\u003E\u003Cstrong\u003EAnalyze\u003C/strong\u003E &ndash; appears on a successful result set. Click it to send the results to CoCo for interpretation, summarization, or follow-up questions.\u003C/li\u003E\u003C/ul\u003E\n","\u003Cp\u003E\u003Cimg src=\"https://www.snowflake.com/content/dam/snowflake-site/developers/guides/get-started-coco-vscode-extension/analyze_button.png\" alt=\"Analyze button\"\u003E\u003C/p\u003E\n\u003Cul\u003E\u003Cli\u003E\u003Cstrong\u003EFix with CoCo\u003C/strong\u003E &ndash; appears when a query returns a SQL compilation or execution error. Click it to hand the failing query and error message to CoCo so it can diagnose and propose a fix.\u003C/li\u003E\u003C/ul\u003E\n","\u003Cp\u003E\u003Cimg src=\"https://www.snowflake.com/content/dam/snowflake-site/developers/guides/get-started-coco-vscode-extension/fix_with_coco.png\" alt=\"Fix with CoCo\"\u003E\u003C/p\u003E\n&lt;!-- ------------------------ --&gt;\n","\u003Ch2\u003EBuild a Data Quality Monitor\u003C/h2\u003E\n","\u003Cp\u003EWith the basics covered, let's build something a little more real. We'll ask CoCo to generate a stored procedure that checks a table for common data quality issues &ndash; null values, duplicate keys, and stale data. This demonstrates the full loop: natural language to code generation to diff review to deployment.\u003C/p\u003E\n","\u003Ch3\u003ESet up the context\u003C/h3\u003E\n","\u003Cp\u003EFirst, let's create a table to monitor. Ask CoCo:\u003C/p\u003E\n\u003Cpre\u003E\u003Ccode class=\"language-text\"\u003ECreate a database called COCO_VS_CODE_QUICKSTART_DB with a schema called MONITORING. \nThen create a sample table called CUSTOMER_EVENTS with columns: \nevent_id (VARCHAR), customer_id (VARCHAR), event_type (VARCHAR), \nevent_timestamp (TIMESTAMP_NTZ), amount (NUMBER(10,2)). \nInsert 100 sample rows with some intentional quality issues &ndash; \na few null customer_ids, some duplicate event_ids, and a few rows \nwith event_timestamp from over 30 days ago.\n\u003C/code\u003E\u003C/pre\u003E\n","\u003Cp\u003ECoCo will propose the SQL statements, ask for approval, and execute them. You should see confirmation messages as each object is created and the data is inserted.\u003C/p\u003E\n","\u003Ch3\u003EGenerate the data quality procedure\u003C/h3\u003E\n","\u003Cp\u003ENow ask CoCo to build the monitoring procedure:\u003C/p\u003E\n\u003Cpre\u003E\u003Ccode class=\"language-text\"\u003ECreate a stored procedure called CHECK_DATA_QUALITY in COCO_VS_CODE_QUICKSTART_DB.MONITORING \nthat accepts a table name as input and checks for:\n\n1. Null values in each column (report count and percentage)\n2. Duplicate values in the first column (assumed to be the primary key)\n3. Data freshness - flag if the most recent timestamp column value is older than 24 hours\n\nThe procedure should return a structured result with all findings.\nWrite it as a SQL file in my workspace.\n\u003C/code\u003E\u003C/pre\u003E\n","\u003Cp\u003EHere's what the procedure will check:\u003C/p\u003E\n\u003Cul\u003E\u003Cli\u003ENull values in every column, with a count and percentage for each\u003C/li\u003E\u003Cli\u003EDuplicate values in the primary key column (the first column)\u003C/li\u003E\u003Cli\u003EData freshness &ndash; whether the most recent timestamp is older than 24 hours\u003C/li\u003E\u003C/ul\u003E\n","\u003Cp\u003ECoCo will generate a stored procedure and propose creating a file in your workspace. You'll see a summarized diff showing the new file contents. Here's what the interaction looks like:\u003C/p\u003E\n\u003Cul\u003E\u003Cli\u003ECoCo proposes the file with a diff view\u003C/li\u003E\u003Cli\u003EYou can \u003Cstrong\u003EAccept\u003C/strong\u003E all changes, \u003Cstrong\u003ERevert\u003C/strong\u003E them, or review at a finer granularity\u003C/li\u003E\u003Cli\u003EIf you accept, the file is written to your workspace\u003C/li\u003E\u003C/ul\u003E\n","\u003Ch3\u003EReview and deploy\u003C/h3\u003E\n","\u003Cp\u003EAfter accepting the file, you'll have a new SQL file in your workspace (something like \u003Cstrong\u003Echeck_data_quality.sql\u003C/strong\u003E). Open it in the editor to review the procedure.\u003C/p\u003E\n","\u003Cp\u003ENow ask CoCo to deploy it:\u003C/p\u003E\n\u003Cpre\u003E\u003Ccode class=\"language-text\"\u003EExecute this stored procedure to create it in Snowflake, then call it \nagainst COCO_VS_CODE_QUICKSTART_DB.MONITORING.CUSTOMER_EVENTS so I can see the results.\n\u003C/code\u003E\u003C/pre\u003E\n","\u003Cp\u003ECoCo reads the active file (the procedure you just accepted), executes the \u003Ccode\u003ECREATE OR REPLACE PROCEDURE\u003C/code\u003E statement, then calls the procedure. You should see a result showing:\u003C/p\u003E\n\u003Cul\u003E\u003Cli\u003EWhich columns have null values (and the count/percentage)\u003C/li\u003E\u003Cli\u003EAny duplicate primary key values found\u003C/li\u003E\u003Cli\u003EWhether the data is fresh or stale\u003C/li\u003E\u003C/ul\u003E\n","\u003Cp\u003EGreat job! You've just built and deployed a reusable data quality monitor entirely through conversation. The procedure lives in your Snowflake account and can be scheduled as a task or called on-demand.\u003C/p\u003E\n&lt;!-- ------------------------ --&gt;\n","\u003Ch2\u003EUse Skills\u003C/h2\u003E\n","\u003Cp\u003ESkills are packaged capabilities that CoCo can invoke &ndash; they work identically across all CoCo surfaces, whether you're in the VS Code extension, the CLI, Desktop, or Snowsight. Let's see how to use them.\u003C/p\u003E\n","\u003Ch3\u003EBrowse available skills\u003C/h3\u003E\n","\u003Cp\u003EIn the CoCo chat input, type \u003Ccode\u003E/\u003C/code\u003E to open the skills menu. You'll see a list of available skills that CoCo can invoke. Scroll through to see what's available &ndash; skills for SQL authoring, dynamic tables, Snowpark, Streamlit development, and more.\u003C/p\u003E\n","\u003Ch3\u003EInvoke a skill\u003C/h3\u003E\n","\u003Cp\u003ESelect a skill from the menu (or type its name after the \u003Ccode\u003E/\u003C/code\u003E). For example:\u003C/p\u003E\n\u003Cpre\u003E\u003Ccode class=\"language-text\"\u003E/sql-author\n\u003C/code\u003E\u003C/pre\u003E\n","\u003Cp\u003ESkills inject specialized knowledge and procedures into the conversation. When you invoke a skill, CoCo gains domain-specific guidance for that topic &ndash; more targeted recommendations, better code generation, and awareness of best practices specific to that feature area.\u003C/p\u003E\n\u003Cblockquote\u003E\n","\u003Cp\u003E\u003Cstrong\u003ENote:\u003C/strong\u003E The same skills you've installed for the CoCo CLI work here too. If you've built custom skills (\u003Ccode\u003E.cortex/skills/\u003C/code\u003E in your workspace), CoCo picks them up in the VS Code extension.\u003C/p\u003E\n\u003C/blockquote\u003E\n&lt;!-- ------------------------ --&gt;\n","\u003Ch2\u003EClean Up\u003C/h2\u003E\n","\u003Cp\u003ELet's clean up the objects we created during this guide. Ask CoCo:\u003C/p\u003E\n\u003Cpre\u003E\u003Ccode class=\"language-text\"\u003EDrop the database COCO_VS_CODE_QUICKSTART_DB and all objects in it.\n\u003C/code\u003E\u003C/pre\u003E\n","\u003Cp\u003EOr execute the following SQL directly:\u003C/p\u003E\n\u003Cpre\u003E\u003Ccode class=\"language-sql\"\u003EDROP DATABASE IF EXISTS COCO_VS_CODE_QUICKSTART_DB;\n\u003C/code\u003E\u003C/pre\u003E\n","\u003Cp\u003EYou can also delete the \u003Cstrong\u003Esample_query.sql\u003C/strong\u003E and \u003Cstrong\u003Echeck_data_quality.sql\u003C/strong\u003E files from your workspace.\u003C/p\u003E\n&lt;!-- ------------------------ --&gt;\n","\u003Ch2\u003EConclusion and Resources\u003C/h2\u003E\n","\u003Cp\u003ECongratulations! You've gone from installing the extension to building and deploying a real stored procedure, all through conversation with CoCo in your editor.\u003C/p\u003E\n","\u003Ch3\u003EWhat You Learned\u003C/h3\u003E\n\u003Cul\u003E\u003Cli\u003EHow to install the Snowflake VS Code extension and access CoCo from the Activity Bar\u003C/li\u003E\u003Cli\u003EHow to attach files and workspace context to CoCo using \u003Ccode\u003E@\u003C/code\u003E references\u003C/li\u003E\u003Cli\u003EHow to iterate on queries conversationally and view results in the chat panel\u003C/li\u003E\u003Cli\u003EHow to have CoCo generate files, review diffs, and deploy stored procedures\u003C/li\u003E\u003Cli\u003EHow skills work in the VS Code extension (identically to the CLI)\u003C/li\u003E\u003C/ul\u003E\n","\u003Ch3\u003ERelated Resources\u003C/h3\u003E\n\u003Cul\u003E\u003Cli\u003E\u003Ca href=\"https://docs.snowflake.com/en/user-guide/vscode-ext#coco-in-the-snowflake-extension-for-visual-studio-code\"\u003ECoCo in the Snowflake VS Code Extension (docs)\u003C/a\u003E\u003C/li\u003E\u003Cli\u003E\u003Ca href=\"https://docs.snowflake.com/en/user-guide/cortex-code/cortex-code-in-your-editor\"\u003ECortex Code in your code editor\u003C/a\u003E\u003C/li\u003E\u003Cli\u003E\u003Ca href=\"https://docs.snowflake.com/en/user-guide/cortex-code/managed-settings\"\u003ECortex Code managed settings\u003C/a\u003E\u003C/li\u003E\u003Cli\u003E\u003Ca href=\"https://docs.snowflake.com/en/user-guide/cortex-code/cortex-code-cli\"\u003ECoCo CLI\u003C/a\u003E\u003C/li\u003E\u003Cli\u003E\u003Ca href=\"https://code.visualstudio.com/docs/enterprise/policies\"\u003EVS Code enterprise policies\u003C/a\u003E\u003C/li\u003E\u003C/ul\u003E"],"title":"Base Quickstart CF","isDeveloperGuidesPage":false,":type":"snowflake-site/components/contentfragment",":items":{},":itemsOrder":[],"elements":{"quickstartArticleBody":{"dataType":"string","title":"Quickstart Article Body","value":"\u003C!-- ------------------------ --\u003E\n## Overview\n\nSnowflake CoCo (Cortex Code) is an AI-powered coding agent with deep Snowflake expertise. It can execute SQL, edit files, search your codebase, and run multi-step workflows against your Snowflake account. CoCo in the Snowflake VS Code extension puts that agentic experience directly in the same window where you're already writing code, right alongside the extension's SQL editor, object explorer, and other tools.\n\nIn this guide, you'll install the Snowflake extension, open CoCo, and work through a series of interactions to get a feel for CoCo in VS Code. By the end, you'll have built a reusable data quality monitoring procedure entirely through natural-language conversation with CoCo. We'll also cover some options for configuring CoCo in VS Code.\n\n\u003E **Note:** CoCo in the VS Code extension also works in Cursor. Simply install the Snowflake extension from the Cursor marketplace the same way you would in VS Code. Everything in this guide applies to both editors.\n\n### What You'll Learn\n\n- How to install the Snowflake VS Code extension and open CoCo\n- How to attach files and workspace context to CoCo using `@` references\n- How to execute SQL through CoCo and iterate on queries conversationally\n- How to have CoCo generate, propose, and deploy a stored procedure\n- How to use skills in the VS Code extension\n- How to configure several parameters for CoCo within VS Code\n\n### What You'll Need\n\n- A [Snowflake account](https://signup.snowflake.com/?utm_source=snowflake-devrel&utm_medium=developer-guides&utm_cta=developer-guides) (trial or existing)\n- Visual Studio Code installed (or Cursor)\n- A Snowflake role with access to at least one database, schema, and warehouse\n\n### What You'll Build\n\n- A stored procedure that monitors a table for data quality issues (null values, duplicates, stale data) – generated entirely through conversation with CoCo within the Snowflake VS Code Extension\n\n\u003C!-- ------------------------ --\u003E\n## Install the Snowflake VS Code Extension\n\nLet's start by installing the Snowflake extension and signing in to your account.\n\n### Install from the Marketplace\n\n1. Open VS Code and select **Code** \u003E **Settings** \u003E **Extensions**\n2. In the search field, type **Snowflake**.\n3. Look for the extension with the Snowflake badge (a check mark in a blue circle) and select **Install**.\n\nAfter installation completes, you'll see the Snowflake icon in the **Activity Bar** of VS Code.\n\n![Installation](https://www.snowflake.com/content/dam/snowflake-site/developers/guides/get-started-coco-vscode-extension/install-snowflake.png)\n\n\u003C!-- ------------------------ --\u003E\n## Sign in to Snowflake\n\nNext, sign in to Snowflake using the extension:\n\n1. Select the Snowflake icon in the **Activity Bar**.\n2. Enter your **Account Identifier** (or the URL you use to connect to Snowflake) and select **Continue**.\n3. Choose your authentication method:\n   - **Single sign-on** – uses your SSO credentials\n   - **Username/password** – your Snowflake username and password\n   - **Key Pair** – uses key-pair authentication\n4. Enter your credentials and select **Sign in**.\n\nAfter a successful sign in, the sidebar displays your account information, your default role, the **Object Explorer** with your databases, and your **Query History**.\n\n![Sign in](https://www.snowflake.com/content/dam/snowflake-site/developers/guides/get-started-coco-vscode-extension/login.png)\n\n\u003C!-- ------------------------ --\u003E\n## Open CoCo and Run Your First Prompt\n\nNow that you're signed in, let's open CoCo and have your first conversation.\n\n### Open the CoCo agent chat panel\n\nStart by opening CoCo in the VS Code agent chat panel:\n\n1. In the menu bar, click on **View**, then click **Chat**\n\n2. A chat panel will appear. Click on **CoCo** at the top of the chat panel to select the CoCo agent chat panel.\n\nAlternatively, you can open CoCo from within files in your VS Code workspace. At the top of a file, look for the CoCo icon. Click on the icon to open CoCo in the agent chat panel.\n\nYou can also open CoCo from the command palette (`CoCo: Open` or `CoCo: Focus on Chat view`), or with the keyboard shortcut **Shift**+**Cmd**+**L** on macOS (**Shift**+**Ctrl**+**L** on Windows/Linux).\n\nThat's it! You now have CoCo ready to go in VS Code. You'll see a chat interface with a text input at the bottom. This is where you'll interact with CoCo. A new chat session starts automatically, scoped to your current VS Code workspace directory.\n\n![Open chat panel](https://www.snowflake.com/content/dam/snowflake-site/developers/guides/get-started-coco-vscode-extension/coco_agent_panel.png)\n\n### Ask your first question\n\nType the following prompt and press Enter:\n\n```text\nWhat databases do I have access to? Show me the top 5 by size.\n```\n\nCoCo will propose running a SQL query against your account. You'll see a permission prompt asking you to approve the action. Select **Allow once** (or **Allow for session** if you'd like to skip future approvals for this session).\n\nAfter approval, CoCo executes the query and displays the results directly in the chat panel. You should see a table listing your databases with their sizes.\n\nNote that you can specify what mode CoCo should run in directly from the chat panel: \n\n* **Agent** (the default; CoCo can propose actions and asks you to approve tool calls)\n\n* **Plan** (CoCo produces a plan for you to review before it touches anything)\n\n* **Bypass** (CoCo executes without per-action approval; use with care). \n\nThis guide uses the default Agent mode throughout.\n\nGreat – you've now run the core building loop with CoCo in VS Code: you ask, CoCo proposes, you approve, results appear. All within VS Code, against your connected Snowflake account.\n\n\u003C!-- ------------------------ --\u003E\n## Use Editor Context with CoCo\n\nThere are a few ways to point CoCo at what you want it to read. Let's cover a few approaches.\n\n### Ask CoCo from the editor\n\nWhen you have a file open, you'll see an **Ask CoCo** button directly above blocks of code. Click it to send the code block to CoCo as a prompt. This is the fastest way to get CoCo's input on code blocks you're looking at – one click, no typing required.\n\n![Ask CoCo](https://www.snowflake.com/content/dam/snowflake-site/developers/guides/get-started-coco-vscode-extension/ask_coco.png)\n\n### Add a selection via right-click\n\nIf you want to send specific lines of code to CoCo, select the lines in your editor, right-click, and choose **CoCo: Add selection to chat**. The selected text appears in the chat input as attached context, ready for you to type a follow-up question.\n\n![Add selection](https://www.snowflake.com/content/dam/snowflake-site/developers/guides/get-started-coco-vscode-extension/add_selection.png)\n\n### Attach context with @\n\nYou can attach context from your workspace into the CoCo chat panel by using the `@` character. You can use it in a variety of ways:\n\n* You can attach a single file by typing `@` and then selecting the specific file\n\n* You can attach more than one file by using `@` multiple times in the same prompt\n\n* You can attach entire directories if you want CoCo to consider a broader project context – for example, a **dbt_project.yml** alongside your SQL models, or a **README.md** that describes your pipeline architecture.\n\n* `@` also searches your Snowflake account – you can attach databases, schemas, tables, and other objects as context, not just workspace files.\n\nLet's try the first approach out.\n\n1. Create a new file in your workspace called **sample_query.sql** and paste the following:\n\n```sql\nSELECT\n    DATE_TRUNC('month', created_at) AS month,\n    COUNT(*) AS total_orders,\n    SUM(amount) AS total_revenue,\n    AVG(amount) AS avg_order_value\nFROM orders\nGROUP BY 1\nORDER BY 1 DESC\nLIMIT 12;\n```\n\n2. Switch to the CoCo panel. In the chat input, type `@` and then start typing **sample_query.sql** – CoCo will suggest the file. Select it to attach it as context.\n\n3. Now type your question:\n\n```text\nCan you explain what this query does and suggest improvements?\n```\n\nCoCo reads the attached file and responds with a detailed breakdown. Here's an example of what you'll get back:\n\n- **What it does:** A monthly order summary for the last 12 months, calculating `total_orders`, `total_revenue`, and `avg_order_value` per month.\n- **`LIMIT 12` doesn't guarantee \"last 12 months\"** – it returns the 12 most recent months with data, which could span more than a year if some months have no orders. CoCo suggests an explicit date filter with `DATEADD`.\n- **NULLs silently skew results** – `COUNT(*)` counts rows with NULL `amount`, but `SUM` and `AVG` ignore them. CoCo flags this mismatch.\n- **Missing rounding** – CoCo suggests `ROUND(SUM(amount), 2)` and `ROUND(AVG(amount), 2)`.\n- **No order status filter** – if the table has a `status` column, cancelled or refunded orders may be inflating counts.\n- **Add a median** – `AVG` is sensitive to outliers. CoCo suggests `MEDIAN(amount)` since Snowflake supports it natively.\n- **Fully qualify the table** – `FROM orders` relies on the session's default database/schema. CoCo recommends a full path.\n\nThis is a good example of what CoCo brings to the table: it doesn't just explain the SQL, it identifies subtle correctness issues that are easy to miss during development.\n\n\n\u003C!-- ------------------------ --\u003E\n## Execute SQL Through CoCo\n\nSo far you've asked CoCo questions and let it read local files. CoCo can also run queries against your Snowflake account and iterate on results conversationally.\n\n### Explore a table\n\nAsk CoCo to help you understand a table in your account:\n\n```text\nDescribe the SNOWFLAKE_SAMPLE_DATA.TPCH_SF1.ORDERS table. What columns does it have and how many rows?\n```\n\nCoCo will run `DESCRIBE TABLE` and `SELECT COUNT(*)` (with your approval), then present the results with an explanation of each column.\n\n### Iterate on a query\n\nNow let's build a query conversationally:\n\n```text\nWrite me a query that shows the top 10 customers by total order amount from that orders table, including their order count and average order value.\n```\n\nCoCo generates the SQL and offers to run it. After you approve, results appear in a grid within the chat panel. You can copy values or download the results from that grid.\n\nIf you want to refine the results, just continue the conversation:\n\n```text\nAdd a filter so we only see customers who placed at least 5 orders.\n```\n\nCoCo modifies the query and runs the updated version. You're building queries through dialogue, and each iteration takes a single follow-up message.\n\n### Analyze query results\n\nCoCo can also read the result grid from queries you've already run, including queries you executed directly in the extension's SQL editor. This turns the result grid into another form of context, without needing to copy rows or errors into the chat. Here are a couple of interactions you can route to CoCo directly from the results grid:\n\n- **Analyze** – appears on a successful result set. Click it to send the results to CoCo for interpretation, summarization, or follow-up questions.\n\n![Analyze button](https://www.snowflake.com/content/dam/snowflake-site/developers/guides/get-started-coco-vscode-extension/analyze_button.png)\n\n- **Fix with CoCo** – appears when a query returns a SQL compilation or execution error. Click it to hand the failing query and error message to CoCo so it can diagnose and propose a fix.\n\n![Fix with CoCo](https://www.snowflake.com/content/dam/snowflake-site/developers/guides/get-started-coco-vscode-extension/fix_with_coco.png)\n\n\u003C!-- ------------------------ --\u003E\n## Build a Data Quality Monitor\n\nWith the basics covered, let's build something a little more real. We'll ask CoCo to generate a stored procedure that checks a table for common data quality issues – null values, duplicate keys, and stale data. This demonstrates the full loop: natural language to code generation to diff review to deployment.\n\n### Set up the context\n\nFirst, let's create a table to monitor. Ask CoCo:\n\n```text\nCreate a database called COCO_VS_CODE_QUICKSTART_DB with a schema called MONITORING. \nThen create a sample table called CUSTOMER_EVENTS with columns: \nevent_id (VARCHAR), customer_id (VARCHAR), event_type (VARCHAR), \nevent_timestamp (TIMESTAMP_NTZ), amount (NUMBER(10,2)). \nInsert 100 sample rows with some intentional quality issues – \na few null customer_ids, some duplicate event_ids, and a few rows \nwith event_timestamp from over 30 days ago.\n```\n\nCoCo will propose the SQL statements, ask for approval, and execute them. You should see confirmation messages as each object is created and the data is inserted.\n\n### Generate the data quality procedure\n\nNow ask CoCo to build the monitoring procedure:\n\n```text\nCreate a stored procedure called CHECK_DATA_QUALITY in COCO_VS_CODE_QUICKSTART_DB.MONITORING \nthat accepts a table name as input and checks for:\n\n1. Null values in each column (report count and percentage)\n2. Duplicate values in the first column (assumed to be the primary key)\n3. Data freshness - flag if the most recent timestamp column value is older than 24 hours\n\nThe procedure should return a structured result with all findings.\nWrite it as a SQL file in my workspace.\n```\n\nHere's what the procedure will check:\n\n- Null values in every column, with a count and percentage for each\n- Duplicate values in the primary key column (the first column)\n- Data freshness – whether the most recent timestamp is older than 24 hours\n\nCoCo will generate a stored procedure and propose creating a file in your workspace. You'll see a summarized diff showing the new file contents. Here's what the interaction looks like:\n\n- CoCo proposes the file with a diff view\n- You can **Accept** all changes, **Revert** them, or review at a finer granularity\n- If you accept, the file is written to your workspace\n\n### Review and deploy\n\nAfter accepting the file, you'll have a new SQL file in your workspace (something like **check_data_quality.sql**). Open it in the editor to review the procedure.\n\nNow ask CoCo to deploy it:\n\n```text\nExecute this stored procedure to create it in Snowflake, then call it \nagainst COCO_VS_CODE_QUICKSTART_DB.MONITORING.CUSTOMER_EVENTS so I can see the results.\n```\n\nCoCo reads the active file (the procedure you just accepted), executes the `CREATE OR REPLACE PROCEDURE` statement, then calls the procedure. You should see a result showing:\n\n- Which columns have null values (and the count/percentage)\n- Any duplicate primary key values found\n- Whether the data is fresh or stale\n\nGreat job! You've just built and deployed a reusable data quality monitor entirely through conversation. The procedure lives in your Snowflake account and can be scheduled as a task or called on-demand.\n\n\u003C!-- ------------------------ --\u003E\n## Use Skills\n\nSkills are packaged capabilities that CoCo can invoke – they work identically across all CoCo surfaces, whether you're in the VS Code extension, the CLI, Desktop, or Snowsight. Let's see how to use them.\n\n### Browse available skills\n\nIn the CoCo chat input, type `/` to open the skills menu. You'll see a list of available skills that CoCo can invoke. Scroll through to see what's available – skills for SQL authoring, dynamic tables, Snowpark, Streamlit development, and more.\n\n### Invoke a skill\n\nSelect a skill from the menu (or type its name after the `/`). For example:\n\n```text\n/sql-author\n```\n\nSkills inject specialized knowledge and procedures into the conversation. When you invoke a skill, CoCo gains domain-specific guidance for that topic – more targeted recommendations, better code generation, and awareness of best practices specific to that feature area.\n\n\u003E **Note:** The same skills you've installed for the CoCo CLI work here too. If you've built custom skills (`.cortex/skills/` in your workspace), CoCo picks them up in the VS Code extension.\n\n\u003C!-- ------------------------ --\u003E\n## Clean Up\n\nLet's clean up the objects we created during this guide. Ask CoCo:\n\n```text\nDrop the database COCO_VS_CODE_QUICKSTART_DB and all objects in it.\n```\n\nOr execute the following SQL directly:\n\n```sql\nDROP DATABASE IF EXISTS COCO_VS_CODE_QUICKSTART_DB;\n```\n\nYou can also delete the **sample_query.sql** and **check_data_quality.sql** files from your workspace.\n\n\u003C!-- ------------------------ --\u003E\n## Conclusion and Resources\n\nCongratulations! You've gone from installing the extension to building and deploying a real stored procedure, all through conversation with CoCo in your editor.\n\n### What You Learned\n\n- How to install the Snowflake VS Code extension and access CoCo from the Activity Bar\n- How to attach files and workspace context to CoCo using `@` references\n- How to iterate on queries conversationally and view results in the chat panel\n- How to have CoCo generate files, review diffs, and deploy stored procedures\n- How skills work in the VS Code extension (identically to the CLI)\n\n### Related Resources\n\n- [CoCo in the Snowflake VS Code Extension (docs)](https://docs.snowflake.com/en/user-guide/vscode-ext#coco-in-the-snowflake-extension-for-visual-studio-code)\n- [Cortex Code in your code editor](https://docs.snowflake.com/en/user-guide/cortex-code/cortex-code-in-your-editor)\n- [Cortex Code managed settings](https://docs.snowflake.com/en/user-guide/cortex-code/managed-settings)\n- [CoCo CLI](https://docs.snowflake.com/en/user-guide/cortex-code/cortex-code-cli)\n- [VS Code enterprise policies](https://code.visualstudio.com/docs/enterprise/policies)\n","multiValue":false,":type":"text/x-markdown"},"quickstartArticleLogoImage":{"dataType":"string","title":"Quickstart Article Logo Image","multiValue":false,":type":"text/plain"}},"elementsOrder":["quickstartArticleBody","quickstartArticleLogoImage"],"model":"snowflake-site/models/quickstart-article"},"flexible_column_cont":{"id":"flexible-column-container-b248ff73a2","type":"2-column-75-25","alignColumns":"top","containerMaxWidth":"extra-large","topPadding":"none","bottomPadding":"none","spaceBetween":"none","reverseOnMobile":false,"carouselOnMobile":false,"backgroundImageOption":"none","flexible_column_content_container_1":{"layout":"SIMPLE","id":"container-5a90232f74",":type":"snowflake-site/components/flexible-column-container/flexible-column-content-container",":items":{"quickstart_last_modi":{"id":"quickstart-last-modified-a36ba92390","icon":{"id":"icon","icon":"calendar",":type":"snowflake-site/components/icon","appliedCssClassNames":"snowflake-icon-blue"},"lastModifiedDatePrefix":"Updated","lastModifiedDate":"2026-09-02",":type":"snowflake-site/components/quickstart/quickstart-last-modified","appliedCssClassNames":"snowflake-responsive-component-top-padding-small"},"text":{"id":"text-6b259470d0","additionalClasses":"qs-disclaimer-text","text":"\u003Cp\u003E\u003Cspan style=\"color: #666;\"\u003EThis content is provided as is, and is not maintained on an ongoing basis. It may be out of date with current Snowflake instances\u003C/span\u003E\u003C/p\u003E\r\n","richText":true,":type":"snowflake-site/components/text","appliedCssClassNames":"snowflake-responsive-component-top-padding-small"}},":itemsOrder":["quickstart_last_modi","text"]},"flexible_column_content_container_2":{"layout":"SIMPLE","id":"container-70fb1e65dc",":type":"snowflake-site/components/flexible-column-container/flexible-column-content-container",":items":{},":itemsOrder":[]},":type":"snowflake-site/components/flexible-column-container","isBlogPage":false,"isActiveTOC":false}},":itemsOrder":["contentfragment","flexible_column_cont"]},"flexible_column_content_container_2":{"layout":"SIMPLE","id":"container-a25938a676",":type":"snowflake-site/components/flexible-column-container/flexible-column-content-container",":items":{"quickstart_table_of_":{"layout":"SIMPLE","id":"container-47a386ad32","isDeveloperGuidesPage":false,":type":"snowflake-site/components/quickstart/quickstart-table-of-content/quickstart-table-of-content-container",":items":{"quickstart_table_of_":{"id":"quickstart-table-of-content-8d58bd52cb",":type":"snowflake-site/components/quickstart/quickstart-table-of-content","fragmentPath":"/content/dam/snowflake-site/en/content-fragments/quickstarts/get-started-coco-vscode-extension","headings":["\u003Ch2\u003EOverview\u003C/h2\u003E","\u003Ch2\u003EInstall the Snowflake VS Code Extension\u003C/h2\u003E","\u003Ch2\u003ESign in to Snowflake\u003C/h2\u003E","\u003Ch2\u003EOpen CoCo and Run Your First Prompt\u003C/h2\u003E","\u003Ch2\u003EUse Editor Context with CoCo\u003C/h2\u003E","\u003Ch2\u003EExecute SQL Through CoCo\u003C/h2\u003E","\u003Ch2\u003EBuild a Data Quality Monitor\u003C/h2\u003E","\u003Ch2\u003EUse Skills\u003C/h2\u003E","\u003Ch2\u003EClean Up\u003C/h2\u003E","\u003Ch2\u003EConclusion and Resources\u003C/h2\u003E"]},"quickstart_button":{"id":"quickstart-button-edca4262cc",":type":"snowflake-site/components/quickstart/quickstart-button","fragmentPath":"/content/dam/snowflake-site/en/content-fragments/quickstarts/get-started-coco-vscode-extension","appliedCssClassNames":"snowflake-responsive-component-top-padding-none"}},":itemsOrder":["quickstart_table_of_","quickstart_button"]}},":itemsOrder":["quickstart_table_of_"]},":type":"snowflake-site/components/flexible-column-container","isBlogPage":false,"isActiveTOC":false},"markup_editor":{"id":"markup-editor-a87cac1860","title":"Page CSS","cssContent":"#quickstart-template-main-flexible-container{padding:24px}#quickstart-template-main-flexible-container \u003E .snowflake-flexible-column-container-items{grid-template-columns:1fr 0}.qs-disclaimer-text p \u003E span{font-size:15px !important}@media (min-width:768px){#quickstart-template-main-flexible-container{padding:24px 32px}#quickstart-template-main-flexible-container \u003E .snowflake-flexible-column-container-items{grid-template-columns:7fr 3fr;gap:48px}}@media (max-width:767px){#quickstart-template-main-flexible-container \u003E .snowflake-flexible-column-container-items{gap:0}}@media (min-width:1024px){#quickstart-template-main-flexible-container{padding:0 92px 48px 92px}#quickstart-template-main-flexible-container \u003E .snowflake-flexible-column-container-items{gap:117px}}",":type":"snowflake-site/components/markup-editor","isGSAPEnabled":false}},":itemsOrder":["quickstart_hero","flexible_column_cont","markup_editor"],":type":"wcm/foundation/components/responsivegrid"},"modal_container":{"layout":"SIMPLE","id":"container-ff658916d3",":type":"snowflake-site/components/modal/modal-container",":items":{},":itemsOrder":[]},"experiencefragment-footer":{"id":"experiencefragment-78edd3141c","localizedFragmentVariationPath":"/content/experience-fragments/snowflake-site/language-masters/en/site/footer/master/jcr:content","configured":true,":type":"snowflake-site/components/experiencefragment","xfModelPath":"/content/experience-fragments/snowflake-site/language-masters/en/site/footer/master.xfmodel.json"},"markup_editor":{"id":"markup-editor-a5d08861e4","title":"Quickstarts Overrides","cssContent":".snowflake-markdown blockquote{padding:24px 32px;background:#f6f9fa;border:1px solid #29b5e8;border-radius:16px}.snowflake-markdown .snowflake-image-container img{width:auto !important;max-width:100%}.snowflake-markdown .snowflake-text ol{padding-left:20px !important}.snowflake-markdown .snowflake-text li{margin:0 0 12px 0 !important}.snowflake-markdown h3.snowflake-markdown-h3{font-size:20px !important;font-family:Texta,sans-serif !important}@media (min-width:768px){.snowflake-markdown h3.snowflake-markdown-h3{font-size:28px !important}}",":type":"snowflake-site/components/markup-editor","isGSAPEnabled":false}},":itemsOrder":["experiencefragment-banner","experiencefragment-header","markup_editor_1950346551","responsivegrid","modal_container","experiencefragment-footer","markup_editor"],":type":"wcm/foundation/components/responsivegrid"}},":itemsOrder":["root"],"coveoConfig":{"pipeline":"snowflake.com","apiKey":"xx335921a6-2a0a-40f2-a167-e390b4766c3d","organizationId":"snowflakecomputingproduction8neljofn","searchHub":"snowflake.com"},"analyticsDebugMode":false,"analyticsData":{"excludeFromAnalytics":false,"subCategory":"","pageType":"quickstart-page-template","templateName":"quickstart-page-template","siteName":"snowflake","pageUrl":"/content/snowflake-site/global/en/developers/guides/get-started-coco-vscode-extension","language":"en","category":"general","pageName":"Getting Started with CoCo in the Snowflake VS Code Extension","contentTags":["snowflake-site:taxonomy/solution-center/certification/quickstart"]},":path":"/content/snowflake-site/global/en/developers/guides/get-started-coco-vscode-extension",":hierarchyType":"page","locale":"en"}
  