💡 Inspiration: The Voice Developer Dilemma

Building an Alexa skill today is notoriously tedious. Even experienced developers face a daunting barrier to entry:

  • 3 to 5 hours spent manually configuring JSON interaction models, custom intents, slot types, and sample utterances.
  • Deep ASK SDK knowledge required just to wire up session attributes, state persistence, and error handlers.
  • Trial-and-error testing with no automated way to validate utterance permutations or slot edge cases prior to deployment.
  • Fragmented tooling where ASK CLI, AWS Lambda console, DynamoDB, and CloudWatch operate in silos.

We asked: What if an AI agent could take a plain English description and generate a complete, production-ready, fully tested, and deployable Alexa skill package in under 60 seconds?

That vision is SkillForge — an AI-powered MCP tool server that turns hours of boilerplate into seconds of synthesis.


🚀 What SkillForge Does

SkillForge exposes 6 standardized MCP tools complying with the Model Context Protocol (Spec 2025-11-25+) over Streamable HTTP and SSE:

  1. generate_skill: Takes any conversational prompt (e.g., "Build a skill that tracks my daily water intake and reminds me to drink every 2 hours") and generates:
    • skill.json: Deployment manifest with endpoints, permissions, and publishing metadata.
    • interactionModel.json: Intents, custom slot types with entity synonyms, 10+ natural utterances per intent, and dialog delegation (ALWAYS).
    • lambda/index.js: Full ASK SDK v2 Node.js handler with attributesManager, session handling, DynamoDB persistence, and rich SSML speech.
    • tests/test_suite.json: 20+ automated test utterances with expected intents, slots, and edge cases.
  2. refine_skill: Natural language iterative refinement loop. Prompts like "Add a weekly summary that tells me my average daily intake" seamlessly add new intents without resetting or dropping existing intents, automatically bumping version numbers.
  3. test_skill: Automated regression test runner with slot pattern matching and confidence scoring.
  4. deploy_skill: One-click deployment to the Alexa Developer Console via the ASK CLI orchestrator with schema pre-validation to eliminate silent deployment failures.
  5. analyze_skill: Real-time performance metrics, error tracking, and Sankey diagram conversation flows.
  6. list_skills: Developer portfolio manager tracking all skills and versions.

🏗️ How We Built It (Architecture & AWS Tech Stack)

SkillForge was engineered from the ground up as a cloud-native, voice-first microservices pipeline:

  • AI Orchestrator (Amazon Bedrock): Powered by Anthropic Claude 3 Haiku (anthropic.claude-3-haiku-20240307-v1:0), chosen for its blazing sub-second latency and precision with structured code generation.
  • Backend & Protocol: Python 3.11 with FastAPI, Uvicorn, and Model Context Protocol (MCP) supporting Streamable HTTP (/mcp/tools, /mcp/call) and REST endpoints.
  • Persistence Layer (AWS DynamoDB): Pay-per-request DynamoDB table storing skill metadata, versioning, and session persistence, featuring automatic gzip compression for payloads exceeding 300KB.
  • ASK SDK Lambda Handlers: Generates production-ready Node.js 18.x handlers using ask-sdk-core and ask-sdk-dynamodb-persistence-adapter.
  • Deployment & Cloud: Containerized with Docker and ready for AWS Serverless / SAM deployment via serverless.yml.
  • Inclusive Voice Design (IVD): Auto-generates natural SSML speech with cognitive pauses (<break time="300ms"/>), cadence tuning (<prosody rate="95%">), phoneme hints (<phoneme>), and multi-language generation across English, Hindi, Spanish, German, and Japanese.

⚡ Challenges We Faced & Resolved (Developer Friction Log)

During development, we documented 10 technical friction points across the Alexa developer stack, implementing concrete code resolutions for every one (earning a +10% judging bonus):

  1. MCP Parameter Discovery: Implemented Pydantic v2 JSON Schema reflection for complex tool parameters.
  2. Bedrock Token Limits: Created a staged micro-pipeline (Intents $\rightarrow$ Lambda $\rightarrow$ Test Suite) preventing truncation.
  3. ASK CLI Silent Deployment Failures: Built schema pre-validation in ask_cli_service.py to catch invocation name errors and missing built-in Amazon intents prior to CLI execution.
  4. Voice Error Handling: Engineered an MCPToolResponse envelope with human-readable <speak> speech fallbacks.
  5. Bedrock Throttling During Burst Generation: Built invoke_with_retry() with full jitter exponential backoff.
  6. DynamoDB 400KB Limit: Added automatic gzip base64 compression for large skill packages.
  7. Node.js Compatibility: Pinned Node.js 18 LTS in Docker to guarantee ASK CLI stability.
  8. Hot-Reload Disconnections: Added stateful auto-reconnect logic for SSE streaming.
  9. Malformed JSON in Code Blocks: Built a multi-tier regex parser extracting JSON from markdown fences and bracket boundaries.
  10. Large Package Streaming: Implemented chunked HTTP transfer encoding for real-time progress events.

(Full report in FRICTION_LOG.md in the repository).


🧪 Automated Testing & Reliability

SkillForge includes 12 automated tests across 4 test suites with a 100% pass rate:

  • test_intent_generator.py: 4 tests verifying custom intents, multi-turn dialog delegation (ALWAYS), custom slot types, and $\ge 10$ sample utterances per intent.
  • test_lambda_generator.py: 3 tests verifying session management, DynamoDB persistence, and universal error handlers.
  • test_skill_validator.py: 3 tests verifying Alexa schema compliance, duplicate utterance detection, and required Amazon intents.
  • test_mcp_tools.py: 2 integration tests verifying end-to-end package generation and intent preservation during refinement.

📈 Impact & What We Learned

  • 98% Time Reduction: Reduces skill development time from 3–5 hours of manual work to under 60 seconds of AI-driven synthesis.
  • Democratizing Voice: Allows non-technical domain experts (fitness coaches, educators, small business owners) to build and deploy rich voice skills without touching code.
  • Voice-First AI: Prompt engineering for voice requires different paradigms than text chatbots — natural SSML pauses, short cognitive chunks, and conversational error recovery are essential.

Built With

Share this project:

Updates

Submission history