Skip to content
AI & Agents
Skill

/edit-action

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.

BOOST
From plugin
copilot-studio
46931 skills4 agents1 hook
Install
$ npx -y skills add microsoft/skills-for-copilot-studio --skill edit-action --agent claude-code

How it fires

How this skill gets triggered: by you, by Claude, or both.

  • Fires itselfAuto-invocation. Claude auto-loads it when your prompt matches the work.Auto-invocation is when the right skill fires by itself at the right moment, driven by a FLOW.md router and a hook, instead of you invoking it by name. It is the difference between a skill being installed and a skill actually getting used.Read the full definition →
  • You can call itInvoke it directly when you want it.
  • Slash command/edit-action

Context preview

The summary Claude sees to decide when to auto-load this skill.

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.

SKILL.md

edit-action.SKILL.md
user-invocable: false
description: 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.
argument-hint: <what to change, e.g. "add description to SharePoint inputs">
allowed-tools: Bash(node *connector-lookup.bundle.js *), Bash(node *schema-lookup.bundle.js *), Read, Edit, Glob
context: fork
agent: copilot-studio-author

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 operations

Use 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 ModelContextProtocolMetadata

Instructions

1. **Auto-discover the agent directory**:

   Glob: **/agent.mcs.yml

If multiple agents found, ask which one.

2. **Find the action file** to edit:

   Glob: <agent-dir>/actions/*.mcs.yml

Read the action file. If the user's request is ambiguous and multiple actions exist, list them and ask which one.

3. **Identify the connector and operation**:

  • Read the action YAML to find `action.operationId` and the connector API name from `connectionreferences.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:
     Read: ${CLAUDE_SKILL_DIR}/sharepoint-actions.md

This covers OData filter syntax, the critical `"'$filter'"` quoting pattern, which inputs should be Manual vs Automatic, and dynamic output handling.

4. **Determine the action type** from the YAML:

  • If `action.kind` is `InvokeConnectorTaskAction` → regular connector action
  • If `action.kind` is `InvokeExternalAgentTaskAction` → MCP server action

5. **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

Use this alongside the connector-lookup output from step 3 to understand the YAML structure and available inputs/outputs.

6. **Make the requested edits** using the Edit tool. Common modifications:

Modify Input Descriptions

Update `description` on `AutomaticTaskInput` entries to improve how the orchestrator fills them:

   inputs:
     - kind: AutomaticTaskInput
       propertyName: body
       description: The email body content in HTML format   # <-- edit this

Add 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 conversation
  • `ManualTaskInput`: 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 item

Change 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 th
Read more
Ships withcopilot-studio

A plugin for Claude Code, GitHub Copilot CLI, and VS Code that enables authoring, testing, and troubleshooting Microsoft Copilot Studio STANDARD agents through YAML files — directly from your terminal or editor.

Get the whole plugin

Other skills on copilot-studio.