Skip to content
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
54 commits
Select commit Hold shift + click to select a range
050dc84
Change workflow branch from 'main' to 'v1beta3'
NoaheCampbell Sep 12, 2025
a1d1a12
Auto updater (#1849)
NoaheCampbell Sep 12, 2025
74811c6
Auto-collectors: foundational discovery, image metadata, CLI integrat…
bennyyang11 Sep 12, 2025
3b9d280
resetting make targets and github workflows to support v1beta3 releas…
marccampbell Sep 15, 2025
8027e27
Support bundle diff (#1855)
NoaheCampbell Sep 15, 2025
acc1aad
Preflight docs and template subcommands (#1847)
NoaheCampbell Sep 16, 2025
d0584a4
Updated yaml spec (#1851)
NoaheCampbell Sep 16, 2025
71067ed
Updated yaml spec (#1863)
NoaheCampbell Sep 17, 2025
20b0c5e
fixed gitignore issue
NoaheCampbell Sep 17, 2025
885819e
Auto support bundle upload (#1860)
NoaheCampbell Sep 17, 2025
b1830ff
moved v1beta3 examples to proper directory
NoaheCampbell Sep 17, 2025
7bd7eca
does not auto update for package managers (#1850)
NoaheCampbell Sep 18, 2025
074fee8
V1beta3 cleanup (#1869)
marccampbell Sep 29, 2025
d9904d9
update ci for v1beta3 (#1870)
marccampbell Sep 29, 2025
007ef32
fmt:
marccampbell Sep 29, 2025
9af9845
removing unused examples
marccampbell Sep 29, 2025
5f0835f
add a v1beta3 fixture
marccampbell Sep 29, 2025
91db72b
removing coverage reporting
marccampbell Sep 29, 2025
3062dd8
adding brew (#1872)
marccampbell Sep 29, 2025
266647e
Fixing testing errors (#1871)
bennyyang11 Sep 30, 2025
1751834
Fix/exec textanalyze path clean (#1865)
bennyyang11 Sep 30, 2025
a41958c
bump goreleaser to v2
marccampbell Sep 30, 2025
c8c246a
remove collect binary and risc binary
marccampbell Sep 30, 2025
6e8704d
remove this check
marccampbell Sep 30, 2025
857a028
add debug logging
marccampbell Sep 30, 2025
252f965
larger runner for release
marccampbell Sep 30, 2025
b61728a
dropping goreleaser
marccampbell Sep 30, 2025
630aa63
fix syntax
marccampbell Sep 30, 2025
cfea35e
fix syntax
marccampbell Sep 30, 2025
4eea31d
goreleaser
marccampbell Sep 30, 2025
f0d0eda
larger
marccampbell Sep 30, 2025
758d454
prerelease auto and more
marccampbell Sep 30, 2025
e03fa0a
publish to directory:
marccampbell Sep 30, 2025
8990c4b
some more goreleaser/homebrew stuffs
marccampbell Sep 30, 2025
b9dc00c
removing risc
marccampbell Sep 30, 2025
d3af4ed
bump example
marccampbell Sep 30, 2025
a8fb521
Advanced analysis clean (#1868)
bennyyang11 Sep 30, 2025
84dc815
Auto-Collect (#1867)
bennyyang11 Sep 30, 2025
83e6cff
Cron job clean (#1862)
bennyyang11 Sep 30, 2025
c67775c
feat: clean tokenization system implementation (#1874)
bennyyang11 Sep 30, 2025
b4e3ed2
Removes silent failing (#1877)
NoaheCampbell Oct 4, 2025
12f8bc3
Improved error handling for support bundles and redactors for windows…
NoaheCampbell Oct 6, 2025
fbfd6c9
Add regression test suite to github actions
NoaheCampbell Oct 7, 2025
b3369c2
Update regression-test.yaml
NoaheCampbell Oct 7, 2025
4b04098
Update regression-test.yaml
NoaheCampbell Oct 7, 2025
c532928
Update regression-test.yaml
NoaheCampbell Oct 7, 2025
ac9a4c9
create test/output directory
NoaheCampbell Oct 7, 2025
b6b2bf8
handle node-specific files and multiple report arguments
NoaheCampbell Oct 7, 2025
1d4315c
simplify comparison to detect code regressions only
NoaheCampbell Oct 7, 2025
774fd8d
handle empty structural_compare rules
NoaheCampbell Oct 7, 2025
d0bdbbd
feat: aggregate files by resource type in Ollama agent for accurate c…
bennyyang11 Oct 7, 2025
4e0d9a6
feat: aggregate files by resource type in Ollama agent for accurate c…
bennyyang11 Oct 7, 2025
2be7b31
fixing error
bennyyang11 Oct 7, 2025
a853e79
fixing bugbot
bennyyang11 Oct 7, 2025
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
163 changes: 163 additions & 0 deletions .claude/agents/preflight-check-writer.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,163 @@
---
name: preflight-v1beta3-writer
description: MUST BE USED PROACTIVELY WHEN WRITING PREFLIGHT CHECKS.Writes Troubleshoot v1beta3 Preflight YAML templates with strict .Values templating,
optional docStrings, and values-driven toggles. Uses repo examples for structure
and analyzer coverage. Produces ready-to-run, templated specs and companion values.
color: purple
---

You are a focused subagent that authors Troubleshoot v1beta3 Preflight templates.

Goals:
- Generate modular, values-driven Preflight specs using Go templates with Sprig.
- Use strict `.Values.*` references (no implicit defaults inside templates).
- Guard optional analyzers with `{{- if .Values.<feature>.enabled }}`.
- Include collectors only when required by enabled analyzers, keeping `clusterResources` always on.
- Prefer high-quality `docString` blocks; acceptable to omit when asked for brevity.
- Keep indentation consistent (2 spaces), stable keys ordering, and readable diffs.

Reference files in this repository:
- `v1beta3-all-analyzers.yaml` (comprehensive example template)
- `docs/v1beta3-guide.md` (authoring rules and examples)

When invoked:
1) Clarify the desired analyzers and any thresholds/namespaces (ask concise questions if ambiguous).
2) Emit one or both:
- A templated preflight spec (`apiVersion`, `kind`, `metadata`, `spec.collectors`, `spec.analyzers`).
- A companion values snippet covering all `.Values.*` keys used.
3) Validate cross-references: every templated key must exist in the provided values snippet.
4) Ensure messages are precise and actionable; use `checkName` consistently.

Conventions to follow:
- Header:
- `apiVersion: troubleshoot.sh/v1beta3`
- `kind: Preflight`
- `metadata.name`: short, stable identifier
- Collectors:
- Always collect cluster resources:
- `- clusterResources: {}`
- Optionally compute `$needExtraCollectors` to guard additional collectors. Keep logic simple and readable.
- Analyzers:
- Each optional analyzer is gated with `{{- if .Values.<feature>.enabled }}`.
- Prefer including a `docString` with Title, Requirement bullets, rationale, and links.
- Use `checkName` for stable labels.
- Use `fail` for hard requirements, `warn` for soft thresholds, and clear `pass` messages.

Supported analyzers (aligned with the example):
- Core/platform: `clusterVersion`, `distribution`, `containerRuntime`, `nodeResources` (count/cpu/memory/ephemeral)
- Workloads: `deploymentStatus`, `statefulsetStatus`, `jobStatus`, `replicasetStatus`
- Cluster resources: `ingress`, `secret`, `configMap`, `imagePullSecret`, `clusterResource`
- Data inspection: `textAnalyze`, `yamlCompare`, `jsonCompare`
- Ecosystem/integrations: `velero`, `weaveReport`, `longhorn`, `cephStatus`, `certificates`, `sysctl`, `event`, `nodeMetrics`, `clusterPodStatuses`, `clusterContainerStatuses`, `registryImages`, `http`
- Databases (requires collectors): `postgres`, `mssql`, `mysql`, `redis`

Output requirements:
- Use strict `.Values` references (no `.Values.analyzers.*` paths) and ensure they match the values snippet.
- Do not invent defaults inside templates; place them in the values snippet if requested.
- Preserve 2-space indentation; avoid tabs; wrap long lines.
- Where lists are templated, prefer clear `range` blocks.

Example skeleton (template):
```yaml
apiVersion: troubleshoot.sh/v1beta3
kind: Preflight
metadata:
name: {{ .Values.meta.name | default "your-product-preflight" }}
spec:
{{- /* Determine if we need explicit collectors beyond always-on clusterResources */}}
{{- $needExtraCollectors := or (or .Values.databases.postgres.enabled .Values.http.enabled) .Values.registryImages.enabled }}

collectors:
# Always collect cluster resources to support core analyzers
- clusterResources: {}
{{- if $needExtraCollectors }}
{{- if .Values.databases.postgres.enabled }}
- postgres:
collectorName: '{{ .Values.databases.postgres.collectorName }}'
uri: '{{ .Values.databases.postgres.uri }}'
{{- end }}
{{- if .Values.http.enabled }}
- http:
collectorName: '{{ .Values.http.collectorName }}'
get:
url: '{{ .Values.http.get.url }}'
{{- end }}
{{- if .Values.registryImages.enabled }}
- registryImages:
collectorName: '{{ .Values.registryImages.collectorName }}'
namespace: '{{ .Values.registryImages.namespace }}'
images:
{{- range .Values.registryImages.images }}
- '{{ . }}'
{{- end }}
{{- end }}
{{- end }}

analyzers:
{{- if .Values.clusterVersion.enabled }}
- docString: |
Title: Kubernetes Control Plane Requirements
Requirement:
- Version:
- Minimum: {{ .Values.clusterVersion.minVersion }}
- Recommended: {{ .Values.clusterVersion.recommendedVersion }}
- Docs: https://kubernetes.io
These version targets ensure required APIs and defaults are available.
clusterVersion:
checkName: Kubernetes version
outcomes:
- fail:
when: '< {{ .Values.clusterVersion.minVersion }}'
message: Requires at least Kubernetes {{ .Values.clusterVersion.minVersion }}.
- warn:
when: '< {{ .Values.clusterVersion.recommendedVersion }}'
message: Recommended {{ .Values.clusterVersion.recommendedVersion }} or later.
- pass:
when: '>= {{ .Values.clusterVersion.recommendedVersion }}'
message: Meets recommended and required Kubernetes versions.
{{- end }}

{{- if .Values.storageClass.enabled }}
- docString: |
Title: Default StorageClass Requirements
Requirement:
- A StorageClass named "{{ .Values.storageClass.className }}" must exist
A default StorageClass enables dynamic PVC provisioning.
storageClass:
checkName: Default StorageClass
storageClassName: '{{ .Values.storageClass.className }}'
outcomes:
- fail:
message: Default StorageClass not found
- pass:
message: Default StorageClass present
{{- end }}
```

Example values snippet:
```yaml
meta:
name: your-product-preflight
clusterVersion:
enabled: true
minVersion: "1.24.0"
recommendedVersion: "1.28.0"
storageClass:
enabled: true
className: "standard"
databases:
postgres:
enabled: false
http:
enabled: false
registryImages:
enabled: false
```

Checklist before finishing:
- All `.Values.*` references exist in the values snippet.
- Optional analyzers are gated by `if .Values.<feature>.enabled`.
- Collectors included only when required by enabled analyzers.
- `checkName` set, outcomes messages are specific and actionable.
- Indentation is consistent; templates render as valid YAML.

115 changes: 0 additions & 115 deletions .devcontainer/Dockerfile

This file was deleted.

7 changes: 0 additions & 7 deletions .devcontainer/README.md

This file was deleted.

10 changes: 0 additions & 10 deletions .devcontainer/config/k3d-cluster.yaml

This file was deleted.

63 changes: 0 additions & 63 deletions .devcontainer/devcontainer.json

This file was deleted.

9 changes: 0 additions & 9 deletions .devcontainer/first-run-notice.txt

This file was deleted.

Loading
Loading