A Claude Code plugin marketplace that packages the Refact skills as 8 installable packs. Install only the capabilities a project needs; turn packs on or off independently.
Add the marketplace once, then install the packs you want:
/plugin marketplace add refactco/claude-toolkit
/plugin install base@refact-os
(Or add it from a local checkout: /plugin marketplace add /path/to/this/repo.)
New versions land on main. Refreshing the marketplace does not upgrade packs you already have
installed — you have to bump each one, then restart.
The easy way (needs the base pack): run /base:refact update plugins. It refreshes the
catalog, updates every installed pack, and tells you when to restart. /base:refact install plugins
does the same for installing. Both run the base manage-plugins skill.
By hand — two steps, then a restart:
/plugin marketplace update refact-os # 1. refresh the catalog (learn the new versions)
/plugin update base@refact-os # 2. bump each installed pack you use…
/plugin update wordpress@refact-os # …repeat for the packs you have installed
Then restart Claude Code (or run /reload-plugins) — plugin updates only apply after a restart.
/plugin marketplace update refact-osalone only refreshes the catalog; your installed packs stay on their old version until you run/plugin update <pack>@refact-osfor each.- Check installed vs. available versions any time with
/plugin(menu) orclaude plugin list.
| Pack | Install | What you get |
|---|---|---|
| base | /plugin install base@refact-os |
git workflow, code-dev gates, Asana, env-var sync, learnings capture, client updates, slim project config, Refact Control MCP setup, the /base:refact command, TS/JS language server |
| client | /plugin install client@refact-os |
discovery-first proposals, branded print-ready PDF rendering |
| ops | /plugin install ops@refact-os |
Cloudflare client-zone ops (WAF/DNS/cache/bots), Sentry backlog triage |
| insights | /plugin install insights@refact-os |
Ahrefs (SEO), Google Analytics 4, Search Console, Tag Manager, PageSpeed/Core Web Vitals |
| nextjs | /plugin install nextjs@refact-os |
create/adopt a Next.js app, run & diagnose it, Vercel/Netlify deploy setup |
| wordpress | /plugin install wordpress@refact-os |
local wp-env stack, safe plugin updates with QA + rollback, Kinsta/WP Engine deploys, PHP language server |
| testing | /plugin install testing@refact-os |
TDD harness (tdd → tdd-plan → red-green-refactor), WordPress characterization + integration tests |
| migrate | /plugin install migrate@refact-os |
one-time move of a refact-os-scaffolded repo (agent/skills, .cursor adapters) onto these installable packs |
Start with base — it carries the /base:refact menu command and the always-useful git / env /
project-config skills.
Every skill (the exact skills/<name>/ folder), grouped by the pack that ships it. Claude Code
auto-discovers these by trigger; you don't call them by name.
| Pack | Skills |
|---|---|
| base | asana, code-development, extract-learnings, git-workflow, setup-refact-control-mcp-server, sync-env-vars, update-project-config, writing-client-updates — plus the /base:refact command |
| client | draft-discovery-proposal, render-deliverable |
| ops | cloudflare, sentry |
| insights | ahrefs, ga4, gsc, gtm, pagespeed |
| nextjs | nextjs-dev, setup-nextjs-app, setup-vercel-deploy, setup-netlify-deploy |
| wordpress | wp-env, install-wp-skills, plugin-update, setup-kinsta-deploy, setup-wpengine-deploy |
| testing | tdd, tdd-plan, red-green-refactor, backfill-tests, integration-tests |
| migrate | migrate-to-marketplace |
Each pack turns on or off independently — per project, and per person.
From the menu:
/plugin # browse, enable, disable, uninstall
/plugin enable wordpress@refact-os
/plugin disable wordpress@refact-os
From settings (saves the choice with the project). In .claude/settings.json:
{
"enabledPlugins": {
"base@refact-os": true,
"wordpress@refact-os": true,
"insights@refact-os": false
}
}.claude/settings.json— shared, committed: the team's choice..claude/settings.local.json— personal, git-ignored: your own choice; it wins over the shared file.
Two packs ship hooks. They run automatically whenever that pack is enabled:
| Pack | Runs on | What it does |
|---|---|---|
| base | SessionStart |
install the TS/JS language server (vtsls) |
| base | UserPromptSubmit |
warn if .refact-os.json is missing |
| base | Stop, SessionEnd |
upload the session transcript to REMOTE_API_URL |
| wordpress | SessionStart |
install the PHP language server (intelephense) |
Claude Code has no switch for a single plugin hook. To control them:
- Turn off a pack's hooks → disable the whole pack (
/plugin disable base@refact-os). - Turn off every hook (yours and all plugins') → set
"disableAllHooks": truein.claude/settings.json. - The transcript upload → point it at your own server with the
REMOTE_API_URLenv var; to stop it entirely, disablebaseor usedisableAllHooks.
Plugin hooks merge with your own .claude/settings.json hooks — both run; neither replaces the other.
Skills read an optional, non-secret project file holding only the project structure and tech stack:
The base update-project-config skill writes it; run /base:refact config to create or update it.
Secrets never go here — they stay in your .env / 1Password.
base auto-installs the TS/JS server (vtsls); wordpress auto-installs the PHP server
(intelephense). Both install on SessionStart and never block a session if npm is missing.
No build step. Each pack is a folder of markdown skills (skills/<name>/SKILL.md) plus
manifests and hooks that Claude Code loads at runtime. See CLAUDE.md for the layout and
docs/plugin-marketplace-plan.md for the design and the full 50-skill triage decision.
{ "structure": { /* where code lives; app slots if a monorepo */ }, "stack": { /* languages, frameworks, hosting */ } }