pnpm build:plugin produces, deterministically:
| Artifact | Location |
|---|---|
| Bundled CLI | integrations/claude-code-plugin/specbridge/dist/cli.cjs |
| Bundled MCP server | integrations/claude-code-plugin/specbridge/dist/mcp-server.cjs |
| License report | integrations/claude-code-plugin/specbridge/dist/THIRD_PARTY_LICENSES.txt |
| Checksum manifest | integrations/claude-code-plugin/specbridge/dist/checksums.json |
| Claude release ZIP | dist/specbridge-claude-plugin-<version>.zip |
| Native Codex plugin | integrations/codex-plugin/specbridge/ |
| Codex marketplace | integrations/codex-plugin/.agents/plugins/marketplace.json |
| Codex launcher/checksums | integrations/codex-plugin/specbridge/dist/mcp-launcher.cjs and checksums.json |
The ZIP's archive root is the plugin root (no nested build directory)
and contains exactly: .claude-plugin/plugin.json, .mcp.json, skills/,
bin/, dist/, README.md, LICENSE, NOTICE.md. It excludes source
maps, test fixtures, node_modules, .git, .kiro, .specbridge,
secrets, and logs. Store-method entries with fixed timestamps make the
archive byte-reproducible for identical inputs.
The Codex artifact is the installable marketplace directory rather than a second ZIP. Its 16 skills are deterministically derived from the canonical Claude sources, its CLI and MCP bundles are byte-identical to the Claude copies, and its launcher/checksum manifest are deterministic. Codex may copy that directory into its own cache during local marketplace installation.
pnpm install --frozen-lockfilepnpm lint && pnpm typecheck && pnpm testpnpm build:pluginpnpm validate:pluginpnpm verify:plugin-bundlepnpm check:codex-plugin && pnpm validate:codex-plugin && pnpm verify:codex-plugin-bundle- Commit the rebuilt
integrations/claude-code-plugin/specbridge/dist/together with the source changes (the committed bundle is what GitHub marketplace installs use), plus the generatedintegrations/codex-plugin/specbridge/artifact. - Optionally exercise the Claude plugin manually:
claude --plugin-dir ./integrations/claude-code-plugin/specbridgeand run/specbridge:doctor. - Optionally exercise Codex with an isolated or disposable home:
codex plugin marketplace add ./integrations/codex-plugin, installspecbridge@specbridge-local, then run$specbridge:doctorin a fixture repository. - Attach
dist/specbridge-claude-plugin-<version>.zipto the GitHub release.
Version consistency (root, workspace packages, plugin manifest, marketplace
entry, MCP server identity, checksum manifest, bundled --version output)
is enforced by pnpm validate:plugin; Codex version, skill, marketplace,
runtime, and checksum consistency is enforced by
pnpm check:codex-plugin and pnpm validate:codex-plugin. A stale bundle
fails validation.
Packages are not published to npm by this process, and neither frontend plugin is submitted to an external marketplace. The Codex integration is a supported local marketplace source in this repository. Publication remains a deliberate, separate decision.