Marketplace distribution
One repository, two catalogs
This repository is a marketplace for both clients. It follows the same repository layout as Trakt AI plugin. You do not need a separate organization marketplace to install Vale.
| Client | Catalog | Plugin manifest |
|---|---|---|
| Codex | .agents/plugins/marketplace.json |
plugins/vale/.codex-plugin/plugin.json |
| Claude Code | .claude-plugin/marketplace.json |
plugins/vale/.claude-plugin/plugin.json |
Both catalogs are named vale and both point to ./plugins/vale. The install
identifier is vale@vale: plugin name, then marketplace name. The package
contains the checker, pinned Google rules, shared hooks, and two skills. It
requires no MCP server, hosted service, OAuth 2.0 connection, or API key.
These are repository marketplaces. Publishing them does not list Vale in a client's official curated marketplace.
Add the repository
Claude Code:
/plugin marketplace add swack-tools/vale-ai-plugin
/plugin install vale@vale
Codex terminal:
codex plugin marketplace add swack-tools/vale-ai-plugin
codex plugin add vale@vale
See installation for dependencies, trust, and project scope. To try unpublished changes, replace the GitHub source with the absolute path to your local repository in the marketplace add command. Start a new session after installing the changed package.
Updates and removal
Claude Code terminal:
claude plugin marketplace update vale
claude plugin update vale@vale
# Remove the user installation:
claude plugin uninstall vale@vale --scope user
Use --scope project for a project installation. Keep its marketplace settings
if other team members still use them.
Codex terminal:
codex plugin marketplace upgrade vale
codex plugin add vale@vale
# Remove the plugin:
codex plugin remove vale@vale
Restart the client after an update and review changed hooks when requested.
The legacy Codex prompt has a separate lifecycle: rerun its installer after
pulling updates, or remove it with --uninstall.
Add Vale to a future organization marketplace
Copy the complete plugins/vale directory. Keep both manifests, the bundled
rules and license, and the relative paths. Add a catalog entry for each client
that points to the package's location in the new repository. Use that
marketplace's name after @ when installing.
Keep one active Vale installation per workspace. A manual hook installation and an enabled marketplace plugin both register hooks; neither replaces the other.
Host compatibility
hooks/hooks.json is discovered by both clients. It uses the quoted
CLAUDE_PLUGIN_ROOT path. Claude Code defines that variable for plugin hooks;
Codex also defines it for compatibility. The runtime emits shared event JSON
for PreToolUse, PostToolUse, and Stop.
Skills resolve the checker relative to their own installed path. They do not
assume that plugin environment variables are available inside tools run by the
agent. Claude Code exposes skills as slash commands. Codex uses skill mentions;
older clients that still support custom prompts can use the /prompts:vale
wrapper. Codex 0.158.0 rejects that legacy command; use /skills or
$vale:check-prose instead.
References include Codex plugin packaging, Claude Code plugin reference, Claude Code skills, and Codex custom prompts.