ワンクリックで
provider-parity-audit
Systematically audit and improve feature parity across Claude, Codex, and Gemini providers.
Codex または Claude でインストール この Prompt をコピーして Codex、Claude、または他のアシスタントに貼り付けると、Skill ページを確認してインストールできます。
メニュー
Systematically audit and improve feature parity across Claude, Codex, and Gemini providers.
Codex または Claude でインストール この Prompt をコピーして Codex、Claude、または他のアシスタントに貼り付けると、Skill ページを確認してインストールできます。
SOC 職業分類に基づく
Fully autonomous PR polish loop. Runs N rounds of local bramble review (codex + cursor, optionally + gemini), folds in any existing PR comments and CI failures as round-1 input, fixes findings locally, pushes once at the end.
Compare bramble code-review output across reviewer configs (cursor with composer-2, codex with gpt-5.4-mini, gemini with gemini-3.1-flash-lite-preview). Runs each config three times against the same branch — turn 1 fresh, turn 2 resumed with default follow-up prompt, turn 3 resumed with fresh prompt — to also characterize backend resume behavior, then compares findings side-by-side and logs results.
Build and use a ground-truth eval dataset for bramble code-review. Two modes. COLLECTION scans past /pr-polish'd PRs and judges each into a frozen ground truth — multiple rounds of bramble re-review + an independent judge sub-agent per round, until the judge's full-diff bug census saturates. REPLAY runs a reviewer-under-test and scores it mechanically against that frozen ground truth — precision/recall/F1, no sub-agents, cheap and repeatable.
One-shot review of an external GitHub PR. Checks out the PR into an isolated worktree (or temp clone), runs `bramble code-review` against the diff, and produces a calibrated verdict — APPROVE unless there is a blocking correctness issue, with optional improvements listed separately. Read-only on the remote PR, never pushes. User-invoked only via `/external-pr-review`.
Iterative review of a markdown design document. Reads the doc, proposes a tailored grilling rubric, runs N rounds of codex+cursor (optionally +gemini) against the doc with that rubric, edits between rounds, commits locally each round. Never pushes.
Ensure the current branch is cleanly rebased onto the remote base branch so that `origin/{base}..HEAD` only shows this branch's commits.
| name | provider-parity-audit |
| description | Systematically audit and improve feature parity across Claude, Codex, and Gemini providers. |
| disable-model-invocation | true |
Systematically find and fix capability gaps across Claude, Codex, and Gemini providers. The goal is to ensure the provider abstraction layer (multiagent/agent/) accurately represents each provider's capabilities and that higher-level consumers (Bramble sessions, swarm orchestration, task routing) work correctly regardless of which backend is active.
/provider-parity-audit [--iterations N] [--until "condition"] [--focus <area>]
| Flag | Default | Description |
|---|---|---|
--iterations N | 5 | Stop after N rounds |
--until "cond" | — | Stop when condition met (e.g., "no gaps in matrix") |
--focus <area> | all | Focus area: events, sessions, permissions, usage, mcp |
Read these files to understand the current state — don't research from scratch:
multiagent/agent/provider.go — Core Provider and LongRunningProvider interfacesmultiagent/agent/integration/provider_conformance_test.go — Current conformance expectationsagent-cli-wrapper/agentstream/event.go — Unified event interfacemultiagent/agent/bridge.go — Event bridging logicmemory/gap-matrix.md (in this skill's directory) — Current parity statusAlso review the provider implementations:
multiagent/agent/claude_provider.gomultiagent/agent/codex_provider.gomultiagent/agent/gemini_provider.goDo this research yourself before dispatching any work.
For each provider, document what the SDK wrapper actually supports by reading the implementation code. Don't guess from interface definitions alone — check what each method actually does.
Capability dimensions to check:
| Dimension | What to Verify |
|---|---|
| Basic execution | Execute() returns result with text, thinking, usage |
| Event streaming | Events() channel emits text, thinking, tool, turn, error events |
| Long-running sessions | Start() / SendMessage() / Stop() multi-turn flow |
| Permission handling | Permission callbacks work, modes (bypass/plan/default) respected |
| Token usage | InputTokens, OutputTokens, CacheReadTokens, CostUSD populated |
| MCP integration | MCP server configuration and tool routing |
| Tool tracking | ToolStart/ToolEnd events with name, ID, input, result |
| Thinking/reasoning | Thinking events emitted during execution |
| Error handling | Graceful error propagation, context cancellation |
| Work directory | Respects configured work directory |
bazel test //multiagent/agent/integration/... --test_timeout=120
Note which tests are skipped per provider and why. The conformance tests already encode known parity expectations — gaps marked with hasEvents: false or newLongRunning == nil are acknowledged limitations.
Start Bramble and run sessions with each provider to check the end-to-end flow:
providerRunner.bridgeProviderEvents()?Create a table in memory/gap-matrix.md:
supported / missing / partial / n/a with notesSort by impact: session-breaking gaps > data loss gaps > degraded UX > nice-to-have.
Print budget each round:
[Round N/max] | Focus: <area or all> | Until: <cond or N/A>
Select the highest-impact gaps from the matrix. Prioritize:
Each gap falls into one of these layers:
| Layer | Location | Example Fix |
|---|---|---|
| SDK wrapper | agent-cli-wrapper/<provider>/ | Parse new event type, handle new protocol message |
| Agentstream interface | agent-cli-wrapper/agentstream/ | Add new event kind, extend interface |
| Provider implementation | multiagent/agent/<provider>_provider.go | Wire new SDK event to AgentEvent, implement missing method |
| Event bridge | multiagent/agent/bridge.go | Handle new agentstream kind in generic bridge |
| Conformance tests | multiagent/agent/integration/ | Add test case, update expectations |
| Consumer layer | bramble/session/, multiagent/orchestrator/ | Handle new event type, update UI rendering |
For each gap:
Verify protocol behavior first — Use /protocol-research to confirm the CLI actually supports the capability. Don't implement handling for events that the CLI doesn't emit.
Write the conformance test first (TDD) — Add or update provider_conformance_test.go to express the expected behavior. The test should fail before your implementation.
Fix bottom-up — Start at the SDK wrapper layer and work up:
Update the provider's capability flags — If the provider now supports something new, update the conformance test expectations (hasEvents, newLongRunning, etc.).
After implementation:
# Lint first
scripts/lint.sh
# Build everything
bazel build //...
# Run all unit tests
bazel test //... --test_timeout=60
# Run conformance tests specifically
bazel test //multiagent/agent/integration/... --test_timeout=120
For integration-level changes, also test through Bramble to verify the end-to-end flow works.
memory/gap-matrix.mdStop if: max iterations reached, --until condition met, or no actionable gaps remain.
Provider (basic)
├── Execute(ctx, prompt, wtCtx, opts...) → AgentResult
├── Events() → <-chan AgentEvent
└── Close()
LongRunningProvider (extends Provider)
├── Start(ctx)
├── SendMessage(ctx, msg) → AgentResult
└── Stop()
Not all providers implement LongRunningProvider. Currently:
Provider only (thread-per-execution model)The bridgeEvents[E any]() generic function in multiagent/agent/bridge.go uses type assertions on agentstream interfaces. SDK events that don't implement any agentstream interface are silently skipped — this is intentional, not a bug. Provider-specific events (like claude.CLIToolResultEvent or codex.CommandOutputEvent) are SDK-internal details that don't need to cross the abstraction boundary.
These are documented in conformance tests:
hasEvents: false — limited streaming event emissionLongRunningProvider — uses ephemeral thread modelAgentUsage fields empty)| File | Purpose |
|---|---|
multiagent/agent/provider.go | Core interfaces and AgentEvent types |
multiagent/agent/bridge.go | Generic event bridge implementation |
multiagent/agent/integration/provider_conformance_test.go | Cross-provider test suite |
agent-cli-wrapper/agentstream/event.go | Shared event kind definitions |
bramble/session/manager.go | How Bramble creates and manages provider sessions |
bramble/session/provider_runner.go | How Bramble bridges provider events to TUI output |