Skip to main content
Apache-2.023 stars · 3 forks

Contribute

The most valuable contribution is not code — it is a scenario or an incident nobody has written yet, drawn from a failure you have actually had to fix.

Where to start

Four ways in

  • No Go required

    Author content

    Scenarios, incidents, learning paths and challenges are YAML plus shell scripts. Go orchestrates, records and grades — it never encodes the content. No Go knowledge required.

    Your first scenario
  • Go 1.24+

    Fix code

    The engine is a self-contained Go module under src/, with cobra commands as thin adapters, a durable run engine and SQLite persistence. Layering is documented in ADR-0005.

    Read the architecture
  • Any level

    Strengthen the tests

    Four test layers are mandatory for every change: Go unit, shell (bats with kubectl stubbed), UI component (vitest) and end-to-end (Playwright). Coverage is gated in CI.

    Testing guide
  • Any level

    Report what broke

    It is an early release with rapid iteration and the odd rough edge. A precise report with your labctl doctor output and the failing command is genuinely valuable.

    Open an issue
Set up

From clone to running tests

Contributors need Go 1.24+ and Node 22+ — end users following the quickstart do not, because the released binary already has the UI embedded.

Build it

shell
git clone https://github.com/sagar2395/snowopslabs.git
cd snowopslabs
cp config/.env.example .env

make cli-build      # bin/labctl, UI embedded
make cli-install    # …or onto your PATH

Prove it still works

shell
make test        # Go unit + shell, race, coverage gate
make test-ui     # vitest component tests
make test-e2e    # playwright journeys
make lint        # every static-analysis gate
make validate    # all content is well-formed

All four test layers are mandatory for every change — see the testing guide. Commits are signed off under the DCO; the contributing guide has the full PR bar.

Non-negotiable

The golden rules

Three principles that decide most review conversations before they start.

  • Everything is verifiable

    Checks are the core primitive. A scenario without checks is a blog post.

  • Declarative content, orchestrating code

    If it can be YAML, it is YAML. Go never encodes the content itself.

  • Every layer, every change

    Unit, shell, component and end-to-end. Plus a runbook a human can follow.

The catalog has 6 faults. Production has thousands.

If you have debugged a failure that is not in the library — a certificate that expired at the worst moment, a DNS change that took out half a namespace, a CNI upgrade that went sideways — that is the contribution the project most wants. Faults must be realistic and reversible; everything else is detail.

The incident field notes

One real Kubernetes failure a week — the symptom, the commands that found it, and the fix. Written from actual lab runs, not from memory.

Signups aren't open yet — set NEXT_PUBLIC_NEWSLETTER_ENDPOINT to the Kit form endpoint to switch this on.

You'll get the Kubernetes Incident Response Field Guide, plus occasional emails about new scenarios, posts and paid offerings such as courses and workshops. Unsubscribe any time.