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
11 changes: 8 additions & 3 deletions CLAUDE.md
Original file line number Diff line number Diff line change
Expand Up @@ -82,7 +82,9 @@ diff, prune, and validate all derive from it.

`copilot`, `antigravity`, `cursor`, `claude`, `codex`, `agent-plugins`. `codex`
and `agent-plugins` emit Agent Plugins packages through `src/agent-plugins.ts`
(the package module; marketplaces stay on each target). Each target's MCP config
(the package module). The `codex` target owns its marketplace. With `clients`,
`agent-plugins` takes each client's marketplace, extension-directory placement
and validation from `src/package-clients.ts`. Each target's MCP config
is rendered by `src/mcp.ts` in the dialect its `mcpDialect` names. Adding a target means one
new file implementing `PluginTargetDefinition` (`src/targets/<name>.ts`) plus one
new entry in `src/targets/registry.ts` — `TargetName` (`types.ts`) is still a
Expand All @@ -105,8 +107,11 @@ schemas at runtime — vendor a pinned copy with recorded provenance.
- **Recommended shape:** `shared/<plugin>/` canonical sources,
`overrides/<target>/<plugin>/` target overrides, and
`repositories/<target>/` generated-repository files.
- **claude + copilot collide:** both write `.claude-plugin/marketplace.json`, so
they need distinct `outDir`s. `build()` errors on overlapping output paths.
- **Shared marketplace paths collide:** `claude` and `copilot` both write
`.claude-plugin/marketplace.json`. `agent-plugins` with `clients.codex`
writes the `codex` target's `.agents/plugins/marketplace.json`, and with
`clients.copilot` it writes `.github/plugin/marketplace.json`. Such targets
need distinct `outDir`s. `build()` errors on overlapping output paths.
- **MCP:** a canonical source keeps `mcp/config.json`, its implementation, tests,
and `mcp/pluginpack.json` shipping-file map together. Target adapters translate
the config into the native output. Legacy sources still read `.mcp.json`.
Expand Down
17 changes: 13 additions & 4 deletions CONFORMANCE.md
Original file line number Diff line number Diff line change
Expand Up @@ -44,7 +44,9 @@ against a temp fixture via [`bintastic`](https://github.com/scalvert/bintastic).
deliberately **not** used here: Copilot derives from the Claude marketplace but
extends entries (e.g. `mcpServers` as a `.mcp.json` path), which Claude's stricter
schema rejects. Because it shares the Claude marketplace path, the `claude` and
`copilot` targets need separate output roots.
`copilot` targets need separate output roots. An `agent-plugins` target with
`clients.copilot` also writes `.github/plugin/marketplace.json`, so it needs an
output root separate from the `copilot` target's.
- **antigravity** — covered structurally by the cross-target build test in
`tests/core.test.ts` (required `plugin.json` fields present; optional
`mcp_config.json` written when MCP servers are present). Antigravity CLI does
Expand All @@ -55,7 +57,13 @@ against a temp fixture via [`bintastic`](https://github.com/scalvert/bintastic).
validator (`src/agent-plugins.ts`) re-implements the closed-schema checks
without ajv, plus the semantic rules a JSON Schema can't express: skill names
per the Agent Skills specification and matching their directory, and MCP
server rules from spec §7.2 and §9 (`src/mcp.ts`).
server rules from spec §7.2 and §9 (`src/mcp.ts`). With `clients`, the same
package oracle applies. The Codex marketplace uses the codex checks below,
and the Copilot marketplace and `com.github.copilot/agents/` layout are
asserted structurally against the
[Copilot CLI plugin reference](https://docs.github.com/en/copilot/reference/copilot-cli-reference/cli-plugin-reference)
(retrieved 2026-10-20), which publishes no schema. Client facts and their
citations live in `src/package-clients.ts`.
- **codex** — the package half uses the Agent Plugins oracle above. The
marketplace half is asserted structurally in `tests/conformance.test.ts` and
`tests/core.test.ts` against the
Expand All @@ -74,8 +82,9 @@ against a temp fixture via [`bintastic`](https://github.com/scalvert/bintastic).
added via `entry` is a structured object with an inner `source` discriminator
(e.g. `{ source: "git-subdir", url, path, ref }`), validated by shape rather
than requiring a local directory to exist. No published JSON Schema exists.
Codex shares no marketplace path with the other targets, so it needs no
separate output root.
Among the native targets, Codex shares no marketplace path, but an
`agent-plugins` target with `clients.codex` writes the same
`.agents/plugins/marketplace.json`, so the two need separate output roots.

## Update-check hook facts

Expand Down
4 changes: 4 additions & 0 deletions CONTEXT.md
Original file line number Diff line number Diff line change
Expand Up @@ -33,6 +33,10 @@ _Avoid_: portable plugin, AP plugin
A client's additions to a package: its extension namespace, the manifest data under it, and the files in its extension directory.
_Avoid_: overlay, flavor

**Package client**:
A client listed in the `agent-plugins` target's `clients`. One package serves every package client; each also gets its own marketplace file.
_Avoid_: sub-target, flavor

**Extension namespace**:
The reverse-domain key a client owns inside a package, such as `com.openai`.
_Avoid_: vendor key, client key
Expand Down
Loading
Loading