{"name":"shiny-curation","description":"AWS Learning Goal Curation agent — TypeScript port of AwsTcLearningGoalCurationAgent","url":"http://localhost:3000/","version":"1.0.0","capabilities":{"streaming":true},"defaultInputModes":["text"],"defaultOutputModes":["text"],"skills":[{"name":"curate_learning_path","description":"Curate a personalized AWS SkillBuilder learning path for a learner goal. Runs a retrieve-first pipeline across the T&C catalog to produce a multi-milestone path. Returns a slim handle — the full path is rendered by the surface layer."},{"name":"regenerate_learning_path","description":"Re-run curation for an existing learning path with learner feedback. Use when the learner asks to adjust difficulty, focus area, or content type. Returns a new slim handle with the regenerated path."},{"name":"edit_milestones","description":"Add, remove, or reorder milestones in a curated learning path. Use after curate_learning_path when the learner wants to restructure the path. Returns the updated ref."},{"name":"edit_courses","description":"Add, remove, or move individual courses within the milestones of a learning path. Use when the learner wants to swap out a specific course or add one they found. Returns the updated ref."},{"name":"show_hero_cta","description":"Display the hero introduction with CTA buttons in focused mode. Call on the FIRST turn before the learner has typed anything. Provide a welcoming headline, brief subheadline, and 2-4 CTAs that start the curation flow (e.g. \"I have a goal in mind\", \"Find a path by role\"). The learner clicks a CTA — their selection arrives as a surfaceAction with context.form.selected = cta.id. When received, begin curation in single-pane and call set_layout(\"two-pane\") only when showing the learning path."},{"name":"show_question_card","description":"Display a question with prefilled answer options in the chat rail. Use ONLY when you have 2-5 meaningful default options the learner is likely to choose (e.g. role: \"Solutions Architect\", \"Developer\", \"Data Engineer\"). Do NOT use for purely open-ended questions — use show_message for those. The learner can click an option OR type their own answer; both dismiss the card."},{"name":"show_course_item","description":"Display a single AWS course item. Use inside a milestone to show individual courses with their title, level, duration, and type."},{"name":"show_milestone_card","description":"Display a single learning milestone with its courses. Use to highlight one milestone at a time."},{"name":"show_learning_path","description":"Display the full personalized AWS learning path — all milestones and courses. Call immediately after curate_learning_path or regenerate_learning_path succeeds. Pass the full curation output as the `output` field."},{"name":"show_message","description":"Send a structured text message to the learner. Optional — plain text responses are also accepted and stream more naturally. Use show_message when you want explicit control over message rendering."},{"name":"set_layout","description":"Switch the surface layout. \"focused\": Full-screen surface mode — no chat rail. Use at the start of a session to render hero_cta and intake surfaces. Switch to single-pane once the learner has provided their goal. · \"single-pane\": Centered chat-only mode with no canvas. Use while gathering learner context and asking follow-up questions through chat-slot surfaces. · \"two-pane\": Chat rail on the left, surface canvas on the right. Use when the learning path is ready to display."}]}