name: github-workflow description: GitHub Actions workflow automation for intelligent CI/CD pipelines with adaptive optimization. Use for workflow creation, pipeline optimization, security scanning, failure analysis, and automated deployment strategies.
GitHub Workflow Automation Skill
Overview
This skill enables creation and management of intelligent, self-organizing CI/CD pipelines using GitHub Actions with swarm coordination. It provides adaptive workflow generation, performance optimization, and automated pipeline management.
Key Capabilities:
- Swarm-powered GitHub Actions workflows
- Dynamic workflow generation based on code analysis
- Intelligent test selection and parallelization
- Self-healing pipeline automation
- Performance monitoring and optimization
Quick Start
# .github/workflows/intelligent-ci.yml
name: Intelligent CI with Swarms
on: [push, pull_request]
jobs:
analyze-and-test:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- name: Analyze Changes
run: |
# Determine affected packages
CHANGED=$(git diff --name-only HEAD~1)
echo "Changed files: $CHANGED"
- name: Dynamic Test Selection
run: |
# Run only affected tests
npm test -- --changedSince=HEAD~1
When to Use
- New Project Setup: Creating initial CI/CD pipelines
- Pipeline Optimization: Improving slow or inefficient workflows
- Security Integration: Adding automated security scanning
- Deployment Automation: Setting up progressive deployment strategies
- Failure Recovery: Implementing self-healing pipelines
Usage Examples
1. Multi-Language Detection Workflow
# .github/workflows/polyglot-ci.yml
name: Polyglot Project Handler
on: push
jobs:
detect-and-build:
runs-on: ubuntu-latest
outputs:
matrix: ${{ steps.detect.outputs.matrix }}
steps:
- uses: actions/checkout@v4
- name: Detect Languages
id: detect
run: |
# Detect project languages
LANGUAGES=()
[ -f "package.json" ] && LANGUAGES+=("node")
[ -f "requirements.txt" ] && LANGUAGES+=("python")
[ -f "go.mod" ] && LANGUAGES+=("go")
[ -f "Cargo.toml" ] && LANGUAGES+=("rust")
# Build matrix JSON
MATRIX=$(printf '%s\n' "${LANGUAGES[@]}" | jq -R . | jq -s '{language: .}')
echo "matrix=$MATRIX" >> $GITHUB_OUTPUT
build:
needs: detect-and-build
strategy:
matrix: ${{ fromJson(needs.detect-and-build.outputs.matrix) }}
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- name: Build ${{ matrix.language }}
run: |
case "${{ matrix.language }}" in
node) npm ci && npm test ;;
python) pip install -r requirements.txt && pytest ;;
go) go build ./... && go test ./... ;;
rust) cargo build && cargo test ;;
esac
2. Adaptive Security Scanning
# .github/workflows/security-scan.yml
name: Intelligent Security Scan
on:
schedule:
- cron: '0 0 * * *'
workflow_dispatch:
jobs:
security-analysis:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- name: Run Security Scans
id: security
run: |
# Initialize results
echo '{"issues": []}' > security-results.json
# npm audit for Node.js
if [ -f "package-lock.json" ]; then
npm audit --json >> security-results.json || true
fi
# pip audit for Python
if [ -f "requirements.txt" ]; then
pip install pip-audit
pip-audit --format=json >> security-results.json || true
fi
- name: Create Security Issues
if: failure()
env:
GH_TOKEN: ${{ secrets.GITHUB_TOKEN }}
run: |
# Parse and create issues for critical findings
jq -r '.issues[]? | select(.severity == "critical")' security-results.json | \
while read -r issue; do
gh issue create \
--title "Security: $(echo "$issue" | jq -r '.title')" \
--body "$(echo "$issue" | jq -r '.description')" \
--label "security,critical"
done
3. Self-Healing Pipeline
# .github/workflows/self-healing.yml
name: Self-Healing Pipeline
on:
workflow_run:
workflows: ["CI"]
types: [completed]
jobs:
heal-pipeline:
if: ${{ github.event.workflow_run.conclusion == 'failure' }}
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- name: Diagnose Failure
id: diagnose
env:
GH_TOKEN: ${{ secrets.GITHUB_TOKEN }}
run: |
# Get failed jobs
FAILED_JOBS=$(gh run view ${{ github.event.workflow_run.id }} \
--json jobs --jq '.jobs[] | select(.conclusion == "failure")')
echo "Failed jobs: $FAILED_JOBS"
# Common auto-fixes
LOGS=$(gh run view ${{ github.event.workflow_run.id }} --log)
if echo "$LOGS" | grep -q "npm ERR! peer dep"; then
echo "fix=npm-peer-deps" >> $GITHUB_OUTPUT
elif echo "$LOGS" | grep -q "ENOSPC"; then
echo "fix=disk-space" >> $GITHUB_OUTPUT
fi
- name: Apply Auto-Fix
if: steps.diagnose.outputs.fix != ''
run: |
case "${{ steps.diagnose.outputs.fix }}" in
npm-peer-deps)
npm install --legacy-peer-deps
;;
disk-space)
npm cache clean --force
;;
esac
4. Progressive Deployment
# .github/workflows/progressive-deploy.yml
name: Progressive Deployment
on:
push:
branches: [main]
jobs:
analyze-risk:
runs-on: ubuntu-latest
outputs:
risk: ${{ steps.risk.outputs.level }}
steps:
- uses: actions/checkout@v4
with:
fetch-depth: 0
- name: Analyze Risk
id: risk
run: |
# Count changed files
CHANGED=$(git diff --name-only HEAD~1 | wc -l)
# Determine risk level
if [ "$CHANGED" -gt 50 ]; then
echo "level=high" >> $GITHUB_OUTPUT
elif [ "$CHANGED" -gt 10 ]; then
echo "level=medium" >> $GITHUB_OUTPUT
else
echo "level=low" >> $GITHUB_OUTPUT
fi
deploy:
needs: analyze-risk
runs-on: ubuntu-latest
steps:
- name: Deploy Strategy
run: |
case "${{ needs.analyze-risk.outputs.risk }}" in
low)
echo "Direct deployment"
# Deploy immediately
;;
medium)
echo "Canary deployment - 10%"
# Deploy to 10% of traffic
;;
high)
echo "Blue-green deployment with rollback"
# Full blue-green with auto-rollback
;;
esac
MCP Tool Integration
Multi-Agent Pipeline Orchestration
// Initialize workflow automation swarm
mcp__claude-flow__swarm_init { topology: "mesh", maxAgents: 12 }
mcp__claude-flow__agent_spawn { type: "coordinator", name: "Workflow Coordinator" }
mcp__claude-flow__agent_spawn { type: "architect", name: "Pipeline Architect" }
mcp__claude-flow__agent_spawn { type: "coder", name: "Workflow Developer" }
mcp__claude-flow__agent_spawn { type: "tester", name: "CI/CD Tester" }
mcp__claude-flow__agent_spawn { type: "optimizer", name: "Performance Optimizer" }
// Create automation rules
mcp__claude-flow__automation_setup {
rules: [
{
trigger: "pull_request",
conditions: ["files_changed > 10", "complexity_high"],
actions: ["spawn_review_swarm", "parallel_testing", "security_scan"]
},
{
trigger: "push_to_main",
conditions: ["all_tests_pass", "security_cleared"],
actions: ["deploy_staging", "performance_test", "notify_stakeholders"]
}
]
}
// Orchestrate workflow management
mcp__claude-flow__task_orchestrate {
task: "Manage intelligent CI/CD pipeline with continuous optimization",
strategy: "adaptive",
priority: "high"
}
Performance Monitoring
// Generate workflow performance reports
mcp__claude-flow__performance_report {
format: "detailed",
timeframe: "30d"
}
// Analyze bottlenecks
mcp__claude-flow__bottleneck_analyze {
component: "github_actions_workflow",
metrics: ["build_time", "test_duration", "deployment_latency"]
}
// Store insights
mcp__claude-flow__memory_usage {
action: "store",
key: "workflow/performance/analysis",
value: {
bottlenecks_identified: ["slow_test_suite", "inefficient_caching"],
optimization_opportunities: ["parallel_matrix", "smart_caching"],
cost_optimization_potential: "23%"
}
}
Workflow Optimization Commands
Pipeline Optimization
# Analyze workflow performance
gh run list --workflow=ci.yml --limit=20 --json databaseId,conclusion,startedAt,updatedAt | \
jq 'map({id: .databaseId, status: .conclusion, duration: ((.updatedAt | fromdateiso8601) - (.startedAt | fromdateiso8601))})'
# Identify slow steps
gh run view $RUN_ID --json jobs --jq '.jobs[] | {name: .name, duration: .steps | map(.completedAt | fromdateiso8601) | max - (.steps | map(.startedAt | fromdateiso8601) | min)}'
Failure Analysis
# Analyze failed runs
gh run list --status=failure --limit=10 --json databaseId,name,headBranch | \
jq -r '.[] | "\(.databaseId): \(.name) on \(.headBranch)"'
# Get failure details
gh run view $RUN_ID --log-failed
Best Practices
1. Workflow Organization
- Use reusable workflows for common operations
- Implement proper caching strategies
- Set appropriate timeouts for each job
- Use workflow dependencies wisely
2. Security
- Store secrets in GitHub Secrets
- Use OIDC for cloud authentication
- Implement least-privilege principles
- Audit workflow permissions regularly
3. Performance
- Cache dependencies between runs
- Use appropriate runner sizes
- Implement early termination for failures
- Optimize parallel execution
4. Cost Management
- Use self-hosted runners for heavy workloads
- Implement concurrency controls
- Cache Docker layers
- Skip redundant workflow runs
Configuration Options
| Option | Type | Default | Description |
|---|---|---|---|
| max-parallel | number | 4 | Maximum parallel jobs |
| timeout-minutes | number | 30 | Job timeout |
| retry-on-failure | boolean | false | Auto-retry failed jobs |
| cache-strategy | string | "npm" | Dependency caching |
Error Handling
Common Errors
Error: ENOSPC (No space left)
- Cause: Disk space exhausted
- Solution: Clear caches, use smaller runners
Error: Rate limit exceeded
- Cause: Too many API calls
- Solution: Add delays, use caching
Error: Timeout exceeded
- Cause: Long-running job
- Solution: Increase timeout or optimize job
Related Skills
- github-sync - Repository synchronization
- github-swarm-pr - PR management
- github-swarm-issue - Issue coordination
Version History
- 1.0.0 (2026-01-02): Initial skill conversion from workflow-automation agent
chat Comments (0)
Sign in to join the discussion and leave a comment.
Skill Details
GitHub Stars
1
GitHub Forks
0
Created
Jan 2026
Last Updated
4 months ago
tools
tools productivity tools
Related Skills
Build your own?
Join 12,000+ developers contributing to the Claude ecosystem.
No comments yet. Be the first to share your thoughts!