Home > Alexa > Alexa Skills Kit

Registering and Managing Custom Skills in the Developer Portal


Registering a new skill or ability on the Amazon Developer Portal creates a configuration containing the information that the Alexa service needs to do the following:

  • Route requests to the AWS Lambda function or web service that implements the skill. AWS Lambda is a service offering by Amazon Web Services.
  • Display information about the skill in the Amazon Alexa App. The app shows all published skills, as well as all of your own skills currently under development.

You must register a skill before you can test it with the Service Simulator in the developer portal or an Alexa-enabled device.

Understanding the Configuration

The configuration for a skill includes information entered in the following sections on the developer portal:

  • Skill Information defines basic information about the skill, such as its name and type.
  • Interaction Model defines your voice user interface. This includes the intent schema, sample utterances, and any custom slot types.
  • SSL Certificate collects information related to SSL. This is only used when you are hosting a skill on your own HTTPS endpoint, rather than using AWS Lambda.
  • Configuration defines your endpoint and other options, such as account linking and permissions. Account linking lets you create a link between the Alexa user and a user account in your own system. Permissions let you ask the user for access to the address of their device so that you can use this address in your skill to provide address-based information and customization.
  • Test lets you enable your skill for testing and do basic testing in the Service Simulator. You can use this to send your service commands and see the responses it returns. You can also listen to the responses in Alexa’s voice.
  • Publishing Information determines how the skill is presented to end users in the Alexa app. For example, you provide descriptive text and example phrases to help users understand how to use the skill, and image icons.
  • Privacy and Compliance contains options related to user privacy, such as the URLs for your privacy policy and terms of use.

When you create a skill, you select the language for the skill (English (US), English (UK), or German). A skill can support multiple languages. See Developing Skills in Multiple Languages for details.

Registering an Alexa Skill

To configure a new skill, you need an account on the Developer Portal. If you don’t already have an account, go to https://developer.amazon.com/login.html and create an account.

Minimum Fields for Testing a Skill

Note that you do not need to fill in all of the required fields for testing. The minimum requirements for testing are:

  • Skill Information: Skill Type, Name, and Invocation Name.
  • Interaction Model: (Including both the intent schema and the sample utterances).
  • Configuration: Endpoint.
  • SSL Certificate (Set to one of the three options. Not required for Lambda).
  • Test (Set to Enabled).

When you are ready to submit the skill for certification, you must complete all of the sections. Once all required fields in a section are complete, a green check mark is displayed next to the section name. You can submit the skill for certification once all sections have the green check marks. For details about testing your skill to ensure it passes certification, see Certification Requirements for Custom Skills.

Register a New Skill

  1. Log on to the Alexa section of the developer portal. From the developer portal console page, click Alexa.
  2. In the Alexa Skills Kit box, click Get Started to open the Alexa Skills Kit page. This displays any skills you have already created.
  3. Click the Add a New Skill button.
  4. Select the Language you want to add from the drop-down list. You can add additional languages after completing the initial configuration.
  5. For the Skill Type, select Custom Interaction Model.

    For more about the different types of skills, see Understanding the Different Types of Skills.

  6. Enter the Name and Invocation Name.
    • The name is displayed to end users when they view the list of published skills.
    • The invocation name is used with a set of defined phrases to invoke your skill.
    • You can change both of these items at any time until your skill is certified and published.
    • Once you have entered the Skill Type, Name, and Invocation Name, you can save the skill and complete the rest of the fields later.
  7. If your skill uses the AudioPlayer interface to stream audio, set the Audio Player option to Yes.
  8. On the Interaction Model page, copy and paste your Intent Schema and Sample Utterances into the provided text boxes, then choose Next.
  9. If you are hosting your cloud-based service as a web service, select the SSL option you want to use on the SSL Certificate page and choose Next. If you are hosting your service as a Lambda function, this section is not shown.

    See About the SSL Options for more information about the three options.

    If you select I will upload a self-signed certificate, open the certificate’s .pem file in a text editor, copy the entire contents, and paste it into the provided text box.

  10. On the Configuration page, enter your Endpoint.
  11. Also on the Configuration page, determine whether you need account linking.
    • If your skill doesn’t need account linking, select No.
    • If your skill will need account linking, but you aren’t yet ready to set these options, ignore this section and proceed to Permissions below it. The account linking options are not required to start testing, but you will need to come back and fill in this section before you can test any account-linking specific features in your skill.
  12. Still on the Configuration page, in the Permissions section, select Device Address if your skill requires address information. Select either Full Address or Country & Postal Code, depending on your skill’s requirements. Only select this option if your skill will require address information to operate correctly. See Device Address API.
  13. Make sure the Test page shows that your skill is Enabled for testing. Note that if you select Full Address, you will be required to have an applicable privacy policy in place.

At this point, you should be able to test the skill using either the Service Simulator or an Alexa-enabled device.

Updating the Configuration for an Existing Alexa Skill

You can edit the configuration for a skill in the developer portal. Refer back to Understanding the Configuration for details about the configuration for an Alexa skill.

Note: Once a skill is published to users, it is considered live. You cannot edit the configuration while it is live. Instead, you must create a new version. See “Creating a New Version of an Alexa Skill” in Publishing an Alexa Skill.

Note: as you test, you will likely add additional sample utterances. After adding a new utterance, there may be a short delay before the new utterance is available for testing, particularly if you want to test the utterance with your invocation name (“Alexa, ask <invocation name> to give me the horoscope for Gemini”).

Edit the Configuration for an Existing Skill:

  1. Log on to the Alexa section of the developer portal.

    From the developer portal console page, click Apps & Services, then Alexa.

  2. In the Alexa Skills Kit box, click Get Started. This displays a list of your existing Alexa skills.
  3. Find the skill to change in the list and choose Edit.
  4. Click the section for the information you want to edit.

Delete the configuration for an Existing Skill in Development:

  1. Log on to the Alexa section of the developer portal.

    From the developer portal console page, click Apps & Services, then Alexa.

  2. In the Alexa Skills Kit box, click Get Started. This displays a list of your existing Alexa skills.
  3. Find the skill to change in the list and choose Delete.

    Note that this completely removes the skill. All information you have entered for the skill is deleted.

You cannot delete skills that are either live or in certification.

About the SSL Options

When Alexa communicates with your web service, user requests and corresponding responses are transmitted over the Internet. To protect the confidentiality and integrity of this data, Alexa strictly enforces that HTTP connections are secured using SSL/TLS.

This means that the web service for a skill published to users must present a valid, trusted certificate when the connection is established and must possess the corresponding private key.

The configuration you need to get started depends on how you plan to get the SSL certificate for your web service:

  1. If you host your web service on an endpoint for which you already have a certificate signed by an Amazon-approved certificate authority, you do not need to do any further SSL configuration.
  2. If you create your service as a Lambda function using AWS Lambda, you do not need to do any SSL configuration. Lambda functions use invocation permissions to control who can call them. See Creating an AWS Lambda Function for a Custom Skill.
  3. If you host your web service with a cloud platform that provides a wildcard certificate, you do not need to do any further SSL configuration for testing.
    • A wildcard certificate is set up to provide SSL for multiple sub-domains. It still must be signed by a trusted certificate authority.
    • Check with the cloud hosting provider you are using to determine whether they provide this type of certificate to your web service.
    • Note that the wildcard certificate provided by your cloud platform must be signed by an Amazon-approved certificate authority.
  4. If you create a free self-signed certificate, you can create the certificate yourself, upload it to the Developer Portal when you register the skill, and configure your endpoint to present this certificate when it connects to Alexa. See Testing a Custom Skill for instructions.
    • This option can only be used for testing.
    • Your endpoint will need to present a certificate signed by an Amazon-approved certificate authority when you make the new Alexa ability available to users.

Next Steps

Either create a Lambda function for your skill, or set up your web service:

Alternately, configure additional languages for your skill: