Add Maestro: Costguard to Tools & Integrations#222
Conversation
Add the Costguard plugin listing (read-only CI/cron and cloud-spend cost auditor for Codex) with its bundle under plugins/mbanderas/costguard/ and entries in plugins.json and .agents/plugins/marketplace.json. Also fix two pre-existing alphabetical-order inversions in README.md (GrayMatter/Generative Media Skills; ScrapeGraph AI/Rust Reverse Engineering) so the alphabetical-check passes. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
There was a problem hiding this comment.
Code Review
This pull request introduces the 'Maestro: Costguard' plugin, which audits CI/cron and cloud-spend waste. The changes include adding the plugin to the marketplace, updating the README, and adding the plugin's configuration, manifest, and skill documentation. The review feedback highlights a typo in the documentation referring to 'playwright' as 'playwriter' and points out an inconsistency between the '--pr' and '--open-pr' command-line flags.
Important
The consumer version of Gemini Code Assist on GitHub is being sunset. Starting June 18, 2026, new organization installations will be blocked, and all code review activity will officially cease on July 17, 2026.
For more details on the timeline and next steps, please review the Help Documentation.
| `--live` **extends** the read-only posture above: it adds **browser-driven reads | ||
| over your already-logged-in session**, performed by the **playwriter** MCP server | ||
| under the agent's orchestration. This is a genuine posture change and is treated | ||
| as one — **off by default, opt-in, and consent-gated.** costguard's own tools | ||
| still never drive a browser and never see credentials: `plan_live_checks` only | ||
| emits a **read-only** snippet (navigation + reading rendered billing figures — no | ||
| clicks, typing, form submits, credential replay, cookies, localStorage, | ||
| sessionStorage, or screenshots), and `ingest_live_reading` only parses the | ||
| returned figure. The browser action is performed by playwriter, authorized by you. | ||
|
|
||
| **API-first / browser-fallback:** `plan_live_checks` is API-first when a provider | ||
| module exists and its API token resolves from the environment (a deterministic | ||
| env-NAME check, no network probe) — in that case prefer `audit_workspace`. Only | ||
| when there is no usable API token does it fall back to a browser playbook. | ||
|
|
||
| **Three consent gates (all required):** (1) the host's MCP tool-call consent; | ||
| (2) costguard's own per-run confirmation — `plan_live_checks` returns a | ||
| `consentNotice` the agent MUST surface, and emits the actionable snippet only when | ||
| called with `confirmLive:true`; (3) playwriter's own consent before it executes. | ||
|
|
||
| **Graceful degrade:** if playwriter is not connected, the agent cannot run the | ||
| snippet; `ingest_live_reading` returns a `kind:"diagnostic"` Finding (excluded | ||
| from cost totals) and the audit never blocks. |
There was a problem hiding this comment.
The term playwriter is used multiple times in this section. This appears to be a typo for playwright (the browser automation library by Microsoft and its corresponding MCP server). Please correct the spelling to ensure proper referencing of the tool.
`--live` **extends** the read-only posture above: it adds **browser-driven reads
over your already-logged-in session**, performed by the **playwright** MCP server
under the agent's orchestration. This is a genuine posture change and is treated
as one — **off by default, opt-in, and consent-gated.** costguard's own tools
still never drive a browser and never see credentials: `plan_live_checks` only
emits a **read-only** snippet (navigation + reading rendered billing figures — no
clicks, typing, form submits, credential replay, cookies, localStorage,
sessionStorage, or screenshots), and `ingest_live_reading` only parses the
returned figure. The browser action is performed by playwright, authorized by you.
**API-first / browser-fallback:** `plan_live_checks` is API-first when a provider
module exists and its API token resolves from the environment (a deterministic
env-NAME check, no network probe) — in that case prefer `audit_workspace`. Only
when there is no usable API token does it fall back to a browser playbook.
**Three consent gates (all required):** (1) the host's MCP tool-call consent;
(2) costguard's own per-run confirmation — `plan_live_checks` returns a
`consentNotice` the agent MUST surface, and emits the actionable snippet only when
called with `confirmLive:true`; (3) playwright's own consent before it executes.
**Graceful degrade:** if playwright is not connected, the agent cannot run the
snippet; `ingest_live_reading` returns a `kind:"diagnostic"` Finding (excluded
from cost totals) and the audit never blocks.| Default is dry-run. Only deterministic ADD-rule fixers run (timeout, | ||
| concurrency, paths-ignore). Costguard never pushes; `--open-pr` is gated and | ||
| refuses without an explicit token. |
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Plugin
Maestro: Costguard — a read-only cost auditor for Codex that flags CI/cron and cloud-spend waste via read-only provider checks, then previews and applies surgical CI workflow fixes locally (never writes to provider accounts, never pushes git).
@costguard/costguard-mcpScanner gate
HOL Plugin Scanner runs in the plugin repo's CI and passes on
master(score ≥ 80/130, no high/critical findings):.github/workflows/hol-plugin-scanner.ymlWhat's in this PR
plugins/mbanderas/costguard/(manifest, icon, skill, README).plugins.jsonand.agents/plugins/marketplace.json.The repo satisfies the required files:
.codex-plugin/plugin.json(+composerIcon),SECURITY.md,LICENSE(MIT),README.md, lockfile, SHA-pinned Actions, and Dependabot.🤖 Generated with Claude Code