agentleFS
ShivangkesarwaniShivangkesarwani/Nexulyt-AI-OS/skills/deployment-engineer/SKILL.md

deployment-engineer

Skill0 starsChanged 4 months agoMITView on GitHub

  • Reads credentials

9 other projects use a version of this.

Adopted by

Most recently taken up by

Used with

Projects with it also use ab-test-analysis and web-design-guidelines.

Other files people use alongside this one.

Files found in the same public projects as a version of this one, more often than they turn up anywhere else. Each project counts once, large collections count for less, and this file's own repository is left out.
  • About-IntelligenceSkill

    ab-test-analysis

    Analyze A/B test results with statistical significance, sample size validation, confidence intervals, and ship/extend/stop recommendations.

    Also in 3 projects that use this

  • VercelSkill

    web-design-guidelines

    Review UI code for Web Interface Guidelines compliance. Use when asked to "review my UI", "check accessibility", "audit design", "review UX", or "check my site against best practices".

    Also in 3 projects that use this

The file

Show its rules and text

We split this skill into the rules it gives an agent

57 rules. 0 are common, 42 are distinctive, and 15 are very specific to this project.

  • 0

    Common

    Most of the 8 edited versions we read keep these.

  • 42

    Distinctive

    This author's own choices. Worth a look.

  • 15

    Very specific

    Tied to their project's names, files or tools. Probably skip.

  • Common
  • Distinctive
  • Very specific
  • could be automatic: a setting could enforce it
  1. Distinctive:

    Never modify application business logic or architecture during deployment tasks.

    line 24
  2. Distinctive:

    Do not proceed to production deployment without verifying all pre-deployment checklist items.

    line 25
  3. Distinctive:

    Every deployment must be reversible.

    line 26
  4. Distinctive:

    Treat secrets as zero-trust: never log, hardcode, or expose environment credentials in any configuration file.

    line 28
  5. Distinctive:

    Every deployment decision must prioritize user impact minimization above deployment speed.

    line 46
  6. Distinctive:

    Immutability: Every deployment artifact must be immutable and versioned.

    line 74
  7. Distinctive:

    Reversibility: Every deployment must have a tested, documented rollback path executable in under 5 minutes.

    line 75
  8. Distinctive:

    Treat infrastructure definitions as code: version-control all Kubernetes manifests, Terraform files, Helm charts, and CI configurations.

    line 80
  9. Distinctive:

    Never deploy directly to production from a local developer machine.

    line 81
  10. Distinctive:

    Every production release must have a release plan specifying: version, deployment window, impacted services, rollback trigger conditions, …

    line 125
  11. Very specific:

    Use semantic versioning (MAJOR.MINOR.PATCH) for all release tags.

    line 130
  12. Very specific:

    All production images must be built from a pinned base image version (e.g., node:20.15.1-alpine3.20)—never node:latest.

    line 164
  13. Distinctive:

    Every pipeline must enforce: lint → type check → unit tests → integration tests → build → security scan → push → deploy.

    line 202
  14. Very specific:

    Not setting --timeout on kubectl rollout status, causing pipelines to hang indefinitely on failed deployments.

    line 270
  15. Very specific:

    Always use .dockerignore to exclude node_modules, .env, .git, and build artifacts from the image context.

    line 280
  16. Very specific:

    Not creating a .dockerignore file, causing Docker to send the entire project directory (including node_modules and .env files) as build …

    line 298
  17. Distinctive:

    Never use Docker Compose in production for high-availability workloads.

    line 309
  18. Very specific:

    Always pin service image versions in docker-compose.yml—never use :latest.

    line 310
  19. Distinctive:

    Use named volumes for persistent data (databases) instead of bind mounts.

    line 311
  20. Distinctive:

    Use namespaces to isolate workloads by environment and team.

    line 375
  21. Very specific:

    Not setting maxUnavailable: 0 in the rolling update strategy, allowing all replicas to be unavailable simultaneously during updates.

    line 438
  22. Distinctive:

    Use Helm for any Kubernetes application deployed to more than one environment.

    line 449
  23. Very specific:

    Use Vercel for Next.js, React, and static site deployments requiring global edge distribution.

    line 494
  24. Very specific:

    Use Railway for Node.js, Python, or container-based backend services requiring managed PostgreSQL or Redis.

    line 531
  25. Distinctive:

    Use Netlify for static sites, Gatsby, Hugo, or Eleventy deployments.

    line 562
  26. Distinctive:

    Use Netlify environment variables (not committed files) for build-time secrets.

    line 564
  27. Distinctive:

    Use OIDC-based GitHub Actions AWS role assumption for pipeline credentials—never static IAM access keys.

    line 599
  28. Distinctive:

    Use Azure Managed Identity for service-to-service authentication instead of connection strings or keys.

    line 638
  29. Distinctive:

    Not enabling Diagnostic Settings on Azure resources, losing infrastructure-level logs during incident investigations.

    line 644
  30. Distinctive:

    Use Workload Identity Federation for CI/CD authentication to GCP—never download service account JSON keys.

    line 654
  31. Distinctive:

    Use Cloud SQL Auth Proxy for secure database connectivity without exposing public IP addresses.

    line 656
  32. Distinctive:

    Not configuring VPC-native networking for GKE clusters, complicating private service communication.

    line 660
  33. Distinctive:

    Use DigitalOcean App Platform for managed, auto-scaling container deployments without managing infrastructure.

    line 670
  34. Distinctive:

    Use Cloudflare Workers for edge middleware: authentication token validation, A/B routing, and rate limiting.

    line 684
  35. Distinctive:

    Never expose application server ports directly to the public internet.

    line 721
  36. Very specific:

    Always redirect HTTP to HTTPS using a 301 Permanent Redirect.

    line 731
  37. Very specific:

    Use Let's Encrypt with certbot or a managed certificate service (AWS ACM, Cloudflare) for all production certificates.

    line 783
  38. Distinctive:

    Not configuring automatic certificate renewal, causing production HTTPS failures when certificates expire.

    line 789
  39. Distinctive:

    Use low TTL values (300 seconds) during migrations and increase to 3600 seconds after stabilization.

    line 799
  40. Very specific:

    Always verify DNS propagation using dig or nslookup from multiple geographic locations after changes.

    line 801
  41. Distinctive:

    Verify domain ownership through DNS verification before provisioning certificates.

    line 831
  42. Distinctive:

    Test domain resolution from at least three geographically distinct DNS resolvers before declaring configuration complete.

    line 833
  43. Distinctive:

    Never commit secrets, API keys, or credentials to version control under any circumstances.

    line 855
  44. Distinctive:

    Never rotating secrets, leaving long-lived credentials in place that accumulate exposure risk over time.

    line 887
  45. Very specific:

    Document every required environment variable in .env.example with a description and example value (never a real value).

    line 898
  46. Distinctive:

    Keep the previous (Blue) environment running for a minimum of 30 minutes after the switch to enable instant rollback.

    line 1007
  47. Distinctive:

    Use feature flags or weighted routing (Cloudflare, Kubernetes Ingress, AWS ALB) to control canary traffic percentage.

    line 1032
  48. Distinctive:

    Every deployment release plan must document the exact rollback command or procedure.

    line 1076
  49. Distinctive:

    Test the rollback procedure in staging before executing the production deployment.

    line 1078
  50. Distinctive:

    Test disaster recovery procedures in a full DR drill at minimum once per quarter.

    line 1102
  51. Distinctive:

    Test backup restoration quarterly—an untested backup is not a backup.

    line 1123
  52. Distinctive:

    Use Spot or Preemptible instances for stateless, fault-tolerant workloads (batch jobs, workers).

    line 1205
  53. Distinctive:

    Not setting S3 lifecycle policies, accumulating years of log files and expired backup snapshots at storage cost.

    line 1210
  54. Distinctive:

    Run a smoke load test against the staging environment with the new version before promoting to production.

    line 1220
  55. Distinctive:

    Verify P95 latency is within the SLO target (e.g., < 250ms) at expected peak load before approving the production rollout.

    line 1221
  56. Very specific:

    Run a container image vulnerability scan (Trivy) in the CI pipeline and fail the build if CRITICAL severity CVEs are present.

    line 1232
  57. Very specific:

    Verify that no secrets, API keys, or credentials are present in the built Docker image layers using docker history inspection.

    line 1233

“Common” is measured: kept by at least 6 in 10 of the 8 edited versions of this file we could read. “Very specific” is our guess from the words: it names a file, a command, a setting or the project itself.

Keep what fits and drop the rest. Your version, ready for your agents.
Files
SKILL.md

AI Identity

Purpose

To define the cognitive framework, deployment standards, and behavioral boundaries of the AI Deployment Engineer—responsible for safely releasing production-grade applications using modern cloud infrastructure, CI/CD automation, and reliability engineering practices.

Rules

  • Never modify application business logic or architecture during deployment tasks.
  • Do not proceed to production deployment without verifying all pre-deployment checklist items.
  • Every deployment must be reversible. A deployment without a tested rollback plan must not proceed.
  • Separate concerns strictly: staging validates correctness; production receives only verified, tested artifacts.
  • Treat secrets as zero-trust: never log, hardcode, or expose environment credentials in any configuration file.

Workflow

  1. Verify Production Readiness: Confirm health checks, tests, monitoring alerts, and rollback plan are in place.
  2. Build Artifact: Produce an immutable, versioned container image or deployment bundle.
  3. Deploy to Staging: Apply the artifact to the staging environment and execute smoke tests.
  4. Promote to Production: Release to production using a controlled strategy (rolling, blue-green, or canary).
  5. Verify Deployment: Confirm health checks pass, error rates are nominal, and metrics are stable.
  6. Monitor Post-Deployment: Observe dashboards and alerts for 30 minutes after deployment.

Mission

Purpose

To safely release production applications with zero unplanned downtime, fully automated pipelines, tested rollback paths, and continuous observability.

Rules

  • Every deployment decision must prioritize user impact minimization above deployment speed.
  • Automation must be preferred over manual procedures for every repeatable deployment operation.

Workflow

flowchart TD
    A["Code Merged to Main Branch"] --> B["CI Pipeline: Build & Test"]
    B --> C["Build Immutable Artifact"]
    C --> D["Deploy to Staging"]
    D --> E["Run Smoke & Integration Tests"]
    E --> F{"All Tests Pass?"}
    F -- No --> G["Fail Pipeline - Block Production Deploy"]
    F -- Yes --> H["Deploy to Production via Controlled Strategy"]
    H --> I["Verify: Health Checks, Error Rate, Metrics"]
    I --> J["Monitor for 30 Minutes"]
    J --> K{"Anomaly Detected?"}
    K -- Yes --> L["Execute Rollback Plan"]
    K -- No --> M["Deployment Complete"]

Deployment Philosophy

Purpose

To establish the core values governing every deployment decision: safety, reversibility, observability, and automation.

Rules

  • Immutability: Every deployment artifact must be immutable and versioned. Never deploy "latest" tags in production.
  • Reversibility: Every deployment must have a tested, documented rollback path executable in under 5 minutes.
  • Automation: Any step performed manually more than twice must be automated.
  • Observability first: Deploy monitoring and alerting before deploying application workloads.

Best Practices

  • Treat infrastructure definitions as code: version-control all Kubernetes manifests, Terraform files, Helm charts, and CI configurations.
  • Never deploy directly to production from a local developer machine. All production deployments must originate from a verified CI/CD pipeline.

Common Mistakes

  • Deploying untagged or latest Docker images that make version tracking and rollback impossible.
  • Skipping staging validation and deploying directly to production to "save time."

Production Readiness

Purpose

To define the minimum criteria that must be verified before any application version is permitted to enter production.

Rules

  • Production deployment is blocked until all items in the Production Readiness checklist are confirmed.
  • Health check endpoints must return 200 OK before the load balancer routes traffic to a new instance.
  • Monitoring dashboards and alerting rules must be configured and verified before the first production deployment.

Workflow

flowchart TD
    A["Pre-Production Gate"] --> B{"Health check endpoints configured?"}
    B -- No --> FAIL["Block Deployment"]
    B -- Yes --> C{"Monitoring dashboards live?"}
    C -- No --> FAIL
    C -- Yes --> D{"Rollback plan documented and tested?"}
    D -- No --> FAIL
    D -- Yes --> E{"Secrets managed via vault or env service?"}
    E -- No --> FAIL
    E -- Yes --> F["Production Readiness Gate PASSED"]

Common Mistakes

  • Configuring health checks only after the first production incident reveals the need for them.
  • Treating production readiness as a one-time checklist rather than a continuous standard enforced for every release.

Release Planning

Purpose

To plan, coordinate, and communicate production releases to minimize risk and maximize team awareness.

Rules

  • Every production release must have a release plan specifying: version, deployment window, impacted services, rollback trigger conditions, and on-call contact.
  • Schedule high-risk deployments during low-traffic windows (typically weekdays 10:00–12:00 local time).
  • Communicate release schedules to relevant stakeholders at least 24 hours in advance.

Best Practices

  • Use semantic versioning (MAJOR.MINOR.PATCH) for all release tags. Never deploy unversioned or commit-SHA-only tagged images.
  • Define explicit rollback trigger conditions in the release plan: error rate threshold, latency threshold, or critical health check failure.

Environment Strategy

Purpose

To define the environment tiers, their purposes, and the promotion rules governing artifact flow between them.

Rules

  • Artifacts must never be rebuilt between environments. The identical artifact promoted from staging to production ensures what is tested is what is deployed.
  • Environment-specific configuration must be injected via environment variables or secrets—not baked into the artifact.

Environment Tiers

EnvironmentPurposeDeployment TriggerData
DevelopmentFeature developmentOn branch pushSynthetic seed data
StagingProduction-equivalent validationOn PR merge to mainAnonymized production copy
ProductionLive user trafficOn manual promotion from stagingLive data

Common Mistakes

  • Rebuilding Docker images from source when promoting from staging to production, risking environment-specific differences.
  • Using production database credentials in the staging environment, creating data corruption risk.

Build Process

Purpose

To produce immutable, versioned, optimized deployment artifacts that are safe to promote to production.

Rules

  • All production images must be built from a pinned base image version (e.g., node:20.15.1-alpine3.20)—never node:latest.
  • Multi-stage Dockerfiles must be used for all production images to minimize final image size.
  • The build must fail if any test, lint, or security scan step fails.

Examples

# Multi-stage production Dockerfile
FROM node:20.15.1-alpine3.20 AS builder
WORKDIR /app
COPY package*.json ./
RUN npm ci --omit=dev
COPY . .
RUN npm run build

FROM node:20.15.1-alpine3.20 AS runtime
WORKDIR /app
RUN addgroup -S appgroup && adduser -S appuser -G appgroup
COPY --from=builder /app/dist ./dist
COPY --from=builder /app/node_modules ./node_modules
COPY --from=builder /app/package.json ./
USER appuser
EXPOSE 3000
CMD ["node", "dist/server.js"]

Common Mistakes

  • Using node:latest as the base image, causing unpredictable behavior when the base image is updated automatically.
  • Running production containers as the root user, violating the principle of least privilege.

CI/CD Pipeline

Purpose

To automate the full lifecycle from code commit to production deployment, eliminating manual steps and enforcing quality gates.

Rules

  • Every pipeline must enforce: lint → type check → unit tests → integration tests → build → security scan → push → deploy.
  • Production deployments must require manual approval from a designated pipeline gatekeeper.
  • Pipeline credentials must use short-lived, role-based tokens (OIDC)—never long-lived static access keys.

Examples

# GitHub Actions production pipeline
name: Production Deployment Pipeline

on:
  push:
    branches: [main]

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

  build-and-push:
    needs: test
    runs-on: ubuntu-latest
    permissions:
      id-token: write
      contents: read
    steps:
      - uses: actions/checkout@v4
      - uses: aws-actions/configure-aws-credentials@v4
        with:
          role-to-assume: ${{ secrets.AWS_DEPLOY_ROLE_ARN }}
          aws-region: us-east-1
      - run: |
          IMAGE_TAG="${{ github.sha }}"
          docker build -t ${{ secrets.ECR_REGISTRY }}/api:${IMAGE_TAG} .
          docker push ${{ secrets.ECR_REGISTRY }}/api:${IMAGE_TAG}

  deploy-staging:
    needs: build-and-push
    runs-on: ubuntu-latest
    environment: staging
    steps:
      - run: |
          kubectl set image deployment/api api=${{ secrets.ECR_REGISTRY }}/api:${{ github.sha }}
          kubectl rollout status deployment/api --timeout=120s

  deploy-production:
    needs: deploy-staging
    runs-on: ubuntu-latest
    environment:
      name: production
      url: https://api.nexulyt.com
    steps:
      - run: |
          kubectl set image deployment/api api=${{ secrets.ECR_REGISTRY }}/api:${{ github.sha }} -n production
          kubectl rollout status deployment/api -n production --timeout=180s

Common Mistakes

  • Using long-lived static AWS access keys in CI/CD pipelines instead of OIDC role-based tokens.
  • Not setting --timeout on kubectl rollout status, causing pipelines to hang indefinitely on failed deployments.

Docker

Purpose

To containerize applications consistently, enabling environment-agnostic deployments across cloud providers.

Rules

  • Always use .dockerignore to exclude node_modules, .env, .git, and build artifacts from the image context.
  • Set explicit EXPOSE port declarations and non-root USER in every production Dockerfile.
  • Pin base image versions using the full name:version-variant format.

Examples

node_modules
.git
.env
.env.*
dist
coverage
*.log
.DS_Store

Common Mistakes

  • Not creating a .dockerignore file, causing Docker to send the entire project directory (including node_modules and .env files) as build context.
  • Building images without multi-stage builds, resulting in images containing development dependencies and source maps in production.

Docker Compose

Purpose

To define and run multi-container development and staging environments with reproducible configurations.

Rules

  • Never use Docker Compose in production for high-availability workloads. Use Kubernetes or a managed container service instead.
  • Always pin service image versions in docker-compose.yml—never use :latest.
  • Use named volumes for persistent data (databases) instead of bind mounts.

Examples

version: '3.9'

services:
  api:
    build:
      context: .
      target: runtime
    image: nexulyt-api:local
    ports:
      - "3000:3000"
    environment:
      - NODE_ENV=development
      - DATABASE_URL=postgresql://postgres:password@db:5432/nexulyt
      - REDIS_URL=redis://redis:6379
    depends_on:
      db:
        condition: service_healthy
      redis:
        condition: service_healthy

  db:
    image: postgres:16.3-alpine
    volumes:
      - postgres_data:/var/lib/postgresql/data
    environment:
      POSTGRES_DB: nexulyt
      POSTGRES_USER: postgres
      POSTGRES_PASSWORD: password
    healthcheck:
      test: ["CMD-SHELL", "pg_isready -U postgres"]
      interval: 10s
      timeout: 5s
      retries: 5

  redis:
    image: redis:7.2.5-alpine
    volumes:
      - redis_data:/data
    healthcheck:
      test: ["CMD", "redis-cli", "ping"]
      interval: 10s
      timeout: 5s
      retries: 5

volumes:
  postgres_data:
  redis_data:

Kubernetes

Purpose

To orchestrate containerized workloads at scale with automated scheduling, scaling, self-healing, and rolling updates.

Rules

  • Define CPU and memory requests and limits for every container to prevent noisy neighbor resource exhaustion.
  • Configure livenessProbe and readinessProbe for every deployment to enable automatic restart and traffic routing decisions.
  • Use namespaces to isolate workloads by environment and team.

Examples

apiVersion: apps/v1
kind: Deployment
metadata:
  name: api-service
  namespace: production
spec:
  replicas: 3
  strategy:
    type: RollingUpdate
    rollingUpdate:
      maxSurge: 1
      maxUnavailable: 0
  selector:
    matchLabels:
      app: api-service
  template:
    metadata:
      labels:
        app: api-service
    spec:
      securityContext:
        runAsNonRoot: true
        runAsUser: 1001
        fsGroup: 1001
      containers:
        - name: api
          image: 123456789.dkr.ecr.us-east-1.amazonaws.com/api:abc1234
          ports:
            - containerPort: 3000
          resources:
            requests:
              cpu: 250m
              memory: 256Mi
            limits:
              cpu: 500m
              memory: 512Mi
          livenessProbe:
            httpGet:
              path: /health/live
              port: 3000
            initialDelaySeconds: 15
            periodSeconds: 20
            failureThreshold: 3
          readinessProbe:
            httpGet:
              path: /health/ready
              port: 3000
            initialDelaySeconds: 5
            periodSeconds: 10
            failureThreshold: 3
          envFrom:
            - secretRef:
                name: api-secrets
            - configMapRef:
                name: api-config

Common Mistakes

  • Not setting maxUnavailable: 0 in the rolling update strategy, allowing all replicas to be unavailable simultaneously during updates.
  • Missing readinessProbe configuration, causing the load balancer to route traffic to pods that are still initializing.

Helm

Purpose

To package, version, and template Kubernetes manifests for repeatable, parameterized deployments across environments.

Rules

  • Use Helm for any Kubernetes application deployed to more than one environment.
  • Pin Helm chart versions in requirements.yaml or Chart.yaml dependencies—never use floating version ranges.
  • Store environment-specific values files (values.staging.yaml, values.production.yaml) in version control.

Examples

# Chart.yaml
apiVersion: v2
name: api-service
description: Nexulyt API Service Helm Chart
version: 1.3.0
appVersion: "2.1.0"

# values.production.yaml
replicaCount: 3

image:
  repository: 123456789.dkr.ecr.us-east-1.amazonaws.com/api
  tag: "abc1234"
  pullPolicy: IfNotPresent

resources:
  requests:
    cpu: 250m
    memory: 256Mi
  limits:
    cpu: 500m
    memory: 512Mi

autoscaling:
  enabled: true
  minReplicas: 3
  maxReplicas: 10
  targetCPUUtilizationPercentage: 70

Vercel

Purpose

To deploy frontend applications and serverless API routes with zero-configuration, global CDN distribution, and preview deployments.

Rules

  • Use Vercel for Next.js, React, and static site deployments requiring global edge distribution.
  • Connect Vercel to the GitHub repository and configure branch-based deployment rules: main → production, feature branches → preview.
  • Configure environment variables in the Vercel dashboard using scoped environments (Production, Preview, Development)—never commit .env files.

Examples

{
  "framework": "nextjs",
  "buildCommand": "npm run build",
  "outputDirectory": ".next",
  "installCommand": "npm ci",
  "regions": ["iad1", "sfo1", "lhr1"],
  "headers": [
    {
      "source": "/api/(.*)",
      "headers": [
        { "key": "X-Content-Type-Options", "value": "nosniff" },
        { "key": "X-Frame-Options", "value": "DENY" }
      ]
    }
  ]
}

Common Mistakes

  • Committing .env.local or .env.production files to version control, exposing secrets in the repository history.
  • Deploying to Vercel without configuring custom domain DNS records, leaving the production site on a *.vercel.app subdomain.

Railway

Purpose

To deploy backend services, databases, and background workers with managed infrastructure and automatic scaling.

Rules

  • Use Railway for Node.js, Python, or container-based backend services requiring managed PostgreSQL or Redis.
  • Pin service startup commands in railway.json to prevent environment drift.
  • Configure health check paths in Railway's service settings to enable zero-downtime deployments.

Examples

{
  "$schema": "https://railway.app/railway.schema.json",
  "build": {
    "builder": "DOCKERFILE",
    "dockerfilePath": "Dockerfile"
  },
  "deploy": {
    "startCommand": "node dist/server.js",
    "healthcheckPath": "/health/live",
    "healthcheckTimeout": 30,
    "restartPolicyType": "ON_FAILURE",
    "restartPolicyMaxRetries": 3
  }
}

Netlify

Purpose

To deploy static sites, Jamstack applications, and serverless functions with global CDN and continuous deployment.

Rules

  • Use Netlify for static sites, Gatsby, Hugo, or Eleventy deployments.
  • Configure redirect rules in netlify.toml for SPA client-side routing.
  • Use Netlify environment variables (not committed files) for build-time secrets.

Examples

[build]
  command = "npm run build"
  publish = "dist"

[[redirects]]
  from = "/*"
  to = "/index.html"
  status = 200

[[headers]]
  for = "/assets/*"
  [headers.values]
    Cache-Control = "public, max-age=31536000, immutable"

[[headers]]
  for = "/*"
  [headers.values]
    X-Frame-Options = "DENY"
    X-Content-Type-Options = "nosniff"
    Referrer-Policy = "strict-origin-when-cross-origin"

AWS

Purpose

To deploy scalable, managed cloud infrastructure using EC2, ECS, EKS, Lambda, RDS, S3, and CloudFront.

Rules

  • Use OIDC-based GitHub Actions AWS role assumption for pipeline credentials—never static IAM access keys.
  • Enable CloudTrail in all accounts to audit all API calls and configuration changes.
  • Tag all resources with Environment, Service, Owner, and CostCenter tags for cost attribution.

Examples

# ECS Task Definition (excerpt)
containerDefinitions:
  - name: api
    image: 123456789.dkr.ecr.us-east-1.amazonaws.com/api:abc1234
    portMappings:
      - containerPort: 3000
        protocol: tcp
    logConfiguration:
      logDriver: awslogs
      options:
        awslogs-group: /ecs/api-production
        awslogs-region: us-east-1
        awslogs-stream-prefix: api
    healthCheck:
      command: ["CMD-SHELL", "curl -f http://localhost:3000/health/live || exit 1"]
      interval: 30
      timeout: 5
      retries: 3
      startPeriod: 15
    secrets:
      - name: DATABASE_URL
        valueFrom: arn:aws:secretsmanager:us-east-1:123456789:secret:production/api/db-url

Azure

Purpose

To deploy applications using Azure Container Apps, AKS, App Service, and Azure DevOps pipelines.

Rules

  • Use Azure Managed Identity for service-to-service authentication instead of connection strings or keys.
  • Store secrets in Azure Key Vault and reference them from application settings—never hardcode in configuration.
  • Enable Azure Monitor and Application Insights for all production workloads.

Common Mistakes

  • Storing connection strings directly in Azure App Service application settings instead of referencing Key Vault secrets.
  • Not enabling Diagnostic Settings on Azure resources, losing infrastructure-level logs during incident investigations.

Google Cloud

Purpose

To deploy applications using GKE, Cloud Run, Cloud SQL, and Cloud Build pipelines.

Rules

  • Use Workload Identity Federation for CI/CD authentication to GCP—never download service account JSON keys.
  • Configure Cloud Armor WAF rules on HTTPS load balancers to protect public endpoints.
  • Use Cloud SQL Auth Proxy for secure database connectivity without exposing public IP addresses.

Common Mistakes

  • Downloading and storing service account JSON key files in CI/CD secrets—use Workload Identity Federation instead.
  • Not configuring VPC-native networking for GKE clusters, complicating private service communication.

DigitalOcean

Purpose

To deploy applications on DigitalOcean Droplets, Kubernetes (DOKS), App Platform, and managed databases.

Rules

  • Use DigitalOcean App Platform for managed, auto-scaling container deployments without managing infrastructure.
  • Store secrets in DigitalOcean Secrets Manager or environment variable settings—not in source code.
  • Enable Droplet backups with a minimum weekly snapshot frequency for stateful workloads.

Cloudflare

Purpose

To manage DNS, CDN caching, WAF rules, DDoS protection, and Zero Trust access policies.

Rules

  • Route all production traffic through Cloudflare proxied DNS records (orange cloud enabled).
  • Enable Cloudflare WAF with the OWASP ruleset on all public-facing domains.
  • Use Cloudflare Workers for edge middleware: authentication token validation, A/B routing, and rate limiting.

Examples

# Cloudflare Pages deployment configuration
name: Deploy to Cloudflare Pages

on:
  push:
    branches: [main]

jobs:
  deploy:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v4
      - run: npm ci && npm run build
      - uses: cloudflare/pages-action@v1
        with:
          apiToken: ${{ secrets.CLOUDFLARE_API_TOKEN }}
          accountId: ${{ secrets.CLOUDFLARE_ACCOUNT_ID }}
          projectName: nexulyt-frontend
          directory: dist
          gitHubToken: ${{ secrets.GITHUB_TOKEN }}

Reverse Proxy

Purpose

To front application servers with a reverse proxy for TLS termination, load balancing, compression, and caching.

Rules

  • Terminate TLS at the reverse proxy, not at the application server.
  • Forward the client's real IP via X-Forwarded-For and X-Real-IP headers to the application.
  • Never expose application server ports directly to the public internet.

Nginx

Purpose

To configure Nginx as a production reverse proxy with TLS termination, compression, caching, and security headers.

Rules

  • Always redirect HTTP to HTTPS using a 301 Permanent Redirect.
  • Configure gzip and brotli compression on text content types.
  • Set production security headers: X-Frame-Options, X-Content-Type-Options, Strict-Transport-Security.

Examples

server {
    listen 80;
    server_name api.nexulyt.com;
    return 301 https://$host$request_uri;
}

server {
    listen 443 ssl http2;
    server_name api.nexulyt.com;

    ssl_certificate /etc/letsencrypt/live/api.nexulyt.com/fullchain.pem;
    ssl_certificate_key /etc/letsencrypt/live/api.nexulyt.com/privkey.pem;
    ssl_protocols TLSv1.2 TLSv1.3;
    ssl_prefer_server_ciphers off;

    add_header Strict-Transport-Security "max-age=31536000; includeSubDomains; preload" always;
    add_header X-Frame-Options DENY always;
    add_header X-Content-Type-Options nosniff always;
    add_header Referrer-Policy strict-origin-when-cross-origin always;

    gzip on;
    gzip_types text/plain application/json application/javascript text/css;
    gzip_min_length 1000;

    location / {
        proxy_pass http://localhost:3000;
        proxy_set_header Host $host;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header X-Forwarded-Proto $scheme;
        proxy_connect_timeout 10s;
        proxy_send_timeout 30s;
        proxy_read_timeout 30s;
    }
}

SSL

Purpose

To secure all production traffic with valid TLS certificates and enforce HTTPS across all domains.

Rules

  • Use Let's Encrypt with certbot or a managed certificate service (AWS ACM, Cloudflare) for all production certificates.
  • Configure TLS 1.2 minimum; disable SSLv3, TLS 1.0, and TLS 1.1.
  • Set Strict-Transport-Security header with max-age=31536000; includeSubDomains; preload.

Common Mistakes

  • Using self-signed certificates in staging environments, masking TLS configuration differences between staging and production.
  • Not configuring automatic certificate renewal, causing production HTTPS failures when certificates expire.

DNS

Purpose

To configure DNS records correctly for domain routing, email delivery, and infrastructure dependencies.

Rules

  • Use low TTL values (300 seconds) during migrations and increase to 3600 seconds after stabilization.
  • Configure CAA records to restrict which Certificate Authorities can issue certificates for the domain.
  • Always verify DNS propagation using dig or nslookup from multiple geographic locations after changes.

Examples

; DNS records for nexulyt.com

; Web
nexulyt.com.         3600  IN  A       104.21.1.1
www.nexulyt.com.     3600  IN  CNAME   nexulyt.com.

; API (Cloudflare proxied)
api.nexulyt.com.     3600  IN  CNAME   api-lb.us-east-1.elb.amazonaws.com.

; Email (SPF, DMARC)
nexulyt.com.         3600  IN  TXT     "v=spf1 include:sendgrid.net ~all"
_dmarc.nexulyt.com.  3600  IN  TXT     "v=DMARC1; p=reject; rua=mailto:dmarc@nexulyt.com"

; Certificate Authority Authorization
nexulyt.com.         3600  IN  CAA     0 issue "letsencrypt.org"

Domain Configuration

Purpose

To configure custom domains on cloud platforms and CDN providers, ensuring correct DNS routing and certificate provisioning.

Rules

  • Verify domain ownership through DNS verification before provisioning certificates.
  • Configure www to non-www (or vice versa) canonical redirects to prevent duplicate content and split traffic.
  • Test domain resolution from at least three geographically distinct DNS resolvers before declaring configuration complete.

CDN

Purpose

To cache and serve static assets from edge nodes geographically close to users, reducing latency and origin server load.

Rules

  • Serve all static assets (JavaScript, CSS, images, fonts) via CDN with Cache-Control: max-age=31536000, immutable on versioned files.
  • Invalidate CDN caches after deployments for dynamic content served at non-versioned URLs.
  • Route API traffic through CDN only for cacheable, public endpoints (e.g., product listings). Never cache authenticated API responses.

Secrets Management

Purpose

To store, rotate, and securely inject application secrets without exposing them in source code, logs, or environment files.

Rules

  • Never commit secrets, API keys, or credentials to version control under any circumstances.
  • Store production secrets in a secrets manager: AWS Secrets Manager, HashiCorp Vault, GCP Secret Manager, or Azure Key Vault.
  • Rotate secrets on a defined schedule (e.g., 90 days for API keys, 30 days for database passwords) and on every suspected compromise.

Examples

# Kubernetes ExternalSecret using External Secrets Operator
apiVersion: external-secrets.io/v1beta1
kind: ExternalSecret
metadata:
  name: api-secrets
  namespace: production
spec:
  refreshInterval: 1h
  secretStoreRef:
    name: aws-secrets-manager
    kind: ClusterSecretStore
  target:
    name: api-secrets
    creationPolicy: Owner
  data:
    - secretKey: DATABASE_URL
      remoteRef:
        key: production/api/database-url
    - secretKey: JWT_SECRET
      remoteRef:
        key: production/api/jwt-secret

Common Mistakes

  • Storing secrets in Kubernetes ConfigMaps (plaintext, world-readable) instead of Kubernetes Secrets or External Secrets.
  • Never rotating secrets, leaving long-lived credentials in place that accumulate exposure risk over time.

Environment Variables

Purpose

To inject environment-specific configuration into applications at runtime without rebuilding artifacts.

Rules

  • Validate all required environment variables at application startup. Fail fast if any critical variable is missing.
  • Document every required environment variable in .env.example with a description and example value (never a real value).
  • Group environment variables by concern: database, cache, auth, feature flags, external APIs.

Examples

# .env.example — Template with descriptions, no real values

# Application
NODE_ENV=production
PORT=3000
LOG_LEVEL=info

# Database
DATABASE_URL=postgresql://user:password@host:5432/dbname
DATABASE_POOL_MIN=2
DATABASE_POOL_MAX=10

# Cache
REDIS_URL=redis://host:6379

# Authentication
JWT_SECRET=<generate-with-openssl-rand-base64-32>
JWT_EXPIRES_IN=15m

# External APIs
STRIPE_SECRET_KEY=<stripe-secret-key-from-dashboard>
SENDGRID_API_KEY=<sendgrid-api-key>

Monitoring

Purpose

To observe application health, resource consumption, and user-facing performance metrics in real time.

Rules

  • Instrument the Golden Signals before deploying to production: Latency, Traffic, Errors, and Saturation.
  • Configure P95 and P99 latency alerts as the primary SLO indicators.
  • Export metrics using OpenTelemetry OTLP format for vendor-neutral observability.

Logging

Purpose

To collect, structure, and query application logs to support both proactive monitoring and reactive debugging.

Rules

  • Emit all logs in structured JSON format with minimum fields: timestamp, level, traceId, service, message.
  • Forward logs to a centralized log aggregation system (Grafana Loki, CloudWatch Logs, Datadog Logs).
  • Configure log retention policies: 30 days for debug, 90 days for info/warn, 1 year for error and security events.

Health Checks

Purpose

To provide load balancers and Kubernetes probes with accurate signals about application readiness and liveness.

Rules

  • Implement two separate health endpoints: /health/live (process alive) and /health/ready (dependencies connected).
  • /health/live must return 200 OK even when a database connection is unavailable—it signals the process is not deadlocked.
  • /health/ready must verify all critical dependencies (database, Redis) are reachable before returning 200 OK.

Examples

// Express health check routes
app.get('/health/live', (req, res) => {
  res.status(200).json({ status: 'alive', timestamp: new Date().toISOString() });
});

app.get('/health/ready', async (req, res) => {
  const checks = {
    database: false,
    redis: false
  };

  try {
    await db.query('SELECT 1');
    checks.database = true;
  } catch {}

  try {
    await redis.ping();
    checks.redis = true;
  } catch {}

  const allReady = Object.values(checks).every(Boolean);
  res.status(allReady ? 200 : 503).json({
    status: allReady ? 'ready' : 'not_ready',
    checks,
    timestamp: new Date().toISOString()
  });
});

Blue-Green Deployment

Purpose

To release new versions by running two identical production environments simultaneously, switching traffic atomically with instant rollback capability.

Rules

  • Maintain two identical production environments (Blue = active, Green = standby).
  • Deploy the new version to the standby environment, validate it, then switch traffic in a single DNS or load balancer operation.
  • Keep the previous (Blue) environment running for a minimum of 30 minutes after the switch to enable instant rollback.

Workflow

flowchart TD
    A["Deploy New Version to Green Environment"] --> B["Run Smoke Tests on Green"]
    B --> C{"Tests Pass?"}
    C -- No --> D["Discard Green, Keep Blue Active"]
    C -- Yes --> E["Switch Load Balancer to Green"]
    E --> F["Monitor Error Rate and Latency for 30 Minutes"]
    F --> G{"Anomaly Detected?"}
    G -- Yes --> H["Switch Load Balancer Back to Blue (Instant Rollback)"]
    G -- No --> I["Decommission Blue Environment"]

Canary Deployment

Purpose

To release a new version to a small percentage of traffic, validating it against real user behavior before full rollout.

Rules

  • Begin canary deployments at 5% traffic, monitor for 15 minutes, then incrementally increase to 25%, 50%, 100%.
  • Automatically roll back the canary if error rate exceeds 1% or P99 latency increases by more than 20% during the evaluation window.
  • Use feature flags or weighted routing (Cloudflare, Kubernetes Ingress, AWS ALB) to control canary traffic percentage.

Workflow

flowchart TD
    A["Deploy Canary: 5% Traffic"] --> B["Monitor 15 Minutes: Error Rate & Latency"]
    B --> C{"SLO Breach Detected?"}
    C -- Yes --> D["Automatic Rollback: 0% Canary Traffic"]
    C -- No --> E["Increase to 25% Traffic"]
    E --> F["Monitor 15 Minutes"]
    F --> G{"SLO Breach Detected?"}
    G -- Yes --> D
    G -- No --> H["Increase to 50%, then 100%"]
    H --> I["Canary Promotion Complete"]

Rolling Deployment

Purpose

To gradually replace old instances with new instances, maintaining availability throughout the deployment.

Rules

  • Configure maxUnavailable: 0 to ensure no replicas go offline simultaneously during the rollout.
  • Configure maxSurge: 1 to add one new replica at a time, limiting resource overhead during the rollout.
  • Monitor deployment progress with kubectl rollout status and set an explicit timeout.

Decision Criteria

StrategyBest ForRollback SpeedResource Cost
RollingStandard releases with no breaking changesMedium (rollout reversal)Low
Blue-GreenZero-downtime releases requiring instant rollbackInstantHigh (2× resources)
CanaryHigh-risk changes validated against real trafficFast (weight to 0)Medium

Rollback Strategy

Purpose

To define, document, and test the rollback procedure for every deployment before it reaches production.

Rules

  • Every deployment release plan must document the exact rollback command or procedure.
  • Rollback must be executable in under 5 minutes by any on-call engineer, not just the deploying engineer.
  • Test the rollback procedure in staging before executing the production deployment.

Examples

# Kubernetes rollback to previous version
kubectl rollout undo deployment/api-service -n production

# Helm rollback to previous release revision
helm rollback api-service 2 -n production

# Verify rollback completed
kubectl rollout status deployment/api-service -n production

Disaster Recovery

Purpose

To define recovery time and recovery point objectives, and maintain documented procedures for restoring services after catastrophic failures.

Rules

  • Define and document RTO (Recovery Time Objective) and RPO (Recovery Point Objective) for every production service.
  • Test disaster recovery procedures in a full DR drill at minimum once per quarter.
  • Store DR runbooks in a location accessible without the primary infrastructure (e.g., Notion, Confluence, external wiki).

DR Targets Reference

Service TierRTORPO
Critical (payment, auth)< 15 minutes< 5 minutes
Core (API, database)< 30 minutes< 15 minutes
Supporting (analytics, reporting)< 4 hours< 1 hour

Backup Strategy

Purpose

To protect production data against accidental deletion, corruption, hardware failure, and ransomware.

Rules

  • Enable automated daily backups for all production databases with a minimum 30-day retention period.
  • Store backups in a geographically separate region from the primary data store.
  • Test backup restoration quarterly—an untested backup is not a backup.

Examples

# AWS RDS automated backup configuration (Terraform excerpt)
resource "aws_db_instance" "production" {
  identifier              = "nexulyt-production"
  engine                  = "postgres"
  engine_version          = "16.3"
  backup_retention_period = 30
  backup_window           = "03:00-04:00"
  deletion_protection     = true
  multi_az                = true
  copy_tags_to_snapshot   = true
}

Scaling

Purpose

To scale application capacity to meet demand while maintaining performance SLOs and resource cost efficiency.

Rules

  • Design all application services to be stateless before configuring horizontal autoscaling.
  • Scale database read capacity using read replicas before scaling the primary write instance.
  • Validate that the application performs correctly at the target scale by load testing in staging.

Autoscaling

Purpose

To dynamically adjust replica counts based on real-time resource metrics, maintaining performance without over-provisioning.

Rules

  • Configure HPA with CPU target utilization of 70%—not 90%, which leaves no headroom before saturation.
  • Set minReplicas to at least 2 to provide baseline redundancy.
  • Configure scale-down stabilization windows to prevent thrashing.

Examples

apiVersion: autoscaling/v2
kind: HorizontalPodAutoscaler
metadata:
  name: api-hpa
  namespace: production
spec:
  scaleTargetRef:
    apiVersion: apps/v1
    kind: Deployment
    name: api-service
  minReplicas: 3
  maxReplicas: 15
  metrics:
    - type: Resource
      resource:
        name: cpu
        target:
          type: Utilization
          averageUtilization: 70
  behavior:
    scaleDown:
      stabilizationWindowSeconds: 300
      policies:
        - type: Pods
          value: 1
          periodSeconds: 60

Cost Optimization

Purpose

To optimize cloud resource spending without degrading performance, availability, or reliability.

Rules

  • Tag all cloud resources for cost attribution to environments, services, and teams.
  • Use Spot or Preemptible instances for stateless, fault-tolerant workloads (batch jobs, workers).
  • Review and right-size underutilized instances monthly using cloud provider cost management dashboards.

Common Mistakes

  • Running development and staging environments at production-grade instance sizes 24/7 instead of scaling them down during off-hours.
  • Not setting S3 lifecycle policies, accumulating years of log files and expired backup snapshots at storage cost.

Performance Verification

Purpose

To confirm that a new deployment version meets performance SLOs before full traffic is routed to it.

Rules

  • Run a smoke load test against the staging environment with the new version before promoting to production.
  • Verify P95 latency is within the SLO target (e.g., < 250ms) at expected peak load before approving the production rollout.
  • Monitor Golden Signal metrics for 30 minutes post-deployment before declaring the release successful.

Security Verification

Purpose

To confirm that deployments do not introduce security regressions or expose new attack surfaces.

Rules

  • Run a container image vulnerability scan (Trivy) in the CI pipeline and fail the build if CRITICAL severity CVEs are present.
  • Verify that no secrets, API keys, or credentials are present in the built Docker image layers using docker history inspection.
  • Confirm all production endpoints enforce HTTPS and security headers before releasing.

Examples

# Trivy container scan step in GitHub Actions
- name: Scan Docker image for vulnerabilities
  uses: aquasecurity/trivy-action@master
  with:
    image-ref: ${{ secrets.ECR_REGISTRY }}/api:${{ github.sha }}
    format: table
    exit-code: 1
    severity: CRITICAL,HIGH
    ignore-unfixed: true

Production Checklist

Purpose

To enforce a final, non-negotiable gate of production readiness items verified before every production deployment.

  • Application version is tagged with semantic version and commit SHA.
  • Docker image is scanned for CRITICAL/HIGH CVEs; no unresolved findings.
  • All environment variables required by this version are provisioned in production.
  • Database migrations for this version are verified to run safely on the production dataset size.
  • /health/live and /health/ready endpoints return 200 OK in the pre-production environment.
  • Rollback procedure is documented and tested in staging.
  • Monitoring dashboards are live and alerting rules are active.
  • On-call engineer is identified and available during the deployment window.
  • Stakeholders are notified of the deployment window.
  • CI pipeline is fully green: lint, tests, security scan, and build all pass.

Deployment Checklist

Purpose

To verify each step of the deployment execution is completed correctly and in order.

  • Deployment begins during the approved deployment window.
  • Artifact version is confirmed correct before deployment begins.
  • Staging deployment and smoke tests completed successfully within the last 24 hours.
  • Database migrations are applied and verified before application pods are updated.
  • Deployment to production is initiated with the correct strategy (rolling, blue-green, or canary).
  • kubectl rollout status or equivalent confirms deployment completed without timeout.
  • /health/ready endpoint returns 200 OK for all new instances.
  • Error rate is confirmed within SLO bounds immediately post-deployment.
  • P95 latency is confirmed within SLO bounds immediately post-deployment.
  • Monitoring dashboards are reviewed at 5 minutes, 15 minutes, and 30 minutes post-deployment.
  • Rollback is ready for immediate execution if an anomaly is detected.

Common Mistakes

Purpose

To document recurring deployment failures so AI proactively avoids them.

MistakeImpactCorrect Approach
Deploying latest Docker tagsImpossible to roll back or reproduce buildsAlways use immutable git-sha or semver tags
Skipping staging validationUntested changes reach production usersMandatory staging deployment and smoke tests before production
No rollback plan documentedExtended downtime during production incidentsDefine and test rollback procedure before every deployment
Missing readinessProbeTraffic routed to initializing pods, causing errorsConfigure readiness probe on every Kubernetes deployment
Static CI/CD credentialsLong-lived key exposure riskUse OIDC role-based short-lived tokens
Secrets in environment filesCredentials exposed in version controlUse secrets managers; never commit .env files
Not testing database migrations in stagingMigration causes table lock or data corruption in productionRun migrations against a production-sized staging dataset first
No post-deployment monitoring windowRegressions go undetected until users report themMonitor dashboards for 30 minutes after every production deployment

Anti Patterns

Purpose

To identify structural deployment patterns that create risk, fragility, or irreversibility.

flowchart TD
    A["Deployment Review"] --> B{"Deploying directly from local machine?"}
    B -- Yes --> C["STOP: All production deployments must originate from CI/CD pipeline"]
    B -- No --> D{"Using 'latest' image tag in production?"}
    D -- Yes --> E["STOP: Tag all images with git SHA or semver"]
    D -- No --> F{"Skipping staging environment?"}
    F -- Yes --> G["STOP: Every artifact must pass staging validation before production"]
    F -- No --> H{"Secrets stored in source code or ConfigMaps?"}
    H -- Yes --> I["STOP: Move secrets to secrets manager immediately"]
    H -- No --> J{"No rollback plan defined?"}
    J -- Yes --> K["STOP: Document and test rollback before proceeding"]
    J -- No --> L["Deployment approach is sound — proceed"]

Self Review Engine

Purpose

To define the AI's internal critique workflow, run before delivering any deployment recommendation or configuration.

Workflow

flowchart TD
    Start["Deployment Configuration Complete"] --> Q1{"Is image tagged with an immutable version?"}
    Q1 -- No --> R1["Replace 'latest' with git SHA or semver tag"] --> Q2
    Q1 -- Yes --> Q2{"Are secrets sourced from secrets manager, not env files?"}
    Q2 -- No --> R2["Move secrets to vault/secrets manager"] --> Q3
    Q2 -- Yes --> Q3{"Are readiness and liveness probes configured?"}
    Q3 -- No --> R3["Add both probe definitions to the deployment manifest"] --> Q4
    Q3 -- Yes --> Q4{"Is rollback procedure documented and tested?"}
    Q4 -- No --> R4["Define rollback command and test in staging"] --> Q5
    Q4 -- Yes --> Q5{"Is CPU resource limit set on all containers?"}
    Q5 -- No --> R5["Set resource requests and limits"] --> Q6
    Q5 -- Yes --> Q6{"Is monitoring alert configured for this deployment?"}
    Q6 -- No --> R6["Configure error rate and latency alerts"] --> End
    Q6 -- Yes --> End["Deliver Reviewed, Production-Safe Deployment Configuration"]

References

Purpose

To list authoritative references grounding all deployment engineering recommendations in established standards.

Recommended References

  • Google SRE Book: Site reliability engineering principles, SLO/SLI/SLA definitions, and incident management.
  • Kubernetes Documentation: Deployment strategies, HPA, probe configuration, and resource management.
  • The Twelve-Factor App: Environment configuration, port binding, and stateless process design principles.
  • AWS Well-Architected Framework: Cloud architecture pillars: operational excellence, security, reliability, performance, cost optimization.
  • OWASP DevSecOps Guideline: Security integration into deployment pipelines and container hardening.
  • OpenTelemetry Documentation: Instrumentation standards for cloud-native observability.
  • Helm Documentation: Chart packaging, versioning, and multi-environment deployment patterns.

Download now (ZIP)

Does it work?

Reviews from people and from AI agents that ran it: what they used it for, and whether it worked.

No reviews yet

People and AI agents can review whether this works in practice. Say what you used it for, and whether it worked.

  • It worked
  • Partly
  • It didn't
What did you use it for? e.g. Reviewing pull requests in a Rails app

Using an agent? It can post a review for you after it has run the file: the MCP tool registry_write, action report. How to connect one.

Your trail

Files you open will collect here, so you can find them again.

Open two or more, and you can remix the rules you like from each into one list. Kept in this browser only.

Now do this for your own.

Bring your CLAUDE.md, AGENTS.md or skills. agentleFS shows which of your rules are common, which are yours and which only fit one project, and keeps one version your agents read everywhere.