Skip to content

feat: marketplace plugin + pluggable reviewer (hook v4)#9

Merged
ashbrener merged 10 commits into
mainfrom
feat/marketplace-plugin
Jun 8, 2026
Merged

feat: marketplace plugin + pluggable reviewer (hook v4)#9
ashbrener merged 10 commits into
mainfrom
feat/marketplace-plugin

Conversation

@ashbrener

@ashbrener ashbrener commented Jun 8, 2026

Copy link
Copy Markdown
Owner

Packages Wingman as a Claude Code marketplace plugin and makes the reviewer genuinely pluggable. Built spec-kit-driven (specs/001-marketplace-plugin-reviewer/): specify → clarify → plan → tasks → analyze → implement.

What

  • Plugin packaging.claude-plugin/plugin.json (wingman v1.0.0) + single-repo marketplace.json. Installable via /plugin marketplace add ashbrener/wingman/plugin install wingman. Skills auto-discovered as /wingman:*. npx skills add path retained. (US1)
  • Pluggable reviewerWINGMAN_REVIEWER = codex (default) | gemini | claude. Codex path byte-for-byte unchanged; gemini/claude get a constructed diff+prompt with a uniform [P1/P2/P3] output contract piped via stdin (ARG_MAX-safe). Per-reviewer metadata (reviewer.tool/model/provider). Resolution: env var → .wingman-reviewer file → codex. (US2)
  • Graceful cold install — missing/unknown reviewer writes a reviewer_missing record; push never blocked. Same-model (claude) runs with a non-blocking [CROSS-MODEL NOTE]. (US3, FR-017)
  • Clean upgrade — hook v3→v4; marker line unchanged so existing v1/v2/v3 installs auto-upgrade to exactly one block, preserving .reviews/ data. (US4)
  • De-Codex'd skills + README (README now leads with the write-back wedge; documents WINGMAN_REVIEWER). (US2/US5)

Verification

  • claude plugin validate . --strict
  • shellcheck (error) + bash -n + py_compile (both heredocs) ✔
  • install-smoke locally green: fresh / v1→v4 / v2→v4 / v3→v4 (+ data-preservation) / --force / exemptions / convergence / reviewer_missing / reviewer.tool ✔

Notes

  • Output schema stays wingman_schema_version: "3" (adds reviewer_missing status; reviewer.tool now varies).
  • Local spec-kit/linear tooling, CLAUDE.md, and .env are gitignored — not part of the package.
  • Design of record: specs/001-marketplace-plugin-reviewer/ (the earlier docs/superpowers/ spec/plan are superseded but left for history).
  • Marketplace submission is a manual web form (post-merge).

ashbrener added 10 commits June 8, 2026 19:42
…US1)

- .claude-plugin/plugin.json (wingman v1.0.0) + marketplace.json (single-repo)
- claude plugin validate --strict passes
- README leads with write-back wedge; dual install (plugin + skills CLI); WINGMAN_REVIEWER documented
Implements FR-001,002,003,013,016(doc); US1.
…US4/US5)

- WINGMAN_REVIEWER=codex|gemini|claude; codex path unchanged; gemini/claude get
  constructed diff+prompt (uniform [P1/P2/P3] contract) via stdin (ARG_MAX-safe)
- per-reviewer metadata; reviewer.tool from WINGMAN_TOOL
- reviewer_missing record when CLI absent/unknown (push never blocked)
- [CROSS-MODEL NOTE] when reviewer=claude (FR-017)
- resolution: env > .wingman-reviewer file > codex; setup persists default
- hook v3->v4 (marker unchanged → auto-upgrade); install.sh message generalized
- skills de-Codex'd; CI smoke: v1/v2/v3->v4 (+data-preservation), reviewer_missing, reviewer.tool
- all install-smoke scenarios green; shellcheck/bash -n/py_compile clean
Implements FR-004,005,006,007,008,009,010,011,012,016,017,018; US2-US5.
@ashbrener ashbrener merged commit cecca40 into main Jun 8, 2026
3 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant