Skip to content

Latest commit

 

History

309 Commits

Folders and files

NameName
Last commit message
Last commit date
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Netdust Plugins

Claude Code plugin monorepo. Three plugins published as a single marketplace.

Plugins

Plugin Role
netdust-core Cross-stack discipline (memory conventions, skills, agents, MCP — live hooks in netdust-agent). Stack-agnostic.
netdust-wp WordPress framework knowledge (NTDST/Bedrock). Layers on core.
netdust-statamic Statamic 6 + Peak. Layers on core.

Install

Add the marketplace once:

claude plugin marketplace add netdust/netdust-plugins

Install the plugins you want:

claude plugin install netdust-core@netdust-plugins
claude plugin install netdust-wp@netdust-plugins     # only on WP machines
claude plugin install netdust-statamic@netdust-plugins  # only on Statamic machines

Restart Claude Code to pick up newly-installed plugins.

Update

claude plugin update netdust-core

(Restart required to apply.)

Develop

This repo IS the source of truth. Edit in plugins/<name>/ and commit. To test changes locally before pushing:

claude plugin marketplace add ./   # if not already added from a local clone
# then re-install from the local path

Releases are tagged per-plugin via claude plugin tag plugins/<name> which creates a <name>--v<version> git tag (validated against plugin.json).

After every commit: ./scripts/sync.sh

Claude Code keeps two separate caches for an installed plugin:

  1. ~/.claude/plugins/marketplaces/netdust-plugins/ — git clone of this repo
  2. ~/.claude/plugins/cache/netdust-plugins/<plugin>/<version>/ — extracted install

claude plugin marketplace update refreshes #1. claude plugin update refreshes #2 — but only when the plugin's version bumps. During heavy iteration we ship many commits at the same version, so the install cache silently stays stale and active sessions read the old content.

./scripts/sync.sh refreshes both caches from the working tree in one shot. Run it after every git push. Idempotent. Verifies the sync at the end.

Restart Claude Code (or open a fresh session) to pick up SKILL/command changes.

Open follow-ups

Cross-plugin imports in user-project CLAUDE.md

The wp-new-project command historically emitted @~/.claude/plugins/netdust-wp/CLAUDE.md into generated project CLAUDE.md files. With the marketplace install, plugins live at versioned cache paths (~/.claude/plugins/cache/netdust-plugins/netdust-wp/<version>/CLAUDE.md), which would break on every plugin update.

Resolution (2026-05-28): dropped the @import from the template. Skills are the long-term answer — they're invoked explicitly when needed and don't depend on a stable filesystem path. If future-us decides we DO need always-on context in project CLAUDE.md from the plugin, options to revisit:

  1. Have plugin install/post-install create a stable symlink at ~/.claude/plugins/netdust-wp → currently-installed cache version.
  2. Replace @import with a slash-command snippet (/netdust-wp:context) that loads the same content on demand.
  3. Move always-on context into a top-level skill that auto-activates on project-dir match.

This note exists so the question gets revisited deliberately.

About

Netdust harness plugins monorepo (netdust-core + netdust-wp + netdust-statamic)

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages