kubectl-craft is a kubectl plugin that presents a TUI for composing
Kubernetes Manifests from the Type Schemas defined on the cluster your
current context points to: navigate a Kind's field tree with per-field
documentation alongside, fill values with type-appropriate widgets,
Validate against the live API server, and emit the finished Manifest to
stdout. The tool never mutates the cluster.
Highlights of v0.1.0
- Compose from live Type Schemas — the field tree, docs,
requiredness, enums, constraints, and defaults come from your
cluster's OpenAPI v3 documents (CRDs included), cached on disk and
validated against the live index every Session. - Server-side Validate with fix-by-jumping —
vsubmits the Draft
as a server-side dry-run (full schema validation, CRD CEL rules, and
admission webhooks run for real; nothing persists); findings annotate
the offending tree nodes andnjumps through them. - Version switch with carry-over —
Vswitches the open Kind's
version, carrying values over by Field Path with a drop report for
anything that would not survive. - Clean-stdout emission — the TUI renders to the terminal; stdout
carries nothing but the final Emitted Manifest, so
kubectl craft > x.yamljust works. - Sparse Manifests — the emitted YAML contains exactly the fields
you set (plus the apiVersion/kind identity); schema defaults render
as dimmed placeholders, never in the output.
See the README for
the full contracts: clean stdout, sparse emission, nothing persists,
and a disposable cache.
Known limitations
- No Windows artifacts: the TUI acquires its terminal via
/dev/tty, which does not exist on Windows, so shipped archives
could never run
(#15 records the
decision). Linux and macOS (amd64 and arm64) are supported. - The expanded-output toggle (emitting defaults alongside set
fields) has not landed yet; emission is sparse-only. - Explicitly post-v0.1: OpenAPI v2 fallback (clusters older than
roughly 1.24 fail with a clear minimum-version error), round-trip
editing of existing manifests + draft recovery, multi-manifest
workspaces, Draft-scoped search, in-TUI context switching, and
rebindable keys.
Install
Download the archive for your platform below, extract it, and put the
kubectl-craft binary anywhere on your PATH — kubectl discovers
plugins by the binary naming convention, so kubectl craft works
immediately. Checksums are in checksums.txt.
Changelog
- 5402262 build(release): add goreleaser snapshot and tag-release pipeline
- 34673b7 build(release): drop Windows artifacts for v0.1
- fbd6769 build(release): stage v0.1.0 — LICENSE, release notes, demo asset, version pin
- 8289e46 ci(actions): add lint, fast, and integration test jobs
- 1909e66 feat(cli): deep-link positional arg for kind and Field Path
- c254ac9 feat(data): add Session connection, capability gate, and live index fetch
- 850335e feat(data): discover create-capable Kinds with preferred versions and short names
- 0c01604 feat(data): dry-run=server Validate client with availability classification
- c342fc0 feat(data): hash-validated disk cache behind the Fetcher seam
- 5629e4b feat(schema): Draft model with set/unset, item/key mutation, and completeness
- d34941a feat(schema): build the lazy, cycle-safe field tree from a Kind root schema
- 5eeb461 feat(schema): compute contextual requiredness over a field tree
- 560956b feat(schema): emit sparse Manifests pinned by golden YAML specs
- e08d4bc feat(schema): parse OpenAPI v3 group documents and resolve Kind root schemas
- b7233e9 feat(schema): surface node metadata for the detail pane and value entry
- 4c7e811 feat(schema,tui): version switch with carry-over and drop report
- 5e76dfb feat(tui): / schema-path search overlay with the landing rule
- 02b7548 feat(tui): Kind picker with fzf-style type-to-filter
- 5d9aa0c feat(tui): a/d mutation verbs with bracket rows and subtree confirms
- 4ce81a4 feat(tui): add the alt-screen Session shell with the clean-stdout contract
- 0ecbcfd feat(tui): edit mode with typed widgets, dimmed defaults, and the completeness status line
- c4aae05 feat(tui): exit ramp — q three-way menu, Ctrl-d direct emit, Manifest to stdout
- 034f475 feat(tui): raw-YAML escape hatch and $EDITOR pop-out for schema-blind fields
- 2da0b3e feat(tui): read-only compose view with tree, detail pane, breadcrumb, hint bar, and help
- eea2edc feat(tui): v Validate flow with metadata gate, findings, and jump-to-error
- 5e9e250 feat(validate): map dry-run Status causes to Field Path findings
- b4f644c perf(schema,tui): huge-CRD perf pass with budgeted benchmarks
