reusable-workflow-patterns
$
npx mdskill add github/actions-migrations-via-copilot/reusable-workflow-patternsDetect recurring CI/CD patterns and generate standardized reusable workflows.
- Standardizes build, test, and deploy processes across multiple platforms.
- Integrates with GitHub, GitLab, Azure, Jenkins, and other CI systems.
- Analyzes file patterns and scope to identify common workflow structures.
- Outputs reusable YAML templates and usage documentation files.
SKILL.md
.github/skills/reusable-workflow-patternsView on GitHub ↗
---
name: reusable-workflow-patterns
description: Catalog of common CI/CD patterns (build, test, deploy, security, quality), scan scope resolution (org-wide or specific repos), the reusable workflow template, selection criteria, and usage-documentation template. Load when detecting recurring CI/CD patterns across GitHub orgs and/or repositories to generate standardized `reusable-*.yml` workflows with corresponding `docs/<name>-usage.md` files.
---
# Reusable Workflow Patterns
This skill provides the catalog, template, and documentation standards used by the Reusable Workflow Builder agent to detect cross-platform CI/CD patterns and produce standardized GitHub Actions reusable workflows.
## Supported CI/CD systems for pattern discovery
| System | File patterns |
| -------------- | ----------------------------------------------- |
| GitHub Actions | `.github/workflows/*.yml` |
| GitLab CI/CD | `.gitlab-ci.yml` |
| Azure DevOps | `azure-pipelines.yml`, `.azure-pipelines/*.yml` |
| Jenkins | `Jenkinsfile`, `.jenkins/*.groovy` |
| CircleCI | `.circleci/config.yml` |
| Travis CI | `.travis.yml` |
| Drone CI | `.drone.yml` |
| Others | Bitbucket, TeamCity, Bamboo, Buildkite |
## Pattern categories
- **🏗️ Build** — npm/Maven/Docker/language-specific build processes
- **🧪 Test** — unit, integration, E2E, security, performance testing
- **🚀 Deploy** — cloud (AWS/Azure/GCP), containers, serverless, infrastructure
- **🔒 Security** — SAST/DAST, dependency scanning, compliance checks
- **📊 Quality** — code coverage, linting, quality gates
## Selection criteria
A pattern becomes a reusable workflow when it shows:
- **High frequency** — 10+ repositories
- **Significant complexity** — 5+ steps
- **Low variation** — standardizable
- **Clear parameters** — configurable inputs
## Scan scope
The user controls the scope of analysis. Three modes are supported and can be freely combined:
| User input | Scope |
|---|---|
| `org-name` | All repositories in that organization |
| `org-name/repo-name` | That specific repository only |
| Mixed list | Union of all specified orgs and repos |
**Always** respect the stated scope — never crawl repos or orgs not explicitly provided.
## Pattern-recognition workflow
Adapt these steps to the input scope:
1. **Scope resolution**
- For each `org-name` entry: use `mcp_github_search_repositories` to enumerate all repos in that org.
- For each `org-name/repo-name` entry: use that repo directly — no enumeration needed.
- Deduplicate if a repo appears both via org scan and explicit reference.
2. **Universal pipeline discovery** — search each repo for CI/CD files across all supported systems (see table above).
3. **Cross-platform content analysis** — retrieve and parse configurations.
4. **Universal pattern extraction** — identify common structures and steps.
5. **Cross-system frequency analysis** — count pattern occurrences across the resolved repo set.
- When scope is a single repo or a small explicit list, lower the frequency threshold (see Selection criteria) — a pattern present in 3+ files within a monorepo is still worth extracting.
6. **Translation scoring** — rank by frequency, complexity reduction, and GitHub Actions conversion feasibility.
7. **Platform mapping** — map equivalent concepts to GitHub Actions.
## Reusable workflow template
```yaml
name: Reusable Node.js Build Workflow
on:
workflow_call:
inputs:
node-version:
description: 'Node.js version to use'
required: false
default: '18'
type: string
build-command:
description: 'Custom build command'
required: false
default: 'npm run build'
type: string
outputs:
build-success:
description: 'Build success status'
value: ${{ jobs.build.outputs.success }}
jobs:
build:
runs-on: ubuntu-latest
steps:
# ✅ Only verified actions from trusted publishers
- uses: actions/checkout@v4
- uses: actions/setup-node@v4
with:
node-version: ${{ inputs.node-version }}
cache: 'npm'
- run: npm install
- run: ${{ inputs.build-command }}
```
## Output file rules
For **every** reusable workflow produced, create **exactly two** files:
1. `.github/workflows/reusable-<name>.yml` — the reusable workflow (`workflow_call` trigger only)
2. `docs/<name>-usage.md` — the usage documentation (one per workflow, 1:1)
**Never** create: `README.md`, `WORKFLOWS.md`, consolidated docs, scripts (`.sh`, `.bat`, `.ps1`, `.py`, `.js`), custom actions, caller workflows, or workflow templates.
## Usage documentation template
Each `docs/<name>-usage.md` must contain:
````markdown
# Reusable [Workflow Name] Usage Guide
## Pattern Analysis Summary
- **Frequency**: Found in X repositories across Y organizations
- **Source CI/CD Systems**: [List systems: GitHub Actions, GitLab CI, Jenkins, etc.]
- **Complexity Reduction**: [Explain how this replaces X previous steps]
## Migration Benefits
- **From GitLab CI**: [If applicable, before/after]
- **From Jenkins**: [If applicable, before/after]
- **From Azure DevOps**: [If applicable, before/after]
- **Standardization**: [Consistency improvements]
## Basic Usage Example
```yaml
name: Example Workflow
on: [push, pull_request]
jobs:
job-name:
uses: ./.github/workflows/reusable-[name].yml
with:
param1: 'value1'
param2: 'custom-value'
```
## Advanced Usage Example
```yaml
name: Production Workflow
on:
push:
branches: [main]
jobs:
job-name:
uses: ./.github/workflows/reusable-[name].yml
with:
param1: 'production-value'
param2: 'advanced-setting'
secrets:
SECRET_NAME: ${{ secrets.SECRET_NAME }}
```
## Input Parameters Reference
| Parameter | Description | Required | Default | Example |
| --------- | ------------- | -------- | ----------- | ---------- |
| param1 | [Description] | Yes | - | `'value'` |
| param2 | [Description] | No | `'default'` | `'custom'` |
## Output Reference
| Output | Description | Type |
| ------- | ------------- | ------ |
| output1 | [Description] | string |
## Migration Examples
### From GitLab CI
**Before (.gitlab-ci.yml):**
```yaml
[Show original GitLab CI configuration]
```
**After (GitHub Actions):**
```yaml
[Show how to use this reusable workflow instead]
```
### From Jenkins
**Before (Jenkinsfile):**
```groovy
[Show original Jenkins configuration]
```
**After (GitHub Actions):**
```yaml
[Show how to use this reusable workflow instead]
```
## Best Practices
- [Specific best practices for using this workflow]
- [Security considerations]
- [Performance tips]
````
## Quality and security requirements
- **Verified publishers only**: prioritize `actions/*`, `azure/*`, `aws-actions/*`, `google-github-actions/*`
- **Latest stable versions** of all actions, pinned to commit SHA (see `migration-core` guardrails)
- **Trigger**: `workflow_call` only
- **Location**: `.github/workflows/reusable-<name>.yml`
- **Validation**: every workflow must pass `actionlint`
More from github/actions-migrations-via-copilot
- actionlintInstall, run, and fix errors from actionlint — the GitHub Actions workflow linter. Load when validating `.github/workflows/*.yml` files after migration or generation.
- azure-devops-migrationAzure DevOps migration to GitHub Actions — syntax mappings and the migration report template for YAML pipelines, templates, variable groups, service connections, deployment jobs, stages, conditional logic. Load with `migration-core` when migrating Azure DevOps sources to GitHub Actions.
- bamboo-migrationBamboo migration to GitHub Actions — syntax mappings and the migration report template for Build plans, deployment projects, tasks, requirements, variables, plan branches. Load with `migration-core` when migrating Bamboo sources to GitHub Actions.
- bitbucket-migrationBitbucket Pipelines migration to GitHub Actions — syntax mappings and the migration report template for Pipelines, Pipes, parallel steps, branch/pull-request workflows, deployments, variables. Load with `migration-core` when migrating Bitbucket Pipelines sources to GitHub Actions.
- circleci-migrationCircleCI migration to GitHub Actions — syntax mappings and the migration report template for Workflows, jobs, Orbs, executors, contexts, parameters, matrix jobs, approval gates. Load with `migration-core` when migrating CircleCI sources to GitHub Actions.
- droneci-migrationDrone CI migration to GitHub Actions — syntax mappings and the migration report template for Pipelines, plugins, services, secrets, triggers, multi-platform pipelines. Load with `migration-core` when migrating Drone CI sources to GitHub Actions.
- gitlab-migrationGitLab CI migration to GitHub Actions — syntax mappings and the migration report template for Pipelines, includes, Pages, environments, rules/only/except, parallel jobs, GitLab-specific variables. Load with `migration-core` when migrating GitLab CI sources to GitHub Actions.
- jenkins-migrationJenkins migration to GitHub Actions — syntax mappings and the migration report template for Pipelines (declarative + scripted), shared libraries, Groovy scripts, credential bindings, agent labels, parallel stages, plugin replacements. Load with `migration-core` when migrating Jenkins sources to GitHub Actions.
- migration-core5-phase migration process, security guardrails, deliverables, archival protocol, and the 10-item completion checklist for any CI/CD migration to GitHub Actions. Load at the start of every migration.
- travisci-migrationTravis CI migration to GitHub Actions — syntax mappings and the migration report template for Build matrix (language/env/os), deploy providers, before/after hooks, stages, conditions. Load with `migration-core` when migrating Travis CI sources to GitHub Actions.