Skip to content

feat(marketplace): initialize plugin marketplace with cozy-deploy skill#1

Merged
kitsunoff merged 1 commit intomainfrom
feat/initial-marketplace
Apr 16, 2026
Merged

feat(marketplace): initialize plugin marketplace with cozy-deploy skill#1
kitsunoff merged 1 commit intomainfrom
feat/initial-marketplace

Conversation

@kitsunoff
Copy link
Copy Markdown
Collaborator

@kitsunoff kitsunoff commented Apr 16, 2026

Summary

  • Initialize Claude Code plugin marketplace structure (agents, skills, mcp, hooks directories)
  • Add cozy-deploy skill for deploying Cozystack packages to dev clusters via make + cozyhr
  • Set up marketplace registry (.claude-plugin/marketplace.json)

Test plan

  • Verify marketplace is discoverable via /plugin marketplace add cozystack/ccp
  • Verify cozy-deploy skill installs via /plugin install cozy-deploy@cozystack-claude-plugins

Summary by CodeRabbit

  • New Features

    • Added Cozystack Claude Plugins marketplace for Claude Code integration.
    • Introduced cozy-deploy plugin enabling deployment of Cozystack packages to dev clusters with support for fresh installs and dev-loop iterations.
  • Documentation

    • Added marketplace setup and plugin usage guide.
    • Added step-by-step checklist for adding new plugins to the ecosystem.

Set up Claude Code plugin marketplace structure and add the cozy-deploy
skill for deploying Cozystack packages to dev clusters via make + cozyhr.

Co-Authored-By: Claude <noreply@anthropic.com>
Signed-off-by: ZverGuy <maximbel2003@gmail.com>
@coderabbitai
Copy link
Copy Markdown

coderabbitai Bot commented Apr 16, 2026

Caution

Review failed

Pull request was closed or merged during review

No actionable comments were generated in the recent review. 🎉

ℹ️ Recent review info
⚙️ Run configuration

Configuration used: defaults

Review profile: CHILL

Plan: Pro

Run ID: 29e15c7c-ad09-4893-8dce-2105f2c2c3f3

📥 Commits

Reviewing files that changed from the base of the PR and between 908b1da and 968c71d.

📒 Files selected for processing (8)
  • .claude-plugin/marketplace.json
  • CLAUDE.md
  • README.md
  • agents/.gitkeep
  • hooks/.gitkeep
  • mcp/.gitkeep
  • skills/cozy-deploy/.claude-plugin/plugin.json
  • skills/cozy-deploy/skills/cozy-deploy/SKILL.md

📝 Walkthrough

Walkthrough

Introduces Claude plugin marketplace infrastructure for Cozystack, including a marketplace manifest, documentation, and a cozy-deploy skill that defines a 12-phase Kubernetes deployment workflow handling validation, prerequisites, user confirmation, image building, deployment mode selection, rollout verification, and Flux suspension/resumption.

Changes

Cohort / File(s) Summary
Marketplace Configuration
.claude-plugin/marketplace.json, skills/cozy-deploy/.claude-plugin/plugin.json
Defines Claude marketplace listing and plugin metadata for the cozy-deploy plugin with version 1.0.0, description, and Cozystack ownership.
Documentation
CLAUDE.md, README.md
Explains Claude Code integration framework, plugin directory structure, and installation/usage instructions for the Cozystack Claude Plugins marketplace.
Skill Implementation
skills/cozy-deploy/skills/cozy-deploy/SKILL.md
Documents complete cozy-deploy skill workflow including argument parsing, cluster validation, cross-build prerequisites, image registry resolution, multi-phase deployment modes (fresh install, ExternalArtifact, inline chart), rollout monitoring, image verification, and Flux resume/suspension logic with multiple guardrails.

Estimated code review effort

🎯 2 (Simple) | ⏱️ ~12 minutes

Poem

🐰 Hops with joy through marketplace lanes,
New plugins bloom in plugin chains,
With deploy skills and docs so clear,
Claude's ecosystem is here!

🚥 Pre-merge checks | ✅ 3
✅ Passed checks (3 passed)
Check name Status Explanation
Description Check ✅ Passed Check skipped - CodeRabbit’s high-level summary is enabled.
Title check ✅ Passed The title 'feat(marketplace): initialize plugin marketplace with cozy-deploy skill' directly and clearly summarizes the main changes: initializing a marketplace structure and introducing the cozy-deploy skill plugin.
Docstring Coverage ✅ Passed No functions found in the changed files to evaluate docstring coverage. Skipping docstring coverage check.

✏️ Tip: You can configure your own custom pre-merge checks in the settings.

✨ Finishing Touches
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Commit unit tests in branch feat/initial-marketplace

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

Comment @coderabbitai help to get the list of available commands and usage tips.

@kitsunoff kitsunoff marked this pull request as ready for review April 16, 2026 13:20
Copy link
Copy Markdown

@gemini-code-assist gemini-code-assist Bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Code Review

This pull request initializes the Cozystack Claude Plugins repository, providing the infrastructure for Claude Code integration and the cozy-deploy skill for package management. The review feedback identifies a directory nesting error in the marketplace configuration and recommends replacing several hardcoded placeholders in the deployment instructions with dynamic variables and standard Kubernetes labels to ensure the commands are executable.

{
"name": "cozy-deploy",
"description": "Deploy a Cozystack package to a dev cluster via make + cozyhr — handles fresh install and dev-loop iteration with ExternalArtifact support",
"source": "./skills/cozy-deploy",
Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

medium

The source path points to ./skills/cozy-deploy, but the SKILL.md file is currently located at skills/cozy-deploy/skills/cozy-deploy/SKILL.md. This double-nesting will likely prevent the plugin from being loaded correctly. Please ensure the plugin content is located directly within the source directory or update the path.


```bash
REGISTRY=$REGISTRY TAG=$TAG PLATFORM=linux/amd64 BUILDER=multi PUSH=1 \
make --directory packages/<section>/<pkg> image
Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

medium

Use the $PKG_DIR variable resolved in Phase 2 instead of the <section>/<pkg> placeholder to ensure the command runs correctly regardless of the package location.

Suggested change
make --directory packages/<section>/<pkg> image
make --directory $PKG_DIR image

### Mode A — Fresh install

```bash
make --directory packages/<section>/<pkg> apply NAMESPACE=$NAMESPACE NAME=$RELEASE
Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

medium

Use the $PKG_DIR variable resolved in Phase 2 instead of the <section>/<pkg> placeholder.

Suggested change
make --directory packages/<section>/<pkg> apply NAMESPACE=$NAMESPACE NAME=$RELEASE
make --directory $PKG_DIR apply NAMESPACE=$NAMESPACE NAME=$RELEASE

### Mode C — Dev-loop with inline chart

```bash
make --directory packages/<section>/<pkg> apply NAMESPACE=$NAMESPACE NAME=$RELEASE
Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

medium

Use the $PKG_DIR variable instead of the placeholder.

Suggested change
make --directory packages/<section>/<pkg> apply NAMESPACE=$NAMESPACE NAME=$RELEASE
make --directory $PKG_DIR apply NAMESPACE=$NAMESPACE NAME=$RELEASE

Comment on lines +172 to +173
kubectl --context $CONTEXT --namespace $NAMESPACE get pods -l app=<app-label> \
-o jsonpath='{range .items[*]}{.metadata.name}{"\t"}{.spec.containers[0].image}{"\n"}{end}'
Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

medium

The <app-label> placeholder is undefined and will cause the command to fail. Since this is a Cozystack package (likely managed by Flux/Helm), using the standard app.kubernetes.io/instance label with the $RELEASE name is a more reliable approach. Also, showing all container images ensures sidecars are visible.

Suggested change
kubectl --context $CONTEXT --namespace $NAMESPACE get pods -l app=<app-label> \
-o jsonpath='{range .items[*]}{.metadata.name}{"\t"}{.spec.containers[0].image}{"\n"}{end}'
kubectl --context $CONTEXT --namespace $NAMESPACE get pods -l app.kubernetes.io/instance=$RELEASE \
-o jsonpath='{range .items[*]}{.metadata.name}{"\t"}{.spec.containers[*].image}{"\n"}{end}'

- If yes — run the resume command, then watch the pods for a minute to confirm Flux pulls back control:
```bash
cozyhr --context $CONTEXT resume --namespace $NAMESPACE $RELEASE
kubectl --context $CONTEXT --namespace $NAMESPACE get pods -l app=<app-label> --watch
Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

medium

Replace the <app-label> placeholder with a functional label selector.

Suggested change
kubectl --context $CONTEXT --namespace $NAMESPACE get pods -l app=<app-label> --watch
kubectl --context $CONTEXT --namespace $NAMESPACE get pods -l app.kubernetes.io/instance=$RELEASE --watch

Unless `--keep-values` was passed, revert the values.yaml changes so a subsequent `git commit -a` does not accidentally bake the ttl.sh digest into the PR:

```bash
git --git-dir=<repo>/.git --work-tree=<repo> checkout -- packages/<section>/<pkg>/values.yaml
Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

medium

The <repo> placeholder and explicit git directory flags are unnecessary as Phase 2 confirms the working directory is the repository root. Using $PKG_DIR avoids hardcoded path placeholders.

Suggested change
git --git-dir=<repo>/.git --work-tree=<repo> checkout -- packages/<section>/<pkg>/values.yaml
git checkout -- $PKG_DIR/values.yaml

@kitsunoff kitsunoff merged commit a734704 into main Apr 16, 2026
1 of 2 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants