From 9ea6a62e2b72df30ac1dc7c6640a673aac72c589 Mon Sep 17 00:00:00 2001 From: Randy Olson Date: Thu, 26 Mar 2026 12:39:57 -0700 Subject: [PATCH] feat: add Claude Code plugin marketplace support MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Add .claude-plugin/ directory with marketplace.json and plugin.json so gstack can be installed via the Claude Code plugin system: /plugin marketplace add garrytan/gstack /plugin install gstack@garrytan-gstack Skills are discovered from a new skills/ directory that contains symlinks to the existing root-level skill directories. This preserves the current repo structure — no existing files are moved or renamed. Symlinks are followed during plugin installation, so the actual skill content is copied to the plugin cache. All 28 skills are included. The README documents the marketplace install as an alternative to the git clone install, noting that browser-based skills and hook-based safety skills work best with the full git clone + setup install. Co-Authored-By: Claude Opus 4.6 (1M context) --- .claude-plugin/marketplace.json | 31 +++++++++++++++++++++++++++++++ .claude-plugin/plugin.json | 25 +++++++++++++++++++++++++ README.md | 22 ++++++++++++++++++++++ skills/autoplan | 1 + skills/benchmark | 1 + skills/browse | 1 + skills/canary | 1 + skills/careful | 1 + skills/codex | 1 + skills/connect-chrome | 1 + skills/cso | 1 + skills/design-consultation | 1 + skills/design-review | 1 + skills/document-release | 1 + skills/freeze | 1 + skills/gstack-upgrade | 1 + skills/guard | 1 + skills/investigate | 1 + skills/land-and-deploy | 1 + skills/office-hours | 1 + skills/plan-ceo-review | 1 + skills/plan-design-review | 1 + skills/plan-eng-review | 1 + skills/qa | 1 + skills/qa-only | 1 + skills/retro | 1 + skills/review | 1 + skills/setup-browser-cookies | 1 + skills/setup-deploy | 1 + skills/ship | 1 + skills/unfreeze | 1 + 31 files changed, 106 insertions(+) create mode 100644 .claude-plugin/marketplace.json create mode 100644 .claude-plugin/plugin.json create mode 120000 skills/autoplan create mode 120000 skills/benchmark create mode 120000 skills/browse create mode 120000 skills/canary create mode 120000 skills/careful create mode 120000 skills/codex create mode 120000 skills/connect-chrome create mode 120000 skills/cso create mode 120000 skills/design-consultation create mode 120000 skills/design-review create mode 120000 skills/document-release create mode 120000 skills/freeze create mode 120000 skills/gstack-upgrade create mode 120000 skills/guard create mode 120000 skills/investigate create mode 120000 skills/land-and-deploy create mode 120000 skills/office-hours create mode 120000 skills/plan-ceo-review create mode 120000 skills/plan-design-review create mode 120000 skills/plan-eng-review create mode 120000 skills/qa create mode 120000 skills/qa-only create mode 120000 skills/retro create mode 120000 skills/review create mode 120000 skills/setup-browser-cookies create mode 120000 skills/setup-deploy create mode 120000 skills/ship create mode 120000 skills/unfreeze diff --git a/.claude-plugin/marketplace.json b/.claude-plugin/marketplace.json new file mode 100644 index 000000000..1084a27e6 --- /dev/null +++ b/.claude-plugin/marketplace.json @@ -0,0 +1,31 @@ +{ + "name": "garrytan-gstack", + "metadata": { + "description": "Garry's Stack — a virtual engineering team for Claude Code" + }, + "owner": { + "name": "Garry Tan" + }, + "plugins": [ + { + "name": "gstack", + "source": "./", + "description": "28 development workflow skills that turn Claude Code into a virtual engineering team — office hours, code review, QA with a real browser, design audits, security analysis, release automation, and more.", + "category": "development", + "tags": [ + "gstack", + "code-review", + "qa", + "testing", + "browser", + "design", + "security", + "workflow", + "engineering", + "shipping", + "debugging", + "devtools" + ] + } + ] +} diff --git a/.claude-plugin/plugin.json b/.claude-plugin/plugin.json new file mode 100644 index 000000000..1d8824161 --- /dev/null +++ b/.claude-plugin/plugin.json @@ -0,0 +1,25 @@ +{ + "name": "gstack", + "description": "Garry's Stack — 28 Claude Code skills that turn your AI agent into a virtual engineering team. Code review, QA with a real browser, design audits, security analysis, and release automation, all as slash commands.", + "version": "0.12.2.0", + "author": { + "name": "Garry Tan" + }, + "homepage": "https://github.com/garrytan/gstack", + "repository": "https://github.com/garrytan/gstack", + "license": "MIT", + "keywords": [ + "gstack", + "skills", + "code-review", + "qa", + "testing", + "browser", + "design", + "security", + "workflow", + "engineering", + "productivity", + "devtools" + ] +} diff --git a/README.md b/README.md index aad62290f..4c24d0d43 100644 --- a/README.md +++ b/README.md @@ -87,6 +87,28 @@ cd ~/gstack && ./setup --host auto For Codex-compatible hosts, setup now supports both repo-local installs from `.agents/skills/gstack` and user-global installs from `~/.codex/skills/gstack`. All 28 skills work across all supported agents. Hook-based safety skills (careful, freeze, guard) use inline safety advisory prose on non-Claude hosts. +### Claude Code Plugin Marketplace + +gstack is also available as a [Claude Code plugin](https://code.claude.com/docs/en/plugins). No git clone, no setup script — just install and go. + +```bash +# Step 1: Register the marketplace +/plugin marketplace add garrytan/gstack + +# Step 2: Install the plugin +/plugin install gstack@garrytan-gstack +``` + +Skills are namespaced under the plugin: `/gstack:review`, `/gstack:qa`, `/gstack:office-hours`, etc. + +To upgrade: + +```bash +/plugin update gstack@garrytan-gstack +``` + +**Plugin install vs. git clone install:** The plugin install gives you all 28 skills instantly. The git clone install (Step 1 above) additionally builds the `/browse` headless browser binary and registers hook-based safety skills (`/careful`, `/freeze`, `/guard`). If you need real browser QA testing or safety guardrails, use the git clone install. + ## See it work ``` diff --git a/skills/autoplan b/skills/autoplan new file mode 120000 index 000000000..2c29a859d --- /dev/null +++ b/skills/autoplan @@ -0,0 +1 @@ +../autoplan \ No newline at end of file diff --git a/skills/benchmark b/skills/benchmark new file mode 120000 index 000000000..2fd59423c --- /dev/null +++ b/skills/benchmark @@ -0,0 +1 @@ +../benchmark \ No newline at end of file diff --git a/skills/browse b/skills/browse new file mode 120000 index 000000000..5b98d71de --- /dev/null +++ b/skills/browse @@ -0,0 +1 @@ +../browse \ No newline at end of file diff --git a/skills/canary b/skills/canary new file mode 120000 index 000000000..86b9afce3 --- /dev/null +++ b/skills/canary @@ -0,0 +1 @@ +../canary \ No newline at end of file diff --git a/skills/careful b/skills/careful new file mode 120000 index 000000000..fda3b672d --- /dev/null +++ b/skills/careful @@ -0,0 +1 @@ +../careful \ No newline at end of file diff --git a/skills/codex b/skills/codex new file mode 120000 index 000000000..e5780d1f5 --- /dev/null +++ b/skills/codex @@ -0,0 +1 @@ +../codex \ No newline at end of file diff --git a/skills/connect-chrome b/skills/connect-chrome new file mode 120000 index 000000000..c7596101d --- /dev/null +++ b/skills/connect-chrome @@ -0,0 +1 @@ +../connect-chrome \ No newline at end of file diff --git a/skills/cso b/skills/cso new file mode 120000 index 000000000..863403534 --- /dev/null +++ b/skills/cso @@ -0,0 +1 @@ +../cso \ No newline at end of file diff --git a/skills/design-consultation b/skills/design-consultation new file mode 120000 index 000000000..2805b5183 --- /dev/null +++ b/skills/design-consultation @@ -0,0 +1 @@ +../design-consultation \ No newline at end of file diff --git a/skills/design-review b/skills/design-review new file mode 120000 index 000000000..af5ad36c7 --- /dev/null +++ b/skills/design-review @@ -0,0 +1 @@ +../design-review \ No newline at end of file diff --git a/skills/document-release b/skills/document-release new file mode 120000 index 000000000..d05bd28bc --- /dev/null +++ b/skills/document-release @@ -0,0 +1 @@ +../document-release \ No newline at end of file diff --git a/skills/freeze b/skills/freeze new file mode 120000 index 000000000..762060119 --- /dev/null +++ b/skills/freeze @@ -0,0 +1 @@ +../freeze \ No newline at end of file diff --git a/skills/gstack-upgrade b/skills/gstack-upgrade new file mode 120000 index 000000000..1ba037aa8 --- /dev/null +++ b/skills/gstack-upgrade @@ -0,0 +1 @@ +../gstack-upgrade \ No newline at end of file diff --git a/skills/guard b/skills/guard new file mode 120000 index 000000000..662b51cd2 --- /dev/null +++ b/skills/guard @@ -0,0 +1 @@ +../guard \ No newline at end of file diff --git a/skills/investigate b/skills/investigate new file mode 120000 index 000000000..b3ce0f712 --- /dev/null +++ b/skills/investigate @@ -0,0 +1 @@ +../investigate \ No newline at end of file diff --git a/skills/land-and-deploy b/skills/land-and-deploy new file mode 120000 index 000000000..137a9857c --- /dev/null +++ b/skills/land-and-deploy @@ -0,0 +1 @@ +../land-and-deploy \ No newline at end of file diff --git a/skills/office-hours b/skills/office-hours new file mode 120000 index 000000000..822fcb9b7 --- /dev/null +++ b/skills/office-hours @@ -0,0 +1 @@ +../office-hours \ No newline at end of file diff --git a/skills/plan-ceo-review b/skills/plan-ceo-review new file mode 120000 index 000000000..cee2de41d --- /dev/null +++ b/skills/plan-ceo-review @@ -0,0 +1 @@ +../plan-ceo-review \ No newline at end of file diff --git a/skills/plan-design-review b/skills/plan-design-review new file mode 120000 index 000000000..7f462e0e6 --- /dev/null +++ b/skills/plan-design-review @@ -0,0 +1 @@ +../plan-design-review \ No newline at end of file diff --git a/skills/plan-eng-review b/skills/plan-eng-review new file mode 120000 index 000000000..68023474c --- /dev/null +++ b/skills/plan-eng-review @@ -0,0 +1 @@ +../plan-eng-review \ No newline at end of file diff --git a/skills/qa b/skills/qa new file mode 120000 index 000000000..7175d939a --- /dev/null +++ b/skills/qa @@ -0,0 +1 @@ +../qa \ No newline at end of file diff --git a/skills/qa-only b/skills/qa-only new file mode 120000 index 000000000..7066fd136 --- /dev/null +++ b/skills/qa-only @@ -0,0 +1 @@ +../qa-only \ No newline at end of file diff --git a/skills/retro b/skills/retro new file mode 120000 index 000000000..1fe0bcf7b --- /dev/null +++ b/skills/retro @@ -0,0 +1 @@ +../retro \ No newline at end of file diff --git a/skills/review b/skills/review new file mode 120000 index 000000000..7baec8bad --- /dev/null +++ b/skills/review @@ -0,0 +1 @@ +../review \ No newline at end of file diff --git a/skills/setup-browser-cookies b/skills/setup-browser-cookies new file mode 120000 index 000000000..327e394f2 --- /dev/null +++ b/skills/setup-browser-cookies @@ -0,0 +1 @@ +../setup-browser-cookies \ No newline at end of file diff --git a/skills/setup-deploy b/skills/setup-deploy new file mode 120000 index 000000000..0cef8565d --- /dev/null +++ b/skills/setup-deploy @@ -0,0 +1 @@ +../setup-deploy \ No newline at end of file diff --git a/skills/ship b/skills/ship new file mode 120000 index 000000000..680628206 --- /dev/null +++ b/skills/ship @@ -0,0 +1 @@ +../ship \ No newline at end of file diff --git a/skills/unfreeze b/skills/unfreeze new file mode 120000 index 000000000..53995c265 --- /dev/null +++ b/skills/unfreeze @@ -0,0 +1 @@ +../unfreeze \ No newline at end of file