tree: 3e22c3f00fb5cdcf44594a81b7f5eae0897c3646
  1. claude-code/
  2. codex/
  3. README.md
ai/extensions/README.md

Perfetto Agent Extensions

This directory holds the per-agent extension manifests that let each supported OSS coding agent install Perfetto skills with one command. The skills themselves live one level up, in ai/skills/, and are shared across all agents — only the install-time manifest is per-agent.

This directory is the source of truth. The Perfetto release pipeline takes its contents (along with ai/skills/ and the tools/trace_processor Python wrapper) and assembles them into the ai-agents release branch, whose root layout is what each agent's loader expects to see at the top of the cloned repo.

See RFC-0026 for the full design.

Layout

ai/extensions/
├── README.md                    (this file)
├── claude-code/
│   ├── plugin.json              → plugins/perfetto/.claude-plugin/plugin.json
│   └── marketplace.json         → .claude-plugin/marketplace.json
└── codex/
    ├── plugin.json              → plugins/perfetto/.codex-plugin/plugin.json
    └── marketplace.json         → .agents/plugins/marketplace.json

Claude Code and Codex are the only agents with a marketplace-style plugin install that needs a per-agent manifest. Both use an explicit git source object (git-subdir for Claude, local for Codex) that points the agent at the plugins/perfetto/ subdirectory of the ai-agents branch.

Three other supported agents install skills via mechanisms that need no per-agent manifest on the branch:

  • OpenCode reads skills/index.json from the branch root via the skills.urls config field; the index is generated by the release pipeline.
  • Pi can either install the branch directly with pi install git:github.com/google/perfetto@ai-agents (it auto-discovers from the cloned root skills/ directory) or have the fallback installer write into ~/.agents/skills/.
  • Antigravity is a fallback consumer: it uses the root skills/ layout, not the plugins/perfetto/ plugin layout. The fallback installer populates its skills directory; native agy plugin install is not used because as of 2026-05 it has no syntax for pinning a non-default git ref.

The fallback path also serves any agent that reads ~/.claude/skills/, ~/.codex/skills/, etc. without needing a marketplace registration.

The arrows show where each file lands on the ai-agents branch. The release pipeline only moves directories — filenames in this directory match their final on-branch filenames exactly.

Versioning

Every manifest carries "version": "0.0.0-dev" as a sentinel. The release pipeline rewrites this to the release tag (e.g. "v54.0") when it assembles the ai-agents branch — main itself never knows which tag will ship.

Authoring

When adding or modifying a manifest:

  • Keep the change minimal. These manifests are install metadata, not documentation.
  • Skills are auto-discovered from skills/ on the assembled branch. No agent‘s manifest needs to enumerate them. The one exception is OpenCode’s skills/index.json, which the pipeline generates from ai/skills/.
  • Run tools/check_extension_manifests.py (or tools/run_presubmit) locally before sending the change.