From copilot-studio
Adds or modifies nodes (SendActivity, Question, ConditionGroup, SetVariable) in Copilot Studio topics. Use when users request adding questions, messages, conditions, or variables to existing topics.
npx claudepluginhub microsoft/skills-for-copilot-studio --plugin copilot-studioThis skill is limited to using the following tools:
Add a new node to an existing Copilot Studio topic, or modify an existing one.
Enforces C++ Core Guidelines for writing, reviewing, and refactoring modern C++ code (C++17+), promoting RAII, immutability, type safety, and idiomatic practices.
Provides patterns for shared UI in Compose Multiplatform across Android, iOS, Desktop, and Web: state management with ViewModels/StateFlow, navigation, theming, and performance.
Implements Playwright E2E testing patterns: Page Object Model, test organization, configuration, reporters, artifacts, and CI/CD integration for stable suites.
Add a new node to an existing Copilot Studio topic, or modify an existing one.
In Copilot Studio, the elements inside a topic's actions array are nodes (SendActivity, Question, ConditionGroup, etc.). These are different from actions (actions/*.mcs.yml), which are connector-based TaskDialogs. This skill handles nodes within topics.
For generative answers (SearchAndSummarizeContent, AnswerQuestionWithAI), use the /add-generative-answers skill instead — it has the specific patterns, follow-up ConditionGroup logic, and disambiguation guidance needed to set them up correctly.
Auto-discover the agent directory:
Glob: **/agent.mcs.yml
NEVER hardcode an agent name.
Parse the arguments to identify:
Look up the node schema:
node ${CLAUDE_SKILL_DIR}/../../scripts/schema-lookup.bundle.js resolve <NodeType>
Read the existing topic file to understand its current structure.
Generate or modify the node with:
<nodeType>_<6-8 random alphanumeric>)Determine the correct insertion point in the actions array and present the plan to the user before writing.
| Node | Purpose | Key Properties |
|---|---|---|
SendActivity | Send message | kind, id, activity |
Question | Ask user input | kind, id, variable, prompt, entity |
SetVariable | Set/compute value | kind, id, variable, value |
SetTextVariable | Set text with interpolation (YAML-only, no canvas) | kind, id, variable, value |
ConditionGroup | Branching logic | kind, id, conditions |
BeginDialog | Call another topic | kind, id, dialog |
EndDialog | End topic | kind, id |
CancelAllDialogs | Cancel all topics | kind, id |
When the agent has GenerativeActionsEnabled: true:
=: condition: =System.FallbackCount < 3{}: activity: "Error: {System.Error.Message}"variable: init:Topic.MyVarText(), Now(), IsBlank(), !IsBlank()- kind: Question
id: question_k7xPm2
variable: init:Topic.UserName
prompt: What is your name?
entity: StringPrebuiltEntity
alwaysPrompt: true
interruptionPolicy:
allowInterruption: false