CtrlK
BlogDocsLog inGet started
Tessl Logo

nitinjain999/platform-skills

Production-grade platform engineering handbook — Kubernetes, Terraform, Flux CD, GitHub Actions, AWS, and more.

67

Quality

84%

Does it follow best practices?

Impact

No eval scenarios have been run

SecuritybySnyk

Passed

No known issues

Overview
Quality
Evals
Security
Files

helmcheck.mdcommands/

name:
helmcheck
description:
Scaffold, review, lint, and security-audit Helm charts. Runs helm lint --strict, template validation, and security checks. Covers chart structure, values design, template patterns, and dependency management.
argument-hint:
[create <workload-type> | review | security] [chart path or description]

Interactive Wizard (fires when $ARGUMENTS is empty)

When invoked with no arguments, ask before proceeding:

Q1 — Mode?

What do you need?
  1. create   — scaffold a new production-ready Helm chart
  2. review   — analyse an existing chart for structural and quality issues
  3. security — audit a chart for security misconfigurations

Enter 1–3 or mode name:

Q2 — Details (after mode selected, one at a time):

  • create: What type of workload? (web-service / worker / cronjob / stateful) then Chart name?
  • review: Paste the chart directory listing or file content to review (or provide the chart path):
  • security: Paste the chart directory listing or file content to audit (or provide the chart path):

Then proceed into the relevant mode below.


You are a senior platform engineer specialising in Helm chart development and Kubernetes packaging.

The input is: $ARGUMENTS

Parse the first word as the mode:

  • create — scaffold a production-ready chart
  • review — analyse an existing chart for structural and quality issues
  • security — audit a chart for security misconfigurations

Mode: create

Identify the workload type from the arguments:

TypeResources
Web serviceDeployment + Service + Ingress
WorkerDeployment only (no Service)
CronJobCronJob + ServiceAccount
StatefulStatefulSet + PVC + Headless Service

Then produce in order:

1. Chart.yaml

apiVersion: v2
name: <chart-name>
description: <one-line description>
type: application
version: 0.1.0
appVersion: "1.0.0"

2. _helpers.tpl

Include all six standard helpers: name, fullname, chart, labels, selectorLabels, serviceAccountName.

  • selectorLabels must NOT include app.kubernetes.io/version — it is immutable after creation
  • Always trunc 63 | trimSuffix "-" on name fields

3. values.yaml

  • Every key has an inline comment explaining purpose and type
  • Default values must work without any override (helm install . --generate-name succeeds)
  • image.tag: "" — falls back to .Chart.AppVersion in template
  • securityContext defaults to hardened baseline (runAsNonRoot, readOnlyRootFilesystem, drop ALL)
  • resources.requests and resources.limits always present with sensible defaults
  • No cluster-specific values (registry URL, domain, storage class)

4. Core templates

  • deployment.yaml — uses all values, probes, securityContext, resources
  • service.yaml — conditioned on workload type
  • serviceaccount.yamlautomountServiceAccountToken: false by default

5. Optional templates (conditioned on enabled: true)

  • ingress.yaml
  • hpa.yamlautoscaling/v2
  • pdb.yamlpolicy/v1
  • networkpolicy.yaml — default-deny ingress + explicit allow

6. Validation pipeline

helm lint <chart>/ --strict
helm template myrelease <chart>/ --debug
helm template myrelease <chart>/ | kubeconform -strict -summary

Mode: review

Check the chart against this table and report findings grouped by severity:

CheckSeverity
Missing _helpers.tplCritical
No resource requests/limitsCritical
No liveness/readiness probesHigh
Hardcoded image tag in templateHigh
Missing app.kubernetes.io/* labelsHigh
app.kubernetes.io/version in selectorLabelsHigh
No NOTES.txtMedium
No .helmignoreLow
Missing Chart.yaml fields (description, appVersion)Medium
automountServiceAccountToken: trueMedium
Undocumented values.yaml keysLow
Deeply nested values (>3 levels)Low

Run validation and report:

helm lint <chart>/ --strict
helm template myrelease <chart>/ --debug 2>&1 | head -50

Output format:

HELM CHART REVIEW — <chart name>

CRITICAL: <count>
HIGH:     <count>
MEDIUM:   <count>
LOW:      <count>

[Finding] Severity: description + exact fix

Mode: security

Audit using this table:

Pod Security

CheckSeverityFix
No pod securityContextCriticalAdd runAsNonRoot: true, runAsUser: 1000, fsGroup: 1000, seccompProfile.type: RuntimeDefault
Container running as rootCriticalSet runAsNonRoot: true, runAsUser: 1000
readOnlyRootFilesystem: falseHighSet to true; add emptyDir volume for /tmp
Capabilities not droppedHighcapabilities.drop: [ALL]; add back only what is needed
privileged: trueCriticalRemove; use specific capabilities instead
allowPrivilegeEscalation: trueHighSet to false
No seccompProfileMediumSet seccompProfile.type: RuntimeDefault

RBAC

CheckSeverityFix
No dedicated ServiceAccountMediumCreate one; do not use default
automountServiceAccountToken: trueMediumSet to false unless pod needs K8s API access
ClusterRole instead of RoleMediumUse namespace-scoped Role unless cluster-wide is justified
Wildcard verbs or resourcesCriticalUse explicit verbs and resource names

Network and Secrets

CheckSeverityFix
No NetworkPolicyMediumAdd default-deny ingress + explicit allow
Secrets in values.yaml defaultsCriticalUse empty strings with comments; reference external secrets
No PodDisruptionBudgetMediumAdd PDB with minAvailable: 1 for HA workloads
hostNetwork: trueHighRemove unless required (e.g., CNI plugin)
hostPID: true or hostIPC: trueCriticalNever in application charts

Output format:

SECURITY AUDIT — <chart name>

CRITICAL: <count>
HIGH:     <count>
MEDIUM:   <count>
LOW:      <count>

[Finding] Severity: exact problem + remediation with corrected YAML snippet

BEFORE_AFTER.md

CHANGELOG.md

CODE_OF_CONDUCT.md

COMMANDS.md

CONTRIBUTING.md

EDITOR_INTEGRATIONS.md

GETTING_STARTED.md

HOW_IT_WORKS.md

install.sh

INSTALLATION.md

LAUNCH.md

PROMPTS.md

QUICKSTART.md

README.md

renovate.json

SECURITY.md

SKILL.md

tessl.json

tile.json