Install
$ agentstack add skill-openchoreo-skills-openchoreo-developer-gitops ✓ scanned · ✓ verified, works with Claude Code, Cursor, and more.
Security review
✓ PassedNo issues found. Passed automated security review. · v0.1.0 How review works →
- ✓ Prompt-injection patterns
- ✓ Secret / credential exfiltration
- ✓ Dangerous shell & filesystem operations
- ✓ Untrusted network calls
- ✓ Known-malicious package signatures
What it can access
- ● Network access Used
- ✓ Filesystem access No
- ✓ Shell / process execution No
- ✓ Environment & secrets No
- ✓ Dynamic code execution No
From automated source analysis of v0.1.0. “Used” means the capability is present in the source — more access means more to trust, not that it’s unsafe.
Verified badge
Passed review? Show it. Paste this badge into your README, it links to the public security report.
Reliability & compatibility
Declared compatibility
Compatibility is declared by the source manifest. End-to-end runtime verification is coming, see below.
We're building live execution health for every listing: tool-call success rate, median latency, uptime, and last-checked timestamps, measured, not self-reported. It isn't live yet, so we don't show numbers we can't stand behind.
How agent discovery & health will work →About
OpenChoreo Developer GitOps Guide
Git is the source of truth; the cluster is its reflection. This skill writes OpenChoreo application resources to Git (Project / Component / Workload / ComponentRelease / ReleaseBinding), lets Flux reconcile them, and reads cluster state with occ to verify.
This skill is scoped to application-developer GitOps work. Repo scaffolding, Flux wiring, and authoring platform CRDs (ComponentTypes, Traits, Workflows, Environments, DeploymentPipelines, SecretReferences, AuthzRoles, planes) are out of scope — they're done by whoever owns the platform side. Don't edit GitOps-managed resources via occ apply -f or any other direct write path; Flux will revert them on the next reconcile.
Step 0 — Hard preconditions
Two checks; both must pass before proceeding.
# 0a — occ configured against the right cluster
command -v occ && occ config context list && occ namespace list
# 0b — cwd is inside a scaffolded GitOps repo
ls flux 2>/dev/null && ls platform-shared 2>/dev/null && ls namespaces 2>/dev/null
If occ is missing / unconfigured, stop and tell the user to install + configure it. If the cwd isn't a scaffolded repo (no flux/ or clusters//, no platform-shared/, no namespaces/), ask the user for the repo path; if no repo exists, the repo needs scaffolding upstream of this skill — don't start creating components in a non-scaffolded directory.
Always show the active occ context and confirm with the user before any cluster-touching action.
Step 1 — Load concepts (MANDATORY)
Read [references/concepts.md](./references/concepts.md) in full before anything else. Not optional, even if the task looks simple — you'll get the two-resource deploy model / immutability / workload-descriptor tradeoffs / verification ladder wrong from memory. Load once per session; if you catch yourself acting without it, stop and load now.
Load other references on-demand:
- [
references/authoring.md](./references/authoring.md) —occfile-mode generators, docs lookup viascripts/fetch-page.sh, repo paths, git workflow, DCO. - [
scripts/fetch-page.sh](./scripts/fetch-page.sh) — fetch any OpenChoreo docs page by title (resolves againstllms.txt, picks a stable version). Use this for full CRD schemas with optional fields;--section "API Reference"scopes matching to CRD-reference pages,--listdumps the index. - [
references/getting-started.md](./references/getting-started.md) — first-time deploys (no Project yet, or first time the user touches this repo).
What this skill can do
- Onboard a Component — BYO image or source-build → [
recipes/onboard-component-byo.md](./references/recipes/onboard-component-byo.md), [recipes/onboard-component-source-build.md](./references/recipes/onboard-component-source-build.md) - Update a Workload — edit YAML (BYO) or push + rebuild (source-build) → [
recipes/update-workload.md](./references/recipes/update-workload.md) - Configure a Workload — endpoints, env, files, secrets → [
recipes/configure-workload.md](./references/recipes/configure-workload.md) - Attach a PE-authored Trait → [
recipes/attach-trait.md](./references/recipes/attach-trait.md) - Wire component dependencies —
dependencies.endpoints[]with env-var injection → [recipes/connect-components.md](./references/recipes/connect-components.md) - Use a Resource — managed-infrastructure dependency (databases, queues, caches); author
Resource+ResourceReleaseBindingYAML, wiredependencies.resources[]on a Workload → [recipes/use-a-resource.md](./references/recipes/use-a-resource.md) - Generate ComponentReleases / ReleaseBindings via
occfile-mode — produced through the onboard recipes. - Promote releases — single component or bulk (project / all) → [
recipes/promote.md](./references/recipes/promote.md), [recipes/bulk-promote.md](./references/recipes/bulk-promote.md) - Per-environment overrides — replicas, resources, env vars, trait config → [
recipes/override-per-environment.md](./references/recipes/override-per-environment.md) - Soft-undeploy / rollback — flip
spec.state: Undeployor repoint at a priorComponentRelease→ [recipes/promote.md](./references/recipes/promote.md) Rollback - Verify Flux + ReleaseBinding reconciliation → [
recipes/verify-and-debug.md](./references/recipes/verify-and-debug.md)
What this skill cannot do
- Repo scaffolding or Flux wiring. Out of scope; assumes the repo is already scaffolded and Flux is wired.
- Authoring ComponentTypes / ResourceTypes / Traits / Workflows. Platform-side. Pick from what
occ clustercomponenttype list/occ clusterresourcetype list/occ clustertrait list/occ clusterworkflow listshow; the developer references what the platform offers. - Plane registration, AuthzRole / SecretReference authoring. Platform-side.
- Imperative ops — triggering a
WorkflowRun, runtime log tail, pod-level debugging viakubectl exec.WorkflowRundoes not go in Git (pergitops/overview.md); trigger via the UI, webhook, orocc component workflow run. For pod-level runtime debugging, usekubectldirectly against the data plane or the cluster's observability backend. - Editing GitOps-managed resources via
occ apply -for any other direct write path — Flux reverts them on the next reconcile. Always go through Git.
Working style
- Git is the source of truth. Application resources change only through Git.
occ apply -fis reserved for pre-Flux bootstrap (which is a PE concern; this skill rarely needs it). - Use
occfile-mode generators for the four kinds they own (Workload, ComponentRelease, ReleaseBinding, Component scaffold). For everything else (Project, dependency wiring on a Workload, ReleaseBinding overrides, Resource + ResourceReleaseBinding — no generators exist for these), fetch the full schema with./scripts/fetch-page.sh --exact --title "". - Always
git commit -s(DCO is required upstream; harmless on forks). - Every change is a feature branch + PR.
git checkout -bfirst, push that branch, open a PR. occoverkubectlfor OpenChoreo CRDs. When reading / writing Project, Component, Workload, ComponentRelease, ReleaseBinding, Resource, ResourceRelease, ResourceReleaseBinding, Environment, ComponentType, ResourceType, Trait, Workflow, SecretReference — useocc get/list/delete. For runtime logs / build logs, preferocc component logs/occ workflowrun logs. Reach forkubectlonly for non-OpenChoreo resources (Flux CRDs, raw K8s pod state).- Verify, don't assume. Reconciliation is interval-based (
GitRepository: 1m,Kustomization: 5m). Read the result back withocc getafter merge. - Don't open a PR or push without explicit user confirmation. Local commits are reversible; remote-visible actions are not.
- Path A vs Path B for source-build Workloads. Decide once whether
workload.yamlin the source repo is the source of truth (Path A) or direct edits to the Workload CR in the GitOps repo are (Path B). Mixing them is a one-way migration trap. See [recipes/onboard-component-source-build.md](./references/recipes/onboard-component-source-build.md).
Stable guardrails
ComponentReleaseis immutable. Regenerate withocc componentrelease generate; never hand-edit.ResourceReleaseis auto-cut and never in Git. The Resource controller hashesResource.spec + ResourceType.specand cuts a new release on every change. Promote a binding by advancingResourceReleaseBinding.spec.resourceReleasein Git — do not useocc resource promoteagainst a GitOps-managed cluster (it patches the binding imperatively and Flux reverts).Workload.spec.owner(projectName + componentName) is immutable after creation. Pick names carefully.Component.spec.componentTypeandspec.workflowkinds default to cluster-scoped when omitted. Setkind: ComponentType/kind: Workflowexplicitly when referencing namespace-scoped variants.Project.spec.deploymentPipelineRefis an object (since v1.0.0), not a plain string.kinddefaults toDeploymentPipeline.- For third-party / public apps: default to BYO image, not source build. Multi-platform Dockerfiles (
ARG BUILDPLATFORM) commonly fail in the buildah-based builder. If you see exit-125BUILDPLATFORMerrors, switch to BYO. - No plaintext secrets in Git. Use a PE-authored
SecretReference; consume from a Workload viavalueFrom.secretKeyRef. - Workload
env/filesentries need exactly one ofvalueorvalueFrom— not both, not neither. Validation fails otherwise.
Anti-patterns
- Creating a Component without first reading the available
ClusterComponentType/ComponentType/Trait/Workflowlists on the cluster. Author the spec against the live platform shape. - Hand-authoring a Workload spec when
occ workload create --mode file-systemcould do it from a descriptor + image. - Hand-editing a
ComponentReleasefile (it's immutable; regenerate instead). - Adding
workload.yamlto a source repo whose Component's Workload has been iterated on directly (Path B) without first dumping the live Workload and reconstructing the descriptor (one-way destructive migration — overwrites the cluster spec). - Setting
visibility: externalon a service-to-service dependency between Components in the same project —projectis the right default.externalis for public-internet ingress only. - Pushing or opening a PR before the user has seen the commit list.
- Assuming a deployment is healthy because
Ready=True—Readymeans reconciled, not necessarily working. Curl anexternalendpoint or pull logs viaocc component logs -n --envwhen in doubt.
Source & license
This open-source skill is cataloged on AgentStack and links to its original source — we do not rehost the code.
- Author: openchoreo
- Source: openchoreo/skills
- License: Apache-2.0
Install and usage instructions live in the source repository linked above.
Reviews
No reviews yet, be the first.
Write a review
Versions
- v0.1.0 Imported from the upstream source.