agentsclimarketplace

Devops automation

Skill timdevai/proteus/skills/community/from-rohitg00/devops-automation

CI/CD pipeline design with GitHub Actions, Docker, Kubernetes, Helm, and GitOps patternsFrom its SKILL.md

Install
npx -y skills add timdevai/proteus --skill devops-automation

Assembled from the repository path, not quoted from the project. Check it against their README if it does not work.

One thing to look at

  • 1 stars1 stars. Stars are a popularity signal and not a quality one, but at this level it is likely that nobody has read this closely except its author, and you would be relying on your own review.

SKILL.md

6.2 KB, ~1.6k tokens by cl100k_base, as published. Nobody here has run it

DevOps Automation

GitHub Actions Workflow Structure

name: CI/CD
on:
  push:
    branches: [main]
  pull_request:
    branches: [main]

concurrency:
  group: ${{ github.workflow }}-${{ github.ref }}
  cancel-in-progress: true

jobs:
  lint:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v4
      - uses: actions/setup-node@v4
        with:
          node-version: 22
          cache: 'npm'
      - run: npm ci
      - run: npm run lint

  test:
    runs-on: ubuntu-latest
    needs: lint
    strategy:
      matrix:
        node-version: [20, 22]
    steps:
      - uses: actions/checkout@v4
      - uses: actions/setup-node@v4
        with:
          node-version: ${{ matrix.node-version }}
          cache: 'npm'
      - run: npm ci
      - run: npm test -- --coverage
      - uses: actions/upload-artifact@v4
        with:
          name: coverage-${{ matrix.node-version }}
          path: coverage/

  deploy:
    runs-on: ubuntu-latest
    needs: test
    if: github.ref == 'refs/heads/main'
    environment: production
    steps:
      - uses: actions/checkout@v4
      - run: ./deploy.sh

Key patterns:

  • Use concurrency to cancel outdated runs
  • Cache dependencies with setup action's cache option
  • Use needs for job dependencies
  • Gate deploys with environment protection rules
  • Use matrix for cross-version testing

Docker Multi-Stage Builds

FROM node:22-alpine AS deps
WORKDIR /app
COPY package.json package-lock.json ./
RUN npm ci --production

FROM node:22-alpine AS builder
WORKDIR /app
COPY package.json package-lock.json ./
RUN npm ci
COPY . .
RUN npm run build

FROM node:22-alpine AS runner
WORKDIR /app
RUN addgroup -g 1001 appgroup && adduser -u 1001 -G appgroup -S appuser
COPY --from=deps /app/node_modules ./node_modules
COPY --from=builder /app/dist ./dist
COPY --from=builder /app/package.json ./
USER appuser
EXPOSE 3000
HEALTHCHECK --interval=30s --timeout=3s CMD wget -qO- http://localhost:3000/health || exit 1
CMD ["node", "dist/server.js"]

Rules:

  • Use specific image tags, never latest
  • Run as non-root user
  • Copy only necessary files into final stage
  • Add HEALTHCHECK for orchestrator integration
  • Use .dockerignore to exclude node_modules, .git, tests

Kubernetes Deployment Manifest

apiVersion: apps/v1
kind: Deployment
metadata:
  name: api-server
  labels:
    app: api-server
spec:
  replicas: 3
  selector:
    matchLabels:
      app: api-server
  strategy:
    type: RollingUpdate
    rollingUpdate:
      maxSurge: 1
      maxUnavailable: 0
  template:
    metadata:
      labels:
        app: api-server
    spec:
      containers:
        - name: api
          image: registry.example.com/api:v1.2.3
          ports:
            - containerPort: 3000
          resources:
            requests:
              cpu: 100m
              memory: 128Mi
            limits:
              cpu: 500m
              memory: 512Mi
          readinessProbe:
            httpGet:
              path: /health
              port: 3000
            initialDelaySeconds: 5
            periodSeconds: 10
          livenessProbe:
            httpGet:
              path: /health
              port: 3000
            initialDelaySeconds: 15
            periodSeconds: 20
          env:
            - name: DATABASE_URL
              valueFrom:
                secretKeyRef:
                  name: api-secrets
                  key: database-url

Always set resource requests and limits. Always define readiness and liveness probes. Use maxUnavailable: 0 for zero-downtime deploys.

Helm Chart Structure

chart/
  Chart.yaml
  values.yaml
  values-staging.yaml
  values-production.yaml
  templates/
    deployment.yaml
    service.yaml
    ingress.yaml
    hpa.yaml
    _helpers.tpl
# values.yaml
replicaCount: 2
image:
  repository: registry.example.com/api
  tag: latest
  pullPolicy: IfNotPresent
resources:
  requests:
    cpu: 100m
    memory: 128Mi
  limits:
    cpu: 500m
    memory: 512Mi
ingress:
  enabled: true
  host: api.example.com
autoscaling:
  enabled: true
  minReplicas: 2
  maxReplicas: 10
  targetCPUUtilization: 70

Use values-{env}.yaml overrides per environment. Lint charts with helm lint. Test with helm template before deploying.

ArgoCD GitOps Pattern

apiVersion: argoproj.io/v1alpha1
kind: Application
metadata:
  name: api-server
  namespace: argocd
spec:
  project: default
  source:
    repoURL: https://github.com/org/k8s-manifests
    targetRevision: main
    path: apps/api-server
  destination:
    server: https://kubernetes.default.svc
    namespace: production
  syncPolicy:
    automated:
      prune: true
      selfHeal: true
    syncOptions:
      - CreateNamespace=true

GitOps principles:

  • Git is the single source of truth for cluster state
  • All changes go through PRs (no kubectl apply in production)
  • ArgoCD auto-syncs from Git to cluster
  • Enable selfHeal to revert manual cluster changes
  • Separate app code repos from deployment manifest repos

Monitoring Stack

# Prometheus ServiceMonitor
apiVersion: monitoring.coreos.com/v1
kind: ServiceMonitor
metadata:
  name: api-server
spec:
  selector:
    matchLabels:
      app: api-server
  endpoints:
    - port: metrics
      interval: 15s
      path: /metrics

Key metrics to expose:

  • http_request_duration_seconds (histogram) - request latency by route and status
  • http_requests_total (counter) - request count by route and status
  • process_resident_memory_bytes (gauge) - memory usage
  • db_query_duration_seconds (histogram) - database query latency

Alert on: error rate >1%, P99 latency >2s, memory >80% of limit, pod restarts >3 in 10 minutes.

Pipeline Best Practices

  1. Keep CI under 10 minutes (parallelize jobs, cache aggressively)
  2. Run linting and type checking before tests
  3. Use ephemeral environments for PR previews
  4. Pin all action versions to SHA, not tags
  5. Store secrets in GitHub Secrets, never in workflow files
  6. Use OIDC for cloud provider authentication (no long-lived keys)
  7. Tag images with git SHA, not latest
  8. Run security scans (Trivy, Snyk) on container images in CI

What ships with it

Read from the repository

Just SKILL.md. No reference files, no scripts.

Gives 0 of the 12 instructions most automation workflows skills give in ~1.6k tokens

Counted across 813 of the 1,214 authors here whose files we hold, read 2026-09-06

  • Use conventional commit message formatin 38 of 813, across 34 files
  • Write tests before implementing codein 26 of 813, across 12 files
  • Achieve at least 80 percent test coveragein 24 of 813, across 11 files
  • Mock external dependencies for unit testsin 22 of 813, across 10 files
  • Read product marketing context before asking questionsin 21 of 813, across 6 files
  • Implement rollback plans for every deploymentin 21 of 813, across 9 files
  • Follow the arrange-act-assert patternin 20 of 813, across 9 files
  • Delete branches after mergingin 20 of 813, across 18 files
  • Test all edge cases and error scenariosin 20 of 813, across 8 files
  • Use semantic selectors for UI testsin 19 of 813, across 7 files
  • Define sequence type and audience contextin 18 of 813, across 5 files
  • Monitor feature drift and prediction distribution driftin 18 of 813, across 5 files

Grouped from the skills themselves: near-identical wordings counted once, and counted by distinct author, so one author publishing three of these counts once. Length counted with cl100k_base; the agent that loads this file may tokenize it differently.

Keep looking

Skills are one crate of 626,045. Ordering is by how many stacks a row turns up in, so the top of any crate is what has actually been picked rather than what has the most stars.