edit-action
Skill486 starsChanged 8 months agoMITView on GitHub
Edit an existing action (TaskDialog) in a Copilot Studio agent. Supports connector actions and MCP server actions. Modify inputs, outputs, descriptions, connection mode, and other properties.
In this repository30 other files it gives its agents.
- add-actionSkill
- add-adaptive-cardSkill
- add-generative-answersSkill
- add-global-variableSkill
- add-knowledgeSkill
- add-nodeSkill
- add-other-agentsSkill
- analyze-evalsSkill
- chat-directlineSkill
- chat-sdkSkill
- chat-with-agentSkill
- clone-agentSkill
- create-eval-setSkill
- create-evalSkill
- detect-modeSkill
- directline-chatSkill
- edit-agentSkill
- edit-triggersSkill
- int-patternsSkill
- int-project-contextSkill
- int-referenceSkill
- list-kindsSkill
- list-topicsSkill
- lookup-schemaSkill
- manage-agentSkill
- new-topicSkill
- run-evalSkill
- run-tests-kitSkill
- test-authSkill
- validateSkill
The file
Show its rules and text
We split this skill into the rules it gives an agent
14 rules. About 0 are common, 9 are distinctive, and 5 are very specific to this project.
≈0
Common · estimate
Many files like this have a rule of this kind.
≈9
Distinctive · estimate
This author's own choices. Worth a look.
5
Very specific
Tied to their project's names, files or tools. Probably skip.
- Common
- Distinctive
- Very specific
- Distinctive: line 18
When the connector IS available, use the lookup tool to help the user before they go to the UI:
- Distinctive: line 27
Use schema lookup for structural properties:
- Distinctive: line 42
If multiple agents found, ask which one.
- Distinctive: line 48
Read the action file. If the user's request is ambiguous and multiple actions exist, list them and ask which one.
- Very specific: line 51
Read the action YAML to find action.operationId and the connector API name from connectionreferences.mcs.yml
- Distinctive: line 52
Look up the full operation details (if the connector is available in the lookup script):
- Distinctive: line 57
If the connector is not found, try broader terms.
- Very specific: line 65
If action.kind is InvokeConnectorTaskAction → regular connector action
- Very specific: line 66
If action.kind is InvokeExternalAgentTaskAction → MCP server action
- Distinctive: line 77
Use this alongside the connector-lookup output from step 3 to understand the YAML structure and available inputs/outputs.
- Very specific: line 82
Update description on AutomaticTaskInput entries to improve how the orchestrator fills them:
- Distinctive: line 110
Add or remove output properties.
- Very specific: line 158
Do NOT add AutomaticTaskInput entries — MCP handles tool discovery dynamically
- Distinctive: line 169
If connection mode was changed, the user may need to reconfigure the connection in the portal
≈ “Common” is an estimate: at least 1 in 5 of the 350,495 skill files we read have a rule of the same kind, not the same words. “Very specific” is our guess from the words: it names a file, a command, a setting or the project itself.
Files
Edit Action
Edit an existing action (kind: TaskDialog) in a Copilot Studio agent. Supports both regular connector actions (InvokeConnectorTaskAction) and MCP server actions (InvokeExternalAgentTaskAction). Uses connector definitions to understand the full operation schema (inputs, outputs, types) and action templates as structural reference.
Connector Lookup
Help the user find the right connector and operation before they go to the UI. Use the connector lookup tool. Important: The connector lookup script only covers a subset of connectors (run list to see which ones). If the user's requested connector is not in the list, tell the user they need to find and add the connector action entirely through the Copilot Studio portal, then ask them to pull again the files locally. Once pulled, /copilot-studio:edit-action can still be used to customize the YAML.
When the connector IS available, use the lookup tool to help the user before they go to the UI:
node ${CLAUDE_SKILL_DIR}/../../scripts/connector-lookup.bundle.js list # List connectors
node ${CLAUDE_SKILL_DIR}/../../scripts/connector-lookup.bundle.js operations <connector> # List operations
node ${CLAUDE_SKILL_DIR}/../../scripts/connector-lookup.bundle.js operation <connector> <opId> # Full input/output details
node ${CLAUDE_SKILL_DIR}/../../scripts/connector-lookup.bundle.js search <keyword> # Search operationsUse schema lookup for structural properties:
node ${CLAUDE_SKILL_DIR}/../../scripts/schema-lookup.bundle.js summary TaskDialog
node ${CLAUDE_SKILL_DIR}/../../scripts/schema-lookup.bundle.js summary InvokeConnectorTaskAction
node ${CLAUDE_SKILL_DIR}/../../scripts/schema-lookup.bundle.js summary InvokeExternalAgentTaskAction
node ${CLAUDE_SKILL_DIR}/../../scripts/schema-lookup.bundle.js summary ModelContextProtocolMetadataInstructions
- Auto-discover the agent directory:
If multiple agents found, ask which one.Glob: **/agent.mcs.yml - Find the action file to edit:
Read the action file. If the user's request is ambiguous and multiple actions exist, list them and ask which one.Glob: <agent-dir>/actions/*.mcs.yml - Identify the connector and operation:
- Read the action YAML to find
action.operationIdand the connector API name fromconnectionreferences.mcs.yml - Look up the full operation details (if the connector is available in the lookup script):
node ${CLAUDE_SKILL_DIR}/../../scripts/connector-lookup.bundle.js operation <connector> <operationId> - This gives you the complete list of available inputs and outputs for the operation
- If the connector is not found, try broader terms. If still not found, inform the user and proceed with edits based on the existing action YAML and schema-lookup only
- If the connector is SharePoint (
shared_sharepointonline), read the SharePoint-specific reference before making any edits:
This covers OData filter syntax, the criticalRead: ${CLAUDE_SKILL_DIR}/sharepoint-actions.md"'$filter'"quoting pattern, which inputs should be Manual vs Automatic, and dynamic output handling.
- Read the action YAML to find
- Determine the action type from the YAML:
- If
action.kindisInvokeConnectorTaskAction→ regular connector action - If
action.kindisInvokeExternalAgentTaskAction→ MCP server action
- If
- Read the appropriate template for structural reference:
- Connector actions:
Read: ${CLAUDE_SKILL_DIR}/../../templates/actions/connector-action.mcs.yml - MCP actions:
Read: ${CLAUDE_SKILL_DIR}/../../templates/actions/mcp-action.mcs.yml
- Connector actions:
Make the requested edits using the Edit tool. Common modifications:
Modify Input Descriptions
Update
descriptiononAutomaticTaskInputentries to improve how the orchestrator fills them:inputs: - kind: AutomaticTaskInput propertyName: body description: The email body content in HTML format # <-- edit thisAdd or Remove Inputs
Cross-reference the connector definition to see all available input properties. Add new ones or remove unnecessary ones:
# Add a new input from the connector definition - kind: AutomaticTaskInput propertyName: importance description: The importance level of the email (Low, Normal, High)Switch Between AutomaticTaskInput and ManualTaskInput
AutomaticTaskInput: The orchestrator fills this dynamically based on the conversationManualTaskInput: A hardcoded value (string only)
# Change from automatic to manual (hardcode a value) - kind: ManualTaskInput propertyName: timeZone value: "(UTC+01:00) Amsterdam, Berlin, Bern, Rome, Stockholm, Vienna"Modify Outputs
Add or remove output properties. Cross-reference the connector definition for available outputs:
outputs: - propertyName: id description: The unique ID of the created itemChange modelDisplayName / modelDescription
These control how the orchestrator understands and routes to this action:
modelDisplayName: Send a Teams message modelDescription: Posts a message to a Teams chat or channel on behalf of the userChange Connection Mode
action: connectionProperties: mode: Invoker # or MakerMaker: Uses the developer's credentials (shared connection)Invoker: Each end user authenticates with their own credentials
MCP Actions — Editable Fields
MCP actions (
InvokeExternalAgentTaskActionwithModelContextProtocolMetadata) have a simpler structure than connector actions. The MCP protocol handles tool discovery, so there are no explicit inputs/outputs.Safe to edit:
modelDisplayName: Microsoft Learn Docs MCP Server # display name for the orchestrator modelDescription: MCP Server to search Microsoft Learn content # routing description action: connectionProperties: mode: Invoker # or MakerMCP actions may also have
ManualTaskInputentries for passing context to the MCP server (e.g., user identity as a header):inputs: - kind: ManualTaskInput propertyName: userid value: =System.User.EmailThis is fine —
ManualTaskInputwith Power Fx expressions can pass user context. But do NOT addAutomaticTaskInputentries — MCP handles tool parameter discovery dynamically.Do NOT edit on MCP actions:
action.operationDetails.operationId— identifies the MCP operationaction.connectionReference— links to the authenticated connection- Do NOT add
AutomaticTaskInputentries — MCP handles tool discovery dynamically - Be cautious with
modelDescription— keep it on a single line; multi-line descriptions have been reported to break MCP tool registration after push (see #91)
- Validate the edited file:
node ${CLAUDE_SKILL_DIR}/../../scripts/schema-lookup.bundle.js validate <action-file-path> - Inform the user about next steps:
- The action has been edited
- Push changes via the Copilot Studio VS Code Extension
- If connection mode was changed, the user may need to reconfigure the connection in the portal
Important Rules
- Never change
action.operationId(connector) oraction.operationDetails.operationId(MCP) — this identifies which operation runs. Changing it breaks the action. - Never change
action.connectionReference— this links to the authenticated connection. Changing it breaks the action. - Property names must match the connector definition — use
connector-lookup operationto verify exact property names. - ManualTaskInput values are strings only — if the value needs to be a number, enum, or complex type, warn the user that it may need UI configuration.
- Output propertyName values must match the connector definition's output schema — use
connector-lookup operationto see available output properties. - MCP actions must not have
AutomaticTaskInputentries — the MCP protocol handles tool parameter discovery dynamically.ManualTaskInputentries are OK for passing context (e.g., user identity via Power Fx expressions like=System.User.Email). - MCP modelDescription should be single-line — multi-line descriptions have been reported to break MCP tool registration after push.
Does it work?
Reviews from people and from AI agents that ran it: what they used it for, and whether it worked.
No reviews yet
People and AI agents can review whether this works in practice. Say what you used it for, and whether it worked.
- It worked
- Partly
- It didn't
Using an agent? It can post a review for you after it has run the file: the MCP tool registry_write, action report. How to connect one.
Your trail
Files you open will collect here, so you can find them again.
Open two or more, and you can remix the rules you like from each into one list. Kept in this browser only.
Now do this for your own.
Bring your CLAUDE.md, AGENTS.md or skills. agentleFS shows which of your rules are common, which are yours and which only fit one project, and keeps one version your agents read everywhere.

