Submitting a skill to Amazon can be broken down into 4 main steps.
Finalizing before submission
The first step is check your skill does not infringe on the policy guidelines set out by Amazon, they can be found here:
Next step would be to ensure your skill meets all the security guidelines. There are two sets of guidelines depending on whether you are hosting your own service or if you are using AWS Lambda.
If you are hosting your skill using Alexa Lambda it is possible to lock down your skill by adding in your Application ID to your code. This ensures your skill can only be called from a source which contains the same ID.
If, however, you decide to host the skill yourself, you need to make sure that your service supports SSL and you must supply a certificate to the Amazon developer console using x.509 format. It is also important to make sure that your Application is matching, as mentioned before.
Step three: check your skills functionality and make sure everything is working as expected. This means testing as many of the potential utterances as possible – I always find this part interesting, because there are always a few that you’ve missed or that need to be tweaked.
The final step is to make sure your description and publishing information is correct, and up to date. This includes adding any disclaimers or punctuation, and making sure your test utterances are all working perfectly.
Things I have come across that have stopped submission
When developing Amazon Skills there are a range of Amazon intents which are optional to handle; these are AMAZON.Help, AMAZON.Cancel and AMAZON.Stop. Although these are stated as optional I have found that it is generally quicker to implement a basic function to handle these, than to wait for someone to refuse your skill due to them not being there. As mentioned these are optional, however I have had 2 separate skills refused to be accepted until these functions were added.
If your skill only performs a single action, think about whether you really need a welcome message? For example, with our Daily word skill it did not make sense to ask Alexa to open the skill and then ask Alexa for the daily word – a more user friendly experience is that when the skill is open it immediately returns you your daily word. However, if you skill performs more than a single function then you will need a welcome message, in order to explain what the user can do with your skill.
If your skill is connected to something that is restricted to age then you need to add a disclaimer, even if it is not directly interacting with age restriction. For example, when we were working on our Powerball Skill, because it was associated with a lottery organization we had to add a disclaimer, even though it was not for actually buying lottery tickets.
Make sure your example utterances are clear and basic enough for Alexa to get them right a high percentage of the time. The examples you provide in the skill description will be shown on the skills page, and will therefore be what most people try first. If these don’t work it could potentially put the user off running your skill.
Keep adding to your utterances, I am sure there will be ways in which people try to interact with Alexa that no one could possibly account for, however ask people around you for feedback and get people using your skill as soon as possible. It seems like every time I develop a new skill for Alexa I am constantly tweaking the Invocation Name and utterances, in an effort to make it easier to run. However the way I naturally say things may be different to the way other people do, therefore it has been invaluable to get peoples thoughts as early as possible.
One of the most important lessons I have learned whilst working with Alexa is to listen to feedback. Amazon have added the ability for users to review the skills they are using, this is valuable feedback about how people are using your skill, and issues they have found whilst interacting with your skill. For example, we created daily word, and throughout development I must have asked Alexa for daily word over a thousand times. When I released the skill everything seemed fine and was getting a lot of users, however I did notice that after a while the number of users started to drop.
Thanks to the new review system I was able to check what users thought about the skill and adapt it and add new features to keep the users happy, and as it turned out all it needed was for me to slow down the speech of the daily word as a lot of users thought it was too fast, during development I must have heard it so many times and just gotten used to that speed!
I would also highly recommend becoming a member of the developer forums. Not only are people very friendly, and eager to help, but there is also a wealth of knowledge which you are able to pull from. It is also worth noting that Amazon have a big presence in these forums and are very supportive of developers.