{"id":15619237,"url":"https://github.com/xavidop/alexa-skill-autodeployer","last_synced_at":"2025-07-26T00:10:54.912Z","repository":{"id":44757417,"uuid":"279931732","full_name":"xavidop/alexa-skill-autodeployer","owner":"xavidop","description":"Automate Alexa Skill Templates deployments ","archived":false,"fork":false,"pushed_at":"2022-01-26T15:18:09.000Z","size":362,"stargazers_count":0,"open_issues_count":1,"forks_count":0,"subscribers_count":2,"default_branch":"master","last_synced_at":"2025-02-04T16:18:34.576Z","etag":null,"topics":["alexa","alexa-cli","circleci","circleci-api","circleci-pipeline"],"latest_commit_sha":null,"homepage":"","language":"Shell","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/xavidop.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":".github/FUNDING.yml","license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null},"funding":{"github":"xavidop","patreon":null,"open_collective":null,"ko_fi":null,"tidelift":null,"community_bridge":null,"liberapay":null,"issuehunt":null,"otechie":null,"custom":null}},"created_at":"2020-07-15T17:18:26.000Z","updated_at":"2021-01-10T19:02:33.000Z","dependencies_parsed_at":"2022-09-08T07:21:54.670Z","dependency_job_id":null,"html_url":"https://github.com/xavidop/alexa-skill-autodeployer","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/xavidop%2Falexa-skill-autodeployer","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/xavidop%2Falexa-skill-autodeployer/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/xavidop%2Falexa-skill-autodeployer/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/xavidop%2Falexa-skill-autodeployer/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/xavidop","download_url":"https://codeload.github.com/xavidop/alexa-skill-autodeployer/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":246202734,"owners_count":20740019,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["alexa","alexa-cli","circleci","circleci-api","circleci-pipeline"],"created_at":"2024-10-03T08:03:52.176Z","updated_at":"2025-03-29T15:27:27.224Z","avatar_url":"https://github.com/xavidop.png","language":"Shell","funding_links":["https://github.com/sponsors/xavidop"],"categories":[],"sub_categories":[],"readme":"# Alexa Skill Auto-Deployer\n\nImagine that you find a template of an Alexa Skill on the internet and want to try it immediately. Well, this is possible thanks to this new tool called Alexa Skill Auto-Deployer.\nThese steps are automated using the continuous integration system circleCI and are executed using its official API.\n\u003c!-- TOC --\u003e\n\n- [Alexa Skill Auto-Deployer](#alexa-skill-auto-deployer)\n  - [Prerequisites](#prerequisites)\n  - [ASK CLI (Alexa Skill Kit CLI)](#ask-cli-alexa-skill-kit-cli)\n    - [Installation](#installation)\n  - [CircleCI](#circleci)\n  - [Automation Process](#automation-process)\n    - [Setting up the parameters](#setting-up-the-parameters)\n    - [Setting up the executor](#setting-up-the-executor)\n    - [Checkout](#checkout)\n    - [Creating an Alexa Hosted Skill](#creating-an-alexa-hosted-skill)\n    - [Downloading the template](#downloading-the-template)\n    - [Deploy the Alexa Skill with all changes](#deploy-the-alexa-skill-with-all-changes)\n    - [Full Pipeline Job](#full-pipeline-job)\n  - [Invocation \u0026 Usage](#invocation--usage)\n    - [Example](#example)\n  - [Resources](#resources)\n  - [Conclusion](#conclusion)\n\n\u003c!-- /TOC --\u003e\n\n## Prerequisites\n\nHere you have the technologies used in this project\n1. ASK CLI - [Install and configure ASK CLI](https://developer.amazon.com/es-ES/docs/alexa/smapi/quick-start-alexa-skills-kit-command-line-interface.html)\n2. CircleCI Account - [Sign up here](https://circleci.com/)\n3. Visual Studio Code\n\n## ASK CLI (Alexa Skill Kit CLI)\n\nThe Alexa Skills Kit Command Line Interface (ASK CLI) is a tool for you to manage your Alexa skills and related resources, such as AWS Lambda functions.\nWith ASK CLI, you have access to the Skill Management API, which allows you to manage Alexa skills programmatically from the command line.\nWe will use this powerful tool to auto-deploy our Alexa Skill template. Let's start!\n\n### Installation\n\nWe need to install the ASK CLI and some other bash tools like `git`, `expect` or `curl`. Don't worry, I prepared for you a Docker Image where all those tools are [included](https://hub.docker.com/repository/docker/xavidop/alexa-ask-aws-cli).\nWe will use this Docker Image as a main executor in all the steps of the CircleCI Pipeline.\n## CircleCI\n\nCircleCi is one of the most powerful and used CI CD platforms of the world. CircleCI integrates with GitHub, GitHub Enterprise, and Bitbucket. Every time you commit code, CircleCI creates and executes a pipeline. CircleCI automatically runs your pipeline in a clean container or virtual machine, allowing you to test every commit.\nAdditionally, it has a very powerful API which we will use in this tutorial.\n\n## Automation Process\n\nLet's explain job by job what is happening in our powerful pipeline. \n![image](docs/pipeline.png)\n\n### Setting up the parameters\n\nFirst of all, you have to know that we are going to use the CircleCI API so because of that, we will create some parameters to make this process reusable:\n\n\n**NOTE:** If you want to run successfully every ASK CLI command, you have to set up these parameters properly:\n\n* `ASK_ACCESS_TOKEN`: the Alexa Access Token generated.\n* `ASK_REFRESH_TOKEN`: the Alexa refresh token generated as well.\n* `ASK_VENDOR_ID`: your Vendor ID.\n* `ASK_VERSION`: the version of the ASK CLI you want to use. You can find all the versions available [here](https://hub.docker.com/repository/docker/xavidop/alexa-ask-aws-cli/). By default, 2.0.\n* `GIT_TEMPLATE_URL`: the Alexa Skill template you want to deploy in your AWS Account. This parameter must be a git repo url. Example: https://github.com/alexa/skill-sample-nodejs-highlowgame.git\n* `GIT_BRANCH`: the branch of the Alexa skill template git repo you want to use. By default, master.\n* \nHow to obtain the ASK CLI related variables are explained in [this post](https://dzone.com/articles/docker-image-for-ask-and-aws-cli-1)\n\nHere you have the parameters section of the CircleCI pipeline:\n```yaml\n  parameters:\n    ASK_ACCESS_TOKEN:\n        type: string\n        default: \"\"\n    ASK_REFRESH_TOKEN:\n        type: string\n        default: \"\"\n    ASK_VENDOR_ID:\n        type: string\n        default: \"\"\n    ASK_VERSION:\n        type: string\n        default: \"2.0\"\n    GIT_TEMPLATE_URL:\n        type: string\n        default: \"\"\n    GIT_BRANCH:\n        type: string\n        default: \"master\"\n\n```\n\n### Setting up the executor\n\nWe have to define in our pipeline the executor that we are going to execute. This executor will be a Docker Image we have created and have installed the ASK CLI and AWS CLI.\n\nThese executor has more bash tools intalled as well. This Docker Image have a tag per ASK CLI version, so you can specify the version with the pipeline parameter `ASK_VERSION`.\n\nYou can find all the ASK CLI versions supported [here](https://hub.docker.com/repository/docker/xavidop/alexa-ask-aws-cli/tags).\n\n```yaml\n  executors:\n    ask-executor:\n        docker:\n        - image: xavidop/alexa-ask-aws-cli:\u003c\u003c pipeline.parameters.ASK_VERSION \u003e\u003e\n\n```\n\n### Checkout\n\nThe second thing we need to do is download the code of this repo because there are some script that we are going to execute in this pipeline.\n\nOnce downloaded, we will add the execution permissions for those scripts to be able to run them properly.\nFinally, we persist all the code downloaded in order to reuse it in the next steps.\n\n```yaml\n  checkout:\n    executor: ask-executor\n    environment:\n      ASK_ACCESS_TOKEN: \u003c\u003c pipeline.parameters.ASK_ACCESS_TOKEN \u003e\u003e\n      ASK_REFRESH_TOKEN: \u003c\u003c pipeline.parameters.ASK_REFRESH_TOKEN \u003e\u003e\n      ASK_VENDOR_ID: \u003c\u003c pipeline.parameters.ASK_VENDOR_ID \u003e\u003e\n      ASK_VERSION: \u003c\u003c pipeline.parameters.ASK_VERSION \u003e\u003e\n      GIT_TEMPLATE_URL: \u003c\u003c pipeline.parameters.GIT_TEMPLATE_URL \u003e\u003e\n      GIT_BRANCH: \u003c\u003c pipeline.parameters.GIT_BRANCH \u003e\u003e\n    steps:\n      - checkout\n      - run: chmod +x -R ./create_hosted_skill_v2.sh\n      - run: chmod +x -R ./create_hosted_skill_v1.sh\n      - run: chmod +x -R ./deploy_hosted_skill_v1.sh\n      - persist_to_workspace:\n          root: /home/node/\n          paths:\n            - project\n            - .ask\n```\n\n### Creating an Alexa Hosted Skill\n\nThis is where the magic starts. Once we have downloaded all the code, we will create a new Alexa Hosted Skill. \n\nFor this process we will use the bash tool `expect`. This is because the creation of the Alexa Hosted Skill requires interaction with a keyboard.\n\nThese scripts works like this: they will expect some known strings and then, they will introduce a value or they will just simulate pressing the enter key(`\\r`) automatically. Depending on the input needed in the creation process.\n\n1. For **ASK CLI 1.x** version:\n```bash\n#!/usr/bin/expect\n\nset timeout 6000\n\nspawn ask create-hosted-skill\nexpect \"Please type in your skill name\"\nsend -- \"template\\r\"\nexpect \"Please select the runtime\"\nsend -- \"\\r\"\nexpect \"Alexa hosted skill is created. Do you want to clone the skill\"\nsend -- \"\\r\"\nexpect \"successfuly cloned.\"\n```\n\n2. For **ASK CLI 2.x** version:\n```bash\n#!/usr/bin/expect\n\nset template [lindex $argv 0];\n\nset timeout 6000\n\nspawn ask new \nexpect \"Choose the programming language you will use to code your skill\"\nsend -- \"\\r\"\nexpect \"Choose a method to host your skill's backend resources\"\nsend -- \"\\r\"\nexpect \"Choose the default locale for your skill\"\nsend -- \"\\r\"\nexpect \"Choose the default region for your skill\"\nsend -- \"\\r\"\nexpect \"Please type in your skill name:\"\nsend -- \"${template}\\r\"\nexpect \"Please type in your folder name\"\nsend -- \"../template\\r\"\nexpect \"Hosted skill provisioning finished\"\n```\n\nThe scripts above will create a HelloWorld skill:\n\n![image](docs/helloworld.png)\n\nOne important thing here is that in this step we are going to set the environment variables in the executor which are needed to run the Alexa Hosted ASK CLI creation command. The values of this environment variables will be the ones received as parameters.\n\nHere you can find the full code of this job:\n\n```yaml\n  create_hosted_skill:\n    executor: ask-executor\n    environment:\n      ASK_ACCESS_TOKEN: \u003c\u003c pipeline.parameters.ASK_ACCESS_TOKEN \u003e\u003e\n      ASK_REFRESH_TOKEN: \u003c\u003c pipeline.parameters.ASK_REFRESH_TOKEN \u003e\u003e\n      ASK_VENDOR_ID: \u003c\u003c pipeline.parameters.ASK_VENDOR_ID \u003e\u003e\n      ASK_VERSION: \u003c\u003c pipeline.parameters.ASK_VERSION \u003e\u003e\n      GIT_TEMPLATE_URL: \u003c\u003c pipeline.parameters.GIT_TEMPLATE_URL \u003e\u003e\n      GIT_BRANCH: \u003c\u003c pipeline.parameters.GIT_BRANCH \u003e\u003e\n    steps:\n      - attach_workspace:\n          at: /home/node/\n      - run: \n          name: create hosted skill\n          command: |\n            base_file=$(basename $GIT_TEMPLATE_URL)\n            repo_folder=${base_file%.*} \n            \n             if [ \"$ASK_VERSION\" == \"1.0\" ]; then\n              ./create_hosted_skill_v1.sh $repo_folder\n            else\n             ./create_hosted_skill_v2.sh $repo_folder\n            fi           \n      - persist_to_workspace:\n          root: /home/node/\n          paths:\n            - project\n            - .ask\n```\n\n### Downloading the template\n\nNow we have an Alexa Hosted Skill (which is a HelloWorld Skill) created and deployed with an ARN. It is time to download the Alexa Skill Template set as a parameter. This template must be a git repository.\nYou can specify the branch of the git template repo. If it is not specified, by default we will use the master branch.\n\nWhen we have downloaded the template of the Alexa Skill, now we have to merge both skills (the helloWorld created in the previous step and the one downloaded recently).\n\nThis is because the Alexa Skill template we do not know how its structured and which `deployer` is using (Alexa Hosted, CloudFormation or AWS-lambda). This is why we are doing this step which is the most important!\n\nSo once we have mentioned the reasons to execute this step. Let's explain step by step this job:\n1. The first thing that we are going to do is to clean up the HelloWorld Skill created before. It means remove the interaction model and its lambda code.\n2. Then depending of the ASK CLI Vvrsion you have chosen, we will migrate all the info of the Alexa Skill template to the HelloWorld Skill:\n   1. For **ASK CLI 1.x** version:\n      1. For this version which is deprecated we only merge the following things of the Alexa Skill template:\n         1. The publishing information.\n         2. The lambda code.\n      2. We also remove the `.ask` and `.git` folder of the downloaded Alexa Skill template.\n   2. For **ASK CLI 2.x** version:\n      1. We get all the endpoints and regions information of the Helloworld Skill and put that info in the downloaded Alexa Skill template.\n      2. We remove the `.ask` and `.git` folder of the downloaded Alexa Skill template.\n      3. Then we replace the lambda code, skill-package and all the skill metadata with the ones downloaded in the template. \n\nIn this step we set the environment variables as well.\n\nHere you can find the full code of this job:\n\n```yaml\n  download_template:\n    executor: ask-executor\n    environment:\n      ASK_ACCESS_TOKEN: \u003c\u003c pipeline.parameters.ASK_ACCESS_TOKEN \u003e\u003e\n      ASK_REFRESH_TOKEN: \u003c\u003c pipeline.parameters.ASK_REFRESH_TOKEN \u003e\u003e\n      ASK_VENDOR_ID: \u003c\u003c pipeline.parameters.ASK_VENDOR_ID \u003e\u003e\n      ASK_VERSION: \u003c\u003c pipeline.parameters.ASK_VERSION \u003e\u003e\n      GIT_TEMPLATE_URL: \u003c\u003c pipeline.parameters.GIT_TEMPLATE_URL \u003e\u003e\n      GIT_BRANCH: \u003c\u003c pipeline.parameters.GIT_BRANCH \u003e\u003e\n    steps:\n      - attach_workspace:\n          at: /home/node/\n      #removing ask cli template lambda + skill-packages\n      - run: \n          name: cleanup skill created\n          command: | \n            rm -rf template/lambda/\n\n            if [ \"$ASK_VERSION\" == \"1.0\" ]; then\n              rm -rf template/models\n            else\n              rm -rf template/skill-package/interactionModels\n            fi           \n      - run: git clone -b $GIT_BRANCH $GIT_TEMPLATE_URL\n       #cleanup template downloaded metada, getting only lambda + skill-packages objeects \n       #copy downloaded template fully cleaned to final template to push\n      - run: \n          name: merge donwloaded template\n          command: |\n            base_file=$(basename $GIT_TEMPLATE_URL)\n            repo_folder=${base_file%.*}\n\n            rm -rf $repo_folder/.git \n            if [ \"$ASK_VERSION\" == \"1.0\" ]; then\n              info=$(cat $repo_folder/skill.json | jq -rc .manifest.publishingInformation)\n              skill_info=$(jq -rc --argjson info \"$info\" '.manifest.publishingInformation = $info' template/skill.json)\n              echo $skill_info \u003e template/skill.json\n\n              dir=$(cat $repo_folder/skill.json | jq -r .manifest.apis.custom.endpoint.sourceDir)\n\n              rm -rf $repo_folder/.ask\n              rm -rf $repo_folder/skill.json\n              cp -R $repo_folder/. template/\n              \n              if [ \"$dir\" != \"lambda/\" ]; then\n                cp -R  template/${dir}/. template/lambda/\n                rm -rf template/${dir}\n              fi\n            else\n               endpoint=$(cat template/skill-package/skill.json | jq -rc .manifest.apis.custom.endpoint)\n               regions=$(cat template/skill-package/skill.json | jq -rc .manifest.apis.custom.regions)\n               \n               skill_info=$(jq -rc --argjson endpoint \"$endpoint\" '.manifest.apis.custom.endpoint = $endpoint' $repo_folder/skill-package/skill.json)\n               echo $skill_info \u003e $repo_folder/skill-package/skill.json\n               skill_info=$(jq -rc --argjson regions \"$regions\" '.manifest.apis.custom.regions = $regions' $repo_folder/skill-package/skill.json)\n               echo $skill_info \u003e $repo_folder/skill-package/skill.json\n\n               dir=$(cat $repo_folder/ask-resources.json | jq -r .profiles.default.code.default.src)\n\n               rm -rf $repo_folder/.ask \n               rm -rf $repo_folder/ask-resources.json \n               cp -R $repo_folder/. template/\n              \n               if [ \"$dir\" != \"./lambda\" ]; then\n                cp -R  template/${dir}/. template/lambda/\n                rm -rf template/${dir}\n               fi\n            fi\n            \n      - persist_to_workspace:\n          root: /home/node/\n          paths:\n            - project\n            - .ask\n```\n\n### Deploy the Alexa Skill with all changes\n\nAt this moment we have our first HelloWorld Alexa Hosted Skill successfully merged with the downloaded Alexa Skill template. Now it is time to deploy the changes.\n\nDepending on the version of the ASK CLI version, it will execute one commands or another:\n1. For **ASK CLI 1.x** version:\n   1. We will execute another `expect` script. In this case we will execute `deploy_hosted_skill_v1.sh`:\n   ```bash\n    #!/usr/bin/expect\n\n    set timeout 6000\n\n    spawn ask deploy --force\n    expect \"Do you want to proceed with the above deployments\"\n    send -- \"\\r\"\n    expect \"Your skill code deployment has started\"\n   ```\n2. For **ASK CLI 2.x** version:\n   1. We will just run: `git push origin master`\n\nIn this step we set the environment variables as well.\n\nHere you can find the full code of this job:\n\n```yaml\n  deploy_hosted_skill:\n    executor: ask-executor\n    environment:\n      ASK_ACCESS_TOKEN: \u003c\u003c pipeline.parameters.ASK_ACCESS_TOKEN \u003e\u003e\n      ASK_REFRESH_TOKEN: \u003c\u003c pipeline.parameters.ASK_REFRESH_TOKEN \u003e\u003e\n      ASK_VENDOR_ID: \u003c\u003c pipeline.parameters.ASK_VENDOR_ID \u003e\u003e\n      ASK_VERSION: \u003c\u003c pipeline.parameters.ASK_VERSION \u003e\u003e\n      GIT_TEMPLATE_URL: \u003c\u003c pipeline.parameters.GIT_TEMPLATE_URL \u003e\u003e\n      GIT_BRANCH: \u003c\u003c pipeline.parameters.GIT_BRANCH \u003e\u003e\n    steps:\n      - attach_workspace:\n          at: /home/node/\n      #init some git global variables\n      - run: git config --global user.email \"you@example.com\"\n      - run: git config --global user.name \"Your Name\"\n      #push the final skill\n      - run: \n          name: deploy\n          command: |\n            cd template/\n            echo \"\" \u003e\u003e .gitignore\n            echo \"deploy_hosted_skill_v1.sh\" \u003e\u003e .gitignore\n            git add . \n            git commit -m \"template added\" \n            if [ \"$ASK_VERSION\" == \"1.0\" ]; then\n              cp ../deploy_hosted_skill_v1.sh ./  \n              ./deploy_hosted_skill_v1.sh\n            else\n              git push origin master\n            fi\n      - store_artifacts:\n          path: ./\n```\n\nFinally, our HelloWorld skill will transform into the downloaded Alexa Skill template:\n\n![image](docs/final.png)\n\n### Full Pipeline Job\n\nHere you can find the pipeline specification with all the jobs commented above:\n\n```yaml\n  workflows:\n    skill-pipeline:\n        jobs:\n        - checkout\n        - create_hosted_skill:\n            requires:\n                - checkout\n        - download_template:\n            requires:\n            - create_hosted_skill\n        - deploy_hosted_skill:\n            requires:\n            - download_template\n```\n\n**NOTE:** all the CircleCI config files are located on `.circleci` folder.\n## Invocation \u0026 Usage\n\nNow the automation process is fully explained. Let's start explaining how to use it using the CircleCI API.\n\nIt is important to mention that all the credentials are not be stored in any place. We will use it only for the automation process. Please check the source code if you have some doubts.\n\nThis is how the pipeline can be called using the CircleCI pipeline:\n```bash\n curl --request POST \\\n      --url https://circleci.com/api/v2/project/\u003cyour-vcs\u003e/\u003cyour-username\u003e/\u003cyour-repo-name\u003e/pipeline?circle-token=\u003cyour-circle-ci-token\u003e \\\n      --header 'content-type: application/json' \\\n      --data-binary @- \u003c\u003c EOF  \n      { \n        \"parameters\": { \n            \"ASK_ACCESS_TOKEN\": \"your-access-token\", \n            \"ASK_REFRESH_TOKEN\": \"your-refresh-token\", \n            \"ASK_VENDOR_ID\": \"your-vendor-id\", \\\n            \"GIT_TEMPLATE_URL\": \"the-git-template-url\", \n            \"GIT_BRANCH\": \"the-git-template-branch\", \n            \"ASK_VERSION\": \"ask-cli-version\" \n        } \n    }\n    EOF\n```\n\n### Example\n\nImagine that we want to deploy this template https://github.com/alexa/skill-sample-nodejs-highlowgame.git as an Alexa Hosted Skill in our AWS Account:\n\n![image](docs/template.png)\n\nThe REST call will be like these ones:\n1. For **ASK CLI 1.x** version:\n```bash\n curl --request POST \\\n      --url https://circleci.com/api/v2/project/github/xavidop/alexa-skill-autodeployer/pipeline?circle-token=a96e83d347a52c19d2b38dd981f3fc2fa0217f7e \\\n      --header 'content-type: application/json' \\\n      --data-binary @- \u003c\u003c EOF \n      { \n        \"parameters\": { \n            \"ASK_ACCESS_TOKEN\": \"your-access-token\", \n            \"ASK_REFRESH_TOKEN\": \"your-refresh-token\", \n            \"ASK_VENDOR_ID\": \"your-vendor-id\", \n            \"GIT_TEMPLATE_URL\": \"https://github.com/alexa/skill-sample-nodejs-highlowgame.git\", \n            \"GIT_BRANCH\": \"master\", \n            \"ASK_VERSION\": \"1.0\" \n        } \n    }\n    EOF\n```\n\n2. For **ASK CLI 2.x** version:\n```bash\n curl --request POST \\\n      --url https://circleci.com/api/v2/project/github/xavidop/alexa-skill-autodeployer/pipeline?circle-token=a96e83d347a52c19d2b38dd981f3fc2fa0217f7e \\\n      --header 'content-type: application/json' \\\n      --data-binary @- \u003c\u003c EOF \n      { \n        \"parameters\": { \n            \"ASK_ACCESS_TOKEN\": \"your-access-token\", \n            \"ASK_REFRESH_TOKEN\": \"your-refresh-token\", \n            \"ASK_VENDOR_ID\": \"your-vendor-id\", \n            \"GIT_TEMPLATE_URL\": \"https://github.com/alexa/skill-sample-nodejs-highlowgame.git\", \n            \"GIT_BRANCH\": \"ask-cli-x\", \n            \"ASK_VERSION\": \"2.0\" \n        } \n    }\n    EOF\n```\n\n\n## Resources\n* [DevOps Wikipedia](https://en.wikipedia.org/wiki/DevOps) - Wikipedia reference\n* [Official Alexa Skill Management API Documentation](https://developer.amazon.com/es-ES/docs/alexa/smapi/skill-testing-operations.html) - Alexa Skill Management API Documentation\n* [Official CircleCI Documentation](https://circleci.com/docs/) - Official CircleCI Documentation\n* [Official CircleCI API Documentation](https://circleci.com/docs/api/v2/) - Official CircleCI API Documentation\n\n## Conclusion \n\nThanks to the ASK CLI we can perform this complex task.\n\nI hope this tool is useful to you.\n\nYou can use this tool, for example, for the following use cases:\n1. Add a button in your Alexa Skill templates git repos automatically deploy them in your AWS account.\n2. Add a button in your webpage that performs a call to this process.\n3. Transform you Self Hosted skills into Alexa Hosted ones.\n4. Trying new Alexa skills and keep learning!\n\nThat's all folks!\n\nHappy coding!","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fxavidop%2Falexa-skill-autodeployer","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fxavidop%2Falexa-skill-autodeployer","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fxavidop%2Falexa-skill-autodeployer/lists"}