Use when the user wants a working ConfigHub playground to exercise the other skills against — phrases like "set up the skill-examples space", "bootstrap the examples", "give me a Unit to tinker with", "walk me through with a real example", "I'm new to ConfigHub, show me something I can poke at", or "reset the examples". Creates (or refreshes) a `skill-examples` Space with seed Units covering common Kubernetes resource types — Deployment, StatefulSet, DaemonSet, Job, CronJob, Ingress, NetworkPolicy, RBAC, HPA, PDB — and applies the canonical defaults-function chain so the end state demonstrates config-as-data with provenance intact. Other skills (like `kubernetes-resources`) pull from these live examples in preference to hardcoded YAML. Idempotent: re-running is safe. Do not load for creating real application Spaces (use config-as-data + space setup directly) or for bootstrapping triggers/policy (use triggers-and-applygates).
89
88%
Does it follow best practices?
Impact
Pending
No eval scenarios have been run
Passed
No known issues
Creates a ConfigHub playground Space so users can exercise the other skills against a real, well-formed example.
skill-examples Space is missing or has been damaged and the user wants it back.config-as-data + direct cub space create).triggers-and-applygates).import-* skills).Space: skill-examples
Units in that Space:
hello-ns — v1/Namespace named hello, with pod-security labels applied via set-pod-security-defaults.hello-app — apps/v1/Deployment + v1/Service bundle for a placeholder app listening on port 8080.hello-statefulset — apps/v1/StatefulSet + headless v1/Service for a PostgreSQL-like stateful workload with volumeClaimTemplates.hello-daemonset — apps/v1/DaemonSet for a node-exporter-style monitoring agent.hello-job — batch/v1/Job for a one-shot database migration.hello-cronjob — batch/v1/CronJob for a scheduled nightly backup.hello-ingress — networking.k8s.io/v1/Ingress with TLS termination.hello-netpol — networking.k8s.io/v1/NetworkPolicy pair: default-deny + explicit allow.hello-rbac — v1/ServiceAccount + rbac.authorization.k8s.io/v1/Role + RoleBinding bundle.hello-hpa — autoscaling/v2/HorizontalPodAutoscaler targeting hello-app.hello-pdb — policy/v1/PodDisruptionBudget protecting hello-app.All workload Units get the defaults chain: set-container-resources-defaults, set-container-probe-defaults, set-pod-container-security-context-defaults, ensure-namespaces.
Every mutation call passes --change-desc with the user prompt verbatim so the revision history demonstrates provenance end-to-end.
cub organization list succeeds (proves a valid token; cub context get / cub info / cub version don't require one).cub space get skill-examples 2>/dev/null
cub unit list --space skill-examples 2>/dev/nullBranch:
cub space create skill-examplescub space create does not accept --change-desc; Spaces aren't versioned data.
Example YAML files are stored in skills/skill-examples-bootstrap/examples/. Each file maps to one Unit:
| File | Unit slug | Contents |
|---|---|---|
hello-ns.yaml | hello-ns | Namespace |
hello-app.yaml | hello-app | Deployment + Service bundle |
hello-statefulset.yaml | hello-statefulset | StatefulSet + headless Service |
hello-daemonset.yaml | hello-daemonset | DaemonSet |
hello-job.yaml | hello-job | Job |
hello-cronjob.yaml | hello-cronjob | CronJob |
hello-ingress.yaml | hello-ingress | Ingress with TLS |
hello-netpol.yaml | hello-netpol | default-deny + allow NetworkPolicy pair |
hello-rbac.yaml | hello-rbac | ServiceAccount + Role + RoleBinding |
hello-hpa.yaml | hello-hpa | HorizontalPodAutoscaler |
hello-pdb.yaml | hello-pdb | PodDisruptionBudget |
Upload each:
for slug in hello-ns hello-app hello-statefulset hello-daemonset hello-job \
hello-cronjob hello-ingress hello-netpol hello-rbac hello-hpa hello-pdb; do
cub unit create --space skill-examples "$slug" \
"skills/skill-examples-bootstrap/examples/${slug}.yaml" \
--merge-external-source "confighub-skills/skills/skill-examples-bootstrap/examples/${slug}.yaml" \
--change-desc "Seed ${slug} for the skill-examples playground.
User prompt: <verbatim>
Clarifications: <condensed or 'none'>"
doneEach function call is hermetic and idempotent, so re-running on an already-seeded Space produces no-op revisions (and no noise in the history if nothing changes).
On workload Units (hello-app, hello-statefulset, hello-daemonset, hello-job, hello-cronjob):
for slug in hello-app hello-statefulset hello-daemonset hello-job hello-cronjob; do
for fn in set-container-resources-defaults set-container-probe-defaults \
set-pod-container-security-context-defaults ensure-namespaces; do
cub function set --space skill-examples --unit "$slug" \
--change-desc "Apply $fn to $slug.
User prompt: <verbatim>
Clarifications: <condensed or 'none'>" \
-- "$fn"
done
doneOn hello-ns:
cub function set --space skill-examples --unit hello-ns \
--change-desc "Apply pod-security labels to hello namespace.
User prompt: <verbatim>
Clarifications: <condensed or 'none'>" \
-- set-pod-security-defaultsOn non-workload Units that have namespaced resources (hello-ingress, hello-netpol, hello-rbac, hello-hpa, hello-pdb):
for slug in hello-ingress hello-netpol hello-rbac hello-hpa hello-pdb; do
cub function set --space skill-examples --unit "$slug" \
--change-desc "Apply ensure-namespaces to $slug.
User prompt: <verbatim>
Clarifications: <condensed or 'none'>" \
-- ensure-namespaces
doneOn hello-rbac, also disable auto-mounted service account tokens:
cub function set --space skill-examples --unit hello-rbac \
--change-desc "Disable automountServiceAccountToken on hello-rbac ServiceAccount.
User prompt: <verbatim>
Clarifications: <condensed or 'none'>" \
-- set-automount-service-account-token-falsePoint them at the GUI and the other skills:
cub unit list --space skill-examples — overview of all seeded Units.cub unit get hello-app --space skill-examples --web — inspect the final literal YAML.cub revision list hello-app --space skill-examples --web — see the provenance chain.cub-mutate to bump the image tag", "Try cub-query to find all Deployments in skill-examples", "Set up triggers-and-applygates against skill-examples to see an ApplyGate in action", "Use kubernetes-resources to create a new resource — it'll pull from these examples."cub read + create/update + function do (per frontmatter).cub * delete * (users who want to clean up should do it explicitly), any mutating kubectl, any helm/kustomize.cub organization list fails). Tell them to run cub auth login.cub space get skill-examples — Space exists.cub unit list --space skill-examples — all 11 Units present.cub unit get hello-app --space skill-examples -o yaml — YAML contains resources.requests, all three probes, securityContext, and namespace: confighubplaceholder.cub unit get hello-statefulset --space skill-examples -o yaml — StatefulSet has volumeClaimTemplates and headless Service has clusterIP: None.cub revision list hello-app --space skill-examples — revision history includes the defaults functions with user-prompt-bearing change descriptions.cub space get skill-examples --web — Space overview.cub unit get hello-app --space skill-examples --web — literal Unit YAML.cub revision list hello-app --space skill-examples --web — provenance chain.references/cub-cli.md — CLI discipline + Read/Write permission sets.references/yaml-patterns.md — what makes the scaffolded YAML "good" literal YAML.references/functions-catalog.md — defaults functions used.config-as-data — the doctrine this recipe demonstrates.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.