feat(codex): ship native basecamp plugin#534
Conversation
Sensitive Change Detection (shadow mode)This PR modifies control-plane files:
|
There was a problem hiding this comment.
Pull request overview
This PR adds first-class support for a native Codex plugin alongside the existing Claude Code integration, including plugin payload validation, lifecycle hooks, setup automation, and doctor diagnostics so Codex users can get a one-command setup path.
Changes:
- Introduces a native Codex plugin manifest, hook payload, and a repository validator (
scripts/check-codex-plugin.py) enforced bybin/ci. - Adds
basecamp setup codexplus Codex-related doctor checks (plugin installed/enabled + version parity) and release stamping for.codex-plugin/plugin.json. - Documents Codex setup (automatic + manual) while keeping the Claude Code path intact.
Tip
If you aren't ready for review, convert to a draft PR.
Click "Convert to draft" or run gh pr ready --undo.
Click "Ready for review" or run gh pr ready to reengage.
Reviewed changes
Copilot reviewed 21 out of 22 changed files in this pull request and generated 1 comment.
Show a summary per file
| File | Description |
|---|---|
| skills/basecamp-doctor/SKILL.md | Adds a dedicated “doctor” skill describing how to run and interpret basecamp doctor --json safely. |
| scripts/stamp-codex-plugin-version.sh | Adds a release helper to stamp the CLI version into the Codex plugin manifest. |
| scripts/release.sh | Stamps + stages the Codex plugin manifest during stable releases and updates messaging. |
| scripts/check-codex-plugin.py | Adds a repository contract/shape validator for the Codex plugin payload (manifest, hooks, wiring, version parity). |
| RELEASING.md | Documents that stable releases update both Claude and Codex plugin metadata. |
| README.md | Documents basecamp setup codex, manual install commands, and basecamp doctor --json coverage. |
| internal/release/codex_plugin_test.go | Adds tests for stamping, repository validation, and release wiring/version parity. |
| internal/harness/codex.go | Adds Codex detection and doctor checks (plugin presence + version parity) to the agent harness. |
| internal/harness/codex_test.go | Adds unit tests covering Codex detection and the new doctor checks. |
| internal/commands/wizard_codex.go | Implements basecamp setup codex to register marketplace, install plugin, and verify state. |
| internal/commands/wizard_codex_test.go | Tests Codex setup command behavior (ordering, idempotency, failures, JSON output). |
| internal/commands/doctor.go | Adds doctor breadcrumbs for Codex plugin failures/warnings to point users at basecamp setup codex. |
| internal/commands/doctor_test.go | Tests Codex doctor integration wiring and breadcrumb behavior. |
| internal/commands/codex_hook.go | Adds hidden basecamp codex-hook … commands used by Codex lifecycle hooks. |
| internal/commands/codex_hook_test.go | Tests session-start context output and post-commit reference detection behavior. |
| internal/cli/root.go | Registers the hidden Codex hook command group in the CLI root. |
| install.md | Adds Codex setup docs (one-command + manual) and recommends basecamp doctor --json verification. |
| hooks/hooks.json | Adds Codex-native lifecycle hook definitions for SessionStart and PostToolUse(Bash). |
| bin/ci | Enforces Codex plugin payload validation via scripts/check-codex-plugin.py. |
| AGENTS.md | Updates repository structure docs to include .codex-plugin/ and hooks/. |
| .goreleaser.yaml | Stamps both Claude + Codex plugin versions for stable releases via GoReleaser hooks. |
| .codex-plugin/plugin.json | Adds the native Codex plugin manifest (name/version/interface/skills/assets). |
💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.
There was a problem hiding this comment.
All reported issues were addressed across 22 files
Reply with feedback, questions, or to request a fix.
Re-trigger cubic
coordinated codex marketplace follow-upThe companion marketplace payload is ready at GitHub currently denies contributor-created pull requests to |
There was a problem hiding this comment.
All reported issues were addressed across 11 files (changes from recent commits).
Tip: Review your code locally with the cubic CLI to iterate faster.
Re-trigger cubic
There was a problem hiding this comment.
All reported issues were addressed across 2 files (changes from recent commits).
Tip: Review your code locally with the cubic CLI to iterate faster.
Re-trigger cubic
There was a problem hiding this comment.
All reported issues were addressed across 3 files (changes from recent commits).
Tip: Review your code locally with the cubic CLI to iterate faster.
Re-trigger cubic
There was a problem hiding this comment.
All reported issues were addressed across 4 files (changes from recent commits).
Tip: Review your code locally with the cubic CLI to iterate faster.
Re-trigger cubic
what changed
basecamp setup codex, Codex doctor checks, version parity, release stamping, and repository validationwhy
this gets codex users the same one-command setup without messing with the claude path.
test plan
go test ./internal/harness ./internal/commands -run "Codex|CodexHook" -timeout 60sgo test ./internal/release -run "Codex|Plugin"/hooks, hook fixtures exercised, and Codex doctor checks passedbin/cicompleted plugin, Go, and Actions lint stages; its full macOS run retains the existinginternal/cliTestHardenConfigDirfailures reproduced unchanged onmainSummary by cubic
Ships a native Codex plugin for Basecamp with one-command setup, lifecycle hooks, and health checks. Improves post-commit follow-ups by parsing shell commands with a Bash AST and modeling success states to avoid false positives; hardens release validation, de-duplicates checker errors, and handles invalid UTF‑8 without tracebacks. Doctor now surfaces Codex plugin health and version from a single Codex query with clear breadcrumbs.
New Features
.codex-plugin/plugin.json, icons, andhooks/hooks.json(SessionStart, PostToolUse).basecamp codex-hook {session-start,post-commit-check}; follow-ups run only after a successfulgit commit, never perform side effects; stronger detection via Bash AST parsing (mvdan.cc/sh) that handles env vars,envwrapper, quoting, chaining, and redirection; accurate success modeling from Codex tool output/response (nested JSON, status/exit code).basecamp setup codexregistersbasecamp/claude-plugins, installsbasecamp@37signals, upgrades the37signalsmarketplace when already added, and verifies install.basecamp doctor --jsonincludes Codex diagnostics.skills/basecamp-doctor/SKILL.mdfor diagnostics and remediation guidance.scripts/check-codex-plugin.pyenforces strict semver, disallows unsupported manifest fields, validates hooks and command wiring (tolerates whitespace differences), de-duplicates errors, ensures Claude/Codex version parity, and gracefully handles invalid UTF‑8/unreadable files without stack traces;bin/ciruns the checker; release tests are OS-aware and verify Python 3 availability.Migration
basecamp setup codex./hooks.basecamp doctor --json.Written for commit 63c5feb. Summary will update on new commits.