ML-MLOps-Portfolio
GitHub Actions CI/CD patterns for ML services
Install / Use
npx skills add DuqueOM/ML-MLOps-PortfolioInstalls into whichever agent you are using.
Devin Config
Devin AI agent config
Quality Score
Category
AutomationSupported Platforms
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.
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 foundOur 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.
| Skill | Score | Stars | Updated | Format |
|---|---|---|---|---|
| ML-MLOps-Portfolio (this skill)by DuqueOM | 59 | 0 | — | Devin Config |
| Agent-Reachby Panniantong | 100 | 109.2k | today | CLAUDE.md |
| Scraplingby D4Vinci | 100 | 97.9k | today | MCP Server |
| rufloby ruvnet | 100 | 81.0k | today | MCP Server |
| openclawby thedotmack | 100 | 107.6k | 5d ago | SKILL.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.
Skill content
View source on GitHubtrigger: 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
@mainor@v3) - ALWAYS use
continue-on-error: truefor 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_callreusable workflows for shared deploy logic - Production deploys MUST be gated on a version tag + 2 reviewers (D-26)
Related Skills
Agent-Reach
109.2kGive your AI agent eyes to see the entire internet. Read & search Twitter, Reddit, YouTube, GitHub, Bilibili, XiaoHongShu — one CLI, zero API fees.
Scrapling
97.9k🕷️ The BEST Web Scraping framework that handles everything from a single request to a full-scale crawl! Don't be shy, join here: https://discord.gg/EMgGbDceNQ and follow here for daily tips and tricks: https://x.com/Scrapling_dev
ruflo
81.0k🌊 The original agent harness. Deploy intelligent multi-player swarms, coordinate autonomous workflows, and build conversational AI systems. Features adaptive memory, self-learning intelligence, federation, vector RAG integration, and native Claude Code / Codex / Hermes and many more Integrated
openclaw
107.6kThis guide walks through setting up the claude-mem plugin on an OpenClaw gateway. By the end, your agents will have persistent memory across sessions via system prompt context injection, and optionally a real-time observation feed streaming to a messaging channel.
Trust signals
From repository metadata: license, adoption, age and documentation. Not a code audit — see the Safety scan above for what the skill file itself contains.
