plugin-factorylisted
Install: claude install-skill Xopoko/plug-n-skills
# Plugin Factory
Bundled commands use `$PLUGIN_ROOT` (`$env:PLUGIN_ROOT` in PowerShell; same path suffix) for the plugin root. Set it once: use the host's plugin-root variable when defined (Claude Code: `PLUGIN_ROOT="$CLAUDE_PLUGIN_ROOT"`), otherwise the absolute path of this skill folder's `../..`.
Build marketplace-ready plugin source first. Install or cache-refresh only when the user asked for an installed/global plugin or the validated contract has `install_required=true`.
## Scaffold
For a new requested plugin, choose the source destination deliberately:
- current plugin repository: when the latest user message, repo instructions, or workspace profile indicate this repo is where plugin source should be authored;
- explicit path: when the user gives one;
- user's local marketplace source: when no source repository is selected and the user wants a personal agent plugin.
For the user's local marketplace source, scaffold with:
```bash
python3 "$PLUGIN_ROOT/scripts/plugin/create_basic_plugin.py" <plugin-name> --with-skills --with-scripts --with-assets --with-marketplace
```
Defaults:
- plugin path: `$HOME/.codex/plugins/<plugin-name>`
- marketplace path: `$HOME/.agents/plugins/marketplace.json`
- marketplace source path: `./.codex/plugins/<plugin-name>`
- policies: `installation=AVAILABLE`, `authentication=ON_INSTALL`
This creates a marketplace-ready source path. It is installed globally as
`<plugin-name>@<marketplace-name>` only after the install helper enables it