claude-plugins
releasev2.1.3Catalog marketplace for Claude Code plugins by voyvodka: project and web-launcher.
README Snapshot
voyvodka/claude-plugins
A catalog of Claude Code plugins. Each plugin lives in its own repository — this repository holds only the marketplace listing, so one registration covers all of them.
Install
/plugin marketplace add voyvodka/claude-plugins
/plugin install project-flow@voyvodka
/plugin install web-launcher@voyvodka
Then /plugin marketplace update voyvodka to pick up new entries.
Each entry is pinned to a release tag, so an update gives you a version that was tagged and
released, not whatever main held at that moment. CI clones every source at its pinned ref and
validates the plugin there, so a broken path fails here rather than at install time.
Each entry resolves to a subdirectory of the plugin's own repository.
Plugins
| Plugin | What it does | Source |
|---|---|---|
| project-flow | Carry a project from a rough idea to shipped code through six approval-gated phases: detect state, interrogate the idea, research market and stack, lock decisions into docs, scaffold AI tooling, then build in increments | claude-project-flow |
| web-launcher | Diagnose why a live site is not indexed, fix it, and verify the fix — plus discoverability scaffolding, Cloudflare Workers deployment, and repository hardening. Every technical claim carries its verification date and source. | web-launcher |
The wording above is copied from marketplace.json verbatim, so what this table says is exactly
what /plugin shows. Change one and change the other.
projectwas renamed toproject-flowin 3.0.0. The catalog carries arenamesentry, so Claude Code v2.1.193+ rewrites your settings and tells you it did. The source is remote, so expect oneplugin-cache-missand a single/plugin install.
Why a separate catalog
The plugins are unrelated tools with their own release cadence, so they keep their own repositories, issues, and versions. Without a catalog, using both means adding two marketplaces and running every update command twice — which is how one machine ends up running two different versions of the same plugin without noticing.
Licence
Each plugin carries its own licence in its own repository. This catalog is MIT — see LICENSE.
Changelog
Changelog
All notable changes to this catalog are documented here. The format follows Keep a Changelog.
This file tracks the catalog, not the plugins it lists — each plugin keeps its own changelog in its own repository.
Unreleased
2.1.3 - 2026-09-25
Changed
- Pinned to
project-flowv3.1.0.
2.1.2 - 2026-09-25
Added
- CI checks the changelog's link footer: every released version needs a
[x.y.z]: <url>ref, and[Unreleased]must compare from the newest release. 2.1.1 shipped with no ref of its own and with[Unreleased]still comparing from 2.1.0; both listed plugins had the same drift, and nothing caught it in any of the three repositories.
Changed
- Pinned to
project-flowv3.0.3 andweb-launcherv0.3.3.
Fixed
- The link footer is repaired:
[2.1.1]added,[Unreleased]compares from the newest release. - 2.1.1 described
strictas making an entry "require the plugin manifest to be present at the pinned ref". That is not what it does.strict: trueis the default and makesplugin.jsonthe authority, with any component fields in the catalog entry merged into it;strict: falsemakes the entry the whole definition and fails the load if the manifest also declares components. Neither entry declares components, so the flag states the default rather than adding a guarantee.
2.1.1 - 2026-09-08
Added
- Each entry now carries
license,homepage,repositoryandkeywords, and is markedstrict. The catalog is the surface/pluginbrowses and searches, and it was carrying only a name, a description and a source — so a search for "seo" or "planning" matched neither plugin even though both manifests have listed those keywords all along.strictmakes an entry require the plugin manifest to be present at the pinned ref rather than installing whatever is at that path. - CI compares the description, licence and keywords in each catalog entry against the
plugin.jsonit resolves to. Those fields are now stated in two repositories, which is exactly how one goes stale — the copy is checked rather than trusted, the same way the name and version already were. - CI checks the changelog's structure: no section heading twice inside one version block, only
Keep a Changelog section names, an
[Unreleased]section, and one dated heading per version. Both listed plugins shipped a release block holding the same entries twice; this catalog had not, and the check is here so that stays true rather than being luck.
Changed
- Pinned to
project-flowv3.0.2 andweb-launcherv0.3.2.
2.1.0 - 2026-08-28
Changed
- Pinned to
project-flowv3.0.1 andweb-launcherv0.3.1. Both are patch releases fixing checks and instructions that could pass or mislead; pinning means they do not reach anyone until this bump merges, which is the cost the pinning change accepted and the reason the CI version check exists.
2.0.1 - 2026-08-28
Added
- CI also asserts that the
namein each source'splugin.jsonmatches the name the catalog declares. The version and ref were already checked three ways; the name was not, so a rename that updated the manifest and not the catalog — or the reverse — would have passed.
Fixed
- The v1.1.0 changes had no version heading of their own and sat under
[2.0.0], which claimed the tag-pinning work shipped in 2.0.0 when it shipped a release earlier. Split apart.
2.0.0 - 2026-08-28
Changed
projectis renamed toproject-flow. BREAKING for anyone with the old name inenabledPlugins: install is now/plugin install project-flow@voyvodka. A top-levelrenamesentry maps the old name to the new one, so Claude Code v2.1.193+ rewrites user, project and local settings automatically and reports the change. The source is remote, so expect oneplugin-cache-missand a single/plugin install. Older Claude Code reportsplugin-not-foundfor the old name.renamesis append-only history — the entry stays even after everyone has migrated, because it is what makes the old name resolvable at all.The entry now points at
plugins/project-flowatref: v3.0.0.
1.1.0 - 2026-08-28
Changed
- Both plugins are now pinned to a release tag (at the time,
ref: v2.8.0andref: v0.3.0) instead of resolving against whatevermainhappened to be at install time. Installing during a push, or during a half-finished change, previously produced whatever HEAD was at that moment. This adds a release step: after tagging a plugin, bump itsversionandrefhere and merge, or the new release does not reach anyone.
Added
- CI now clones each
git-subdirsource at its pinned ref, checks thepathexists, runsclaude plugin validate --strictinside it, and asserts three-way version agreement between the tag, the catalog entry and the plugin's ownplugin.json. Validating this repo's manifest said nothing about whether the plugins it points at still existed — a renamed or deletedpathwould have kept CI green until a user hit the broken install.
1.0.0 - 2026-08-28
Added
LICENSE— the README claimed MIT with no licence file to back it, so the catalog read as unlicensed to GitHub and to any licence scanner..github/workflows/validate.yml— runsclaude plugin validate . --stricton every push and pull request. Until now a malformedmarketplace.jsonwould have shipped silently..github/dependabot.yml— monthlygithub-actionsupdates, which is what keeps the pinned action SHAs in the workflow from going stale.
Fixed
$schemainmarketplace.jsonpointed atanthropic.com/claude-code/marketplace.schema.json, which redirects to a marketing page rather than a schema. Now points at the real SchemaStore entry, so editors can actually validate the file.- The plugin table in the README was a hand-written paraphrase of
marketplace.jsonand had already drifted from it. It now quotes the manifest verbatim.
Releases
- v2.1.3Open on GitHub
Changed
- Pinned to
project-flowv3.1.0.
- Pinned to
- v2.1.2Open on GitHub
Added
- CI checks the changelog's link footer: every released version needs a
[x.y.z]: <url>ref, and[Unreleased]must compare from the newest release. 2.1.1 shipped with no ref of its own and with[Unreleased]still comparing from 2.1.0; both listed plugins had the same drift, and nothing caught it in any of the three repositories.
Changed
- Pinned to
project-flowv3.0.3 andweb-launcherv0.3.3.
Fixed
- The link footer is repaired:
[2.1.1]added,[Unreleased]compares from the newest release. - 2.1.1 described
strictas making an entry "require the plugin manifest to be present at the pinned ref". That is not what it does.strict: trueis the default and makesplugin.jsonthe authority, with any component fields in the catalog entry merged into it;strict: falsemakes the entry the whole definition and fails the load if the manifest also declares components. Neither entry declares components, so the flag states the default rather than adding a guarantee.
- CI checks the changelog's link footer: every released version needs a
- v2.1.1Open on GitHub
Added
- Each entry now carries
license,homepage,repositoryandkeywords, and is markedstrict. The catalog is the surface/pluginbrowses and searches, and it was carrying only a name, a description and a source — so a search for "seo" or "planning" matched neither plugin even though both manifests have listed those keywords all along.strictmakes an entry require the plugin manifest to be present at the pinned ref rather than installing whatever is at that path. - CI compares the description, licence and keywords in each catalog entry against the
plugin.jsonit resolves to. Those fields are now stated in two repositories, which is exactly how one goes stale — the copy is checked rather than trusted, the same way the name and version already were. - CI checks the changelog's structure: no section heading twice inside one version block, only
Keep a Changelog section names, an
[Unreleased]section, and one dated heading per version.
Changed
- Pinned to
project-flowv3.0.2 andweb-launcherv0.3.2.
Full changelog: https://github.com/voyvodka/claude-plugins/blob/main/CHANGELOG.md
- Each entry now carries
- v2.1.0Open on GitHub
Pinned to
project-flowv3.0.1 andweb-launcherv0.3.1.Both are patch releases fixing diagnostic checks that could report success on a failing site, and instructions that contradicted themselves. Pinned sources mean a plugin release reaches nobody until the catalog follows — that is the cost pinning accepted, and the CI three-way version check is what turns forgetting it into a build failure.
- v2.0.1Open on GitHub
Added
- The cross-repo validator now compares the plugin
name, not just the version.nameis the install key: if it drifts betweenmarketplace.jsonandplugin.json,claude plugin validatepasses on both (each file is internally consistent), the version and ref checks pass, and the only thing that breaks is the install. That is the exact failure theproject→project-flowrename could have caused.
Fixed
- The v1.1.0 changes had no version heading and sat under
[2.0.0], so the changelog claimed the tag-pinning work shipped in 2.0.0 when it shipped a release earlier, and v1.1.0 documented nothing. Split apart, compare links corrected.
- The cross-repo validator now compares the plugin
- v2.0.0Open on GitHub
⚠️ Breaking:
projectis nowproject-flow/plugin install project-flow@voyvodkaA top-level
renamesentry maps the old name to the new one, so Claude Code v2.1.193+ rewritesenabledPluginsandpluginConfigsin your user, project and local settings automatically and tells you it did.What it does not cover:
- The source is remote (
git-subdir), so you get oneplugin-cache-missand need a single/plugin installto fetch it under the new name. - Managed and policy settings are read-only to Claude Code, so the notice recurs there until an administrator updates them.
- Older Claude Code ignores
renamesand reportsplugin-not-foundfor the old name.
The entry now points at
plugins/project-flowatref: v3.0.0.renamesis append-only history — the entry stays after everyone has migrated, because it is what makes the old name resolvable at all. - The source is remote (
- v1.1.0Open on GitHub
Changed
- Both plugins are pinned to a release tag (
ref: v2.8.0,ref: v0.3.0) instead of resolving against whatevermainheld at install time. An update now gives you a version that was tagged and released. This adds a release step: a newly tagged plugin does not reach anyone until itsversionandrefare bumped here — and the new version check turns forgetting that into a CI failure rather than a silent no-op.
Added
- CI clones each
git-subdirsource at its pinned ref, checks thepathexists, runsclaude plugin validate --strictinside it, and asserts the tag, the catalog entry and the plugin's ownplugin.jsonall name the same version. Validating this repo's manifest said nothing about whether the plugins it pointed at still existed — a renamed or deletedpathwould have kept CI green until someone hit the broken install.
- Both plugins are pinned to a release tag (
- v1.0.0Open on GitHub
First tagged release of the catalog. Nothing about how you install changes — this exists so there is something to diff against next time.
Added
LICENSE. The README claimed MIT with no file behind it, so GitHub and licence scanners saw an unlicensed repository..github/workflows/validate.yml—claude plugin validate . --stricton every push and pull request. A malformedmarketplace.jsonpreviously would have shipped silently..github/dependabot.yml— monthlygithub-actionsupdates for the pinned action SHAs.
Fixed
$schemapointed at a URL that redirects to a marketing page rather than a schema. Now the real SchemaStore entry, so editors can validate the file.- The plugin table in the README was a hand-maintained paraphrase of
marketplace.jsonand had drifted from it. It now quotes the manifest verbatim.