dotnet / dotnet/skills

plugin.json files omit required $schema, so plugins fail to load as Kiro powers (Agent Plugins 1.0.0 non-compliance)

Open
#1,087 3 comments 0 reactions 2 assignees Claimed by @webreidi View on GitHub
bug Triaged
Dominant language
C#
Stars
5.4k
Forks
415
Avg merge
1d 5h
Merged PRs (30d)
81

Description

Kiro's Powers panel now installs Agent Plugins 1.0.0 packages directly (see [Kiro's announcement](https://kiro.dev/blog/powers-supports-plugins/)). Importing a plugin from this repo as a Kiro power fails to load its components.

## Repro

1. Kiro → Powers panel → Add Custom Power → Import power from GitHub
2. URL: `https://github.com/dotnet/skills/tree/main/plugins/dotnet-msbuild`
3. Install

## Observed

The power downloads but fails to load, reporting:

> `plugin.json has an unsupported or missing $schema`

dotnet-msbuild power failing to load with error: plugin.json has an unsupported or missing $schema

## Cause

The [Agent Plugins 1.0.0 plugin schema](https://agent-plugins.org/schemas/1.0.0/plugin.schema.json) declares:

```json
"required": ["$schema", "name"],
"additionalProperties": false
```

The plugin manifests in this repo (e.g. `plugins/dotnet-msbuild/plugin.json`) are not valid Agent Plugins 1.0.0 manifests on two counts:

1. **Missing required `$schema`.** Without it, a compliant loader rejects the manifest outright. The value is pinned via `const` to `https://agent-plugins.org/schemas/1.0.0/plugin.schema.json`.
2. **Non-schema top-level keys.** The manifests carry `skills`, `agents`, and `mcpServers` as top-level properties. The 1.0.0 plugin schema sets `additionalProperties: false` and does not define these. Per the spec, skills live under `skills/`, MCP servers in a separate `mcp.json`, and client-specific data under an `extensions` / reverse-domain namespace.

Adding `$schema` alone is **necessary but not sufficient**: it gets the manifest past the initial rejection, but the power then loads with **all functional components excluded**, because `skills`, `agents`, and `mcpServers` are stripped as non-schema keys. See the tested result in the comment below.

A spec-compliant manifest would add `$schema`, keep `plugin.json` to identity fields only, rely on the `skills/` directory for skill discovery, and move the MCP server into a sibling `mcp.json` (schema `https://agent-plugins.org/schemas/1.0.0/mcp.schema.json`).

## Related

- #338 added Kiro support via a generated `.kiro/skills/` path (skills only) and was closed as completed. It explicitly left open the question of a `plugin.json`-style manifest for Kiro. This issue concerns the *power* install path (skills plus MCP server together), which is blocked by the manifest non-compliance above.

## Environment

- Kiro (Powers panel, Import from GitHub), Windows
- Repo revision observed: `be7b56028cf14cc5b9482b29959d7d96433bad05`

Contributor guide

Open the contributing guide

Assessment

This issue has not been assessed yet.

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.