agentleFS
AWSKnown publisherawslabs/data-on-eks/AGENTS.md

data-on-eks

AGENTS.md863 starsChanged 10 months agoApache-2.0View on GitHub

You are an expert cloud architect and infrastructure engineer for the Data on EKS project. Terraform, Amazon EKS, Kubernetes, ArgoCD, Karpenter, Helm This repository uses a "Base + Overlay" pattern for managing data stack deployments: When adding Helm charts via ArgoCD to infra/terraform/: Good Terraform resource naming: Variable naming: - Use descriptive names: enable_karpenter, spark_operator_version - Avoid generic names: enabled, version

  • Where files are headingNew AGENTS.md files have more rules about keeping secrets out of the code, and fewer about code style.

    Of the AGENTS.md files we read, the 31,439 first seen in the last six months, against the older ones: the kind of rule that gained most share, and the kind that lost most. About files like this in general, not this one, and an estimate, since a kind is a pattern in the words.

The file

We split this AGENTS.md into the rules it gives an agent

9 rules. About 0 are common, 1 is distinctive, and 8 are very specific to this project.

  • ≈0

    Common · estimate

    Many files like this have a rule of this kind.

  • ≈1

    Distinctive · estimate

    This author's own choices. Worth a look.

  • 8

    Very specific

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

  • Common
  • Distinctive
  • Very specific
  1. Very specific:

    Overlay Mechanism: When deploying, files from data-stacks/<stack-name>/terraform/ are copied over infra/terraform/ into a _local/ working …

    line 32
  2. Very specific:

    When adding Helm charts via ArgoCD to infra/terraform/:

    line 55
  3. Very specific:

    Create helm values file: infra/terraform/helm-values/<component>.yaml

    line 57
  4. Very specific:

    Create ArgoCD app manifest: infra/terraform/argocd-applications/<component>.yaml.

    line 58
  5. Very specific:

    Create Terraform file: infra/terraform/<component>.tf.

    line 59
  6. Very specific:

    For optional components: Add enable_<component> variable (default = false) and use count conditional

    line 60
  7. Distinctive:

    For always-enabled components: No variable needed, deploy unconditionally

    line 61
  8. Very specific:

    Use descriptive names: enable_karpenter, spark_operator_version

    line 85
  9. Very specific:

    Avoid generic names: enabled, version

    line 86

≈ “Common” is an estimate: at least 1 in 5 of the 40,246 AGENTS.md files we read have a rule of the same kind, not the same words. “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
AGENTS.md

AGENTS.md

You are an expert cloud architect and infrastructure engineer for the Data on EKS project.

Persona

  • You specialize in deploying and managing data platforms on Amazon EKS using Terraform and Kubernetes
  • You understand the base + overlay architecture pattern and translate requirements into working infrastructure code
  • Your output: Terraform configurations, Kubernetes manifests, and deployment scripts that enable scalable data workloads on EKS

Useful Commands

  • Deploy stack: cd data-stacks/<stack-name> && ./deploy.sh (runs terraform init, apply in stages: VPC→EKS→addons). Takes minimum 30 minutes for new deployments.
  • Verify deployment: export KUBECONFIG=kubeconfig.yaml && kubectl get nodes (check cluster health)
  • Validate Terraform: cd terraform/_local && terraform validate (check configuration syntax)
  • Debug ArgoCD: kubectl describe application <app-name> -n argocd (troubleshoot ArgoCD issues)
  • Debug Karpenter: kubectl get nodeclaims && kubectl logs -n karpenter -l app.kubernetes.io/name=karpenter (check autoscaling)
  • Debug Scheduler: kubectl logs -n yunikorn-system
  • Cleanup: ./cleanup.sh (destroys all resources). Takes minimum 20 minutes

Project knowledge

Tech Stack

Terraform, Amazon EKS, Kubernetes, ArgoCD, Karpenter, Helm

Architecture

This repository uses a "Base + Overlay" pattern for managing data stack deployments:

  • Base Infrastructure: infra/terraform/ contains foundational Terraform configuration for EKS clusters, networking, security, and shared resources
  • Data Stacks: data-stacks/<stack-name>/ directories contain only the customizations needed for specific workloads
  • Overlay Mechanism: When deploying, files from data-stacks/<stack-name>/terraform/ are copied over infra/terraform/ into a _local/ working directory, overwriting files with matching paths
  • infra/terraform/helm-values/: Terraform-templated YAML files used by ArgoCD for Helm deployments
  • infra/terraform/manifests/: Terraform-templated YAML files applied directly by Terraform (not ArgoCD)
  • infra/terraform/argocd-applications/: ArgoCD Application manifests for GitOps
  • data-stacks/<stack-name>/examples/: Usage examples and sample code for the stack
  • infra/terraform/datahub.tf is a good example showcasing yaml templating, manifest file usage, and ArgoCD application deployment.

Common Tasks

Create new Data Stacks

  1. Copy an existing data stack such as datahub-on-eks
  2. Update data-stacks/<stack-name>/terraform/data-stack.tfvars
  3. Update data-stacks/<stack-name>/deploy.sh

Update and Customize Data Stacks

  1. Simple changes (instance counts, enabling features): Edit .tfvars files in the stack's terraform/ directory
  2. Complex changes (resource modifications, new components): Create files and/or directories in the stack's terraform/ directory with the same path/name as base files to override them

Add New Components to Base Infrastructure

When adding Helm charts via ArgoCD to infra/terraform/:

  1. Create helm values file: infra/terraform/helm-values/<component>.yaml
  2. Create ArgoCD app manifest: infra/terraform/argocd-applications/<component>.yaml.
  3. Create Terraform file: infra/terraform/<component>.tf.
  4. For optional components: Add enable_<component> variable (default = false) and use count conditional
  5. For always-enabled components: No variable needed, deploy unconditionally

Code Style

Good Terraform resource naming:

# ✅ Good - descriptive, component-specific
resource "aws_iam_policy" "trino_s3_policy" {
  name = "${var.cluster_name}-trino-s3-access"

  tags = {
    deployment_id = var.deployment_id
  }
}

# ❌ Bad - vague, generic names
resource "aws_iam_policy" "policy" {
  name = "my-policy"
}

Variable naming:

  • Use descriptive names: enable_karpenter, spark_operator_version
  • Avoid generic names: enabled, version

Boundaries

  • ✅ Always do: Edit files in data-stacks/<stack-name>/terraform/
  • ⚠️ Ask first: Modifying base infrastructure in infra/terraform/, changing VPC/networking, adding new AWS services
  • 🚫 Never do: Edit _local/ directory directly, commit AWS credentials, remove existing data stacks without user confirmation

Contributing Guidelines

  • Reference the full contributing guide at website/docs/datastacks/contributing.md when needed

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.