Get Started with the ASK Toolkit for Visual Studio Code

The ASK toolkit is an extension for Visual Studio Code (VS Code) that makes it easier for you to develop and deploy Alexa skills. It provides features like code snippet generation, JSON schema validation, and discoverability of features via the Command Palette in VS Code.

The ASK toolkit uses the ASK Command Line Interface (CLI). Commands initiated from within the toolkit call the appropriate ASK CLI commands. In VS Code, the integrated terminal shows the CLI command being called, the output from executing the command, and prompts for user input.

Send us your feedback

To provide feedback and suggestions from within the toolkit, on the VS Code status bar, click Contact Alexa.

Setup

Prerequisites

  1. To use the Alexa templates, download Git and install it.

  2. Download VS Code (recommend version 1.22.0 or higher) and install it.

  3. Download and configure ASK CLI (recommend version 1.5.0 or higher). For more information, watch the video and read the documentation for getting started with ASK CLI.

  4. (Optional and recommended) Use AWS Lambda to host the backend business logic for your skill. Watch the video and read the documentation for configuring your AWS credentials.

Install the ASK toolkit in VS Code

Use one of the following options to install the ASK toolkit.

  • Install the toolkit by visiting the VS Code marketplace.

  • In VS Code, from the View menu, select Extensions to open the Extensions view. In the search box, type Alexa Skills Kit (ASK) toolkit.

After you install the toolkit, click Reload. In some cases, you might also need to restart VS Code.

For more information about VS Code extensions, see the VS Code documentation.

Quick start

Step 1: Create a new skill or clone an existing skill

Get started by creating a new skill or cloning an existing skill.

  1. To open the Command Palette, from the View menu, select Command Palette. Alternatively, on Windows and Linux, use Ctrl+Shift+P, and on a Mac use Shift+Command+P.
  2. To see the available commands in the ASK toolkit, in the text box, type ASK.
  3. To create a new skill from a template, select ASK: Create a skill from a template, and then choose your preferred runtime language followed by a template from the list.

    – Or –

    To clone an existing skill, select ASK: Clone a skill. The VS Code integrated terminal shows a list of skills that you can clone.

Depending on the skill you created or cloned, the ASK Toolkit creates the following folder structure.

Step 2: Add a code snippet

The toolkit provides code snippet generation for frequently used skill components.

In your model file, for example model/en-US.json, type askModel to show all built-in intents. Select an intent and then press the TAB key to generate the code snippet. To create a blank custom intent, type askModel and then select askModelCustomIntent.

To insert a snippet for an intent handler based on the ASK SDK for Node.js or ASK SDK for Python, type askSDK in the JavaScript (.js) or Python (.py) file that contains your business logic code.

Step 3: Deploy the skill

You can choose to deploy your entire skill package or parts of your skill. At the Command Palette, see the options by typing ASK: Deploy.

To deploy a specific resource, in the explorer tree view, right-click on the resource. For example, if you right-click the skill.json file, there is an option to Deploy the skill manifest. If you right-click on the lambda folder, there is an option to Deploy to AWS Lambda.

Alternatively, you can use the Deploy button on the status bar to deploy a specific resource or entire skill, depending on the settings for the extension. For more information about settings, see configure the toolkit.

Step 4: Test the skill

After you deploy your skill, you can start testing it on your Alexa-enabled device. You can also use the Alexa Simulator, which is in the developer console on the Test page. To open the developer console, from the Command Palette select ASK: Open the Alexa developer console in the browser.

Next steps

Explore more commands

The toolkit provides access to commands available in the ASK CLI. You can explore commands by opening the Command Palette and typing ASK: More, and then select from the list of commands in the secondary menu.

See the command mapping for ASK toolkit and ASK CLI to understand how the toolkit commands map to the underlying ASK CLI commands.

Enable or disable the toolkit

To disable or enable the toolkit, or to turn on automatic updates, see the VS Code documentation about managing extensions.

Configure the toolkit (optional)

You can configure the toolkit by updating settings in VS Code.

To open settings, on Windows or Linux, from the File menu, select Preferences, and then select Settings. On a Mac, from the Code menu, select Preferences, and then select Settings. For more information, see the VS Code documentation for user and workspace settings.

You can configure the following:

  • To specify the ASK CLI profile that the ASK toolkit uses by default, for "ask.profile", specify the name of the profile that you want to use. For example, in the JSON, type "ask.profile": "profile_name" where profile_name is the name of your profile.
  • To change the default settings for deployment, for "ask.defaultDeployResource", specify "all", "skill", "model", "lambda" or "isp". For example, in the JSON, type "ask.defaultDeployResource": "all".
  • To use the content in the active window as the reference for commands that require file input, for "ask.doesUseCurrentActivewindowContent" specify true. For example, in the JSON, type "ask.doesUseCurrentActivewindowContent": true.
  • To set the default stage for commands where stage is required, for "ask.granularCommandDefaultStage" specify "development" or "live". For example, in the JSON, type "ask.granularCommandDefaultStage": "development".
  • To read the skill ID from the .ask/config file for commands that require the skill ID, for "ask.shouldUseSkillIdFoundInCurrentWorkspace" specify true. For example, in the JSON, type "ask.shouldUseSkillIdFoundInCurrentWorkspace": true.

Command mapping for ASK toolkit and ASK CLI

Command in toolkitUnderlying CLI command
ASK: Clone a skill

"ask clone"

ASK: Create a skill from a template

"ask new --templates"

ASK: Deploy the skill

"ask deploy"

ASK: Deploy the in-skill product (ISP)

"ask deploy --target isp"

ASK: Deploy the interaction model(s)

"ask deploy --target model"

ASK: Deploy to AWS Lambda

"ask deploy --target lambda"

ASK: Deploy the skill manifest

"ask deploy --target skill"

ASK: Initialize / Configure the ASK CLI

"ask init"

ASK: More commands (low-level commands)Shows another list with all the additional commands in the command palette (See table below)
ASK: Open the Alexa developer console in the browser Opens the Alexa developer console page in the browser
ASK: Open the help documentation in the browser Opens the ASK CLI documentation in the browser
ASK: Simulate the skill

"ask simulate"

ASK: Delete a skill

"ask api delete-skill"

ASK: Get AWS Lambda logs from AWS CloudWatch

"ask lambda log" – only runs if you have configured AWS credentials with the CLI and use AWS Lambda as your endpoint

ASK: List the differences between local and remote version of skill resources

"ask diff"

Command in toolkit (Secondary menu under ASK: More commands (low-level commands))Underlying CLI command
Skill - Enable a skill

"ask api enable-skill"

Model - Get an interaction model for skill

"ask api get-model"

Model - Get the ETag associated with an interaction model

"ask api head-model"

Model - Create/update the new interaction model for skill

"ask api update-model"

Skill - Create a skill base on the skill manifest

"ask api create-skill"

Skill - Get the skill manifest

"ask api get-skill"

Skill - Update the skill manifest

"ask api update-skill"

Skill - List skills based on Vendor ID and chosen profile

"ask api list-skills"

Skill - Get the skill status

"ask api get-skill-status"

Skill - Get account linking configuration for a skill

"ask api get-account-linking"

Skill - Delete account linking configuration for a skilll

"ask api delete-account-linking"

Skill - List the vendorId associated with your developer account

"ask api list-vendors"

Skill - Submit a skill for certification

"ask api submit"

Skill - Withdraw a skill from the certification process

"ask api withdraw"

Simulate - Simulate a skill

"ask api simulate-skill"

Simulate - Get the simulate result

"ask api get-simulation"

Simulate - Invoke a skill

"ask api invoke-skill"

Skill - Vaildate a skill

"ask api validate-skill"

Skill - Get the skill validation result

"ask api get-validation"

Skill - Grant/Add access to a private skill for the account

"ask api add-private-distribution-account"

Skill - Revoke/Delete access to a private skill from the account

"ask api delete-private-distribution-account"

Skill - List all accounts that the skill have been privately distributed

"ask api list-private-distribution-accounts"

Skill - Disable a skill

"ask api disable-skill"

Skill - Get skill enablement information

"ask api get-skill-enablement"

ISP - Create an in-skill product

"ask api create-isp"

ISP - Update an in-skill product

"ask api update-isp"

ISP - Associate an in-skill product with a skill

"ask api associate-isp"

ISP - Disassociate an in-skill product from a skill

"ask api disassociate-isp"

ISP - Get the definition or summary for an in-skill product

"ask api get-isp"

ISP - List the in-skill product for a vendor

"ask api list-isp-for-vendor"

ISP - List the in-skill product that are associated with a skill

"ask api list-isp-for-skill"

ISP - List the skills that are associated with an in-skill product

"ask api list-skills-for-isp"

ISP - Reset an in-skill product

"ask api reset-isp-entitlement"

ISP - Delete an in-skill product

"ask api delete-isp"

Skill - Get "utterance transcripts"/ ”intent requests history" for a skill

"ask api intent-requests-history"

Skill - Delete a skill

"ask api delete-skill"

AWS Lambda - Get AWS Lambda logs from AWS CloudWatch

"ask lambda log"