Codex marketplace, npm publish prep, disclosure modes
First stable release covering the disclosure-mode redesign (started in v2.0.3-beta01) and distribution reach to the Codex plugin marketplace and the npm registry.
Highlights
- Codex marketplace install.
codex plugin install no-vibenow works end-to-end. Codex moves from instruction-only soft-block to a real hard-block onapply_patchand shell write attempts — the existing Claude hook scripts are reused via Codex's${PLUGIN_ROOT}/ legacy${CLAUDE_PLUGIN_ROOT}. - Disclosure modes (guided write vs. showcase). Guided write is now the default Phase 3 path: AI walks the user toward the code in English with graded help verbs (
hint/analogy/pseudo/show/less) so the code the user types comes from a decision they made, not from transcribing a block. Showcase remains available as a fallback. - Prediction gate. Every Phase 3 layer now ends with a one-question prediction targeting an edge case, intermediate value, branch, or failure mode — never a value already named in the expected-output signature. The run becomes a self-test rather than passive verification.
- Anti-sycophancy and locator-anchored critique. Phase 4 review now resists agreement spirals on user rebuttals and ties every critique line to a precise locator in the user's code.
- First-class native install per CLI in the README. Claude Code, Codex, Pi, Gemini CLI, OpenCode — each now has a one-step install snippet using its native CLI command.
- npm-publish ready.
LICENSE(MIT), fullpackage.jsonmetadata (license,author,repository,homepage,bugs,main, expandedkeywords), and an explicitfilesarray scoping the tarball to plugin content only. `npm pack --dry-run`: 41 files, 74.4 kB — no project state, tests, or external vendored content leaks through.
Install
Claude Code
```
/plugin marketplace add rizukirr/no-vibe
/plugin install no-vibe@no-vibe
```
Codex (new — marketplace install)
```bash
codex plugin marketplace add rizukirr/no-vibe
codex plugin install no-vibe
```
Pi
```bash
pi install git:github.com/rizukirr/no-vibe
```
Gemini CLI
```bash
gemini extensions install https://github.com/rizukirr/no-vibe --ref=v2.0.3
```
OpenCode
Add to `~/.config/opencode/opencode.json`:
```json
{
"$schema": "https://opencode.ai/config.json\",
"plugin": ["no-vibe@git+https://github.com/rizukirr/no-vibe.git"]
}
```
Then fetch the command files (see `INSTALL.opencode.md`).
Changes since v2.0.2
Distribution & packaging
- `3087dd2` test(codex): new `tests/test_codex_plugin.mjs` parity test (manifest fields, version parity with `package.json`, hook script existence + executable bit, write/bash matcher coverage for both Claude and Codex tool names, author URL regression guard). `test_validate_memory_write` also wired into CI (was running locally but never in CI). `workflow_dispatch` added for manual triggering.
- `c7e6008` fix(consistency): unbroke the README platform-support table (footnote was splitting it; one row was orphaned below the footnote). Corrected a pre-existing `author.github` typo (`rizkirr` → `rizukirr`) in both `.claude-plugin/plugin.json` and `.codex-plugin/plugin.json`.
- `d96d4c0` chore(release): version bumped to `2.0.3` across all six version-coupled manifests (`package.json`, `.claude-plugin/plugin.json`, `.claude-plugin/marketplace.json`, `gemini-extension.json`, `.pi-plugin/plugin.json`, `.codex-plugin/plugin.json`).
- `e798297` feat(distribution): new `.codex-plugin/plugin.json` Codex marketplace manifest; promote native install commands per CLI in the README; `gemini extensions install` promoted as the recommended Gemini path; `LICENSE` (MIT) added; `package.json` filled out for npm publish.
Teaching redesign (originally v2.0.3-beta01)
- `70009d5` feat(phase4): tutor failure-mode audit; level-dependent Block body; surface parity for the new disclosure-mode contract.
- `c8733ec` fix(surfaces): align write-guard scope, PROFILE seed, and challenge spec across Claude / OpenCode / Pi / Codex / Gemini.
- `6482be4` docs: align `AGENTS.md` test list and README platform row with current state.
- `fdbc552` feat(phase4): locator-anchored critique and anti-sycophancy rebuttal handling.
- `ea1aa8d` docs: frame no-vibe as pure for learning; emphasize that the user must contribute the thought process, not just keystrokes.
- `fd45597` docs: propagate disclosure mode through README, `CLAUDE.md` / `AGENTS.md` / `GEMINI.md`, and all `INSTALL.*.md` guides.
- `99c1f48` docs(commands): relabel `--mode` as voice mode; surface disclosure mode as a distinct axis.
- `af6ee18` feat(hooks): sync canonical PROFILE.md headings to include the new Disclosure mode section.
- `0d34829` feat(teaching): introduce disclosure modes (guided write vs. showcase) and the per-layer prediction gate.
Migration / breaking changes
None. All existing `/no-vibe`, `/no-vibe-btw`, `/no-vibe-challenge` invocations behave the same. New behavior — disclosure modes and the prediction gate — defaults on for new sessions; existing `PROFILE.md` files are read as-is and gain the `## Disclosure mode` section on the next AI write.
Verified
- All 9 test suites pass: `test_block_writes`, `test_block_bash_writes`, `test_validate_memory_write`, `test_status`, `test_escape_hatch`, `test_gemini_guard`, `test_contract_injection`, `test_opencode_plugin`, `test_pi_plugin`, `test_codex_plugin` (148+ assertions, 0 failures).
- CI green on PR #18 (initial distribution work) and PR #19 (release + Codex parity).
- `npm pack --dry-run` clean: 41 files, 74.4 kB, no `.no-vibe/`, no tests, no docs, no `external/` leak through.
- The plugin loads cleanly via `node -e 'import("./index.js")'` exporting `NoVibePlugin` + default.
Coming next
- `pi install npm:no-vibe` and `"plugin": ["no-vibe"]` (OpenCode) — both unlocked the moment the npm publish lands.
- Smoke-test the Codex hooks against a live Codex CLI build to confirm the stdin payload field names (`tool_name`, `tool_input.file_path`) match what `hooks/block-writes.sh` parses; if a Codex release uses different names, a small jq update covers both runtimes.