Edit Action logo

Edit Action

Organization
microsoft
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.

Overview

Publishermicrosoft
Repositoryskills-for-copilot-studio
Skill nameedit-action
Stars
478
Forks
101
Bundled files
1
LicenseMIT
Links
  • Markdown instructions

    A SKILL.md file the model loads on demand, so it only costs tokens when a request actually matches.

  • Works with any LLM

    AI skills are plain Markdown, not provider-specific code, so this works with GPT, Claude, Gemini, Grok, or a local model.

  • 1 bundled files

    Scripts, templates, and references the model can read while it works. Files are read-only and never executed.

  • Open source

    Published by microsoft on GitHub. Read the source before you install it.

Installation

Install the Edit Action AI skill in TypingMind to use it with any LLM, or drop it into another agent that reads SKILL.md.

1

Install in TypingMind

TypingMind installs a skill straight from its GitHub folder — it reads SKILL.md, bundles the resource files, and stores the result locally.

  1. Open the app and go to Plugins → Skills.
  2. Choose "Install from GitHub".
  3. Paste the skill folder URL below and confirm.
    https://github.com/microsoft/skills-for-copilot-studio/tree/main/skills/edit-action
  4. Enable the skill in any chat where you want it available.
Plugins → Skills → Add skill → From GitHub URL, then paste the folder URL and press Continue.
2

Install in another agent

Any agent that reads the Agent Skills format can use this skill — copy the folder into that agent's skills directory.

Claude Code — .claude/skills
git clone --depth 1 https://github.com/microsoft/skills-for-copilot-studio.git /tmp/skills-for-copilot-studio
mkdir -p .claude/skills
cp -r /tmp/skills-for-copilot-studio/skills/edit-action .claude/skills/edit-action
Restart Claude Code after copying so it picks up the new skill.

Use it in TypingMind

Enable Edit Action in any TypingMind chat and the model takes it from there. Its name and description sit in the system prompt, and the moment a request matches, the model loads the full instructions itself — you never invoke it by hand, and it costs no tokens until it is actually used.

The model loads Edit Action on its own as soon as a request matches it.

Works with any AI model

AI skills are plain Markdown instructions rather than provider-specific code, so Edit Action is not tied to the model it was written for. Install it once in TypingMind and use it with GPT-5, Claude, Gemini, Grok, DeepSeek, Mistral, Llama, or a local model you run yourself — all on your own API keys.

  • Loaded only when it is needed

    The system prompt carries just the name and description. The instructions are fetched on the first matching request, so an idle skill costs nothing.

  • Switch models mid-chat

    Because the skill is instructions rather than code, changing model does not break it — the next model reads the same SKILL.md.

Skill instructions

This is the SKILL.md content the model loads. Read it before installing — a skill is instructions your model will follow.

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:

bash
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:

bash
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):
      bash
      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:

    yaml
    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:

    yaml
    # 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)
    yaml
    # 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:

    yaml
    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:

    yaml
    modelDisplayName: Send a Teams message
    modelDescription: Posts a message to a Teams chat or channel on behalf of the user

    Change Connection Mode

    yaml
    action:
      connectionProperties:
        mode: Invoker    # or Maker
    • Maker: Uses the developer's credentials (shared connection)
    • Invoker: Each end user authenticates with their own credentials

    MCP Actions — Editable Fields

    MCP actions (InvokeExternalAgentTaskAction with ModelContextProtocolMetadata) have a simpler structure than connector actions. The MCP protocol handles tool discovery, so there are no explicit inputs/outputs.

    Safe to edit:

    yaml
    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 Maker

    MCP actions may also have ManualTaskInput entries for passing context to the MCP server (e.g., user identity as a header):

    yaml
    inputs:
      - kind: ManualTaskInput
        propertyName: userid
        value: =System.User.Email

    This is fine — ManualTaskInput with Power Fx expressions can pass user context. But do NOT add AutomaticTaskInput entries — MCP handles tool parameter discovery dynamically.

    Do NOT edit on MCP actions:

    • action.operationDetails.operationId — identifies the MCP operation
    • action.connectionReference — links to the authenticated connection
    • Do NOT add AutomaticTaskInput entries — 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)
  7. Validate the edited file:

    bash
    node ${CLAUDE_SKILL_DIR}/../../scripts/schema-lookup.bundle.js validate <action-file-path>
  8. 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) or action.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 operation to 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 operation to see available output properties.
  • MCP actions must not have AutomaticTaskInput entries — the MCP protocol handles tool parameter discovery dynamically. ManualTaskInput entries 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.

Bundled files

The model reads these on demand while the skill is loaded. They are exposed as readable files and are never executed.

Frequently asked questions

What does the Edit Action AI skill do?

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.

Why use Edit Action on TypingMind?

Because you install it once and use it with any model. Edit Action is plain Markdown rather than provider-specific code, so the same skill runs on GPT-5, Claude, Gemini, Grok, or a local model — and you can switch model mid-chat without it breaking. TypingMind runs on your own API keys, so you pay providers directly instead of a per-seat subscription, and your skills and chats stay in your own storage.

How do I install Edit Action in TypingMind?

Open Plugins → Skills → Install from GitHub in TypingMind and paste https://github.com/microsoft/skills-for-copilot-studio/tree/main/skills/edit-action. TypingMind reads its SKILL.md and bundles its files and installs it as a skill you can enable per chat.

Which AI models can use Edit Action?

Any model you connect in TypingMind. AI skills are plain Markdown instructions rather than provider-specific code, so GPT, Claude, Gemini, Grok, and local models can all load this skill when a request matches it.

How many AI models can I use with Edit Action?

As many as you like. As long as a model supports skills, you can use Edit Action with it — GPT, Claude, Gemini, Grok, DeepSeek, Mistral, Llama and more — all on TypingMind with your own API keys.

Is the Edit Action AI skill free?

Yes. It is published on GitHub by microsoft under the MIT license. You only pay your own AI provider for the tokens you use.

What are AI skills?

An AI skill is a reusable instruction bundle that teaches an AI model how to do one specific task. It follows the open Agent Skills format: a SKILL.md file with a name and description, plus any scripts, templates or reference files the model may need. The model reads the instructions only when your request matches the skill, so an installed skill costs nothing until it is used.

How are AI skills different from plugins or MCP servers?

A plugin or MCP server gives a model new tools to call — code that runs somewhere and returns a result. An AI skill gives the model knowledge and process instead: how to approach a task, which steps to follow, what good output looks like. Skills are plain Markdown, so they need no server, no API key and no runtime, and they work with any model.

View all

Set up your own AI workspace now

Get notified about new features and future giveaways by subscribing to our newsletter 👇