Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
15 changes: 15 additions & 0 deletions .claude-plugin/marketplace.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,15 @@
{
"name": "microsoft-agents-sdk",
"owner": { "name": "Microsoft" },
"metadata": {
"description": "Claude Code skills for building agents with the Microsoft Agents SDK"
},
"plugins": [
{
"name": "agents-for-js",
"source": "./agent-plugins/agents-for-js",
"description": "Skills for building agents with the Microsoft 365 Agents SDK for TypeScript/JavaScript",
"version": "1.0.0"
}
]
}
105 changes: 105 additions & 0 deletions agent-plugins/CONTRIBUTING.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,105 @@
# Contributing to Agent Plugins

This guide explains how to add new skills, update existing skills, and add new plugins to this marketplace.

---

## How It's Organized

```
.claude-plugin/marketplace.json ← top-level marketplace registry
agent-plugins/
agents-for-js/ ← a plugin
plugin.json ← plugin metadata
skills/
<skill-name>/
SKILL.md ← the skill content
```

The **marketplace registry** (`/.claude-plugin/marketplace.json`) lists the plugins available for install. Each **plugin** groups related skills for a language or platform. Each **skill** is a Markdown file with a YAML frontmatter block that tells the AI assistant when to activate it.

---

## Adding a New Skill to an Existing Plugin

1. **Create a directory** under the plugin's `skills/` folder. Name it after the skill using lowercase and hyphens:

```
agent-plugins/agents-for-js/skills/my-new-skill/
```

2. **Create `SKILL.md`** in that directory with a YAML frontmatter block:

```markdown
---
name: my-new-skill
description: Use when [trigger condition that activates this skill]
---

# Skill Title

Skill content here...
```

3. **Write a precise `description`** — this is the trigger condition the AI uses to decide when to load the skill. Be specific:
- Good: `Use when any code imports @microsoft/agents-hosting or when building a new agent`
- Too vague: `Use for agents`
- Too broad: `Use when working with JavaScript`

4. **No registration needed** — skills are auto-discovered from the `skills/` directory via the `"skills": "skills/"` entry in `plugin.json`.

---

## Updating an Existing Skill

Edit the `SKILL.md` file directly. There is no build step — changes take effect the next time the plugin is loaded.
[Updating the version](#versioning) will cause most agentic clients to update the skill automatically.

---

## Adding a New Plugin

A plugin groups skills for a new language, platform, or use case (e.g., a `agents-for-dotnet` plugin).

1. **Create a plugin directory** under `agent-plugins/`:

```
agent-plugins/agents-for-dotnet/
```

2. **Add `plugin.json`**:

```json
{
"name": "agents-for-dotnet",
"description": "Skills for building agents with the Microsoft 365 Agents SDK for .NET",
"version": "1.0.0",
"author": {
"name": "Microsoft"
},
"license": "MIT",
"keywords": ["microsoft", "agents", "teams", "dotnet"],
"skills": "skills/"
}
```

3. **Add skills** following the steps in [Adding a New Skill](#adding-a-new-skill-to-an-existing-plugin).

4. **Register the plugin** in `/.claude-plugin/marketplace.json` by adding an entry to the `plugins` array:

```json
{
"name": "agents-for-dotnet",
"source": "./agent-plugins/agents-for-dotnet",
"description": "Skills for building agents with the Microsoft 365 Agents SDK for .NET",
"version": "1.0.0"
}
```

5. **Document it** in `agent-plugins/README.md` — add the plugin to the Available Plugins table and list its skills.

---

## Versioning

Bump the `version` field in `plugin.json` when making significant changes to a plugin's skills. This helps users know when to reinstall.
69 changes: 69 additions & 0 deletions agent-plugins/README.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,69 @@
# Agent Plugins

This directory contains AI coding assistant plugins for the Microsoft Agents SDK.

Plugins provide skills — contextual guidance that activates automatically when you work on relevant code. When you import `@microsoft/agents-hosting`, your assistant gets Agents SDK knowledge loaded into context.

## Available Plugins

### `agents-for-js`

Skills for building agents with the Microsoft 365 Agents SDK for TypeScript/JavaScript.

| Skill | Activates when... |
|-------|-------------------|
| `agents-sdk-typescript` | Code imports `@microsoft/agents-hosting`, `@microsoft/agents-hosting-express`, or related packages, or when building a new agent |
| `agents-sdk-debugging` | Resolving problems with a Microsoft Agents SDK agent |
| `azure-agents-sdk-provision` | Provisioning Azure Bot resources, configuring identity credentials, or setting up OAuth via `az` CLI |

---

## Installing the Plugin Marketplace

The plugin marketplace is hosted at the root of this repository (`.claude-plugin/marketplace.json`).

### Claude Code

Run these commands inside Claude Code:

```
/plugin marketplace add microsoft/Agents
```

Then install the plugin:

```
/plugin install agents-for-js@microsoft-agents-sdk
```

Skills activate automatically based on what you're working on — no manual loading needed.

To verify installation:

```
/plugin
```

### GitHub Copilot CLI

Add the marketplace:

```
/plugin marketplace add microsoft/Agents
```

Then install the plugin:

```
/plugin install agents-for-js@microsoft-agents-sdk
```

---

## How Skills Work

Skills are Markdown files with a YAML frontmatter block that defines a `name` and `description`. The `description` is used by the AI assistant to decide when to activate the skill — it acts as a trigger condition.

When a skill activates, its full content is loaded into the assistant's context, giving it precise knowledge of the SDK's APIs, patterns, and common mistakes.

To browse skill content directly, see the [`agents-for-js/skills/`](./agents-for-js/skills/) directory.
4 changes: 4 additions & 0 deletions agent-plugins/agents-for-js/.claude-plugin/plugin.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,4 @@
{
"name": "agents-for-js",
"description": "Skills for building agents with the Microsoft 365 Agents SDK for TypeScript/JavaScript"
}
11 changes: 11 additions & 0 deletions agent-plugins/agents-for-js/plugin.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,11 @@
{
"name": "agents-for-js",
"description": "Skills for building agents with the Microsoft 365 Agents SDK for TypeScript/JavaScript",
"version": "1.0.0",
"author": {
"name": "Microsoft"
},
"license": "MIT",
"keywords": ["microsoft", "agents", "teams", "copilot-studio", "m365"],
"skills": "skills/"
}
Loading
Loading