Added
- Local Claude Code plugin distribution prep — added a local-only plugin scaffold and
scripts/build_claude_plugin.pyartifact builder that copies the stdlib-only nah runtime into an ignoreddist/claude-plugin/nahdirectory, generates Claude hook matchers from the canonical agent matcher list, and keeps hook commands rooted at${CLAUDE_PLUGIN_ROOT}with no package-manager or network bootstrap. CLI install/update/uninstall/nah claudepaths now detect enabled nah plugins, avoid silent mixed plugin/direct-hook setups, and preserve plugin-managed state during uninstall. (nah-879) - Claude Code plugin marketplace artifact generation —
scripts/build_claude_plugin.pycan now generate and freshness-check a full self-hosted marketplace root atdist/claude-marketplace, with.claude-plugin/marketplace.jsonpointing to the generated self-containedplugins/nahartifact instead of the source template. Added plugin beta install docs covering opt-in plugin mode, legacy direct-hook migration, rollback, and the intentional absence of bundled PyYAML. (nah-880) - Automated Claude plugin marketplace releases — the existing tagged release workflow now builds, freshness-checks, release-verifies, and Claude-validates the generated marketplace tree before publishing PyPI, then publishes that exact marketplace artifact to the
claude-marketplacebranch with immutableclaude-plugin-vX.Y.Ztags. Added release scripts and tests so plugin metadata, source tag, package version, changelog, and bundled runtime cannot silently drift. (nah-881)