Home > Alexa > Alexa Skills Kit

Steps to Build a Custom Skill

Review a step-by-step guide to building a custom skill for Alexa.


This guide provides the steps to create a new custom skill.

Is a custom skill the right type of skill for what you want to build? See Understanding the Different Types of Skills to learn about other options like the Smart Home Skill API.

Step 1: Design a Voice User Interface

Designing an effective voice user interface for your skill is a critical first step that you should do before writing any code. This is the primary way users will interact with your skill.

  1. Create a flow diagram that maps out how users will interact with the skill. This flow diagram should show the requests users will make and the possible outcomes of those requests. You use this diagram when designing the detailed elements of your interface.
  2. Create your intent schema. This is a JSON structure which declares the set of requests (“intents”) your service can accept and handle. Use the flow diagram to identify the requests your skill should expect.

    See: Defining the Voice Interface.

  3. Create a set of sample utterances that map to your intents. These are the phrases users say when interacting with your skill.

    See: Defining the Voice Interface.

Follow our recommended voice best practices as you build your voice user interface.

Step 2: Set Up the Skill

These steps include creating a new skill in the developer portal and creating your service to host your code.

  1. Register your new skill on the developer portal. At this point, you can enter a Name and Invocation Name for your new skill.

  2. For the quickest start, create an AWS Lambda function. AWS Lambda (an Amazon Web Services offering) is a service that lets you run code in the cloud without managing servers.

    See: Creating an AWS Lambda Function for a Skill.

    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.

Step 3: 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.

  1. Write the code for your skill. If you are using Lambda, you can code in Node.js, Java, or Python. If you are hosting your skill as a web service, you can use any programming language.

  2. In the developer portal, fill in the rest of the information for your skill for testing. This includes adding the endpoint (Lambda ARN if using Lambda), your intent schema, and sample utterances.

    See Registering and Managing Custom Skills in the Developer Portal

  3. Test your skill with the Service Simulator or an Alexa-enabled device.

    See Testing a Custom Skill

Step 4: Submit Your Skill

Once your skill is finished, submit it for certification to make it available to Amazon customers.

  1. Update the data about your skill displayed in the Alexa App.

    See: The “Editing the Detail Card for the Skill” section of Submitting the Skill for Certification

  2. Test your skill against 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.

    See: Certification Requirements for Custom Skills

  3. Once you are done testing, submit your skill for certification.

    See: Submitting an Alexa Skill for Certification

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 the “Creating a New Version of a Live Skill” section in Submitting the Skill for Certification.