Skip to content
Open
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
20 changes: 0 additions & 20 deletions .agents/plugins/marketplace.json

This file was deleted.

32 changes: 0 additions & 32 deletions .claude-plugin/marketplace.json

This file was deleted.

18 changes: 0 additions & 18 deletions .cursor-plugin/marketplace.json

This file was deleted.

105 changes: 16 additions & 89 deletions AGENTS.md
Original file line number Diff line number Diff line change
@@ -1,17 +1,10 @@
# Expo Skills Repository

This repository contains official Expo AI agent skills. The primary distribution format is a Claude Code plugin marketplace, but the skills should stay useful to any agent that can consume `SKILL.md` files.
This repository contains official Expo AI agent skills. The primary distribution formats are official Claude Code and Codex plugin marketplaces plus the skills CLI, but the skills should stay useful to any agent that can consume `SKILL.md` files.

## Repository Structure

```
.claude-plugin/
marketplace.json # Claude Code marketplace catalog
.agents/
plugins/
marketplace.json # Codex marketplace catalog
.cursor-plugin/
marketplace.json # Cursor marketplace catalog
plugins/
expo/
.claude-plugin/
Expand All @@ -32,7 +25,7 @@ README.md # User-facing installation instructions
CONTRIBUTING.md # Contributor guidance
```

The Claude Code marketplace currently exposes `expo` as the active plugin. It also keeps deprecated aliases such as `expo-app-design`, `upgrading-expo`, and `expo-deployment` pointing at `./plugins/expo` for backward compatibility. The Codex and Cursor marketplaces expose only the active `expo` plugin because their marketplace entries must match the plugin manifest name.
The repo keeps one shared `expo` plugin implementation with per-ecosystem manifests under `plugins/expo`. Claude Code and Codex users install the plugin from their official marketplaces. Cursor plugin metadata is kept with the plugin so the package is ready for Cursor's plugin marketplace review; this repo does not maintain its own root marketplace catalog.

## Plugin Manifest

Expand Down Expand Up @@ -122,69 +115,17 @@ Consult these resources as needed:
- `./references/examples.md`: Usage examples
```

## Marketplace Configuration
## Plugin Configuration

This repo has one shared plugin implementation at `plugins/expo` and separate marketplace wrappers for each agent ecosystem:
This repo has one shared plugin implementation at `plugins/expo` and separate plugin manifests for each agent ecosystem:

- `.claude-plugin/marketplace.json`: Claude Code marketplace.
- `.agents/plugins/marketplace.json`: Codex marketplace.
- `.cursor-plugin/marketplace.json`: Cursor marketplace.
- `plugins/expo/.claude-plugin/plugin.json`: Claude Code plugin manifest.
- `plugins/expo/.codex-plugin/plugin.json`: Codex plugin manifest.
- `plugins/expo/.cursor-plugin/plugin.json`: Cursor plugin manifest.
- `plugins/expo/.mcp.json`: Claude Code and Codex MCP server configuration.
- `plugins/expo/mcp.json`: Cursor MCP server configuration.

Claude Code and Cursor marketplace entries use string `source` paths:

```json
{
"name": "marketplace-name",
"owner": {
"name": "Expo Team",
"email": "support@expo.dev"
},
"metadata": {
"description": "Marketplace description"
},
"plugins": [
{
"name": "plugin-name",
"source": "./plugins/plugin-name",
"description": "What the plugin does."
}
]
}
```

Codex marketplace entries use an object `source` plus install policy and category:

```json
{
"name": "marketplace-name",
"interface": {
"displayName": "Marketplace Display Name"
},
"plugins": [
{
"name": "plugin-name",
"source": {
"source": "local",
"path": "./plugins/plugin-name"
},
"policy": {
"installation": "AVAILABLE",
"authentication": "ON_INSTALL"
},
"category": "Developer Tools"
}
]
}
```

Marketplace entry fields:

- `name` is required and uses kebab-case.
- `source` is required and should point at the plugin directory relative to the marketplace root.
- `description` fields, when present, should be concise and user-facing.
- Codex entries must include `policy.installation`, `policy.authentication`, and `category`.

When changing Claude Code marketplace aliases, preserve backward compatibility unless the task explicitly removes an old install path. Do not add deprecated alias entries to Codex or Cursor unless their plugin manifest names also match.
Keep the manifest names aligned with the plugin package name, `expo`. Do not add root marketplace catalogs unless Expo decides to publish and maintain its own marketplace again; current user installation should point to the official Claude Code and Codex marketplaces or the skills CLI.

## Adding a Skill

Expand All @@ -196,52 +137,38 @@ When changing Claude Code marketplace aliases, preserve backward compatibility u

## Testing Plugins

Validate the changed surface before publishing:
Validate the changed plugin surface before publishing:

```bash
claude plugin validate .
claude plugin validate ./plugins/expo
```

For JSON-only changes, also verify the edited JSON file parses:

```bash
python3 -m json.tool .claude-plugin/marketplace.json >/dev/null
python3 -m json.tool .agents/plugins/marketplace.json >/dev/null
python3 -m json.tool .cursor-plugin/marketplace.json >/dev/null
python3 -m json.tool plugins/expo/.claude-plugin/plugin.json >/dev/null
python3 -m json.tool plugins/expo/.codex-plugin/plugin.json >/dev/null
python3 -m json.tool plugins/expo/.cursor-plugin/plugin.json >/dev/null
python3 -m json.tool plugins/expo/.mcp.json >/dev/null
python3 -m json.tool plugins/expo/mcp.json >/dev/null
```

For Codex marketplace changes, verify registration in an isolated Codex home before using your real config:

```bash
mkdir -p .context/codex-home .context/fake-home
CODEX_HOME="$PWD/.context/codex-home" HOME="$PWD/.context/fake-home" codex plugin marketplace add "$PWD"
```

For Cursor marketplace changes, validate against Cursor's plugin template validator when available. This workspace has `bun`, so the Node-based validator can be run with Bun.
For Cursor manifest changes, validate against Cursor's plugin template validator when available. This workspace has `bun`, so the Node-based validator can be run with Bun.

If a skill includes scripts, run the relevant script-level validation from that skill's `scripts/` directory.

## User Installation

Users install the active plugin from this marketplace:
Claude Code users install the active plugin from the official Claude Code plugin marketplace:

```text
/plugin marketplace add expo/skills
/plugin install expo
/plugin install expo@claude-plugins-official
```

The deprecated marketplace entries are compatibility aliases only. New documentation should point users to `/plugin install expo`.

Codex users can add this repository as a marketplace and then install `expo` from the Codex plugin directory:
Codex users install the active plugin from the OpenAI-curated marketplace:

```text
codex plugin marketplace add expo/skills --ref main
codex plugin add expo@openai-curated
```

## Conventions in This Repo
Expand Down
Loading