Communitygithub.com

kubernetes-patterns

Modèles de charge de travail Kubernetes, gestion des ressources, RBAC, sondes, autoscaling, gestion ConfigMap/Secret et débogage kubectl pour des déploiements de qualité production. À utiliser lors de l'écriture ou de la relecture de manifestes Kubernetes, ou du débogage des sondes, RBAC, autoscaling ou limites de ressources.

Qu'est-ce que kubernetes-patterns ?

Ce skill fournit des modèles YAML prêts à l'emploi et de qualité production pour déployer, gérer et déboguer des charges de travail sur Kubernetes. Il couvre les modèles de déploiement complets avec contextes de sécurité, stratégies de mise à jour progressive, sondes de démarrage, de vivacité et de préparation, et injection d'environnement depuis ConfigMap/Secret. Il inclut également des directives pour la gestion des ressources (requêtes/limites), la configuration RBAC avec le principe du moindre privilège, l'autoscaling horizontal (HPA), les PodDisruptionBudgets, les Jobs et CronJobs, ainsi qu'une antisèche kubectl pour le débogage (logs, exec, rollback, port-forward, dry-run). Le skill est conçu pour être activé chaque fois que vous écrivez ou révisez des manifestes Kubernetes, que vous configurez des sondes, le RBAC, l'autoscaling, les limites de ressources, ou que vous diagnostiquez des problèmes comme CrashLoopBackOff, OOMKilled ou des pods en attente. Il propose également une liste d'anti-patrons et une checklist de sécurité, fiabilité et observabilité.

Compatible avec~Claude Code~Codex CLI~Cursor
npx skills add https://github.com/affaan-m/everything-claude-code/tree/main/skills/kubernetes-patterns

Demander à votre IA préférée

Ouvre une nouvelle conversation avec cette compétence d'agent déjà préchargée.

Documentation

Kubernetes Patterns

Modèles Kubernetes de qualité production pour déployer, gérer et déboguer des charges de travail de manière fiable.

Quand Activer

  • Rédiger des manifests Kubernetes (Deployments, Services, Ingress, Jobs)
  • Configurer les demandes/limites de ressources, les sondes liveness/readiness
  • Mettre en place RBAC, namespaces ou ServiceAccounts
  • Gérer la configuration et les secrets dans K8s
  • Déboguer CrashLoopBackOff, OOMKilled, pods en attente ou erreurs de pull d'image
  • Configurer HPA (Horizontal Pod Autoscaler) ou PodDisruptionBudgets
  • Vérifier la sécurité ou la correction de YAML K8s

Quand Utiliser

Identique à Quand Activer ci-dessus. Cet alias satisfait aux conventions du format skill du dépôt. Utilisez cette compétence chaque fois que vous écrivez, révisez ou déboguez du YAML et des charges de travail Kubernetes.

Comment ça Marche

Cette compétence fournit des modèles YAML prêts à l'emploi, de qualité production et des commandes de débogage kubectl organisés par tâche :

  1. Modèle de Déploiement — Un Deployment de production entièrement configuré avec contexte de sécurité, stratégie de mise à jour progressive, les trois types de sondes, limites de ressources et injection d'environnement depuis ConfigMap/Secret.
  2. Sondes — Tableau de décision pour startup vs liveness vs readiness, avec le calcul correct failureThreshold × periodSeconds.
  3. Services & Ingress — Modèles ClusterIP, LoadBalancer et Ingress TLS avec annotations cert-manager.
  4. ConfigMaps & Secrets — Conseils sur envFrom, montage de fichiers et secrets externes.
  5. Gestion des ressources — Règles empiriques pour demandes vs limites par type de charge de travail (API web, JVM, worker, sidecar).
  6. RBAC — Chaîne ServiceAccount → Role → RoleBinding au moindre privilège.
  7. HPA & PDB — Configurations pour l'autoscaling et la sécurité lors des drains de nœuds.
  8. Jobs & CronJobs — Modèles pour charges de travail ponctuelles et planifiées avec restartPolicy correct.
  9. Aide-mémoire kubectl — Commandes pour logs, exec, rollback, port-forward, dry-run et diagnostic d'erreurs courantes.
  10. Anti-modèles & liste de contrôle — Ce qu'il NE PAS faire, et une checklist de sécurité/fiabilité/observabilité.

Exemples

Voir les sections ci-dessous pour des exemples complets et exécutables. Références rapides :

TâcheAller à
YAML de Déploiement production completModèles de Charge de Travail de Base
Configuration des sondesSondes
Configuration RBAC au moindre privilègeRBAC
Déboguer un CrashLoopBackOffAide-mémoire de Débogage kubectl
AutoscalingHPA

Modèles de Charge de Travail de Base

Déploiement — Modèle de Production

apiVersion: apps/v1
kind: Deployment
metadata:
  name: my-app
  namespace: my-namespace
  labels:
    app: my-app
    version: "1.0.0"
spec:
  replicas: 3
  selector:
    matchLabels:
      app: my-app
  strategy:
    type: RollingUpdate
    rollingUpdate:
      maxSurge: 1          # Autorise 1 pod supplémentaire pendant la mise à jour
      maxUnavailable: 0    # Ne jamais descendre en dessous du nombre souhaité
  template:
    metadata:
      labels:
        app: my-app
        version: "1.0.0"
    spec:
      # Contexte de sécurité au niveau du pod
      securityContext:
        runAsNonRoot: true
        runAsUser: 1001
        fsGroup: 1001

      # Arrêt gracieux
      terminationGracePeriodSeconds: 30

      containers:
        - name: my-app
          image: ghcr.io/org/my-app:1.0.0   # Ne jamais utiliser :latest
          imagePullPolicy: IfNotPresent

          ports:
            - containerPort: 8080
              protocol: TCP

          # Les demandes ET les limites de ressources sont obligatoires
          resources:
            requests:
              cpu: "100m"
              memory: "128Mi"
            limits:
              cpu: "500m"
              memory: "256Mi"

          # Contexte de sécurité du conteneur
          securityContext:
            allowPrivilegeEscalation: false
            readOnlyRootFilesystem: true
            capabilities:
              drop:
                - ALL

          # Sondes (voir la section Sondes ci-dessous)
          startupProbe:
            httpGet:
              path: /health
              port: 8080
            failureThreshold: 30
            periodSeconds: 5
          livenessProbe:
            httpGet:
              path: /health
              port: 8080
            initialDelaySeconds: 0
            periodSeconds: 30
            failureThreshold: 3
          readinessProbe:
            httpGet:
              path: /ready
              port: 8080
            initialDelaySeconds: 5
            periodSeconds: 10
            failureThreshold: 2

          # Environnement depuis ConfigMap et Secret
          envFrom:
            - configMapRef:
                name: my-app-config
          env:
            - name: DB_PASSWORD
              valueFrom:
                secretKeyRef:
                  name: my-app-secrets
                  key: db-password

          # Répertoire tmp accessible en écriture quand readOnlyRootFilesystem: true
          volumeMounts:
            - name: tmp
              mountPath: /tmp

      volumes:
        - name: tmp
          emptyDir: {}

Sondes — Liveness, Readiness, Startup

Comprendre quand utiliser chaque sonde est crucial :

SondeAction en cas d'échecUtilisation
startupProbeTue le conteneur si lent à démarrerApplications à démarrage lent (JVM, Python)
livenessProbeRedémarre le conteneurDétection d'interblocage / processus bloqué
readinessProbeRetire des points de terminaison du ServiceIndisponibilité temporaire (reconnexion DB)
# Modèle correct : startupProbe couvre le démarrage lent,
# puis liveness/readiness prennent le relais
startupProbe:
  httpGet:
    path: /health
    port: 8080
  failureThreshold: 30  # 30 * 5s = 150s de temps max de démarrage
  periodSeconds: 5

livenessProbe:
  httpGet:
    path: /health
    port: 8080
  periodSeconds: 30
  failureThreshold: 3   # 3 * 30s = 90s avant redémarrage

readinessProbe:
  httpGet:
    path: /ready         # Point de terminaison séparé : vérifie DB, cache, etc.
    port: 8080
  periodSeconds: 10
  failureThreshold: 2
# INVALIDE : initialDelaySeconds sans startupProbe
# Si l'application met 60s à démarrer, utilisez plutôt une startupProbe
livenessProbe:
  httpGet:
    path: /health
    port: 8080
  initialDelaySeconds: 60   # MAUVAIS : Attente arbitraire, condition de course

Services et Ingress

Types de Service

# ClusterIP (par défaut) — interne uniquement
apiVersion: v1
kind: Service
metadata:
  name: my-app
  namespace: my-namespace
spec:
  selector:
    app: my-app
  ports:
    - port: 80
      targetPort: 8080
      protocol: TCP
  type: ClusterIP
# LoadBalancer — trafic externe (fournisseurs de cloud)
spec:
  type: LoadBalancer
  ports:
    - port: 443
      targetPort: 8080

Ingress avec TLS

apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
  name: my-app
  namespace: my-namespace
  annotations:
    nginx.ingress.kubernetes.io/ssl-redirect: "true"
    cert-manager.io/cluster-issuer: "letsencrypt-prod"
spec:
  ingressClassName: nginx
  tls:
    - hosts:
        - myapp.example.com
      secretName: my-app-tls
  rules:
    - host: myapp.example.com
      http:
        paths:
          - path: /
            pathType: Prefix
            backend:
              service:
                name: my-app
                port:
                  number: 80

ConfigMaps et Secrets

ConfigMap — Configuration non sensible

apiVersion: v1
kind: ConfigMap
metadata:
  name: my-app-config
  namespace: my-namespace
data:
  LOG_LEVEL: "info"
  APP_ENV: "production"
  MAX_CONNECTIONS: "100"
  # Monté comme fichier pour une configuration complexe
  app.yaml: |
    server:
      port: 8080
      timeout: 30s
# Monter ConfigMap comme un fichier
volumes:
  - name: config
    configMap:
      name: my-app-config
      items:
        - key: app.yaml
          path: app.yaml
volumeMounts:
  - name: config
    mountPath: /etc/app
    readOnly: true

Secrets — Données sensibles

# Créer un secret à partir de littéraux (CLI, puis stocker dans Vault/SOPS)
kubectl create secret generic my-app-secrets \
  --from-literal=db-password='s3cr3t' \
  --namespace=my-namespace \
  --dry-run=client -o yaml | kubectl apply -f -
apiVersion: v1
kind: Secret
metadata:
  name: my-app-secrets
  namespace: my-namespace
type: Opaque
# Les valeurs sont encodées en base64 (PAS chiffrées — utilisez Sealed Secrets ou ESO pour un vrai chiffrement)
data:
  db-password: czNjcjN0  # base64 de 's3cr3t'

Important : Les Secrets Kubernetes bruts ne sont qu'encodés en base64, pas chiffrés au repos sauf si votre cluster a un chiffrement configuré. Utilisez Sealed Secrets ou External Secrets Operator pour la production.


Demandes et Limites de Ressources

resources:
  requests:       # Le planificateur utilise ceci pour placer le pod
    cpu: "100m"   # 100 millicores = 0.1 CPU
    memory: "128Mi"
  limits:         # Le conteneur est tué/limite au-dessus de ce seuil
    cpu: "500m"
    memory: "256Mi"

Règles empiriques :

Type de Charge de TravailDemande CPUDemande MémoireRemarques
API Web100–250m128–256MiDéfinissez les limites 2 à 4 fois les demandes
Worker/consommateur250–500m256–512MiLimite mémoire = demande pour la prévisibilité
Application JVM500m–1512Mi–2GiLaissez de la marge au-dessus de -Xmx pour la surcharge JVM
Sidecar10–50m32–64MiMaintenez au minimum
# INVALIDE : Pas de demandes ni de limites — planification imprévisible, évictions OOM
containers:
  - name: app
    image: myapp:latest
    # Missing resources: {} — dangereux en production

# INVALIDE : Limites sans demandes — les demandes prennent les valeurs des limites, sur-réserve de capacité
resources:
  limits:
    cpu: "2"
    memory: "1Gi"
  # demandes manquantes — prendront par défaut les valeurs des limites

RBAC — Rôles et ServiceAccounts

Principe du Moindre Privilège

Deux modèles selon si l'application appelle l'API Kubernetes :

Modèle A — L'application n'a PAS besoin de l'API Kubernetes (la plupart des applications)

Désactivez le montage automatique du token pour le ServiceAccount. Le Role/RoleBinding ne sont pas nécessaires.

# ServiceAccount avec token désactivé — valeur par défaut la plus sûre
apiVersion: v1
kind: ServiceAccount
metadata:
  name: my-app-sa
  namespace: my-namespace
automountServiceAccountToken: false   # Aucun token API K8s injecté dans les pods
# Référence dans le déploiement — pas de token, pas d'accès API
spec:
  template:
    spec:
      serviceAccountName: my-app-sa
      automountServiceAccountToken: false   # Double sécurité : également défini au niveau du pod

Modèle B — L'application a BESOIN de l'API Kubernetes (opérateurs, contrôleurs, observateurs de configuration)

Activez le token et n'accordez que les permissions réellement nécessaires.

# 1. ServiceAccount — activer le token pour ce SA
apiVersion: v1
kind: ServiceAccount
metadata:
  name: my-app-sa
  namespace: my-namespace
automountServiceAccountToken: true    # Token requis : l'application appelle l'API K8s
# 2. Role — n'accorder que ce dont l'application a besoin (scope namespace)
apiVersion: rbac.authorization.k8s.io/v1
kind: Role
metadata:
  name: my-app-role
  namespace: my-namespace
rules:
  - apiGroups: [""]
    resources: ["configmaps"]
    verbs: ["get", "list", "watch"]    # Lecture seule, ressource spécifique
  - apiGroups: [""]
    resources: ["secrets"]
    resourceNames: ["my-app-secrets"]  # Restreindre au secret spécifique par nom
    verbs: ["get"]
# 3. Lier le Role au ServiceAccount
apiVersion: rbac.authorization.k8s.io/v1
kind: RoleBinding
metadata:
  name: my-app-rolebinding
  namespace: my-namespace
subjects:
  - kind: ServiceAccount
    name: my-app-sa
    namespace: my-namespace
roleRef:
  kind: Role
  apiGroup: rbac.authorization.k8s.io
  name: my-app-role
# 4. Référencer SA dans le déploiement
spec:
  template:
    spec:
      serviceAccountName: my-app-sa
      # automountServiceAccountToken par défaut à true depuis SA — le token est injecté

Horizontal Pod Autoscaler (HPA)

apiVersion: autoscaling/v2
kind: HorizontalPodAutoscaler
metadata:
  name: my-app-hpa
  namespace: my-namespace
spec:
  scaleTargetRef:
    apiVersion: apps/v1
    kind: Deployment
    name: my-app
  minReplicas: 2      # Toujours au moins 2 pour la HA
  maxReplicas: 10
  metrics:
    - type: Resource
      resource:
        name: cpu
        target:
          type: Utilization
          averageUtilization: 70    # Monter en charge quand CPU moyen > 70%
    - type: Resource
      resource:
        name: memory
        target:
          type: Utilization
          averageUtilization: 80

HPA nécessite que resources.requests soit défini sur tous les conteneurs — il calcule l'utilisation comme actuel / demande.


PodDisruptionBudget (PDB)

Empêcher que trop de pods ne tombent pendant les drains de nœuds ou les mises à jour progressives :

apiVersion: policy/v1
kind: PodDisruptionBudget
metadata:
  name: my-app-pdb
  namespace: my-namespace
spec:
  minAvailable: 2           # OU utiliser maxUnavailable: 1
  selector:
    matchLabels:
      app: my-app

Namespaces et Multitenance

# Créer un namespace avec des quotas de ressources
kubectl create namespace my-namespace

# Appliquer ResourceQuota pour limiter la consommation du namespace
kubectl apply -f - <<EOF
apiVersion: v1
kind: ResourceQuota
metadata:
  name: my-namespace-quota
  namespace: my-namespace
spec:
  hard:
    requests.cpu: "4"
    requests.memory: 4Gi
    limits.cpu: "8"
    limits.memory: 8Gi
    pods: "20"
EOF

Jobs et CronJobs

# Job ponctuel (migration DB, traitement de données)
apiVersion: batch/v1
kind: Job
metadata:
  name: db-migrate
  namespace: my-namespace
spec:
  backoffLimit: 3          # Réessayer jusqu'à 3 fois en cas d'échec
  ttlSecondsAfterFinished: 3600   # Auto-suppression après 1h
  template:
    spec:
      restartPolicy: OnFailure    # Jamais pour les Jobs (pas Always)
      containers:
        - name: migrate
          image: ghcr.io/org/my-app:1.0.0
          command: ["python", "manage.py", "migrate"]
          resources:
            requests:
              cpu: "100m"
              memory: "256Mi"
            limits:
              cpu: "500m"
              memory: "512Mi"
# CronJob (tâche planifiée)
apiVersion: batch/v1
kind: CronJob
metadata:
  name: cleanup-job
  namespace: my-namespace
spec:
  schedule: "0 2 * * *"          # Tous les jours à 2h du matin
  jobTemplate:
    spec:
      backoffLimit: 2
      template:
        spec:
          restartPolicy: OnFailure
          containers:
            - name: cleanup
              image: ghcr.io/org/cleanup:1.0.0
              command: ["cleanup", "--days=7"]
              resources:
                requests:
                  cpu: "100m"
                  memory: "128Mi"
                limits:
                  cpu: "200m"
                  memory: "256Mi"

Aide-mémoire de Débogage kubectl

# Voir l'état des pods (descriptions complètes)
kubectl get pods -n my-namespace
kubectl describe pod <pod-name> -n my-namespace

# Logs
kubectl logs <pod-name> -n my-namespace
kubectl logs --tail=50 <pod-name> -n my-namespace   # Dernières 50 lignes
kubectl logs -f <pod-name> -n my-namespace          # Suivre les logs
kubectl logs <pod-name> -c <container-name> -n my-namespace  # Conteneur spécifique

# Exécuter des commandes dans un conteneur
kubectl exec -it <pod-name> -n my-namespace -- /bin/sh
kubectl exec -it <pod-name> -c <container-name> -n my-namespace -- /bin/bash

# Port-Forward local (débogage sans Service)
kubectl port-forward pod/<pod-name> 8080:8080 -n my-namespace
kubectl port-forward deployment/my-app 8080:8080 -n my-namespace

# Voir les événements triés par heure
kubectl get events -n my-namespace --sort-by='.lastTimestamp'
kubectl get events -n my-namespace --field-selector involvedObject.name=<pod-name>

# Analyse YAML (dry-run en local)
kubectl run my-pod --image=nginx --dry-run=client -o yaml
kubectl create deployment my-app --image=my-app --dry-run=client -o yaml

# Rollback du déploiement
kubectl rollout undo deployment/my-app -n my-namespace
kubectl rollout history deployment/my-app -n my-namespace   # Voir l'historique des révisions

# Test de connectivité du Service (pod éphémère dans le cluster)
kubectl run tmp --image=nicolaka/netshoot -it --rm -- curl http://service-name:8080

# Diagnostic des pods bloqués
kubectl describe pod <pending-pod>
kubectl get pod <pending-pod> -o yaml   # Regarder status.conditions

# Voir l'utilisation des ressources des nœuds
kubectl top nodes
kubectl top pods -n my-namespace

Anti-modèles et Liste de Contrôle

Ce qu'il NE PAS Faire (Anti-modèles)

  1. Ne jamais utiliser d'image :latest — déclarez toujours un tag sémantique ou un hash d'image.
  2. Ne jamais exécuter en tant que root — définissez runAsNonRoot: true et définissez runAsUser.
  3. Ne jamais omettre les demandes de ressources — le planificateur et HPA en ont besoin.
  4. Ne pas définir de limites sans demandes — vous sur-réservez la capacité de la grappe.
  5. Ne pas utiliser de token ServiceAccount si votre application ne lit pas l'API K8s — désactivez-le.
  6. Ne pas utiliser initialDelaySeconds pour les démarrages lents — utilisez plutôt startupProbe.
  7. Ne pas monter le Secret entier si un seul champ est nécessaire — utilisez keyRef.
  8. Ne pas exposer les services sur NodePort en production — utilisez LoadBalancer ou Ingress.
  9. Ne pas ignorer les pods en CrashLoopBackOff — examinez kubectl logs et kubectl describe.
  10. Ne pas oublier de configurer PodDisruptionBudget pour les charges de travail avec état ou critiques.

Liste de Contrôle de Production

Sécurité :

  • runAsNonRoot: true
  • readOnlyRootFilesystem: true (avec volume tmp writable)
  • capabilities: drop: [ALL]
  • allowPrivilegeEscalation: false
  • automountServiceAccountToken: false (sauf si l'application appelle l'API)
  • Les rôles RBAC sont spécifiques à une ressource et en lecture seule si possible

Fiabilité :

  • HPA configuré avec minReplicas >= 2
  • PodDisruptionBudget configuré
  • startupProbe pour les applications à démarrage lent
  • readinessProbe avec un point de terminaison /ready séparé
  • rollingUpdate maxSurge et maxUnavailable corrects
  • backoffLimit sur les Jobs

Observabilité :

  • readinessProbe connecte la base de données/cache
  • Les logs sont stdout/stderr (pas de fichiers)
  • Les métriques Prometheus sont exposées sur un port séparé
  • terminationGracePeriodSeconds >= temps de vidange attendu

Contrôle des ressources :

  • Les demandes CPU sont basées sur l'utilisation au repos
  • Les limites CPU sont 2 à 4 fois les demandes
  • Les demandes mémoire sont basées sur le pic d'utilisation
  • Les limites mémoire = demandes (pour la prévisibilité, sauf JVM)

Individual skills in this repo

This repo contains 20 individual skills — each has its own dedicated page.

accessibility

Design, implement, and audit inclusive digital products using WCAG 2.2 Level AA. Use when building or auditing UI that must meet WCAG 2.2 Level AA, or when reviewing a change for keyboard, contrast, or screen-reader support.

affaan-m/claude-api

Anthropic Claude API patterns for Python and TypeScript. Covers Messages API, streaming, tool use, vision, extended thinking, batches, prompt caching, and Claude Agent SDK. Use when building applications with the Claude API or Anthropic SDKs.

affaan-m/everything-claude-code

End-to-end marketing campaign planning and execution. Covers audience research, positioning, campaign angle definition, landing page copy, email sequences, social posts, ad copy, short-form video scripts, and content calendars. Use as the orchestration layer for multi-channel product launches. Use when planning or executing a multi-channel product launch, or producing landing page, email, social, or ad copy.

affaan-m/everything-claude-code

Development conventions and patterns for everything-claude-code. JavaScript project with conventional commits.

affaan-m/everything-claude-code-conventions

Development conventions and patterns for everything-claude-code. JavaScript project with conventional commits.

affaan-m/frontend-design

Create distinctive, production-grade frontend interfaces with high design quality. Use when the user asks to build web components, pages, or applications and the visual direction matters as much as the code quality.

affaan-m/gget

gget CLI and Python workflow for quick genomic database queries, sequence lookup, BLAST-style searches, enrichment checks, and reproducible bioinformatics evidence logs.

affaan-m/literature-review

Systematic literature-review workflow for academic, biomedical, technical, and scientific topics, including search planning, source screening, synthesis, citation checks, and evidence logging.

affaan-m/motion-ui

Production-ready UI motion system for React/Next.js. Use when implementing animations, transitions, or motion patterns.

affaan-m/project-guidelines-example

Example project-specific skill template based on a real production application.

affaan-m/pubmed-database

Direct PubMed and NCBI E-utilities search workflows for biomedical literature, MeSH queries, PMID lookup, citation retrieval, and API-backed literature monitoring.

affaan-m/scholar-evaluation

Structured scholarly-work evaluation for papers, proposals, literature reviews, methods sections, evidence quality, citation support, and research-writing feedback.

affaan-m/uspto-database

USPTO patent and trademark data workflow for official record lookup, PatentSearch queries, TSDR checks, assignment data, and reproducible IP research logs.

agent-architecture-audit

Full-stack diagnostic for agent and LLM applications. Audits the 12-layer agent stack for wrapper regression, memory pollution, tool discipline failures, hidden repair loops, and rendering corruption. Produces severity-ranked findings with code-first fixes. Essential for developers building agent applications, autonomous loops, or any LLM-powered feature. Use when an agent or LLM feature misbehaves and the failing layer is unknown, or before shipping an agent stack.

agent-eval

Head-to-head comparison of coding agents (Claude Code, Aider, Codex, etc.) on custom tasks with pass rate, cost, time, and consistency metrics. Use when choosing between coding agents, or when a change to an agent setup needs measured pass rate, cost, and time rather than an impression.

agent-harness-construction

Design and optimize AI agent action spaces, tool definitions, and observation formatting for higher completion rates. Use when defining or revising an agent

agentic-engineering

Operate as an agentic engineer using eval-first execution, decomposition, and cost-aware model routing. Use when planning or executing engineering work that agents will carry out end to end.

agentic-os

Build persistent multi-agent operating systems on Claude Code. Covers kernel architecture, specialist agents, slash commands, file-based memory, scheduled automation, and state management without external databases. Use when building a persistent multi-agent system on Claude Code with its own memory, commands, and scheduling.

agent-introspection-debugging

Structured self-debugging workflow for AI agent failures using capture, diagnosis, contained recovery, and introspection reports. Use when an agent run fails and you need a reproducible diagnosis instead of a retry.

agent-payment-x402

Add x402 payment execution to AI agents with per-task budgets, spending controls, and non-custodial wallets. Supports Base through agentwallet-sdk and X Layer through OKX Payments / OKX Agent Payments Protocol. Use when an agent must pay for something itself and needs per-task budgets, spending controls, and a non-custodial wallet.

Skills associés