helm-diff
Copilot instructions3.5k starsChanged 3 days agoApache-2.0View on GitHub
Helm Diff is a Go-based Helm plugin that provides diff functionality for comparing Helm charts and releases. It shows what changes would occur during helm upgrade, rollback, or between different releases/revisions. Always reference these instructions first and fallback to search or bash commands only when you encounter unexpected information that does not match the info here. Prerequisites: - Go >= 1.27 (currently uses Go 1.27.1) - Helm v3 (tested with v3.17.4 and v3.18.6) Build Process: - Build the plugin: make…
We split this copilot-instructions.md into the rules it gives an agent
8 rules. About 0 are common, 2 are distinctive, and 6 are very specific to this project.
≈0
Common · estimate
Many files like this have a rule of this kind.
≈2
Distinctive · estimate
This author's own choices. Worth a look.
6
Very specific
Tied to their project's names, files or tools. Probably skip.
- Common
- Distinctive
- Very specific
- could be automatic: a setting could enforce it
- Distinctive: line 5
Always reference these instructions first and fallback to search or bash commands only when you encounter unexpected information that does …
- Distinctive: line 15
NEVER CANCEL builds. Set timeout to 2+ minutes for build operations.
- Very specific: line 18
Run unit tests: make test - includes coverage analysis.
- Very specific: line 20
Test coverage is generated in cover.out with detailed function-level coverage reports.
- Very specific: line 26
ALWAYS run make format and make lint before committing changes.
- Very specific: line 84
Always run tests after modifying cmd/ or diff/ packages
- Very specific: line 85
Check plugin.yaml version if making release changes
- Very specific: line 86
Verify Makefile targets if changing build process
≈ “Common” is an estimate: at least 1 in 5 of the 3,669 Copilot instructions files we read have a rule of the same kind, not the same words. “Very specific” is our guess from the words: it names a file, a command, a setting or the project itself.
Files
Helm Diff Plugin
Helm Diff is a Go-based Helm plugin that provides diff functionality for comparing Helm charts and releases. It shows what changes would occur during helm upgrade, rollback, or between different releases/revisions.
Always reference these instructions first and fallback to search or bash commands only when you encounter unexpected information that does not match the info here.
Working Effectively
Prerequisites:
- Go >= 1.27 (currently uses Go 1.27.1)
- Helm v3 (tested with v3.17.4 and v3.18.6)
Build Process:
- Build the plugin:
make build- includes linting and compiles the binary. - NEVER CANCEL builds. Set timeout to 2+ minutes for build operations.
Testing:
- Run unit tests:
make test- includes coverage analysis. Takes ~12 seconds. NEVER CANCEL - set timeout to 3+ minutes. - Tests include comprehensive coverage (38.7% overall) and use a fake helm binary for isolation.
- Test coverage is generated in
cover.outwith detailed function-level coverage reports.
Linting and Code Quality:
- Local linting:
make lint- runs gofmt, go vet. Takes ~2 seconds. - Code formatting:
make format- applies gofmt formatting automatically. Takes <1 second. - Full golangci-lint runs only in CI via GitHub Actions, not available locally.
- ALWAYS run
make formatandmake lintbefore committing changes.
Plugin Installation:
- Install as Helm plugin:
make installormake install/helm- builds and installs to Helm plugins directory. Takes ~3 seconds. - The plugin installs via
install-binary.shscript which handles cross-platform binary installation.
Validation Scenarios
ALWAYS test your changes with these scenarios:
- Basic Plugin Functionality:
# Test the binary directly ./bin/diff version ./bin/diff --help ./bin/diff upgrade --help - Real Chart Diffing:
# Create a test chart and diff it cd /tmp && helm create test-chart cd /path/to/helm-diff HELM_NAMESPACE=default HELM_BIN=helm ./bin/diff upgrade --install --dry-run test-release /tmp/test-chart - Plugin Installation Verification:
# Test plugin installation export HELM_DATA_HOME=/tmp/helm-test make install /tmp/helm-test/plugins/helm-diff/bin/diff version
Build Times and Timeouts
CRITICAL: NEVER CANCEL long-running commands. Use these timeout values:
make build: ~9 seconds (set timeout: 3+ minutes)make test: ~12 seconds (set timeout: 3+ minutes)make lint: ~2 seconds (set timeout: 1 minute)make format: <1 second (set timeout: 1 minute)make install: ~3 seconds (set timeout: 2 minutes)
Common Tasks
Repository Structure:
main.go- Entry point that delegates to cmd packagecmd/- Command-line interface implementation (upgrade, release, revision, rollback, version)diff/- Core diffing logic and output formattingmanifest/- Kubernetes manifest parsing and handlingscripts/- Build and verification scripts (gofmt, govet)testdata/,*/testdata/- Test fixtures and mock dataplugin.yaml- Helm plugin configurationinstall-binary.sh- Cross-platform installation scriptMakefile- Build system with all common targets
Key Files to Check After Changes:
- Always run tests after modifying
cmd/ordiff/packages - Check
plugin.yamlversion if making release changes - Verify
Makefiletargets if changing build process - Review
install-binary.shif modifying installation process
Environment Variables for Testing:
HELM_NAMESPACE- Kubernetes namespace for operationsHELM_BIN- Path to helm binary (for direct testing)HELM_DIFF_USE_UPGRADE_DRY_RUN- Use helm upgrade --dry-run instead of templateHELM_DIFF_THREE_WAY_MERGE- Enable three-way merge diffingHELM_DIFF_THREE_WAY_MERGE_MODE- Apply the three-way merge patch via the API server (auto/server) or locally (client)HELM_DIFF_NORMALIZE_MANIFESTS- Normalize YAML before diffingHELM_DIFF_OUTPUT_CONTEXT- Configure output context lines
CI/CD Information:
- GitHub Actions runs on push/PR to master branch
- Tests run on Ubuntu, macOS, Windows with multiple Helm versions
- Integration tests use Kind (Kubernetes in Docker)
- Linting uses golangci-lint via GitHub Actions (not available locally)
- Cross-platform plugin installation is tested via Docker
Direct Binary Usage (for development):
# Build and test directly without Helm plugin installation
go build -o bin/diff -ldflags="-X github.com/databus23/helm-diff/v3/cmd.Version=dev"
HELM_NAMESPACE=default HELM_BIN=helm ./bin/diff upgrade --install --dry-run my-release ./chart-pathCommon Commands Reference:
# Full development cycle
make build # Build with linting
make test # Run all tests
make format # Format code
make install # Install as Helm plugin
# Validation
./bin/diff version # Check version
./bin/diff upgrade --help # Check help
make test # Run test suiteImportant Notes
- The plugin supports Helm v3 only (v2 support was removed)
- Uses Go modules for dependency management
- Cross-platform support: Linux, macOS, Windows, FreeBSD
- Multiple output formats: diff, simple, template, dyff
- Supports both client-side and server-side dry-run modes
- Includes three-way merge capabilities for advanced diffing
- Plugin binary is named
diffand installed ashelm diffcommand
Trending
More talk lately.about the whole repository
Who's talking about databus23/helm-diff
- helm/helm“Feature request: Add option to show the result of the 3 way diff, i.e. the real patch that will be applied”GitHub · Sep 11, 2020 · 17 reactions
- helm/helm“Cannot add plugins with git fsmonitor daemon enabled”GitHub · Jun 7, 2023 · 13 reactions
- hashicorp/terraform-provider-helm“Perform three-way-merge for diff”GitHub · Mar 21, 2023 · 11 reactions
- roboll/helmfile“Missing colors in diff”GitHub · Jan 10, 2022 · 7 reactions
- roboll/helmfile“Weird diff behaviour with line endings”GitHub · Jul 19, 2021 · 7 reactions
The biggest 5 of 57 mentions linking to the repository that our crawl found. Each line is their own headline.
See all 57
Talked about on GitHub, Stack Overflow and Hacker News (57 times).
On GitHub · 50
- Sep 11, 2020Feature request: Add option to show the result of the 3 way diff, i.e. the real patch that will be applied — helm/helm17 reactions · 5 comments
- Jun 7, 2023Cannot add plugins with git fsmonitor daemon enabled — helm/helm13 reactions · 12 comments
- Mar 21, 2023Perform three-way-merge for diff — hashicorp/terraform-provider-helm11 reactions · 7 comments
- Jan 10, 2022Missing colors in diff — roboll/helmfile7 reactions · 23 comments
- Jul 19, 2021Weird diff behaviour with line endings — roboll/helmfile7 reactions · 9 comments
45 more on GitHub
- Jul 17, 2018helm-v3: install set of custom plugins during helm init — helm/community7 reactions · 3 comments
- Jan 31, 2025Pipeline breaks after changes in hypnoglow/helm-s3 — mamezou-tech/setup-helmfile6 reactions · 4 comments
- Apr 3, 2023[Feature][Design] KRM KCL Spec & User Story — kcl-lang/kcl6 reactions · 5 comments
- Mar 19, 2023import helm release does not import values — hashicorp/terraform-provider-helm5 reactions · 8 comments
- Sep 25, 2020Extend helm-sops to support pass-through of exit codes returned by plugins. — camptocamp/helm-sops4 reactions · 2 comments
- Dec 3, 2019[stable/prometheus-operator] chart does not work with helm diff plugin — helm/charts4 reactions · 11 comments
- Nov 22, 2019Reintroduce --is-upgrade to template command — helm/helm4 reactions · 5 comments
- Nov 15, 2025feat: add Helm 4 support while maintaining Helm 3 compatibility — helmfile/helmfile3 reactions · 17 comments
- Jul 23, 2020Use kubectl diff instead of helm diff — roboll/helmfile3 reactions · 7 comments
- Aug 4, 2026fix(home): set HELM_DIFF_IGNORE_UNKNOWN_FLAGS=true via sessionVariables — taianf/dotfiles2 reactions · 1 comment
- Nov 13, 2025Helm v4 require --verify=false when install helm-diff plugin(default install plugin) — helmfile/helmfile-action2 reactions · 2 comments
- Mar 21, 2024How to integrate with Argo CD without losing native `helmfile` features? — mumoshu/helmfile-operator2 reactions
- Apr 5, 2023Support --enable-dns helm flag — helmfile/helmfile2 reactions · 5 comments
- Mar 27, 2023Reduce number of Helm upgrades in application-installation-controller — kubermatic/kubermatic2 reactions
- Mar 1, 2023[Feature] Helm KCL Plugin — kcl-lang/kcl2 reactions
- Feb 23, 2023helm plugin install failes on private runner — mamezou-tech/setup-helmfile2 reactions · 12 comments
- Jul 27, 2022Homebrew formula doesn't upgrades helm diff plugin — helmfile/helmfile2 reactions · 10 comments
- Jun 2, 2020Does not work microk8s.helm3 plugins install — canonical/microk8s2 reactions · 9 comments
- Nov 1, 2019changing namespaces of resource creates orphans — helm/helm2 reactions
- Apr 2, 2019Helm plugin install tgz with directory — helm/helm2 reactions · 13 comments
- Jun 8, 2026feat(dev-machine): add act v0.2.89, helmfile v1.5.2, helm-diff & skaffold — ibtisam-iq/silver-stack1 reaction
- Apr 16, 2025Add helm insecure skip tls verify — ansible-collections/kubernetes.core1 reaction · 16 comments
- Nov 14, 2024chore: bump github.com/databus23/helm-diff/v3 from 3.9.10 to 3.9.12 — helmwave/helmwave1 reaction · 1 comment
- Sep 23, 2024chore: bump github.com/databus23/helm-diff/v3 from 3.9.10 to 3.9.11 — helmwave/helmwave1 reaction · 2 comments
- Jul 1, 2024build(deps): bump github.com/databus23/helm-diff/v3 from 3.9.8 to 3.9.9 — helmwave/helmwave1 reaction · 2 comments
- Jun 17, 2024build(deps): bump github.com/databus23/helm-diff/v3 from 3.9.5 to 3.9.8 — helmwave/helmwave1 reaction · 1 comment
- May 27, 2024build(deps): bump github.com/databus23/helm-diff/v3 from 3.9.5 to 3.9.7 — helmwave/helmwave1 reaction · 3 comments
- May 9, 2024build(deps): bump github.com/databus23/helm-diff/v3 from 3.9.5 to 3.9.6 — helmwave/helmwave1 reaction · 1 comment
- May 23, 2023kubernetes-helmPlugins.helm-diff: 3.7.0 -> 3.8.0 — NixOS/nixpkgs1 reaction · 1 comment
- Feb 10, 2023support arm64 build — alpine-docker/k8s1 reaction · 2 comments
- Sep 21, 2018No fancy — mkubaczyk/helmsman1 reaction
- Jul 25, 2018feat: Optional detailed exitcodes for `helmfile diff` — roboll/helmfile1 reaction · 1 comment
- Oct 25, 2026chore(patch): update databus23/helm-diff to v3.15.15 #patch — GlueOps/codespaces0 reactions
- Oct 13, 2026chore(github-release): update helm-tooling group — solidDoWant/infra-mk30 reactions
- Oct 5, 2026kubernetes-helmPlugins.helm-diff: 3.15.14 -> 3.15.15 — NixOS/nixpkgs0 reactions · 1 comment
- Oct 4, 2026fix(plugin): stop the git fsmonitor daemon before copying a cloned plugin — helm/helm0 reactions
- Sep 25, 2026Bump helm-diff version to 3.15.15 — jenkins-infra/packer-images0 reactions
- Sep 25, 2026Update dependency databus23/helm-diff to v3.15.15 — Starktastic-Homelab/ansible0 reactions · 1 comment
- Sep 24, 2026chore(deps): update dependency databus23/helm-diff to v3.15.15 — BacLuc/provision-machines0 reactions
- Sep 11, 2026Bump helm-diff version to 3.15.13 — jenkins-infra/packer-images0 reactions
- Aug 30, 2026Bump helm-diff version to 3.15.12 — jenkins-infra/packer-images0 reactions
- May 15, 2026chore(deps): update dependency databus23/helm-diff to v3.15.15 — axivo/k3s-cluster0 reactions
- Jan 23, 2026fix: honor plugins custom directory for http and local installers — helm/helm0 reactions · 10 comments
- Nov 18, 2025Fix issue with Helm 4 where KubeVersion is not pulled in — getsentry/sentry-infra-tools0 reactions · 1 comment
- Apr 8, 2025chore(deps): update dependency databus23/helm-diff to v3.11.0 — theepicsaxguy/k3s-cluster0 reactions
On Stack Overflow · 5
- Apr 21, 2021How do I diff a Helm template against an existing deployment/release?4 votes · 2 answers
- Aug 30, 2021Fail to install helm-diff3 votes · 1 answer
- Sep 4, 2020Kubernetes + Helm - only restart pods if new version/change1 vote
- Dec 27, 2022Restrict helm to update or install if there are no changes/modification to your charts0 votes
- Nov 5, 2022Add additionalScrapeConfigs to existing kube-prometheus-stack without data loss0 votes
On Hacker News · 2
- Oct 27, 2019Helm-diff: plugin that shows a diff explaining what a helm upgrade would change3 points
- Aug 2, 2017Helm plugin for showing a diff of what the next upgrade would change3 points
Where files are headingNew Copilot instructions files have more rules about branches and pull requests, and fewer about code style.
Of the Copilot instructions files we read, the 2,297 first seen in the last six months, against the older ones: the kind of rule that gained most share, and the kind that lost most. About files like this in general, not this one, and an estimate, since a kind is a pattern in the words.
Does it work?
Reviews from people and from AI agents that ran it: what they used it for, and whether it worked.
No reviews yet
People and AI agents can review whether this works in practice. Say what you used it for, and whether it worked.
- It worked
- Partly
- It didn't
Using an agent? It can post a review for you after it has run the file: the MCP tool registry_write, action report. How to connect one.
Your trail
Files you open will collect here, so you can find them again.
Open two or more, and you can remix the rules you like from each into one list. Kept in this browser only.
Now do this for your own.
Bring your CLAUDE.md, AGENTS.md or skills. agentleFS shows which of your rules are common, which are yours and which only fit one project, and keeps one version your agents read everywhere.

