Initial commit
This commit is contained in:
15
.claude-plugin/plugin.json
Normal file
15
.claude-plugin/plugin.json
Normal file
@@ -0,0 +1,15 @@
|
||||
{
|
||||
"name": "helm-chart-generator",
|
||||
"description": "Generate Helm charts for Kubernetes applications",
|
||||
"version": "1.0.0",
|
||||
"author": {
|
||||
"name": "Claude Code Plugins",
|
||||
"email": "[email protected]"
|
||||
},
|
||||
"skills": [
|
||||
"./skills"
|
||||
],
|
||||
"commands": [
|
||||
"./commands"
|
||||
]
|
||||
}
|
||||
3
README.md
Normal file
3
README.md
Normal file
@@ -0,0 +1,3 @@
|
||||
# helm-chart-generator
|
||||
|
||||
Generate Helm charts for Kubernetes applications
|
||||
25
commands/helm-chart.md
Normal file
25
commands/helm-chart.md
Normal file
@@ -0,0 +1,25 @@
|
||||
---
|
||||
description: $(echo "$description" | cut -d' ' -f1-5)
|
||||
---
|
||||
|
||||
# $(echo "$name" | sed 's/-/ /g' | sed 's/\b\(.\)/\u\1/g')
|
||||
|
||||
$(echo "$description")
|
||||
|
||||
## Key Features
|
||||
|
||||
- Production-ready configurations
|
||||
- Best practices implementation
|
||||
- Security-first approach
|
||||
- Scalable architecture
|
||||
- Comprehensive documentation
|
||||
- Multi-platform support
|
||||
|
||||
## Example Usage
|
||||
|
||||
This plugin generates complete configurations for your DevOps needs.
|
||||
Specify your requirements and get production-ready code instantly.
|
||||
|
||||
## When Invoked
|
||||
|
||||
Generate configurations and setup code based on your specific requirements and infrastructure needs.
|
||||
65
plugin.lock.json
Normal file
65
plugin.lock.json
Normal file
@@ -0,0 +1,65 @@
|
||||
{
|
||||
"$schema": "internal://schemas/plugin.lock.v1.json",
|
||||
"pluginId": "gh:jeremylongshore/claude-code-plugins-plus:plugins/devops/helm-chart-generator",
|
||||
"normalized": {
|
||||
"repo": null,
|
||||
"ref": "refs/tags/v20251128.0",
|
||||
"commit": "3c3cd3c1eb04e77d627ba6875954531c471d3c60",
|
||||
"treeHash": "9a4b56c9464969d97c9da20626949d2158f19197ccb1f6147fba9a7e898ee8c8",
|
||||
"generatedAt": "2025-11-28T10:18:29.874056Z",
|
||||
"toolVersion": "publish_plugins.py@0.2.0"
|
||||
},
|
||||
"origin": {
|
||||
"remote": "git@github.com:zhongweili/42plugin-data.git",
|
||||
"branch": "master",
|
||||
"commit": "aa1497ed0949fd50e99e70d6324a29c5b34f9390",
|
||||
"repoRoot": "/Users/zhongweili/projects/openmind/42plugin-data"
|
||||
},
|
||||
"manifest": {
|
||||
"name": "helm-chart-generator",
|
||||
"description": "Generate Helm charts for Kubernetes applications",
|
||||
"version": "1.0.0"
|
||||
},
|
||||
"content": {
|
||||
"files": [
|
||||
{
|
||||
"path": "README.md",
|
||||
"sha256": "128963269371448cf81578eae9626805a9c9b28a8fe0817c8fca9b725f16482f"
|
||||
},
|
||||
{
|
||||
"path": ".claude-plugin/plugin.json",
|
||||
"sha256": "27e7acadaf04ebd1ac92a347fd961d90751d4d471169537f144122e36b204f2b"
|
||||
},
|
||||
{
|
||||
"path": "commands/helm-chart.md",
|
||||
"sha256": "353f80054a90cda1e6716da3628115ce829307fbbb83a15b64f1d37c96224a99"
|
||||
},
|
||||
{
|
||||
"path": "skills/helm-chart-generator/SKILL.md",
|
||||
"sha256": "9d7ed1d9c42e1749904e31e978a9a20071b4a64be611ea5f7ae90ff8fe03561f"
|
||||
},
|
||||
{
|
||||
"path": "skills/helm-chart-generator/references/README.md",
|
||||
"sha256": "83e565b15dc56a635d2e39dcae499b211012c946e3ab2afc71994916caa5b2d8"
|
||||
},
|
||||
{
|
||||
"path": "skills/helm-chart-generator/scripts/README.md",
|
||||
"sha256": "98a171ad3ebc1f93c075daef3a303c76a7386647edb1d6be1a542d098aee80e6"
|
||||
},
|
||||
{
|
||||
"path": "skills/helm-chart-generator/assets/README.md",
|
||||
"sha256": "86f41557f8e7dbcc02c716376f47bbfc4c93940f36818613036ed073f220a4b1"
|
||||
},
|
||||
{
|
||||
"path": "skills/helm-chart-generator/assets/values_schema.json",
|
||||
"sha256": "c388ed7e20ef06a29475fc7d0da8982810c0216ebc69d478f68f0946098f98cb"
|
||||
}
|
||||
],
|
||||
"dirSha256": "9a4b56c9464969d97c9da20626949d2158f19197ccb1f6147fba9a7e898ee8c8"
|
||||
},
|
||||
"security": {
|
||||
"scannedAt": null,
|
||||
"scannerVersion": null,
|
||||
"flags": []
|
||||
}
|
||||
}
|
||||
52
skills/helm-chart-generator/SKILL.md
Normal file
52
skills/helm-chart-generator/SKILL.md
Normal file
@@ -0,0 +1,52 @@
|
||||
---
|
||||
name: generating-helm-charts
|
||||
description: |
|
||||
This skill enables Claude to generate Helm charts for Kubernetes applications. It should be used when the user requests the creation of a new Helm chart, the modification of an existing chart, or assistance with packaging and deploying Kubernetes applications using Helm. The skill is triggered by requests that mention "Helm chart", "Kubernetes deployment", "package application for Kubernetes", or similar phrases related to Helm and Kubernetes. It helps streamline the process of creating and managing Kubernetes deployments.
|
||||
allowed-tools: Read, Write, Edit, Grep, Glob, Bash
|
||||
version: 1.0.0
|
||||
---
|
||||
|
||||
## Overview
|
||||
|
||||
This skill empowers Claude to create and manage Helm charts, simplifying Kubernetes application deployments. It provides production-ready configurations, implements best practices, and supports multi-platform environments.
|
||||
|
||||
## How It Works
|
||||
|
||||
1. **Receiving Requirements**: Claude receives the user's requirements for the Helm chart, including application details, dependencies, and desired configurations.
|
||||
2. **Generating Chart**: Claude utilizes the helm-chart-generator plugin to generate a complete Helm chart based on the provided requirements.
|
||||
3. **Providing Chart**: Claude presents the generated Helm chart to the user, ready for deployment.
|
||||
|
||||
## When to Use This Skill
|
||||
|
||||
This skill activates when you need to:
|
||||
- Create a new Helm chart for a Kubernetes application.
|
||||
- Modify an existing Helm chart to update application configurations.
|
||||
- Package and deploy an application to Kubernetes using Helm.
|
||||
|
||||
## Examples
|
||||
|
||||
### Example 1: Creating a Basic Web App Chart
|
||||
|
||||
User request: "Create a Helm chart for a simple web application with a single deployment and service."
|
||||
|
||||
The skill will:
|
||||
1. Generate a basic Helm chart including a `Chart.yaml`, `values.yaml`, a deployment, and a service.
|
||||
2. Provide the generated chart files for review and customization.
|
||||
|
||||
### Example 2: Adding Ingress to an Existing Chart
|
||||
|
||||
User request: "Modify the existing Helm chart for my web application to include an ingress resource."
|
||||
|
||||
The skill will:
|
||||
1. Update the existing Helm chart to include an ingress resource, configured based on best practices.
|
||||
2. Provide the updated chart files with the new ingress configuration.
|
||||
|
||||
## Best Practices
|
||||
|
||||
- **Configuration Management**: Utilize `values.yaml` to manage configurable parameters within the Helm chart.
|
||||
- **Resource Limits**: Define resource requests and limits for deployments to ensure efficient resource utilization.
|
||||
- **Security Contexts**: Implement security contexts to enhance the security posture of the deployed application.
|
||||
|
||||
## Integration
|
||||
|
||||
This skill integrates with other Claude Code skills by providing a standardized way to package and deploy applications to Kubernetes. It can be combined with skills that generate application code, manage infrastructure, or automate deployment pipelines.
|
||||
7
skills/helm-chart-generator/assets/README.md
Normal file
7
skills/helm-chart-generator/assets/README.md
Normal file
@@ -0,0 +1,7 @@
|
||||
# Assets
|
||||
|
||||
Bundled resources for helm-chart-generator skill
|
||||
|
||||
- [ ] chart_template/: A directory containing template files for different types of Kubernetes applications (e.g., web app, database).
|
||||
- [ ] example_charts/: A directory containing example Helm charts for common use cases.
|
||||
- [ ] values_schema.json: A JSON schema defining the structure and validation rules for the values.yaml file.
|
||||
260
skills/helm-chart-generator/assets/values_schema.json
Normal file
260
skills/helm-chart-generator/assets/values_schema.json
Normal file
@@ -0,0 +1,260 @@
|
||||
{
|
||||
"$schema": "http://json-schema.org/draft-07/schema#",
|
||||
"title": "Helm Chart Values",
|
||||
"description": "Schema for the values.yaml file used to configure the Helm chart.",
|
||||
"type": "object",
|
||||
"properties": {
|
||||
"replicaCount": {
|
||||
"type": "integer",
|
||||
"description": "Number of replicas to deploy.",
|
||||
"default": 1,
|
||||
"_comment": "Adjust the number of replicas based on your application's needs."
|
||||
},
|
||||
"image": {
|
||||
"type": "object",
|
||||
"description": "Container image settings.",
|
||||
"properties": {
|
||||
"repository": {
|
||||
"type": "string",
|
||||
"description": "Image repository.",
|
||||
"default": "nginx",
|
||||
"_comment": "Specify the Docker image repository."
|
||||
},
|
||||
"pullPolicy": {
|
||||
"type": "string",
|
||||
"description": "Image pull policy.",
|
||||
"enum": ["IfNotPresent", "Always", "Never"],
|
||||
"default": "IfNotPresent",
|
||||
"_comment": "Define when to pull the image (IfNotPresent, Always, Never)."
|
||||
},
|
||||
"tag": {
|
||||
"type": "string",
|
||||
"description": "Image tag.",
|
||||
"default": "latest",
|
||||
"_comment": "Specify the Docker image tag. Consider using a specific version tag in production."
|
||||
}
|
||||
},
|
||||
"required": ["repository", "pullPolicy", "tag"]
|
||||
},
|
||||
"service": {
|
||||
"type": "object",
|
||||
"description": "Service configuration.",
|
||||
"properties": {
|
||||
"type": {
|
||||
"type": "string",
|
||||
"description": "Service type.",
|
||||
"enum": ["ClusterIP", "NodePort", "LoadBalancer"],
|
||||
"default": "ClusterIP",
|
||||
"_comment": "Choose the service type (ClusterIP, NodePort, LoadBalancer)."
|
||||
},
|
||||
"port": {
|
||||
"type": "integer",
|
||||
"description": "Service port.",
|
||||
"default": 80,
|
||||
"_comment": "The port the service listens on."
|
||||
}
|
||||
},
|
||||
"required": ["type", "port"]
|
||||
},
|
||||
"ingress": {
|
||||
"type": "object",
|
||||
"description": "Ingress configuration (optional).",
|
||||
"properties": {
|
||||
"enabled": {
|
||||
"type": "boolean",
|
||||
"description": "Enable Ingress.",
|
||||
"default": false,
|
||||
"_comment": "Set to true to enable Ingress for the application."
|
||||
},
|
||||
"className": {
|
||||
"type": "string",
|
||||
"description": "Ingress class name.",
|
||||
"default": "nginx",
|
||||
"_comment": "Specify the Ingress class name."
|
||||
},
|
||||
"hostname": {
|
||||
"type": "string",
|
||||
"description": "Hostname for Ingress.",
|
||||
"default": "chart-example.local",
|
||||
"_comment": "The hostname to access the application through Ingress."
|
||||
},
|
||||
"annotations": {
|
||||
"type": "object",
|
||||
"description": "Annotations for the Ingress resource.",
|
||||
"default": {},
|
||||
"additionalProperties": {
|
||||
"type": "string"
|
||||
},
|
||||
"_comment": "Add any necessary annotations for your Ingress controller."
|
||||
},
|
||||
"tls": {
|
||||
"type": "array",
|
||||
"description": "TLS configuration for Ingress.",
|
||||
"items": {
|
||||
"type": "object",
|
||||
"properties": {
|
||||
"secretName": {
|
||||
"type": "string",
|
||||
"description": "Name of the TLS secret."
|
||||
},
|
||||
"hosts": {
|
||||
"type": "array",
|
||||
"items": {
|
||||
"type": "string"
|
||||
}
|
||||
}
|
||||
},
|
||||
"required": ["secretName", "hosts"]
|
||||
}
|
||||
}
|
||||
},
|
||||
"required": ["enabled"]
|
||||
},
|
||||
"resources": {
|
||||
"type": "object",
|
||||
"description": "Resource requests and limits.",
|
||||
"properties": {
|
||||
"requests": {
|
||||
"type": "object",
|
||||
"properties": {
|
||||
"cpu": {
|
||||
"type": "string",
|
||||
"description": "CPU request.",
|
||||
"default": "100m",
|
||||
"_comment": "Minimum CPU required by the container."
|
||||
},
|
||||
"memory": {
|
||||
"type": "string",
|
||||
"description": "Memory request.",
|
||||
"default": "128Mi",
|
||||
"_comment": "Minimum memory required by the container."
|
||||
}
|
||||
},
|
||||
"required": ["cpu", "memory"]
|
||||
},
|
||||
"limits": {
|
||||
"type": "object",
|
||||
"properties": {
|
||||
"cpu": {
|
||||
"type": "string",
|
||||
"description": "CPU limit.",
|
||||
"default": "250m",
|
||||
"_comment": "Maximum CPU the container can use."
|
||||
},
|
||||
"memory": {
|
||||
"type": "string",
|
||||
"description": "Memory limit.",
|
||||
"default": "256Mi",
|
||||
"_comment": "Maximum memory the container can use."
|
||||
}
|
||||
},
|
||||
"required": ["cpu", "memory"]
|
||||
}
|
||||
},
|
||||
"required": ["requests", "limits"]
|
||||
},
|
||||
"nodeSelector": {
|
||||
"type": "object",
|
||||
"description": "Node selector constraints for pod assignment.",
|
||||
"default": {},
|
||||
"additionalProperties": {
|
||||
"type": "string"
|
||||
},
|
||||
"_comment": "Specify node labels to constrain pod placement."
|
||||
},
|
||||
"tolerations": {
|
||||
"type": "array",
|
||||
"description": "Tolerations for pod scheduling.",
|
||||
"items": {
|
||||
"type": "object",
|
||||
"properties": {
|
||||
"key": {
|
||||
"type": "string",
|
||||
"description": "Taint key."
|
||||
},
|
||||
"operator": {
|
||||
"type": "string",
|
||||
"description": "Taint operator.",
|
||||
"enum": ["Exists", "Equal"]
|
||||
},
|
||||
"value": {
|
||||
"type": "string",
|
||||
"description": "Taint value."
|
||||
},
|
||||
"effect": {
|
||||
"type": "string",
|
||||
"description": "Taint effect.",
|
||||
"enum": ["NoSchedule", "PreferNoSchedule", "NoExecute"]
|
||||
}
|
||||
},
|
||||
"required": ["key", "operator", "effect"]
|
||||
},
|
||||
"_comment": "Define tolerations to allow pods to be scheduled on tainted nodes."
|
||||
},
|
||||
"affinity": {
|
||||
"type": "object",
|
||||
"description": "Affinity settings for pod scheduling.",
|
||||
"_comment": "Configure affinity rules to influence pod placement.",
|
||||
"properties": {
|
||||
"nodeAffinity": {
|
||||
"type": "object",
|
||||
"description": "Node affinity configuration.",
|
||||
"properties": {
|
||||
"requiredDuringSchedulingIgnoredDuringExecution": {
|
||||
"type": "object",
|
||||
"description": "Required node affinity rules.",
|
||||
"properties": {
|
||||
"nodeSelectorTerms": {
|
||||
"type": "array",
|
||||
"description": "Node selector terms.",
|
||||
"items": {
|
||||
"type": "object",
|
||||
"properties": {
|
||||
"matchExpressions": {
|
||||
"type": "array",
|
||||
"description": "Match expressions.",
|
||||
"items": {
|
||||
"type": "object",
|
||||
"properties": {
|
||||
"key": {
|
||||
"type": "string",
|
||||
"description": "Label key."
|
||||
},
|
||||
"operator": {
|
||||
"type": "string",
|
||||
"description": "Operator.",
|
||||
"enum": ["In", "NotIn", "Exists", "DoesNotExist", "Gt", "Lt"]
|
||||
},
|
||||
"values": {
|
||||
"type": "array",
|
||||
"description": "Label values.",
|
||||
"items": {
|
||||
"type": "string"
|
||||
}
|
||||
}
|
||||
},
|
||||
"required": ["key", "operator", "values"]
|
||||
}
|
||||
}
|
||||
},
|
||||
"required": ["matchExpressions"]
|
||||
}
|
||||
}
|
||||
},
|
||||
"required": ["nodeSelectorTerms"]
|
||||
}
|
||||
}
|
||||
},
|
||||
"podAffinity": {
|
||||
"type": "object",
|
||||
"description": "Pod affinity configuration."
|
||||
},
|
||||
"podAntiAffinity": {
|
||||
"type": "object",
|
||||
"description": "Pod anti-affinity configuration."
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
"required": ["replicaCount", "image", "service", "resources"]
|
||||
}
|
||||
7
skills/helm-chart-generator/references/README.md
Normal file
7
skills/helm-chart-generator/references/README.md
Normal file
@@ -0,0 +1,7 @@
|
||||
# References
|
||||
|
||||
Bundled resources for helm-chart-generator skill
|
||||
|
||||
- [ ] helm_best_practices.md: A document outlining best practices for creating secure and maintainable Helm charts.
|
||||
- [ ] kubernetes_api_reference.md: A reference guide to the Kubernetes API, focusing on resources commonly used in Helm charts (Deployments, Services, etc.).
|
||||
- [ ] helm_chart_structure.md: Explains the standard directory structure and file contents of a Helm chart.
|
||||
7
skills/helm-chart-generator/scripts/README.md
Normal file
7
skills/helm-chart-generator/scripts/README.md
Normal file
@@ -0,0 +1,7 @@
|
||||
# Scripts
|
||||
|
||||
Bundled resources for helm-chart-generator skill
|
||||
|
||||
- [ ] helm_create.py: Automates the creation of a basic Helm chart structure based on user input.
|
||||
- [ ] helm_validate.py: Validates the syntax and structure of a Helm chart.
|
||||
- [ ] helm_deploy.sh: Script to deploy the Helm chart to a Kubernetes cluster.
|
||||
Reference in New Issue
Block a user