Orientation skill — load when the user is new to ConfigHub, asks "what is a Unit / Space / Target / Worker / Trigger / Filter / Link", needs to understand how entities relate, wants a quick tour before diving into specific operations, or asks "how do I do X in ConfigHub" without enough context to route yet. Also covers Delete Gates and Destroy Gates — phrases like "protect this Space from accidental deletion", "stop anyone from destroying the prod Unit", "add a delete gate", "why can't I delete this?", "how do I lock down critical infra?". Explains the core vocabulary, the Read vs Write tool boundary, the change-description + -o mutations conventions, gate semantics, and routes to the right dedicated skill for each kind of task. Do not load when the user's intent is already concrete enough to route (e.g., "add a trigger that blocks :latest" → triggers-and-applygates; "bump the image" → cub-mutate; "find Deployments using v1.2.3" → cub-query).
89
88%
Does it follow best practices?
Impact
Pending
No eval scenarios have been run
Passed
No known issues
Orientation. Explains ConfigHub's model in plain language and routes to the right skill for the task at hand.
ConfigHub treats configuration as data: fully materialized YAML stored in a versioned database, not code or templates. Mutations go through server-side functions on that data. Everything else — delivery, policy, audit — hangs off that model.
--change-desc (the composed user prompt + clarifications) and the mutated data diff.get-container-image), setters (set-container-image, set-replicas), defaults (set-container-resources-defaults), validators (vet-schemas, vet-cel), helpers (compute-mutations, yq, yq-i).Mutation or PostClone events. Failing validators attach an ApplyGate, which blocks apply until fixed.cub unit apply --filter …). Filters over Triggers are what attach to a Space via TriggerFilterID.serviceAccountName → a SA Unit). Links enable cross-Unit integrity checks and needs/provides binding.KubeContext, KubeNamespace) and optionally a Worker.Kubernetes, ArgoCDRenderer, FluxRenderer, ArgoCDOCI, OpenTofu/AWS, …). Typically deployed in-cluster.cub. kubectl / argocd / flux are read-only for diagnosis.--change-desc. Format: summary line, then the verbatim user prompt, then a condensed summary of any clarifying Q&A. Recorded in every affected Unit's head revision.-o mutations to show the diff inline.platform Space; application Spaces inherit via TriggerFilterID.ConfigHub makes bulk and cross-Space operations easy, which is also how you accidentally delete a prod Space or destroy live cluster resources. Gates are the opt-in protection.
Canonical doc: https://docs.confighub.com/markdown/guide/protecting.md.
Two kinds:
cub <entity> delete until every gate is removed.cub unit destroy, which removes the live cluster resources owned by the Unit. Orthogonal to Delete Gates: you can have one without the other.Each gate is named. The name must match label-key rules (alphanumeric + -, _, .) and is where the why lives — use descriptive names, not critical everywhere. Multiple gates can stack on the same entity; all must be removed before the delete / destroy is allowed.
# Unit — both gates. Protect prod data; protect its live resources.
cub unit update --patch --space <app>-prod <unit> \
--delete-gate prod-critical \
--destroy-gate prod-critical
# Space — delete gate only (Spaces have no destroy).
cub space update --patch <space> \
--delete-gate used-until-dec25
# Target, Worker, Trigger, Filter — same pattern via the entity's update command.
cub target update --patch --space <s> <target> --delete-gate in-use
cub worker update --patch --space <s> <worker> --delete-gate active
cub trigger update --patch --space platform <trigger> --delete-gate required
cub filter update --patch --space platform <filter> --delete-gate requiredGates can also be set at create time — cub <entity> create --delete-gate <name> ... — so a new prod Space can be born protected.
Use <name>=- (the - sentinel — empty string won't clear):
cub space update --patch <space> --delete-gate used-until-dec25=-
cub space delete --recursive <space>If multiple gates are stacked, each must be removed individually before the delete / destroy can proceed.
The gate name carries the purpose. Prefer specific over generic:
used-until-dec25, keep-through-release-452, kubecon25-demo.team-payments-owns, platform-managed, shared-infra-core.prod-critical, regulated-data, in-use-by-argocd, required-policy.Avoid critical as a catch-all — when three entities all carry critical, nobody remembers which is which. A future teammate reading the gate name should understand why it's there without asking.
Any time the user creates or touches an entity that would be painful to re-create:
used-until-dec25).For new prod-bound Units or Spaces, suggest the gate in the same turn you create them — the reminder-after-incident is always too late.
| User intent | Skill |
|---|---|
| Authoring new Kubernetes YAML for a Unit, questions about templates/values files/Helm/Kustomize for new work | config-as-data |
| Setting up validation/policy that actually blocks bad config | triggers-and-applygates |
| Changing data in an existing Unit (image, replicas, env var, defaults, etc.) | cub-mutate |
| Finding, listing, auditing, or inspecting config across Units/Spaces | cub-query |
| Bootstrapping a playground Space to tinker with | skill-examples-bootstrap |
| Installing a bridge worker in a cluster | worker-bootstrap |
| Creating a Target or binding a Unit to one | target-bind |
| Applying a Unit to its target | cub-apply |
| Post-apply verification, troubleshooting, three-way agreement, release close-out | verify-apply |
skill-examples-bootstrap to create a playground Space so they have something concrete to poke at while learning.Read-only. This skill explains and routes; it never mutates. If the conversation turns to doing a task, hand off to the dedicated skill — don't mutate from here.
https://docs.confighub.com/) rather than a skill.N/A — read-only. Verification is "did the user's task get routed to the right skill".
https://docs.confighub.com/markdown/index.mdhttps://github.com/confighub/sdkcub unit get --web, cub space get --web, cub revision list --web — open entity pages in the GUI when the user wants to see something concrete.references/cub-cli.md — CLI conventions, Read/Write permission sets, agent-mode help, --change-desc, -o mutations.references/functions-catalog.md — the function surface.references/filters-and-queries.md — query vocabulary.references/triggers-recipes.md — platform-Space pattern.references/yaml-patterns.md — literal-value authoring.59ea831
If you maintain this skill, you can claim it as your own. Once claimed, you can manage eval scenarios, bundle related skills, attach documentation or rules, and ensure cross-agent compatibility.