AGENTS.md
+58 −36
https://raw.githubusercontent.com/meterapp/meter-plugins/HEAD/AGENTS.md
− # AGENTS.md — the Meter cross-agent plugin− One plugin, packaged natively for Claude Code and Codex, plus the− vendor-neutral Open Plugins manifest. This directory is the source of truth and− | `.claude-plugin/plugin.json` | `/plugin install meter@meterapp-meter`; also the Anthropic Directory listing (`privacyPolicyUrl`, `termsOfServiceUrl`, `supportUrl`) |− | `.codex-plugin/plugin.json` | `codex plugin add meter@meterapp-meter` (also the directory listing) |− | `.mcp.json` | Every client: the hosted server. Sign-in is OAuth, handled by the host |− | `server.json` | The official MCP Registry entry (`co.meterapp/meter`, remote-only); published by a human with `mcp-publisher`, never by CI |− | `references/` | Deep material the skills link to; `tools.md` and `data-model.md` are generated |− The marketplace `source` is `"./"`: the repository *is* the plugin. There is no− nested plugin directory, which is why one repository serves all supported channels.− - **Manifest versions move together.** All three `plugin.json` files and− `server.json` carry the same `version`, and `CHANGELOG.md` gains a− `## <version> ` heading in the same commit. `scripts/validate_repo.py` fails− otherwise. A version published to the MCP Registry can never be changed, so− name `/privacy`. Check a new URL with `curl -sIL` before using it. OpenAI's− - **The marketplace is `meterapp-meter`.** Claude Code and Codex key− update command use it; `scripts/validate_repo.py` fails otherwise, except in− `CHANGELOG.md`, whose migration notes give commands with the old name.− the generated references; a skill that quotes them must match. The MCP URL is− `https://www.meterapp.co/api/mcp` and every published link uses− the org. Link the docs, the generated references, or `hello@meterapp.co`.− - **No credential, ever.** There are no API keys in this product. Nothing here− may contain a token, a `Bearer` header value, a Supabase key or a placeholder− that looks like one, and no example may put a token in a URL, a file or a prompt.− - **No `Authorization` header and no credential read from the user's machine.**− Any configured `Authorization` header disables Claude Code's OAuth sign-in on− a directory install, whatever its value. The Anthropic Directory holds a− plugin for review ("Uses a credential from the user's machine") when a skill,− the README or a config reads a key from an environment variable, a file or a− plugin option and sends it on, examples included. The validator enforces both.− - **Every write requires a saved preview and explicit confirmation.** Pass− python3 scripts/validate_repo.py− claude plugin validate .claude-plugin/plugin.json --strict− npx -y skills@latest add . --list− CI runs all of these on every push, plus a scheduled check that the hosted MCP− URL in `.mcp.json` still answers with the OAuth challenge.+ # AGENTS.md — the Meter cross-agent plugins+ Two plugins, Meter for Drivers & Fleets and Meter Rides, each packaged natively+ for Claude Code and Codex, plus the vendor-neutral Open Plugins manifest. This directory is the source of truth and+ The repository root is the marketplace; each plugin is a folder bound to exactly+ one hosted MCP server, so the directory can pair it with that server's connector.+ | `fleet/` | The plugin `meter-fleet` (Meter for Drivers & Fleets), server `https://www.meterapp.co/api/mcp/fleet` |+ | `rides/` | The plugin `meter-rides` (Meter Rides), server `https://www.meterapp.co/api/mcp/rider` |+ Inside each plugin folder:+ | Path | Consumed by |+ | --- | --- |+ | `.claude-plugin/plugin.json` | `/plugin install <plugin>@meterapp-meter`; also the Anthropic Directory listing (`privacyPolicyUrl`, `termsOfServiceUrl`, `supportUrl`) |+ | `.codex-plugin/plugin.json` | `codex plugin add <plugin>@meterapp-meter` (also the directory listing) |+ | `.mcp.json` | Every client: that plugin's one hosted server. Sign-in is OAuth, handled by the host |+ | `server.json` | The official MCP Registry entry (`co.meterapp/meter` for fleet, `co.meterapp/meter-rides` for rides), remote-only |+ | `references/` | Deep material the skills link to; `tools.md` and `data-model.md` are generated, with only that server's tools and objects |+ A plugin install copies only its own folder, so each one carries its own README,+ LICENSE, CHANGELOG, icon and references, and links nothing outside itself.+ - **One plugin, one server.** Each `.mcp.json` lists exactly its own server, and+ no file in a plugin names the other plugin's server URL; refer to the other+ plugin by name. A skill depends only on its own plugin's server.+ - **Versions move together.** All three `plugin.json` files and `server.json` of+ both plugins carry the same `version`, and each `CHANGELOG.md` gains a+ `## <version> ` heading in the same commit. The source repository's validator+ (`scripts/ops/validate-meter-plugin.py`) fails otherwise. A version published to the MCP Registry can never be changed, so+ name `/privacy`. Confirm a new URL resolves before using it. OpenAI's+ - **Keep those three Claude manifest fields.** The directory warns that it does+ not recognize them and says no action is needed; they feed the listing. Do+ not remove them to clear the warning.+ - **The marketplace is `meterapp-meter`.** Claude Code and Codex identify+ update command use it; the validator fails otherwise, except in+ a `CHANGELOG.md`, whose migration notes give commands with the old names.+ the generated references; a skill that quotes them must match. The combined+ `/api/mcp` server was removed and now answers 410. Every published link uses+ the org. Link the docs, the generated references, or `jonathan@welcome.meterapp.co`.+ - **OAuth is the only sign-in.** Each `.mcp.json` entry is `type` and `url` and+ nothing else: any added request field turns off the host's OAuth sign-in on a+ directory install. The plugin asks the person for nothing and takes nothing+ from their computer.+ - **The directory's policy check is textual.** It holds a plugin over vocabulary+ about sign-in, even in a sentence that denies the thing, history included. So
Showing the first 40 of each.