devops-detector

SKILL.md

DevOps Detector Skill

Purpose

Detect DevOps tools, CI/CD platforms, containerization, and orchestration from repository signals, job postings, and infrastructure indicators.

Input

Raw signals from Phase 2:

  • repository_signals - CI/CD configs, Dockerfiles, IaC
  • job_signals - DevOps job requirements
  • dns_signals - Service-specific subdomains
  • http_signals - Deployment patterns

Technology Categories

CI/CD Platforms

Platform Detection Signals Weight
GitHub Actions .github/workflows/*.yml 40
GitLab CI .gitlab-ci.yml 40
Jenkins Jenkinsfile, jenkins.* subdomain 35
CircleCI .circleci/config.yml 40
Travis CI .travis.yml 35
Azure Pipelines azure-pipelines.yml 40
Bitbucket Pipelines bitbucket-pipelines.yml 35
Drone CI .drone.yml 35
TeamCity .teamcity/ directory 35
Buildkite .buildkite/ directory 35

Build Tools

Tool Detection Signals Weight
Webpack webpack.config.js, webpack patterns 30
Vite vite.config.js 30
Rollup rollup.config.js 30
esbuild esbuild patterns 25
Turbo turbo.json 30
Nx nx.json 30
Lerna lerna.json 25
pnpm pnpm-workspace.yaml 25

Containerization

Technology Detection Signals Weight
Docker Dockerfile, docker-compose.yml 40
Podman Containerfile, podman-compose.yml 35
containerd containerd config 30

Container Orchestration

Platform Detection Signals Weight
Kubernetes k8s/, kubernetes/, kustomization.yaml 40
Docker Swarm docker-stack.yml 30
Amazon ECS ecs-*.json, task definitions 35
Nomad *.nomad files 30

Infrastructure as Code

Tool Detection Signals Weight
Terraform *.tf files, .terraform/ 40
Pulumi Pulumi.yaml 35
AWS CloudFormation *.cfn.yml, template.yaml 35
AWS CDK cdk.json 35
Ansible ansible.cfg, playbook.yml 35
Chef cookbooks/, recipes/ 30
Puppet manifests/, modules/ 30
Helm Chart.yaml, charts/ 35

Monitoring & Observability

Tool Detection Signals Weight
Prometheus prometheus.yml 35
Grafana grafana.* subdomain 30
Datadog datadog-agent configs 35
New Relic newrelic.yml 35
Sentry sentry.properties, dsn in config 35
PagerDuty pagerduty integration 30
OpsGenie opsgenie integration 30

Secret Management

Tool Detection Signals Weight
HashiCorp Vault vault references 30
AWS Secrets Manager secretsmanager patterns 30
Doppler doppler.yaml 30
1Password op:// references 25

Detection Logic

def detect_devops_technologies(signals):
    results = []

    # CI/CD Detection from Repository
    if signals.repository_signals:
        for file in signals.repository_signals.files:
            # GitHub Actions
            if '.github/workflows/' in file and file.endswith('.yml'):
                results.append({
                    "name": "GitHub Actions",
                    "category": "CI/CD",
                    "signals": [{"type": "config_file", "value": file}],
                    "total_weight": 40
                })

            # GitLab CI
            if file == '.gitlab-ci.yml':
                results.append({
                    "name": "GitLab CI",
                    "category": "CI/CD",
                    "signals": [{"type": "config_file", "value": file}],
                    "total_weight": 40
                })

            # Docker
            if file.lower() in ['dockerfile', 'docker-compose.yml', 'docker-compose.yaml']:
                results.append({
                    "name": "Docker",
                    "category": "Containerization",
                    "signals": [{"type": "config_file", "value": file}],
                    "total_weight": 40
                })

            # Kubernetes
            if any(k8s_indicator in file.lower() for k8s_indicator in ['kubernetes', 'k8s', 'kustomization', 'helm']):
                results.append({
                    "name": "Kubernetes",
                    "category": "Container Orchestration",
                    "signals": [{"type": "config_file", "value": file}],
                    "total_weight": 40
                })

            # Terraform
            if file.endswith('.tf'):
                results.append({
                    "name": "Terraform",
                    "category": "Infrastructure as Code",
                    "signals": [{"type": "config_file", "value": file}],
                    "total_weight": 40
                })

    # Job Posting Analysis
    if signals.job_signals:
        devops_keywords = {
            "kubernetes": ("Kubernetes", "Container Orchestration"),
            "docker": ("Docker", "Containerization"),
            "terraform": ("Terraform", "Infrastructure as Code"),
            "ansible": ("Ansible", "Configuration Management"),
            "jenkins": ("Jenkins", "CI/CD"),
            "github actions": ("GitHub Actions", "CI/CD"),
            "gitlab ci": ("GitLab CI", "CI/CD"),
            "prometheus": ("Prometheus", "Monitoring"),
            "grafana": ("Grafana", "Monitoring"),
            "datadog": ("Datadog", "Monitoring"),
            "aws": ("AWS", "Cloud Platform"),
            "gcp": ("Google Cloud", "Cloud Platform"),
            "azure": ("Azure", "Cloud Platform")
        }

        for keyword, (tech_name, category) in devops_keywords.items():
            if keyword in signals.job_signals.tech_mentions:
                add_if_not_exists(results, tech_name, category, {
                    "type": "job_posting",
                    "value": f"'{keyword}' mentioned in job postings",
                    "frequency": signals.job_signals.tech_mentions[keyword].frequency
                }, 25)

    # DNS-based Detection
    devops_subdomains = {
        "jenkins": ("Jenkins", "CI/CD"),
        "ci": ("CI/CD System", "CI/CD"),
        "build": ("Build System", "CI/CD"),
        "deploy": ("Deployment System", "CI/CD"),
        "grafana": ("Grafana", "Monitoring"),
        "prometheus": ("Prometheus", "Monitoring"),
        "kibana": ("Elastic Stack", "Logging"),
        "argocd": ("Argo CD", "GitOps"),
        "vault": ("HashiCorp Vault", "Secret Management")
    }

    for subdomain in signals.discovered_subdomains:
        for pattern, (tech_name, category) in devops_subdomains.items():
            if pattern in subdomain.lower():
                results.append({
                    "name": tech_name,
                    "category": category,
                    "signals": [{"type": "subdomain", "value": subdomain}],
                    "total_weight": 30
                })

    return results

Output

{
  "skill": "devops_detector",
  "results": {
    "technologies": [
      {
        "name": "GitHub Actions",
        "category": "CI/CD",
        "signals": [
          {
            "type": "config_file",
            "value": ".github/workflows/ci.yml",
            "weight": 40
          },
          {
            "type": "config_file",
            "value": ".github/workflows/deploy.yml",
            "weight": 40
          }
        ],
        "total_weight": 80,
        "workflows_detected": ["ci.yml", "deploy.yml"]
      },
      {
        "name": "Docker",
        "category": "Containerization",
        "signals": [
          {
            "type": "config_file",
            "value": "Dockerfile",
            "weight": 40
          },
          {
            "type": "config_file",
            "value": "docker-compose.yml",
            "weight": 35
          }
        ],
        "total_weight": 75,
        "base_images": ["node:18-alpine", "nginx:alpine"]
      },
      {
        "name": "Kubernetes",
        "category": "Container Orchestration",
        "signals": [
          {
            "type": "config_file",
            "value": "kubernetes/deployment.yaml",
            "weight": 40
          },
          {
            "type": "job_posting",
            "value": "Kubernetes mentioned in 5 job postings",
            "weight": 25
          }
        ],
        "total_weight": 65
      },
      {
        "name": "Terraform",
        "category": "Infrastructure as Code",
        "signals": [
          {
            "type": "config_file",
            "value": "terraform/main.tf",
            "weight": 40
          }
        ],
        "total_weight": 40,
        "providers_detected": ["aws", "cloudflare"]
      },
      {
        "name": "Datadog",
        "category": "Monitoring",
        "signals": [
          {
            "type": "job_posting",
            "value": "Datadog mentioned in DevOps job postings",
            "weight": 25
          }
        ],
        "total_weight": 25
      }
    ],
    "devops_summary": {
      "ci_cd": ["GitHub Actions"],
      "containerization": ["Docker"],
      "orchestration": ["Kubernetes"],
      "iac": ["Terraform"],
      "monitoring": ["Datadog"],
      "maturity_assessment": "Advanced - Full CI/CD pipeline with IaC and container orchestration"
    }
  }
}

Maturity Assessment

DevOps Maturity Levels:

Basic:
- Manual deployments
- No CI/CD detected
- Minimal automation

Intermediate:
- CI/CD pipeline detected
- Containerization (Docker)
- Basic monitoring

Advanced:
- Full CI/CD with multiple stages
- Container orchestration (K8s)
- Infrastructure as Code
- Comprehensive monitoring

Cloud-Native:
- GitOps practices (ArgoCD)
- Service mesh
- Observability stack
- Multi-cloud or hybrid

Error Handling

  • Private repositories: Note as limitation
  • Incomplete config analysis: Provide partial results
  • Job posting only signals: Lower confidence
Weekly Installs
3
GitHub Stars
67
First Seen
4 days ago
Installed on
gemini-cli3
claude-code3
github-copilot3
codex3
kimi-cli3
cursor3