Steps to Build a Custom Skill
This guide provides the steps to create a new custom skill. To build a simple Hello World skill for practice, see Tutorial: Build Your First Alexa Skill in the Developer Console.
Is a custom interaction model the right model for what you want to build? See About Voice Interaction Models to learn about the differences between the custom interaction model and the pre-built models.
- Step 1: Plan and Design Your Skill
- Step 2: Set Up the Skill in the Developer Console
- Step 3: Use the Voice Design to Build Your Interaction Model
- Step 4: Write and Test the Code for Your Skill
- Step 5: Beta Test Your Skill (Optional)
- Step 6: Submit Your Skill For Certification
- Your Skill is Published, Now What?
Step 1: Plan and Design Your Skill
Before you write any code, do the following:
Think about the value that your skill will provide to users. For more information, see Determine the value proposition of your skill.
Consider how you might enhance the user experience. For example, you can add in-skill purchasing, support screen interaction, change the audio, make your skill accessible to all, define your skill as a paid skill, and publish your skill to additional markets.
Design a voice user interface. This maps out how users will interact with your skill. For guidance and best practices, see Build Your Design Artifact.
- Learn how users invoke custom skills.
- Choose the Invocation Name for a Custom Skill.
- Episode 1 of Building Alexa Skills from Scratch - Introduction
- Episode 2 of Building Alexa Skills from Scratch - What Is an Alexa Skill?
- Episode 3 of Building Alexa Skills from Scratch - Start With the Script
Step 2: Set Up the Skill in the Developer Console
Create a new skill in the developer console. When prompted to choose a model, select the Custom model.
Step 3: Use the Voice Design to Build Your Interaction Model
The interaction model refers to your collection of intents, sample utterances, and the dialog model:
- The requests your skill can handle are represented as intents.
- Intents can optionally have arguments called slots.
- Sample utterances map the intents to the words and phrases users can say to interact with your skill.
- A dialog model identifies information your skill requires and the prompts Alexa can use to collect and confirm that information in a conversation with the user.
There are two different ways to create these components:
Use the developer console. This provides an updated console for the entire skill-building process, including the interaction model. You can also enter and edit the JSON for the interaction model in the JSON Editor. This is useful for pasting in the JSON provided in sample projects.
Create the JSON for the interaction model and create or update your skill with the Skill Management API or the ASK Command Line Interface.
- Best practices for sample utterances
- Episode 4 of Building Alexa Skills from Scratch - From Script to VUI
Step 4: Write and Test the Code for Your Skill
Your primary coding task for your skill is to create a service that can accept requests from the Alexa service and send back responses.
For the quickest start, create an AWS Lambda function to host the service for your skill. AWS Lambda (an Amazon Web Services offering) is a service that lets you run code in the cloud without managing servers.
Alternatively, you can build a web service for your skill and host it with any cloud provider. See Hosting a Custom Skill as a Web Service.
Write the code for your skill. If you are using Lambda, you can code in Node.js, Java, Python, C#, Go, Ruby, or PowerShell. If you are hosting your skill as a web service, you can use any programming language.
In the developer console, update your skill with your endpoint (for instance, the Lambda ARN).
Test your skill with the Alexa simulator or an Alexa-enabled device.
See Test Your Skill.
Update the metadata about your skill that will appear in the Alexa Skills Store in the Alexa app.
- Episode 5 of Building Alexa Skills from Scratch - Adding Our Backend Part 1
- Episode 6 of Building Alexa Skills from Scratch - Adding Our Backend Part 2
- Episode 7 of Building Alexa Skills from Scratch - Adding Our Backend Part 3
- Episode 8 of Building Alexa Skills from Scratch - ASK Sound Library
Step 5: Beta Test Your Skill (Optional)
Once your skill is finished, you have the option of setting up a beta test for your skill. With a beta test, you can make your skill available to a limited group of testers that you have personally selected, rather than to the general public.
Step 6: Submit Your Skill For Certification
When you are ready to make your skill public, submit it for certification. If your skill is currently in a beta test, you can still proceed with certification.
Run the validation and functional tests on the Certification page in the developer console. These tests help you identify issues that you need to fix before you submit the skill.
Review the submission checklist. This checklist includes the tests performed by Amazon's certification team, so passing all of these tests can speed up the certification process.
When you are ready for your skill to be made public, and you have ensured that your skill fulfills the requirements on the certification checklist, submit your skill for certification.
- Certification Requirements for Custom Skills.
- Test and Submit Your Skill for Certification
- Episode 9 of Building Alexa Skills from Scratch - Certification Part 1
- Episode 10 of Building Alexa Skills from Scratch - Certification Part 2
Your Skill is Published, Now What?
Once your skill is published, Amazon customers can see it in the Alexa App and choose to enable and use it.
You can (and should) continue to work on your skill, enhancing its features, fixing any problems, and improving the experience for your end users. For recommendations for ongoing skill development and when you need to re-submit the skill, see Test and Submit Your Skill for Certification: Revise and Update Your Skill after Publication