dot_config/opencode/skill/istio/SKILL.md
Istio service mesh operational safety, ambient mode patterns, mTLS enforcement, Gateway API usage, and AuthorizationPolicy guidance. Use when working with Istio configuration, mesh policies, or service mesh troubleshooting.
npx skillsauth add cmac4603/dotfiiles istioInstall this skill globally with one command. Works with Claude Code, Cursor, and Windsurf.
3 of 9 scanners reported clean
Some scanners were skipped, did not run, or reported a non-clean status. Review each row below.
Istio ambient mode uses ztunnel (L4 proxy per node) instead of sidecar proxies. These two modes are mutually exclusive per namespace.
istio.io/dataplane-mode=ambientistio-injection=enabled or sidecar.istio.io/inject annotations — these are sidecar mode onlykube-system — core cluster componentsistio-system — Istio control plane manages itselfkubectl get ns <name> --show-labels | grep dataplane-modekubectl get pods -n istio-system -l app=ztunnelistioctl proxy-status shows ztunnel and waypoint proxies as connected; ambient workload pods themselves do not appear individually (no sidecar proxy)PeerAuthentication with mode: STRICT mesh-wide — all traffic must be mTLSistio-system, no selector fieldmode: PERMISSIVE unless actively migrating a service that cannot yet support mTLS — document the exception and set a deadlinemode: DISABLE — this turns off mTLS entirely for the targetkubectl get peerauthentication -Aistioctl x describe pod <pod-name>.<namespace>gateway.networking.k8s.io/v1 resources (Gateway, HTTPRoute, ReferenceGrant)networking.istio.io/v1beta1 Gateway or VirtualService — these are deprecated for new deploymentsGateway with multiple listeners over separate Gateways per service — each Gateway creates a separate load balancer (cost implication)ReferenceGrant to allow HTTPRoute in one namespace to reference a Gateway in anotherparentRefs in HTTPRoute to bind to specific Gateway listenerstls.mode: Terminate on the Gateway listener with a certificateRefs pointing to a cert-manager Certificate secretHTTPRoute that returns a 301 redirect to HTTPSselector or targetRefs — an AuthorizationPolicy with no selector applies to ALL workloads in the namespace. The only exception is an intentional namespace-wide default policy (document it as such).from or when condition — an ALLOW policy with empty rules is an implicit allow-allprincipals (mTLS identity) or namespaces to restrict which services can call the targetrequestPrincipals with when conditions on JWT claimsaction: ALLOW policies with specific rules for permitted traffic — Istio implicitly denies everything not matched once any ALLOW policy exists. Do NOT use action: DENY with empty rules (DENY is evaluated before ALLOW and cannot be overridden).action: ALLOW with from.source.principals: ["cluster.local/ns/<ns>/sa/<sa>"]action: ALLOW with from.source.namespaces: ["istio-system"] (or the gateway namespace)istioctl analyze -n <namespace> before and after applying AuthorizationPolicy changesIST0001 (conflicting policies) and IST0118 (unused policies) warningsistioctl version shows client, control plane, and data plane versionsistioctl proxy-statusistioctl analyze before applying any Istio configuration changeistioctl analyze output for warnings — not just errorsproxyVersion match to avoid breakage across Istio upgrades — derive the version from istioctl version:
configPatches:
- applyTo: HTTP_FILTER
match:
proxy:
# Replace <minor> with your deployed Istio minor version
proxyVersion: "^1\\.<minor>\\..*"
sidecar.istio.io/inject annotations in ambient-mode namespaces (mode conflict)PeerAuthentication with mode: PERMISSIVE without documented migration planPeerAuthentication with mode: DISABLE (turns off mTLS)networking.istio.io Gateway alongside Gateway API resources for the same hostnameAuthorizationPolicy with action: ALLOW and empty rules (implicit allow-all)AuthorizationPolicy with action: DENY and empty rules (unrecoverable block — DENY evaluates before ALLOW)AuthorizationPolicy without selector or targetRefs without documented justification (applies to entire namespace)EnvoyFilter without proxyVersion match (breaks on Istio upgrades)istioctl analyze before applying configuration changesdevelopment
Comprehensive Hyprland Wayland compositor configuration skill. Use when users need help with: (1) Creating or modifying Hyprland config files, (2) Setting up keybindings, window rules, monitors, or animations, (3) Troubleshooting Hyprland configuration issues, (4) Searching for valid config variables and values, (5) Understanding Hyprland syntax and structure, (6) Setting up multi-monitor configurations, (7) Configuring input devices, decorations, or layouts, or (8) Any other Hyprland-related configuration tasks.
tools
Documentation for the htmx JavaScript library (attributes, events, headers, API, extensions, examples, migration guides, server examples). Use when you need accurate htmx syntax/behavior or to locate the right reference page for an htmx question.
development
Maintainer-only workflow for handling GitHub Secret Scanning alerts on OpenClaw. Use when Codex needs to triage, redact, clean up, and resolve secret leakage found in issue comments, issue bodies, PR comments, or other GitHub content.
development
Maintainer workflow for OpenClaw releases, prereleases, changelog release notes, and publish validation. Use when Codex needs to prepare or verify stable or beta release steps, align version naming, assemble release notes, check release auth requirements, or validate publish-time commands and artifacts.