[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"skill-47d0ce44-f63e-48ac-bbd7-f9926e2027de":3,"$fWah2X3z4ZALQGVnWtQDvNWjCGvelCF5a4aDd6pv_oI8":43},{"id":4,"title":5,"description":6,"categoryId":7,"moduleId":8,"tags":9,"prompt":10,"icon":11,"source":12,"sourceUrl":13,"authorId":14,"authorName":15,"isPublic":16,"stars":17,"runs":18,"createdAt":19,"updatedAt":19,"module":20,"category":27,"packages":34},"47d0ce44-f63e-48ac-bbd7-f9926e2027de","amazon-alexa","与Amazon Alexa完全集成，创建智能语音技能，将Alexa转变为以Claude为大脑的助手（Auri项目），并集成到AWS生态系统（Lambda、DynamoDB、Polly、Transcribe、Lex、智能家居）。","cat_coding_devops","mod_coding","sickn33,coding","---\nname: amazon-alexa\ndescription: \"Integracao completa com Amazon Alexa para criar skills de voz inteligentes, transformar Alexa em assistente com Claude como cerebro (projeto Auri) e integrar com AWS ecosystem (Lambda, DynamoDB, Polly, Transcribe, Lex, Smart Home).\"\nrisk: safe\nsource: community\ndate_added: '2026-03-06'\nauthor: renat\ntags:\n- voice\n- alexa\n- aws\n- smart-home\n- iot\ntools:\n- claude-code\n- antigravity\n- cursor\n- gemini-cli\n- codex-cli\n---\n\n# AMAZON ALEXA — Voz Inteligente com Claude\n\n## Overview\n\nIntegracao completa com Amazon Alexa para criar skills de voz inteligentes, transformar Alexa em assistente com Claude como cerebro (projeto Auri) e integrar com AWS ecosystem (Lambda, DynamoDB, Polly, Transcribe, Lex, Smart Home).\n\n## When to Use This Skill\n\n- When you need specialized assistance with this domain\n\n## Do Not Use This Skill When\n\n- The task is unrelated to amazon alexa\n- A simpler, more specific tool can handle the request\n- The user needs general-purpose assistance without domain expertise\n\n## How It Works\n\n> Voce e o especialista em Alexa e AWS Voice. Missao: transformar\n> qualquer dispositivo Alexa em assistente ultra-inteligente usando\n> Claude como LLM backend, com voz neural, memoria persistente e\n> controle de Smart Home. Projeto-chave: AURI.\n\n---\n\n## 1. Visao Geral Do Ecossistema\n\n```\n[Alexa Device] → [Alexa Cloud] → [AWS Lambda] → [Claude API]\n    Fala          Transcricao      Logica          Inteligencia\n      ↑               ↑               ↑                ↑\n   Usuario         Intent        Handler          Anthropic\n                               + DynamoDB\n                               + Polly TTS\n                               + APL Visual\n```\n\n## Componentes Da Arquitetura Auri\n\n| Componente | Servico AWS | Funcao |\n|-----------|-------------|--------|\n| Voz → Texto | Alexa ASR nativo | Reconhecimento de fala |\n| NLU | ASK Interaction Model + Lex V2 | Extrair intent e slots |\n| Backend | AWS Lambda (Python\u002FNode.js) | Logica e orquestracao |\n| LLM | Claude API (Anthropic) | Inteligencia e respostas |\n| Persistencia | Amazon DynamoDB | Historico e preferencias |\n| Texto → Voz | Amazon Polly (neural) | Fala natural da Auri |\n| Interface Visual | APL (Alexa Presentation Language) | Telas em Echo Show |\n| Smart Home | Alexa Smart Home API | Controle de dispositivos |\n| Automacao | Alexa Routines API | Rotinas inteligentes |\n\n---\n\n### 2.1 Pre-Requisitos\n\n```bash\n\n## Ask Cli\n\nnpm install -g ask-cli\nask configure\n\n## Aws Cli\n\npip install awscli\naws configure\n```\n\n## Criar Skill Com Template\n\nask new \\\n  --template hello-world \\\n  --skill-name auri \\\n  --language pt-BR\n\n## └── .Ask\u002FAsk-Resources.Json\n\n```\n\n## 2.3 Configurar Invocation Name\n\nNo arquivo `models\u002Fpt-BR.json`:\n```json\n{\n  \"interactionModel\": {\n    \"languageModel\": {\n      \"invocationName\": \"auri\"\n    }\n  }\n}\n```\n\n---\n\n## 3.1 Intents Essenciais Para Auri\n\n```json\n{\n  \"interactionModel\": {\n    \"languageModel\": {\n      \"invocationName\": \"auri\",\n      \"intents\": [\n        {\"name\": \"AMAZON.HelpIntent\"},\n        {\"name\": \"AMAZON.StopIntent\"},\n        {\"name\": \"AMAZON.CancelIntent\"},\n        {\"name\": \"AMAZON.FallbackIntent\"},\n        {\n          \"name\": \"ChatIntent\",\n          \"slots\": [{\"name\": \"query\", \"type\": \"AMAZON.SearchQuery\"}],\n          \"samples\": [\n            \"{query}\",\n            \"me ajuda com {query}\",\n            \"quero saber sobre {query}\",\n            \"o que voce sabe sobre {query}\",\n            \"explique {query}\",\n            \"pesquise {query}\"\n          ]\n        },\n        {\n          \"name\": \"SmartHomeIntent\",\n          \"slots\": [\n            {\"name\": \"device\", \"type\": \"AMAZON.Room\"},\n            {\"name\": \"action\", \"type\": \"ActionType\"}\n          ],\n          \"samples\": [\n            \"{action} a {device}\",\n            \"controla {device}\",\n            \"acende {device}\",\n            \"apaga {device}\"\n          ]\n        },\n        {\n          \"name\": \"RoutineIntent\",\n          \"slots\": [{\"name\": \"routine\", \"type\": \"RoutineType\"}],\n          \"samples\": [\n            \"ativa rotina {routine}\",\n            \"executa {routine}\",\n            \"modo {routine}\"\n          ]\n        }\n      ],\n      \"types\": [\n        {\n          \"name\": \"ActionType\",\n          \"values\": [\n            {\"name\": {\"value\": \"liga\", \"synonyms\": [\"acende\", \"ativa\", \"liga\"]}},\n            {\"name\": {\"value\": \"desliga\", \"synonyms\": [\"apaga\", \"desativa\", \"desliga\"]}}\n          ]\n        },\n        {\n          \"name\": \"RoutineType\",\n          \"values\": [\n            {\"name\": {\"value\": \"bom dia\", \"synonyms\": [\"acordar\", \"manhã\"]}},\n            {\"name\": {\"value\": \"boa noite\", \"synonyms\": [\"dormir\", \"descansar\"]}},\n            {\"name\": {\"value\": \"trabalho\", \"synonyms\": [\"trabalhar\", \"foco\"]}},\n            {\"name\": {\"value\": \"sair\", \"synonyms\": [\"saindo\", \"goodbye\"]}}\n          ]\n        }\n      ]\n    }\n  }\n}\n```\n\n---\n\n## 4.1 Handler Principal Python\n\n```python\nimport os\nimport time\nimport anthropic\nimport boto3\nfrom ask_sdk_core.skill_builder import SkillBuilder\nfrom ask_sdk_core.handler_input import HandlerInput\nfrom ask_sdk_core.utils import is_intent_name, is_request_type\nfrom ask_sdk_model import Response\nfrom ask_sdk_dynamodb_persistence_adapter import DynamoDbPersistenceAdapter\n\n## ============================================================\n\n@sb.request_handler(can_handle_func=is_request_type(\"LaunchRequest\"))\ndef launch_handler(handler_input: HandlerInput) -> Response:\n    attrs = handler_input.attributes_manager.persistent_attributes\n    name = attrs.get(\"name\", \"\")\n    greeting = f\"Oi{', ' + name if name else ''}! Eu sou a Auri. Como posso ajudar?\"\n    return (handler_input.response_builder\n            .speak(greeting).ask(\"Em que posso ajudar?\").response)\n\n\n@sb.request_handler(can_handle_func=is_intent_name(\"ChatIntent\"))\ndef chat_handler(handler_input: HandlerInput) -> Response:\n    try:\n        # Obter query\n        slots = handler_input.request_envelope.request.intent.slots\n        query = slots[\"query\"].value if slots.get(\"query\") else None\n        if not query:\n            return (handler_input.response_builder\n                    .speak(\"Pode repetir? Nao entendi bem.\").ask(\"Pode repetir?\").response)\n\n        # Carregar historico\n        attrs = handler_input.attributes_manager.persistent_attributes\n        history = attrs.get(\"history\", [])\n\n        # Montar mensagens para Claude\n        messages = history[-MAX_HISTORY:]\n        messages.append({\"role\": \"user\", \"content\": query})\n\n        # Chamar Claude\n        client = anthropic.Anthropic(api_key=os.environ[\"ANTHROPIC_API_KEY\"])\n        response = client.messages.create(\n            model=CLAUDE_MODEL,\n            max_tokens=512,\n            system=AURI_SYSTEM_PROMPT,\n            messages=messages\n        )\n        reply = response.content[0].text\n\n        # Truncar para nao exceder timeout\n        if len(reply) > MAX_RESPONSE_CHARS:\n            reply = reply[:MAX_RESPONSE_CHARS] + \"... Quer que eu continue?\"\n\n        # Salvar historico\n        history.append({\"role\": \"user\", \"content\": query})\n        history.append({\"role\": \"assistant\", \"content\": reply})\n        attrs[\"history\"] = history[-50:]  # Manter ultimas 50\n        handler_input.attributes_manager.persistent_attributes = attrs\n        handler_input.attributes_manager.save_persist\n\n### 4.2 Variaveis De Ambiente Lambda\n\n```\nANTHROPIC_API_KEY=sk-...  (armazenar em Secrets Manager)\nDYNAMODB_TABLE=auri-users\nAWS_REGION=us-east-1\n```\n\n### 4.3 Requirements.Txt\n\n```\nask-sdk-core>=1.19.0\nask-sdk-dynamodb-persistence-adapter>=1.19.0\nanthropic>=0.40.0\nboto3>=1.34.0\n```\n\n---\n\n### 5.1 Criar Tabela\n\n```bash\naws dynamodb create-table \\\n  --table-name auri-users \\\n  --attribute-definitions AttributeName=userId,AttributeType=S \\\n  --key-schema AttributeName=userId,KeyType=HASH \\\n  --billing-mode PAY_PER_REQUEST \\\n  --region us-east-1\n```\n\n### 5.2 Schema Do Usuario\n\n```json\n{\n  \"userId\": \"amzn1.ask.account.XXXXX\",\n  \"name\": \"Joao\",\n  \"history\": [\n    {\"role\": \"user\", \"content\": \"...\"},\n    {\"role\": \"assistant\", \"content\": \"...\"}\n  ],\n  \"preferences\": {\n    \"language\": \"pt-BR\",\n    \"voice\": \"Vitoria\",\n    \"personality\": \"assistente profissional\"\n  },\n  \"smartHome\": {\n    \"devices\": {},\n    \"routines\": {}\n  },\n  \"updatedAt\": 1740960000,\n  \"ttl\": 1748736000\n}\n```\n\n### 5.3 Ttl Automatico (Expirar Dados Antigos)\n\n```python\nimport time\n\n## Adicionar Ttl De 180 Dias Ao Salvar\n\nattrs[\"ttl\"] = int(time.time()) + (180 * 24 * 3600)\n```\n\n---\n\n### 6.1 Vozes Disponiveis (Portugues)\n\n| Voice | Idioma | Tipo | Recomendado |\n|-------|--------|------|-------------|\n| `Vitoria` | pt-BR | Neural | ✅ Auri PT-BR |\n| `Camila` | pt-BR | Neural | Alternativa |\n| `Ricardo` | pt-BR | Standard | Masculino |\n| `Ines` | pt-PT | Neural | Portugal |\n\n### 6.2 Integrar Polly Na Resposta\n\n```python\nimport boto3\nimport base64\n\ndef synthesize_polly(text: str, voice_id: str = \"Vitoria\") -> str:\n    \"\"\"Retorna URL de audio Polly para usar em Alexa.\"\"\"\n    client = boto3.client(\"polly\", region_name=\"us-east-1\")\n    response = client.synthesize_speech(\n        Text=text,\n        OutputFormat=\"mp3\",\n        VoiceId=voice_id,\n        Engine=\"neural\"\n    )\n    # Salvar em S3 e retornar URL\n    # (necessario para usar audio customizado no Alexa)\n    return upload_to_s3(response[\"AudioStream\"].read())\n\ndef speak_with_polly(handler_input, text, voice_id=\"Vitoria\"):\n    \"\"\"Retornar resposta usando voz Polly customizada via SSML.\"\"\"\n    audio_url = synthesize_polly(text, voice_id)\n    ssml = f'\u003Cspeak>\u003Caudio src=\"{audio_url}\"\u002F>\u003C\u002Fspeak>'\n    return handler_input.response_builder.speak(ssml)\n```\n\n### 6.3 Ssml Para Controle De Voz\n\n```xml\n\u003Cspeak>\n  \u003Cprosody rate=\"90%\" pitch=\"+5%\">\n    Oi! Eu sou a Auri.\n  \u003C\u002Fprosody>\n  \u003Cbreak time=\"0.5s\"\u002F>\n  \u003Cemphasis level=\"moderate\">Como posso ajudar?\u003C\u002Femphasis>\n\u003C\u002Fspeak>\n```\n\n---\n\n### 7.1 Template De Chat\n\n```json\n{\n  \"type\": \"APL\",\n  \"version\": \"2023.3\",\n  \"theme\": \"dark\",\n  \"mainTemplate\": {\n    \"parameters\": [\"payload\"],\n    \"items\": [{\n      \"type\": \"Container\",\n      \"width\": \"100%\",\n      \"height\": \"100%\",\n      \"backgroundColor\": \"#1a1a2e\",\n      \"items\": [\n        {\n          \"type\": \"Text\",\n          \"text\": \"AURI\",\n          \"fontSize\": \"32px\",\n          \"color\": \"#e94560\",\n          \"textAlign\": \"center\",\n          \"paddingTop\": \"20px\"\n        },\n        {\n          \"type\": \"Text\",\n          \"text\": \"${payload.lastResponse}\",\n          \"fontSize\": \"24px\",\n          \"color\": \"#ffffff\",\n          \"padding\": \"20px\",\n          \"maxLines\": 8,\n          \"grow\": 1\n        },\n        {\n          \"type\": \"Text\",\n          \"text\": \"Diga algo para continuar...\",\n          \"fontSize\": \"18px\",\n          \"color\": \"#888888\",\n          \"textAlign\": \"center\",\n          \"paddingBottom\": \"20px\"\n        }\n      ]\n    }]\n  }\n}\n```\n\n### 7.2 Adicionar Apl Na Resposta\n\n```python\n@sb.request_handler(can_handle_func=is_intent_name(\"ChatIntent\"))\ndef chat_with_apl(handler_input: HandlerInput) -> Response:\n    # ... obter reply do Claude ...\n\n    # Verificar se device suporta APL\n    supported = handler_input.request_envelope.context.system.device.supported_interfaces\n    has_apl = getattr(supported, \"alexa_presentation_apl\", None) is not None\n\n    if has_apl:\n        apl_directive = {\n            \"type\": \"Alexa.Presentation.APL.RenderDocument\",\n            \"token\": \"auri-chat\",\n            \"document\": CHAT_APL_DOCUMENT,\n            \"datasources\": {\"payload\": {\"lastResponse\": reply}}\n        }\n        handler_input.response_builder.add_directive(apl_directive)\n\n    return handler_input.response_builder.speak(reply).ask(\"Mais alguma coisa?\").response\n```\n\n---\n\n### 8.1 Ativar Smart Home Skill\n\nNo `skill.json`, adicionar:\n```json\n{\n  \"apis\": {\n    \"smartHome\": {\n      \"endpoint\": {\n        \"uri\": \"arn:aws:lambda:us-east-1:123456789:function:auri-smart-home\"\n      }\n    }\n  }\n}\n```\n\n### 8.2 Handler De Smart Home\n\n```python\ndef handle_smart_home_directive(event, context):\n    namespace = event[\"directive\"][\"header\"][\"namespace\"]\n    name = event[\"directive\"][\"header\"][\"name\"]\n    endpoint_id = event[\"directive\"][\"endpoint\"][\"endpointId\"]\n\n    if namespace == \"Alexa.PowerController\":\n        state = \"ON\" if name == \"TurnOn\" else \"OFF\"\n        # Chamar sua API de smart home\n        control_device(endpoint_id, {\"power\": state})\n        return build_smart_home_response(endpoint_id, \"powerState\", state)\n\n    elif namespace == \"Alexa.BrightnessController\":\n        brightness = event[\"directive\"][\"payload\"][\"brightness\"]\n        control_device(endpoint_id, {\"brightness\": brightness})\n        return build_smart_home_response(endpoint_id, \"brightness\", brightness)\n```\n\n### 8.3 Discovery De Dispositivos\n\n```python\ndef handle_discovery(event, context):\n    return {\n        \"event\": {\n            \"header\": {\n                \"namespace\": \"Alexa.Discovery\",\n                \"name\": \"Discover.Response\",\n                \"payloadVersion\": \"3\"\n            },\n            \"payload\": {\n                \"endpoints\": [\n                    {\n                        \"endpointId\": \"light-sala-001\",\n                        \"friendlyName\": \"Luz da Sala\",\n                        \"displayCategories\": [\"LIGHT\"],\n                        \"capabilities\": [\n                            {\n                                \"type\": \"AlexaInterface\",\n                                \"interface\": \"Alexa.PowerController\",\n                                \"version\": \"3\"\n                            },\n                            {\n                                \"type\": \"AlexaInterface\",\n                                \"interface\": \"Alexa.BrightnessController\",\n                                \"version\": \"3\"\n                            }\n                        ]\n                    }\n                ]\n            }\n        }\n    }\n```\n\n---\n\n## Deploy Completo (Skill + Lambda)\n\ncd auri\u002F\nask deploy\n\n## Verificar Status\n\nask status\n\n## Testar No Simulador\n\nask dialog --locale pt-BR\n\n## Teste Especifico De Intent\n\nask simulate \\\n  --text \"abrir auri\" \\\n  --locale pt-BR \\\n  --skill-id amzn1.ask.skill.YOUR-SKILL-ID\n```\n\n## Criar Lambda Manualmente\n\naws lambda create-function \\\n  --function-name auri-skill \\\n  --runtime python3.11 \\\n  --role arn:aws:iam::ACCOUNT:role\u002Fauri-lambda-role \\\n  --handler lambda_function.handler \\\n  --timeout 8 \\\n  --memory-size 512 \\\n  --zip-file fileb:\u002F\u002Ffunction.zip\n\n## Adicionar Trigger Alexa\n\naws lambda add-permission \\\n  --function-name auri-skill \\\n  --statement-id alexa-skill-trigger \\\n  --action lambda:InvokeFunction \\\n  --principal alexa-appkit.amazon.com \\\n  --event-source-token amzn1.ask.skill.YOUR-SKILL-ID\n```\n\n## Usar Secrets Manager\n\naws secretsmanager create-secret \\\n  --name auri\u002Fanthropic-key \\\n  --secret-string '{\"ANTHROPIC_API_KEY\": \"sk-...\"}'\n\n## Lambda Acessa Via Sdk:\n\nimport boto3, json\ndef get_secret(secret_name):\n    client = boto3.client('secretsmanager')\n    response = client.get_secret_value(SecretId=secret_name)\n    return json.loads(response['SecretString'])\n```\n\n---\n\n## Fase 1 — Setup (Dia 1)\n\n```\n[ ] Conta Amazon Developer criada\n[ ] Conta AWS configurada (free tier)\n[ ] ASK CLI instalado e configurado\n[ ] IAM Role criada com permissoes: Lambda, DynamoDB, Polly, Logs\n[ ] Anthropic API key armazenada em Secrets Manager\n```\n\n## Fase 2 — Skill Base (Dia 2-3)\n\n```\n[ ] ask new --template hello-world --skill-name auri\n[ ] Interaction model definido (pt-BR.json)\n[ ] LaunchRequest handler funcionando\n[ ] ChatIntent handler com Claude integrado\n[ ] ask deploy funcionando\n[ ] Teste basico no ASK simulator\n```\n\n## Fase 3 — Persistencia (Dia 4)\n\n```\n[ ] DynamoDB table criada\n[ ] Persistencia de historico funcionando\n[ ] TTL configurado\n[ ] Preferencias do usuario salvas\n```\n\n## Fase 4 — Polly + Apl (Dia 5-6)\n\n```\n[ ] Polly integrado com voz Vitoria (neural)\n[ ] APL template de chat criado\n[ ] APL renderizando em Echo Show simulator\n```\n\n## Fase 5 — Smart Home (Opcional)\n\n```\n[ ] Smart Home skill habilitada\n[ ] Discovery de dispositivos funcionando\n[ ] PowerController implementado\n[ ] Teste com device real\n```\n\n## Fase 6 — Publicacao\n\n```\n[ ] Teste completo de todas funcionalidades\n[ ] Performance OK (\u003C 8s timeout)\n[ ] Certificacao Amazon submetida\n[ ] Publicado na Alexa Skills Store\n```\n\n---\n\n## 11. Comandos Rapidos\n\n| Acao | Comando |\n|------|---------|\n| Criar skill | `ask new --template hello-world` |\n| Deploy | `ask deploy` |\n| Simular | `ask simulate --text \"abre a auri\"` |\n| Dialog interativo | `ask dialog --locale pt-BR` |\n| Ver logs | `ask smapi get-skill-simulation` |\n| Validar modelo | `ask validate --locales pt-BR` |\n| Exportar skill | `ask smapi export-package --skill-id ID` |\n| Listar skills | `ask list skills` |\n\n---\n\n## 12. Referencias\n\n- Boilerplate Python completo: `assets\u002Fboilerplate\u002Flambda_function.py`\n- Interaction model PT-BR: `assets\u002Finteraction-models\u002Fpt-BR.json`\n- APL chat template: `assets\u002Fapl-templates\u002Fchat-interface.json`\n- Smart Home examples: `references\u002Fsmart-home-api.md`\n- ASK SDK Python docs: https:\u002F\u002Fgithub.com\u002Falexa\u002Falexa-skills-kit-sdk-for-python\n- Claude + Alexa guide: https:\u002F\u002Fwww.anthropic.com\u002Fnews\u002Fclaude-and-alexa-plus\n\n## Best Practices\n\n- Provide clear, specific context about your project and requirements\n- Review all suggestions before applying them to production code\n- Combine with other complementary skills for comprehensive analysis\n\n## Common Pitfalls\n\n- Using this skill for tasks outside its domain expertise\n- Applying recommendations without understanding your specific context\n- Not providing enough project context for accurate analysis\n\n## Limitations\n- Use this skill only when the task clearly matches the scope described above.\n- Do not treat the output as a substitute for environment-specific validation, testing, or expert review.\n- Stop and ask for clarification if required inputs, permissions, safety boundaries, or success criteria are missing.\n","","imported","https:\u002F\u002Fgithub.com\u002Fsickn33\u002Fantigravity-awesome-skills","user_system_seed","SkillOPIC",true,185,530,"2026-05-16 13:02:34",{"id":8,"name":21,"slug":22,"icon":23,"description":24,"sort":25,"createdAt":26},"编程开发","coding","mdi-code-braces","代码生成、调试、审查，提升开发效率",2,"2026-05-16 12:53:40",{"id":7,"name":28,"slug":29,"icon":30,"description":31,"moduleId":8,"sort":32,"skillCount":33,"createdAt":26},"DevOps","devops","mdi-cog-outline","CI\u002FCD、容器化、部署运维",3,162,[35],{"id":36,"skillId":4,"version":37,"fileName":38,"fileSize":39,"filePath":40,"fileHash":41,"manifest":42,"createdAt":19},"5d065f26-d313-4bbd-9c6e-f4804b6131ce","1.0.0","amazon-alexa.zip",6577,"uploads\u002Fskills\u002F47d0ce44-f63e-48ac-bbd7-f9926e2027de\u002Famazon-alexa.zip","9517a6851ebb27ecf86c9067071f9a403cabbd44f888f44ae4689a9a4b96618f","[{\"path\":\"SKILL.md\",\"isDirectory\":false,\"size\":17905}]",{"code":44,"message":45,"data":46},200,"success",{"items":47,"stats":48,"page":51},[],{"averageRating":49,"totalRatings":49,"ratingCounts":50},0,[49,49,49,49,49],{"limit":52,"offset":49,"hasMore":53,"nextOffset":52,"ratedOnly":16},15,false]