skills/add-global-variable/SKILL.md
Add a global variable to a Copilot Studio agent. Use when the user needs a variable that persists across topics in the same conversation and can optionally be visible to the AI orchestrator.
npx skillsauth add microsoft/skills-for-copilot-studio skills/add-global-variableInstall this skill globally with one command. Works with Claude Code, Cursor, and Windsurf.
3 of 9 scanners reported clean
Some scanners were skipped, did not run, or reported a non-clean status. Review each row below.
Create a global variable that persists across all topics within a conversation.
Auto-discover the agent directory:
Glob: **/agent.mcs.yml
Use the top-level agent. NEVER hardcode an agent name.
Read settings.mcs.yml to get the schemaName prefix:
Read: <agent-dir>/settings.mcs.yml
Extract the root-level schemaName value (e.g., copilots_header_cre3c_fullagent).
Determine from the user:
LastDiscussedCity)aIVisibility)Create the variable file at <agent-dir>/variables/<VariableName>.mcs.yml:
# Name: <Human-readable Name>
# <Description>
name: <VariableName>
aIVisibility: <UseInAIContext or HideFromAIContext>
scope: Conversation
description: <Description of what the variable stores>
schemaName: <prefix>.globalvariable.<VariableName>
kind: GlobalVariableComponent
defaultValue: <DEFAULT or specific value>
name — PascalCase identifier. This is how topics reference the variable: Global.<name> (e.g., Global.LastDiscussedCity).aIVisibility — Controls orchestrator awareness:
UseInAIContext — The orchestrator can read and reason about this variable. Use when the variable influences routing or response generation (e.g., user preferences, conversation state the AI should track).HideFromAIContext — The variable exists but the orchestrator doesn't see it. Use for internal bookkeeping (e.g., counters, flags) that topics use but the AI doesn't need to reason about.scope: Conversation — Always Conversation for global variables (persists for the session).schemaName — Must follow the pattern <agent-schemaName>.globalvariable.<VariableName>. Read the prefix from settings.mcs.yml.defaultValue — Initial value. Use DEFAULT if no specific initial value is needed.Topics reference global variables with the Global. prefix:
# Reading a global variable in a condition
- kind: ConditionGroup
id: conditionGroup_Xk9mPq
conditions:
- id: conditionItem_Lw3nRs
condition: =!IsBlank(Global.LastDiscussedCity)
actions:
- kind: SendActivity
id: sendMessage_Yt7vBw
activity:
text:
- "Last time we discussed {Global.LastDiscussedCity}."
# Setting a global variable from a topic
- kind: SetTextVariable
id: setTextVariable_Qp4kMn
variable: Global.LastDiscussedCity
value: =Topic.CityName
UseInAIContext)=$"{Global.VarName}". This enables routing to different SharePoint folders or websites per user (e.g., by geolocation or department). See /copilot-studio:add-knowledge for the full pattern. Important: the variable value must be a clean, direct URL — not a SharePoint AllItems.aspx link with query parameters.development
Pattern library for Copilot Studio agent design. Contains proven and recommended implementation patterns with YAML examples. Used by the Advisor agent to suggest patterns and by the Author agent to reference YAML structure during implementation. USE FOR: design guidance, pattern suggestions, review against best practices, troubleshooting known pitfalls, YAML reference during implementation. DO NOT USE FOR: general YAML schema reference (use int-reference), topic creation mechanics (use new-topic).
testing
Look up Copilot Studio YAML schema definitions. Use when the user asks about schema structure, element properties, or how to use a specific YAML kind.
data-ai
Reference tables for Copilot Studio YAML authoring: triggers, actions, variables, entities, Power Fx functions, templates. Preloaded by author and advisor agents.
development
Add a knowledge source (public website or SharePoint) to a Copilot Studio agent. Use when the user asks to add a knowledge source, documentation URL, website, or SharePoint site for the agent to search.