SkillAgentSearch skills...

ML-MLOps-Portfolio

GitHub Actions CI/CD patterns for ML services

Install / Use

npx skills add DuqueOM/ML-MLOps-Portfolio

Installs into whichever agent you are using.

About this skill
🤖

Devin Config

Devin AI agent config

Quality Score

59/100

Category

Automation

Supported Platforms

Devin

Our assessment of ML-MLOps-Portfolio

ML-MLOps-Portfolio scores 59/100 on our quality scale, 2732nd of 2,863 Automation skills we index.

Its Devin Config is 5.8 KB long, well organised into 22 sections with 8 code examples: a solid amount of guidance for an agent.

It has no GitHub stars yet, so there is no community track record; judge it on its content.

Substance
26/30
Structure
20/20
Description
8/15
Adoption
0/20
Freshness
5/15

Maintenance, license and trust

  • We could not determine when the repository was last updated.
  • Our last check on 2026-10-20 found the source still online.
  • No license is declared. By default that means all rights are reserved: you can read it, but reusing or redistributing it is not clearly permitted. Ask the author before building on it commercially.
  • Its trust signals score 68/100, with 3 cautions from licensing, adoption, age or documentation. These come from repository metadata, not a code audit — read the skill file before letting an agent act on it.

Safety scan

No issues found

Our scan of the whole file found no instruction hijacking, hidden characters, credential access, data exfiltration or destructive commands. An AI review of the same text found nothing harmful.

AI review by kimi-k2.7-code on 2026-09-24. Automated pattern scan on 2026-09-24. It catches known dangerous patterns, not every risk — read a skill before letting an agent act on it.

ML-MLOps-Portfolio compared with similar skills

All 4 of these similar skills score higher than ML-MLOps-Portfolio; compare them before choosing.

SkillScoreStarsUpdatedFormat
ML-MLOps-Portfolio (this skill)by DuqueOM590—Devin Config
Agent-Reachby Panniantong100109.2ktodayCLAUDE.md
Scraplingby D4Vinci10097.9ktodayMCP Server
rufloby ruvnet10081.0ktodayMCP Server
openclawby thedotmack100107.6k5d agoSKILL.md

Frequently asked questions

How do I install ML-MLOps-Portfolio?
Run npx skills add DuqueOM/ML-MLOps-Portfolio. The install tabs above show the steps for each supported agent.
Which AI agents does ML-MLOps-Portfolio work with?
It is written for Devin, as a Devin Config file. Other agents that read the same format can often use it too.
Is ML-MLOps-Portfolio safe to use?
Our scan of the whole file found no instruction hijacking, hidden characters, credential access, data exfiltration or destructive commands. An AI review of the same text found nothing harmful. It declares no license and scores 68/100 on trust signals. Skills are instructions an agent will follow, so read the file before installing it and do not approve commands you do not understand.
Is ML-MLOps-Portfolio still maintained?
We could not determine when the repository was last updated.

trigger: glob globs: [".github/workflows/.yml", ".github/workflows/.yaml"] description: GitHub Actions CI/CD patterns for ML services

GitHub Actions Rules

Workflow Organization

.github/workflows/
├── ci.yml                    # Lint, test, build — on push to main/develop
├── ci-infra.yml              # Terraform validate, tfsec, checkov — on infra/ changes
├── deploy-gcp.yml            # Deploy to GKE — on release tag or manual
├── deploy-aws.yml            # Deploy to EKS — on release tag or manual
├── drift-detection.yml       # PSI drift check — scheduled daily
└── retrain-{service}.yml     # Retrain triggered by drift — workflow_dispatch

CI Workflow (ci.yml)

on:
  push:
    branches: [main, develop]
  pull_request:
    branches: [main]

jobs:
  lint:
    steps:
      - flake8, black --check, isort --check
      - mypy (type checking)

  test:
    strategy:
      matrix:
        service: [ServiceA, ServiceB, ServiceC]
    steps:
      - pytest with coverage >= 90%
      - Upload coverage report

  build:
    needs: [lint, test]
    steps:
      - docker build --cache-from
      - trivy scan (image vulnerabilities)
      - docker push (only on main, not PRs)

Infrastructure CI (ci-infra.yml)

Triggered on changes to infra/ or k8s/:

jobs:
  terraform-validate:
    strategy:
      matrix:
        cloud: [gcp, aws]
    steps:
      - terraform fmt -check
      - terraform validate
      - tfsec --format json
      - checkov -d infra/terraform/{cloud}

Deploy Workflows

  • Always use kubectl apply -k k8s/overlays/{cloud}/
  • Always verify: kubectl rollout status deployment/{service}
  • Always smoke test: curl /health
  • Always use secrets from GitHub Secrets (never hardcoded)

Drift Detection (drift-detection.yml)

on:
  schedule:
    - cron: '0 2 * * *'  # Daily at 02:00 UTC
  workflow_dispatch: {}

jobs:
  drift:
    strategy:
      matrix:
        service: [ServiceA, ServiceB, ServiceC]
    steps:
      - run: python src/{service}/monitoring/drift_detection.py
        continue-on-error: true
      - if: steps.drift.outcome == 'failure'
        uses: actions/github-script@v7
        # Creates GitHub Issue automatically

Retraining Workflows

Triggered by workflow_dispatch (from drift detection or manual):

on:
  workflow_dispatch:
    inputs:
      reason:
        description: 'Reason for retraining'
        required: true

jobs:
  retrain:
    steps:
      - Download fresh data
      - Execute Trainer.run() with Optuna
      - Evaluate quality gates
      - if ALL PASS: promote model + deploy
      - if ANY FAIL: open GitHub Issue

Required Secrets — cloud-native delegation only (D-18)

Never put long-lived cloud credentials in GitHub Secrets. Use OIDC federation: GitHub mints a short-lived token, the cloud provider exchanges it for a scoped role/SA via Workload Identity Federation (GCP) or IAM Identity Provider (AWS).

Document the OIDC binding in the workflow comments — not the keys:

# Identity (OIDC, no static credentials):
# GCP   — Workload Identity Federation (provider + service account)
#         google-github-actions/auth@v2 with workload_identity_provider
# AWS   — IAM Identity Provider for token.actions.githubusercontent.com
#         aws-actions/configure-aws-credentials@v4 with role-to-assume
#
# Non-secret config (GitHub Variables, not Secrets):
# GCP_PROJECT_ID, GCP_REGION, AWS_REGION, AWS_ACCOUNT_ID
#
# Secrets (per Environment, never repo-wide):
# MLFLOW_TRACKING_URI    — MLflow server URL for the env
# STAGING_KUBECONFIG / PRODUCTION_KUBECONFIG — kubeconfig blobs

STOP if you see GCP_SA_KEY, AWS_ACCESS_KEY_ID, or any *_SECRET_ACCESS_KEY in a workflow — that is a D-17/D-18 violation. Replace with OIDC; document the migration in the same PR.

Environment Promotion Gates (MANDATORY — D-26)

Deploys MUST chain through dev → staging → prod with human approval at staging and prod via GitHub Environment Protection Rules:

jobs:
  deploy-dev:
    uses: ./.github/workflows/deploy-common.yml
    with: { environment: dev, ... }    # no reviewers

  deploy-staging:
    needs: deploy-dev
    uses: ./.github/workflows/deploy-common.yml
    with: { environment: staging, ... }  # 1 reviewer via Env Protection

  deploy-prod:
    needs: deploy-staging
    if: startsWith(github.ref, 'refs/tags/v')
    uses: ./.github/workflows/deploy-common.yml
    with: { environment: production, ... }  # 2 reviewers + wait_timer

Environments to configure in Settings → Environments:

| Env name | Reviewers | Wait timer | Deployment branches | |---|---|---|---| | {cloud}-dev | 0 | 0 | all | | {cloud}-staging | 1 | 0 | main + tags | | {cloud}-production | 2 | 5 min | version tags only |

Reusable Workflows (MANDATORY for multi-cloud deploys)

Deploy logic that is identical across clouds (build, push, smoke-test) MUST be extracted into a workflow_call reusable workflow so a single fix applies everywhere:

# deploy-common.yml
on:
  workflow_call:
    inputs:
      cloud: { type: string, required: true }
      environment: { type: string, required: true }
      ...

See docs/environment-promotion.md for full setup.

Rules

  • NEVER store credentials in workflow files — use GitHub Secrets
  • ALWAYS use Environment secrets (not repo-level) for cloud-credential scoping per dev/staging/prod (D-18 + D-26)
  • ALWAYS pin action versions to a specific SHA (not @main or @v3)
  • ALWAYS use continue-on-error: true for drift detection (drift does not block CI)
  • ALWAYS run security scans (trivy for images, tfsec/checkov for Terraform)
  • ALWAYS use matrix strategies for multi-service operations
  • ALWAYS use workflow_call reusable workflows for shared deploy logic
  • Production deploys MUST be gated on a version tag + 2 reviewers (D-26)

Related Skills

View on GitHub
GitHub Stars0
CategoryAutomation
UpdatedNaNy ago
Forks0

Trust signals

68/100

From repository metadata: license, adoption, age and documentation. Not a code audit — see the Safety scan above for what the skill file itself contains.

2 medium1 low