Awesome-copilot typespec-create-agent
Generate a complete TypeSpec declarative agent with instructions, capabilities, and conversation starters for Microsoft 365 Copilot
install
source · Clone the upstream repo
git clone https://github.com/github/awesome-copilot
Claude Code · Install into ~/.claude/skills/
T=$(mktemp -d) && git clone --depth=1 https://github.com/github/awesome-copilot "$T" && mkdir -p ~/.claude/skills && cp -r "$T/plugins/typespec-m365-copilot/skills/typespec-create-agent" ~/.claude/skills/github-awesome-copilot-typespec-create-agent && rm -rf "$T"
manifest:
plugins/typespec-m365-copilot/skills/typespec-create-agent/SKILL.mdsource content
Create TypeSpec Declarative Agent
Create a complete TypeSpec declarative agent for Microsoft 365 Copilot with the following structure:
Requirements
Generate a
main.tsp file with:
-
Agent Declaration
- Use
decorator with a descriptive name and description@agent - Name should be 100 characters or less
- Description should be 1,000 characters or less
- Use
-
Instructions
- Use
decorator with clear behavioral guidelines@instructions - Define the agent's role, expertise, and personality
- Specify what the agent should and shouldn't do
- Keep under 8,000 characters
- Use
-
Conversation Starters
- Include 2-4
decorators@conversationStarter - Each with a title and example query
- Make them diverse and showcase different capabilities
- Include 2-4
-
Capabilities (based on user needs)
- for web content with optional site scopingWebSearch
- for document access with URL filteringOneDriveAndSharePoint
- for Teams channel/chat accessTeamsMessages
- for email access with folder filteringEmail
- for organization people searchPeople
- for Python code executionCodeInterpreter
- for image generationGraphicArt
- for Copilot connector contentGraphConnectors
- for Dataverse data accessDataverse
- for meeting content accessMeetings
Template Structure
import "@typespec/http"; import "@typespec/openapi3"; import "@microsoft/typespec-m365-copilot"; using TypeSpec.Http; using TypeSpec.M365.Copilot.Agents; @agent({ name: "[Agent Name]", description: "[Agent Description]" }) @instructions(""" [Detailed instructions about agent behavior, role, and guidelines] """) @conversationStarter(#{ title: "[Starter Title 1]", text: "[Example query 1]" }) @conversationStarter(#{ title: "[Starter Title 2]", text: "[Example query 2]" }) namespace [AgentName] { // Add capabilities as operations here op capabilityName is AgentCapabilities.[CapabilityType]<[Parameters]>; }
Best Practices
- Use descriptive, role-based agent names (e.g., "Customer Support Assistant", "Research Helper")
- Write instructions in second person ("You are...")
- Be specific about the agent's expertise and limitations
- Include diverse conversation starters that showcase different features
- Only include capabilities the agent actually needs
- Scope capabilities (URLs, folders, etc.) when possible for better performance
- Use triple-quoted strings for multi-line instructions
Examples
Ask the user:
- What is the agent's purpose and role?
- What capabilities does it need?
- What knowledge sources should it access?
- What are typical user interactions?
Then generate the complete TypeSpec agent definition.